七点人脸姿态估计_人脸姿态估计算法分享

本文介绍了人脸姿态估计算法,通过计算输入图像的俯仰、偏航和翻滚角度来确定3D空间中面部的方向。算法利用3D人脸模型、矩阵变换和平方误差损失函数,结合梯度下降法求解最佳匹配。实验表明,该方法在一定程度上能够捕捉到脸部方向的变化,但仍有优化空间,后续将研究更高效的方法。
摘要由CSDN通过智能技术生成

5d3d343720f16f60747fec4f6c3019f6.png

人脸姿态估计指的是根据一幅2维的人脸图像,计算出这个人在实际3维空间中的面部朝向。问题的输入条件就是一张人脸图片,输出自然就是可以表示方位的三个旋转角度 (pitch, yaw, roll),其中 pitch 表示俯仰角(关于x轴的旋转角度),yaw 表示偏航角(关于y轴的旋转角度),roll 表示翻滚角(关于z轴的旋转角度),分别如下面 3 图所示:(说句题外话,如果我们把下面图中的物体看作是一架向我们飞来的飞机,就可以理解为何这三个角要如此命名了)

698e574319b94a8f0a0aa73e37f36c3d.png

f857319003b1102840a6221429e80987.png

d2a1ebcd3894b1a19b097d158729eadd.png

算法的思路很简单,可以考虑这样一种场景,假设我们有一张标准的3d人脸模型,如果投影和输入图片的人脸大致重合,那么此时 3d 模型的方位就可以看作是图片中人脸在实际空间中的方位了。如果投影和图像的差异很大,那我们再对 3d 模型进行旋转,平移,拉伸等操作,可以明确的是,只要经过合适的调整,总会出现两者相重合的情况。
所以现在的问题就变成了三个子问题:1. 怎样得到标准的人脸 3d 模型;2. 对 3d 模型的各种变换操作怎样从数字上体现出来;2. 如何量化的表示“重合”这一概念。
我们先来看第二个问题,在数学上,旋转、平移、拉伸操作其实都是矩阵运算,举个简单的例子,在二维平面上旋转一条线段,就是使用旋转目标 src 去乘以二维旋转矩阵,得到的 dst 便是旋转后的线段。

8aeb3377787924b1204bb7c4efddefb3.png

平移操作更简单一点,在坐标分量上加一个偏移量即可。拉伸也同理,只需要在不同的方向上乘以缩放系数。于是,空间中的一个对象,经过上述变换后,最终得到的东西由下式给出

其中 t 是平移矩阵,大小为

,它的每一列数值为常量,是对应方向上的移动距离

s 是缩放向量,具体形式为

这里的

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值