Fine-Grained Head Pose Estimation Without Keypoints 素颜马尾好姑娘i 2022-04-14 04:10 92阅读 0赞 # **1Abstract** # 传统的头部姿态计算是通过从目标面部提取关键点,本文认为这是没有效率的。我们在300W-LP(一个大型的综合扩展数据集)上提出了一种优雅而鲁棒的训练多重损失卷积神经网络确定内禀欧拉角(横摆、俯仰和横摇)的方法。 论文地址:[https://arxiv.org/abs/1710.00925v2][https_arxiv.org_abs_1710.00925v2] github源码地址:[https://github.com/natanielruiz/deep-head-pose][https_github.com_natanielruiz_deep-head-pose] # **2Introduction** # 我们提出用一种新的方法,使用复合损失网络对三个角度进行损失计算,其中每个角度损失,我们分为两种模块: a pose bin classification与a regression component。 作者在不同的数据集上论证了这种方法与关键点定位的优劣。 本文主要做了以下贡献: 1.根据损失函数来预测三个角度,损失值包含离散值与连续值 2.低分辨率效果好 # **3METHOD** # 通过图像强度,进行预测。 解释如何使用这两个损失函数。 如何在低分辨率上保持性能。 3.2使用MSE不一定达到最好的效果 我们分开使用3个loss,对应三个角度。每个损失由两个损失组成,分类损失与回归损失 ![70][] 三个全连接层之后,就输出了预测值。三个全连接层之前共享一个卷积层。如上图所示。 该方案的想法是:在分类时,我们使用了softmax与cross-entropy,所以网络会预测角度。 通过三个交叉熵,再使用反向传播,调整参数。 在代码中,回归损失是MSE,分类损失是交叉熵。 loss_reg_yaw = mseloss(yaw_predicted, label_yaw_cont) loss_reg_pitch = mseloss(pitch_predicted, label_pitch_cont) loss_reg_roll = mseloss(roll_predicted, label_roll_cont) loss_yaw = CrossEntropyLoss(yaw, label_yaw) loss_pitch = CrossEntropyLoss(pitch, label_pitch) loss_roll = CrossEntropyLoss(roll, label_roll) 最后总损失是二者相加,回归损失前面再加一个参数: ![70 1][] 不同alpha,有不同的识别性能。 alpha也可以为0,也就是说MSE可以没有,但是交叉熵必须要有。 本文的数据集,代码中是用torch的dataloader 采用的数据有AFLW2000,可能是68个关键点,没细看。 第二个数据库是BIWI, [https_arxiv.org_abs_1710.00925v2]: https://arxiv.org/abs/1710.00925v2 [https_github.com_natanielruiz_deep-head-pose]: https://github.com/natanielruiz/deep-head-pose [70]: /images/20220414/4f08801dada94645a6f73a1dcd0f5ac2.png [70 1]: /images/20220414/27bb822397214b0ea7338570b25fb231.png
还没有评论,来说两句吧...