目录
- 前言
- 一、HPE是什么?
- 二、常用数据集
- 1.COFW
- 2.WFLW
- 3.AFLW2000-3D
- 4.300W-LP
- 三、SOTA work
- CVPR2022:SynergyNet
- CVPR2021 Workshop:ASMNet
- 四、我们想做的贡献
前言
为了检测司机的疲劳状态,除了基于人脸关键点的检测去判断是否闭眼,是否打哈欠,还可以基于头部的姿态取判断是否正视前方,或者低头睡觉.那么准确的头部姿态估计,必不可少.此前,我们基于PnP算法取估计HPE,但误差较大.因此,我们决定在YOLOLandmark基础上添加额外的任务,即人脸检测,人脸关键点检测以及头部姿态检测,三个任务整合到一起.
一、HPE是什么?
Head Pose Estimation,即头部姿态估计,一般用6D元素表示,即空间坐标(x,y,z),空间旋转角度(yaw, roll, pitch)等来表示.有些时候空间位置可在二维图像中定位出bounding-box的二维坐标即可,主要是空间旋转角度的估计是一个关键问题.
这个问题,难点在哪里?
单一的HPE任务,已经是个old任务,通常做法是cropped face输入到ResNet,然后设计一个head估计三个角度.因此,单一的任务在标准的数据集上做训练,这不是一个难的问题.
如果将三个task整合到一起,就会遇到问题.没有完整的数据集同时满足这三个任务的训练,比如,dataA提供来人脸关键点的标注适合人脸检测和人脸关键点检测,dataB提供人脸关键点和姿态的标注,适合关键点与姿态的检测.如果设计一个网络,同时能够单阶段的把三个任务完成,这件事情目前还没有人这么做.
二、常用数据集
1.COFW
原地址下载:caltech
这个数据集主要是包含人脸遮挡的数据集,如下所示:
所以它并不包含head pose的信息.每张人脸包含29个关键点的标注信息
2.WFLW
Wider Facial Landmarks in-the-wild (WFLW)包含10000张人脸,7500张用于训练,2500张用于测试.每个人脸包含98个人工标记点.此外,除来关键点的标记,还包括来丰富的背景,例如遮挡,大角度,化妆,照明,模糊和表情等用于当前有竞争力的算法去充分的分析.
data sit: LAB
该数据集主要用于验证算法在复杂背景下FLD的鲁棒性.
3.AFLW2000-3D
AFLW2000-3D is a dataset of 2000 images that have been annotated with image-level 68-point 3D facial landmarks. This dataset is used for evaluation of 3D facial landmark detection models. The head poses are very diverse and often hard to be detected by a CNN-based face detector.
下载链接:3dffa
samples:
这个数据集提供来丰富的3DMMA信息,即3D Face Landmarks, Head Pose等信息.
因此,该数据集可用于head pose的评估,但该数据集包含了大角度的偏转,会对我们的检测器提出漏检的挑战.
4.300W-LP
同样,该数据集也是由3dffa团队提出来的,也是基于3dmma的模型提供FLD和Posture的标注.
该处使用的url网络请求的数据。
三、SOTA work
CVPR2022:SynergyNet
code:github
该网络基于3DMM实现来多个人脸相关任务比如3D FLD, Angle, mesh等任务的实现,比3DFFA,青出于蓝而胜于蓝.
在AFLW3000-3D上的人脸角度估计(MAE欧拉角)
CVPR2021 Workshop:ASMNet
code:github
FLD的检测效果一般,目前不如我的模型角度高
角度估计demo:
在WFLW和300W数据集上的Posture性能对比,这里必须说明的是,他们是采用HopeNet去检测这两个数据集,并把检测的结果作为GT,用来训练此模型.
四、我们想做的贡献
首次基于YOLO实现三个任务的联合检测,即FD, FLD,HPE.这是首次实现.
其次,我们解决来数据集不完备带来的训练问题,我们首先冻结HPE,在A数据集上实现来FD,FLD的联合任务;然后冻结FD,FLD,实现HPE的训练.在训练阶段分步进行,在推理阶段一次搞定.
我们在多个数据集上进行了验证,在人脸检测,FLD和HPE上都取得来不错的性能.包括速度和精度的双提升.
并且,为了将基于单帧的检测用于视频检测,特别是人脸tracking过程中会存在跳帧的问题,为此,我们设计了基于Kalman Filter的平滑滤波,以减少抖动.