揭祕人臉對齊之3D變換-Java版(文末賦開源地址)

divenswu發表於2021-12-30

一、人臉對齊基本概念

      人臉對齊通過人臉關鍵點檢測得到人臉的關鍵點座標,然後根據人臉的關鍵點座標調整人臉的角度,使人臉對齊,由於輸入影像的尺寸是大小不一的,人臉區域大小也不相同,角度不一樣,所以要通過座標變換,對人臉影像進行歸一化操作。人臉關鍵點檢測有很多演算法可以使用包括:ASM、AAM、DCNN 、TCDCN 、MTCNN 、TCNN、TCNN等,這裡就不詳細介紹,主要說一下得到人臉關鍵點之後如何進行人臉對齊,使所有人臉達到歸一化效果,該過程如下圖所示:

 

二、3D空間中的變換方式

歐氏變換:最簡單的變換,它保持了向量的長度和夾角,相當於把一個剛體原封不動的移動或者旋轉。

相似變換:比歐氏變換多一個自由度,它允許對物體進行均勻的縮放。

防射變換:又叫正交投影,經過變換後,立方體不再是方的,但是各個面仍是平行四邊形。

射影變換:最一般的變換。例如使用相機隨意拍攝一個方形的地板磚,在照片中的樣子,它不再是方的,由於遠近不同,甚至不再是平行四邊形。如果焦距無窮遠,則為仿射變換。

變換方式矩陣不變性質

歐氏變換

6dof

長度
夾角
體積

相似變換

7dof

體積比

仿射變換

12dof

平行性
體積比

射影變換

15dof

接觸平面的相交和相切

三、對齊在影像領域的應用

(1)、人臉器官定位、器官跟蹤。通過人臉對齊,我們能夠定位到人臉的每個部件,提取相應的部件特徵。

(2)、表情識別。通過人臉對齊後,我們能夠利用對齊後的人臉形狀分析人臉的表情狀態。

(3)、人臉漫畫/素描影像生成。通過人臉對齊後,我們能夠進行人臉漫畫和素描生成。

(4)、虛擬現實和擴增實境。通過人臉對齊後,我們能夠做出很多好玩的應用

(5)、人臉老化、年輕化、年齡推斷。特徵融合/影像增強。通過人臉對齊後,我們能夠有效提取人臉特徵,並分析人臉年齡、人臉老化等。

(6)、3D卡通。通過人臉對齊能夠進行3D卡通模擬。

(7)、人臉識別、人臉比對等相關領域

四、人臉對齊在開源人臉識別中的應用

該專案是阿里雲視覺智慧開放平臺的人臉1:N的開源替代,專案中使用的模型均為開源模型,專案支援milvus和proxima向量儲存庫,並具有較高的自定義能力。其次專案使用純Java開發,免去使用Python帶來的服務不穩定性,支援docker一鍵部署、支援Java客戶端,restful介面等。

專案的gitee地址:https://gitee.com/open-visual/face-search

對齊工具:

https://gitee.com/open-visual/face-search/blob/master/face-search-core/src/main/java/com/visual/face/search/core/utils/AlignUtil.java

相關文章