Face Detection and Alignment with MTCNN 人脸检测对齐 快速实现 Python代码

旧城等待, 2022-05-13 02:20 214阅读 0赞

论文Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks提出了一种多任务-级联的卷积神经网络框架,用以实现人脸检测和对齐。构成人脸检测和对齐的级联网络的三个部分分别为:P-Net,R-Net和O-Net.
(1)P-Net:Proposal Net,用于实现人脸候选框提取;
(2)R-Net:Refine Net,在P-Net输出结果的基础上进一步去除错误的候选框;
(3)O-Net:Output Net,与R-Net类似,最终输出人脸bounding box以及landmark。

本篇介绍通过一个Python的mtcnn包快速实现一个人脸检测和对齐程序。

环境:

  1. Ubuntu16.04 / python3.6 / tensorflow 1.10.1 / opencv 3.4

通过pip安装mtcnn:

  1. $pip install mtcnn

安装完成后可以使用mtcnn的detect_faces方法实现图片中的人脸检测与对齐,代码实现:

  1. from mtcnn.mtcnn import MTCNN
  2. import cv2
  3. img = cv2.imread("test.jpg")
  4. detector = MTCNN()
  5. face_list = detector.detect_faces(img) # face detect and alignment
  6. for face in face_list:
  7. box = face["box"]
  8. confidence = face["confidence"]
  9. keypoints = face["keypoints"]
  10. # draw boundingbox
  11. x,y,w,h = box
  12. cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),2)
  13. # put the confidence
  14. cv2.putText(img,str(round(confidence,4)),(x,y-10),0,0.5,(255,0,0))
  15. # draw keypoints
  16. cv2.circle(img,keypoints["left_eye"],1,(0,0,255),2)
  17. cv2.circle(img,keypoints["right_eye"],1,(0,0,255),2)
  18. cv2.circle(img,keypoints["nose"],1,(0,0,255),2)
  19. cv2.circle(img,keypoints["mouth_left"],1,(0,0,255),2)
  20. cv2.circle(img,keypoints["mouth_right"],1,(0,0,255),2)
  21. cv2.imwrite("result.jpg",img)

测试结果:
这里写图片描述

发表评论

表情:
评论列表 (有 0 条评论,214人围观)

还没有评论,来说两句吧...

相关阅读