(笔记)cvzone+skimage人脸对齐

起因:常见的MTCNN人脸对齐使用了大量系统资源,但是检测人脸的效率不高(如人脸角度过大,人脸有一部分在屏幕之外的情况检测不到,同时检测时间过长,不适合我算力低的设备),

解决方法:现在通过cvzone的meshmoudle进行人脸网格478关键点检测facesMoudle中利用这些关键点可以在skimage中的五点仿射,将人脸裁剪,完成人脸对齐。

①借鉴博主人脸对齐过程中的图:
基于人脸5个关键点的人脸对齐(人脸纠正)-CSDN博客

请添加图片描述请添加图片描述请添加图片描述

通过五点仿射出来的图片更适合人脸识别在论文中也提到这一点,以下是标准脸的五点关键坐标

REFERENCE_FACIAL_POINTS = np.array([
    [30.29459953,  51.69630051],
    [65.53179932,  51.50139999],
    [48.02519989,  71.73660278],
    [33.54930115,  92.3655014],
    [62.72990036,  92.20410156]
], np.float32)

对应cvzone的meshmoudle中的数组序号(cvzone的版本是1.5.6)

  • 左眼上: 159
  • 左眼下: 145
  • 右眼上: 386
  • 右眼下: 374
  • 鼻子: 1
  • 嘴巴左: 61
  • 嘴巴右: 291

②人脸对齐之后,又考虑到通过人脸关键点可以推算人脸姿态,我这里试过68关键点效果不佳,这里刚好可以用上cvzone的meshmoudle获得的关键点也就是 左眼左眼角,右眼右眼角,鼻子尖,嘴巴左边,嘴巴右边,下巴中心这6个点来推算人脸姿态,这里借鉴博主的姿态检测:

头部姿态估计原理及可视化_pitch (x) head detection-CSDN博客

对应cvzone的meshmoudle中的数组序号(cvzone的版本是1.5.6)

  • 左眼左眼角: 130
  • 右眼右眼角: 359
  • 鼻子: 1
  • 嘴巴左: 61
  • 嘴巴右: 291
  • 下巴: 152
     

通过这种方式在笔记本电脑的CPU上运行轻量级tensorflow帧率可以达到15fps,不得不说cvzone获得478个人脸关键点速度非常快,也是基于他背后的mediapipe库的强大。本文以笔记的形式做一个个人记录,cvzone的关键点获取比起MTCNN速度快了很多倍,在轻量级设备上效果很好,为了我后面利用这些坐标去进行人脸识别。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值