1. 前言
人脸对齐的本质很简单——通过旋转、平移与缩放将目标人脸区域放置在图像特定位置。这是人脸识别系统中的一种标准操作。这样做可以减小需要处理的人脸图像在空间分布上的差异。说白了就是降低难度。其是人脸特征提取,人脸识别等任务种非常重要的一步,其常作为人脸数据预处理的一部分。
2. 当前关键点检测逻辑
目前我们的关键点检测模型,是在检测到图像中人脸后直接进行预测的,尽管模型对小中幅度人脸倾斜场景鲁棒,但当人脸出现大幅度倾斜时,其预测结果误差较大。而在TNN 优图关键点检测中,就使用到了多个关键点对图像做仿射变换,从而更利于关键点检测。
3. 使用OpenCV API 多点仿射变换
人脸对齐可以通过仿射变换来实现。变换的核心为仿射变换矩阵,它描述了变换过程的具体参数。仿射变换矩阵可以通过比较图像中特定像素在变换前后的位置差异来实现。对于人脸对齐来说,五官的分布就是一个绝佳的天然参考因素。只需在原始图像中检测面部五官位置,然后规定目标图像中五官应该出现的位置,便可得出变换矩阵。如果使用OpenCV的话,可以使用 cv2.estimateAffinePartial2D 函数计算出变换矩阵。
3.1 算法思路
- 使用MTCNN检测得到人脸五官关键关键点(图中绿点所示)
- 自行标定合适的仿射变换后的关键带你坐标(图中红点所示)
- 使用OpenCV cv2.estimateAffinePartial2D() API根据前后关键点计算仿射变换矩阵
- 使用cv2.warpAffine()对原图进行仿射变换,得到人脸对齐后的图像
人脸对齐前后结果:

文章介绍了人脸对齐在人脸识别中的重要性,以及当前关键点检测模型的局限性。通过OpenCV的API实现多点仿射变换进行人脸对齐,并提供了使用MTCNN和SVD做仿射变换的示例。此外,提到了TNN优图的做法,利用历史帧关键点和标准人脸关键点计算变换矩阵。

1253

被折叠的 条评论
为什么被折叠?



