人脸检测和对齐,关键点坐标仿射变换
人脸检测和对齐,关键点坐标仿射变换
- MTCNN的PNet, RNet, ONet三者是串联的。
- 人脸检测:PNet, RNet提供检测框,输入到ONet. ONet输出关键点信息。这里提供检测框的PNet, RNet也可以换成SFD。然后再输入到ONet串联使用。
- 人脸对齐:在人脸检测框中回归5个关键点。基于这5个关键点、标准人脸,通过仿射变换进行对齐。
- 由此可见检测框的预测精度将影响最终关键点预测的精度。而关键点预测的精度影响最终识别的性能。
- 从人脸5个关键点到人脸识别模型输入
- 根据5个关键点和标准人脸的5个关键点,得到仿射矩阵M。
- 基于原始输入图像和M,经过仿射变换得到最终的输入。也就是检测对齐好的人脸。可能还会resize到指定大小。如112x112。
- 注意这里得到的模型输入和人脸检测框无关,不是根据检测框crop得到的,而是根据检测到的关键点、标准人脸,通过仿射变换和resize得到的。所以可以说,一开始的人脸检测框和识别结果没有直接关系(有间接关系:通过影响框内回归出的关键点的位置,间接影响最终识别结果)
- 如何根据检测到的关键点,标准人脸得到仿射矩阵?
def get_affine_lmk(landmark1, image_size=