揭秘人脸对齐之3D变换-Java版(文末附开源地址)
一、人脸对齐基本概念
人脸对齐通过人脸关键点检测得到人脸的关键点坐标,然后根据人脸的关键点坐标调整人脸的角度,使人脸对齐,由于输入图像的尺寸是大小不一的,人脸区域大小也不相同,角度不一样,所以要通过坐标变换,对人脸图像进行归一化操作。人脸关键点检测有很多算法可以使用包括: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