2020/7/22
Hey,这篇论文主要从以下三个方面对多人姿态估计进行了创新:
1、数据预处理(坐标点变换和ground truth heatmap生成)过程中的中心点对齐问题。
2、使用多尺度监督引导网络生成热度图(论文中将此视为空间注意力机制)
3、用于keypoint和body part heatmap监督的损失函数:focal L2 loss
focal L2 loss提出的动机是用来监督学习两种高斯热图(regression task),并且结合文章提出的关键点和人体部件高斯热图的相似外观,巧妙便捷地解决类内(难样本挖掘)和类间(正负样本平衡)的不平衡问题。CNN本质上其实是模版匹配,不管是预测body part area还是keypoint area,它们都有比较符合视觉感官的表征。回归gaussian peak比直接回归两个相邻关键点之间的offset更加容易;另外,热图编码本身就包含了定位信息,这样我们就避免了多任务学习(classification 和offet regression)之间的平衡麻烦。
这个损失函数非常显著地提高了多人姿态估计的精度,在COCO test-dev dataset上带来3% AP的提升!这从侧面说明我们要关注文章提出的不平衡问题,并且同时对关键点和关键点之间的连接信息做好挖掘学习。值得注意的是,这个损失函数实现起来非常简单:
def focal_loss(s,sxing): s = torch.tensor(s,requires_grad=True) sxing = torch.tensor(sxing) gamma=2.0 st=torch.where(torch.ge(sxing, 0.01), s, 1-s) factor = torch.pow(1. - st, gamma) print('the factor is \n', factor) out = torch.mul((s-sxing), (s-sxing)) * factor out.backward() print(s.grad)
当然,为了加快计算速度,最好对网络生成的所有热度图进行concatnate,然后使用矢量化的代码实现,损失函数位于:
https://github.com/jialee93/Improved-Body-Parts/blob/master/models/loss_model.py
老规矩还是给大家介绍一下租用GPU做实验的方法,我们是在智星云租用的GPU,使用体验很好。具体大家可以参考:智星云官网: http://www.ai-galaxy.cn/,淘宝店:https://shop36573300.taobao.com/公众号: 智星AI,
PEACE
参考文献:
https://zhuanlan.zhihu.com/p/109118177
https://github.com/hellojialee/Improved-Body-Parts
https://arxiv.org/abs/1911.10529