重磅!头部姿态估计「原理详解 + 实战代码」来啦!

本文介绍了头部姿态估计的概念,包括其应用如注意力检测、行为分析、人机交互和视线追踪。通过2D人脸关键点检测、3D模型匹配等步骤解释基本原理,并提及常用算法。提供了一个简单的算法流程,涉及坐标系转换和最小二乘法。同时,讨论了2D关键点检测的重要性,并提到了开源代码资源。
摘要由CSDN通过智能技术生成

写在前面

经过两周的文献和博客阅读,CV_Life君终于欣(dan)喜(zhan)若(xin)狂(jing)地给各位带来head pose estimation这篇文章,因为刚刚入手这个方向,如有疏漏请各位多多包涵,并多多指教。废话少说,先放个Demo热热身。

0294e683706362cc43382955e26d7d16f448e5e7

Head Pose Estimation是干啥的?

热身完毕,有没有对Demo上变化的数字费解呢?做过此方向的小伙伴,应该会比较容易理解,Head Pose Estimation 就是估计头部的姿态。详细道来:Head Pose Estimation 是通过一幅面部图像来获得头部的姿态角,跟飞机飞行有点类似,即计算 pitch,yaw 和 roll 三个欧拉角,分别学名俯仰角、偏航角和滚转角,通俗讲就是抬头、摇头和转头。百闻不如一见,上图示意

21cf0fad81638ae88317242b6b75a49956a21b7d

Head Pose Estimation有啥用呢?

记得在群里问“群里有没有做过 Head Pose Estimation 研究的小伙伴?”,有人问过“这个目的是什么?”。其实 Head Pose Estimaion 的应用场景和目的挺丰富的,下面CV_Life君就跟小伙伴们分享几个方向。

(1) 注意力检测。CV_Life君目前就在做这个方向,通过判断头部姿态可以判断人的注意力情况。比如可以检测长途司机是不是在目视前方,长时间不目视前方的话,可以提前敲打,保证安全,减少事故;再比如监控学生上课时是否集中精力,以后再也不用担心班主任在后窗偷窥了。

7f2f9456d13b8005bca515b440f8f43add29d11d

(2) 行为分析。和上面的有点类似,但还是有点不同。我家乡方言里有个词叫“胡撒”,说的就是心虚的人容易左顾右盼,通过视频监控分析再辅助其他算法可以判断一个人是否具有不轨行为,做到提前预警,防患于未然。

(3) 人机互动。人的头部动作有时可以表示意义,传递信息。摇头在大多数人看来是否认,点头表示同意(三哥表示不服),长时间低头说不定你就是“地狱之门”的沉思者。如果机器人能理解这样的行为,将提高人机交互的质量和有效性。

353900bda551155936d72bc8d80f9fd662860e1d

(4) 视线追踪,也可以称为眼球跟踪。准确的 Head Pose Estimation 能够提高视线追踪的精度。视线追踪可以用在游戏领域,也许有一天你打开手游后,用眼睛就可以控制游戏内人物的移动了(体验如何暂且不管,要的是黑科技),让体感操作更上一层楼。

说完了 Head Pose Estimation 的八卦,既然这玩意这么有用,小伙伴们是不是已经迫不及待地想去试试手呢?下面CV_Life君就说说 Head Pose Estimation 的原理之一。

Head Pose Estimation 如何理解?

如果你对相机标定熟悉的话,就比较好理解,因为 Head Pose Estimation 比较有难度的部分已经被大牛们搞定了,CV_Life君普及一下比较基本的原理。一种比较经典的 Head Pose Estimation 算法的步骤一般为:2D人脸关键点检测;3D人脸模型匹配;求解3D点和对应2D点的转换关系;根据旋转矩阵求解欧拉角。Bingo!就是这么简单。 

下面是原理时间。众所周知一个物体相对于相机的姿态可以使用旋转矩阵和平移矩阵来表示。 

平移矩阵:物体相对于相机的空间位置关系矩阵,用T表示; 

旋转矩阵:物体相对于相机的空间姿态关系矩阵,用R表示。 

如此看来必然少不了坐标系转换。讲点人性,继续上图

957d48f34596144ee57a39cd02c88231e4003a04

于是世界坐标系(UVW)、相机坐标系(XYZ)、图像中心坐标系(uv)和像素坐标系(xy)四兄弟闪亮登场。如果相机完美无瑕,老三可以回家洗洗睡觉,关系也相对简单。

世界坐标系到相机坐标系:

feec02bdef28b2b6cc633a3dd4679f074f9714c4

相机坐标系到像素坐标系:

3dd9a32db4a13787c61d9c82efc105c4b19fc18a

因此像素坐标系和世界坐标系的关系如下:

c083f4e8957656eb521cb24f5b09df74a8d5c6ef

上式的求解可用DLT(Direct Linear Transform)算法结合最小二乘进行迭代求解,最小二乘的目标函数可为

62b79b56a15631e92cc3d0000c1d813d64fb99c4

带^的变量为预测值,其余为测量值。

可是相机也很无奈,她不完美,总有点瑕疵,比如径向和切向畸变,那关系就要稍微复杂一些,叫醒阿三继续推导:
相机坐标系要先转换到图像中心坐标系:
93fc47d16ce609de37877540498f99587cd55815

然后再被折磨一番(计算畸变): cdc0b064ebe8c9b8b441473937521abcd5b28e43

最后图像中心坐标系到像素坐标系: cd2e8e46b6620b419e0863169fd0c843681bdb8a
看来只要知道世界坐标系内点的位置、像素坐标位置和相机参数就可以搞定旋转和平移矩阵,可上面的关系分明是非线性的,这可怎么解啊?其实OpenCV已经给我们提供了求解PnP问题的函数solvePnp(),一步轻松到位。
得到旋转矩阵后,就可以开心地去见欧拉角了:
e855ed076f6085e01cef4f8fc329eb90f5335233
估计有些小伙伴犯嘀咕了:世界坐标系中点的位置怎么得到
阿里零售通如意POS S1是一款由阿里巴巴推出的智能收银机,作为小店的"大脑",它能够为小店提供更加便捷、高效的收银服务。 首先,如意POS S1采用了先进的人工智能技术。通过与阿里巴巴的大数据平台连接,它可以准确地识别商品信息,实现自动识别、结算和统计功能。无论是快速扫描条形码还是人工输入商品信息,都能够快速记录和结算,避免了繁琐的手工操作。 其次,如意POS S1拥有丰富的功能扩展。它支持支付宝、微信支付等多种支付方式,能够满足顾客的多样化支付需求。同时,它还可以通过连接蓝牙打印机、电子秤、扫码枪等外部设备,实现更多个性化的需求,提升小店的运营效率。 此外,如意POS S1还具备强大的数据分析和管理功能。它能够实时监控库存情况,提醒小店及时进货,避免断货情况的发生。同时,它还能根据销售数据进行分析,为小店提供经营建议,帮助小店主了解销售情况和市场趋势,做出更加明智的经营决策。 总的来说,阿里零售通如意POS S1的重磅上线为小店带来了新的智能化解决方案。它通过人工智能、丰富的功能扩展和数据分析,实现了小店收银、支付和管理的一体化,为小店提供了更便捷、高效、智能的运营管理工具。小店可以通过使用如意POS S1,提升服务质量,提高销售额,并更好地适应市场竞争的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值