AI_challenger

主要是关于比赛的总结,获奖队伍的方法总结,以及自己看的姿态估计论文

相关数据集及论文:

mpii:deep(er)cut 包括数据集,论文,poster,代码

ArtTrack: Articulated Multi-person Tracking in the Wild

code

Convolutional Pose Machines

code

Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields

code

Stacked Hourglass Networks for Human Pose Estimation

project site

写在前面:

比赛数据:数据量特别大,训练数据21万张

数据集场景更贴合实际场景,经统计,将近50%的标注有重叠。实际生活中,运动员交叠,拍照时靠拢……

1.基于open pose的改进方法

l.top down 方法

  1. 输入图像进行人体的检测
  2. 单人的人体姿态估计

缺点:

  1. 算法速度与图片上人的数目成正比:检测了几个人,就得进行多少次的单人姿态估计过程,很耗时,很难扩展到实时应用中去。
  2. 对框特别敏感,偏移一点点,结果就会改变。因为这种方法是以人为中心的图像块作为输入,所有训练出来的模型对人在框中的位置特别敏感。
  3. 当两个人离得很近时,即使使用GT的bounding box,网络也很难做出判断

2.openpose

思想:

多个阶段级联的双分支网络,估计节点之间的heatmap,还估计节点之间的连接关系,也就是亲和力场。

在输入图像上不加区分的一次性估计出所有候选关键点,再对输出的节点之间的亲和力场,对节点进行关联。

问题:

  1. 文中约束:一个候选节点最多只能关联到一个人的姿态估计中去。如果某一个节点关联错误,那他后续相关的节点都会关联出错。如果一个节点被关联到另一个人中去,那两个人的姿态估计都会出错。
  2. 孤立点问题:因为他的父节点没有被检测到。可能因为截断,或者是遮挡,导致父节点没有被预测到。

2.改进:

2.1.human detection

好处:

  1. 在每个人的bounding box中独立的进行姿态解析,就避免了错误在两个不同人之间传播的问题。
  2. 有了这个框就可以进行判断,将孤立的节点关联到相应人的姿态估计中去。

区别:

不像top-down这个方法的ounding box,一定需要人位于图像的中心。我们只需要完整的包住人即可。实验中使用YOLO完成。

2.2.网络结构

  1. 将特征提取的VGG19网络替换成残差网络。好处:
  2. 引入deconvolution 层来提高输出分辨率,在每个stage的$1\times1$的卷积之前加入了一个deconvolution 层(s=2),实现对输出的2倍上采样。再在每个分支输出后加上pooling层(s=2),实现2倍的下采样,再和原始的特征进行拼接,送入下一个stage。

测试:

  1. heatmap :所有人的候选点集合,和包含节点之间连接关系的亲和力场的估计
  2. 每个人的框内姿态解析:确定当前框内的候选点集合
  3. 姿态NMS:贪心算法,对人体骨架的每一段连接,利用亲和力场,计算置信度
  4. POST处理

2.3:重复检测

0.7阈值过滤框,再进行0.4阈值的OKS的非极大值抑制。

会对同一个人的骨架进行重复解析,因为同一个人不止检测到一次。

循环的对每一个框进行判断,挑出置信度最高的骨架,删除其他框内的相似的骨架。

NMS:对骨架进行。解决框预测重复导致的节点预测重复的问题。

计算两套骨架的相似度。0.7阈值抑制框,0.5阈值抑制OKS的骨架。

通过数据集上可视化进行,阈值比0.4小的话质量就很低了。

2.4孤立点:

孤立点:对于一个骨架中没预测出来的节点,在相应通道的heatmap中寻找置信度最高并且没有被关联到其他人的骨架中的点,作为该点。

比如脚踝没检测到,找到Heatmap中最高的点,发现已经被关联了,就找次高的confidence的点作为这个人的脚踝。

很有效的解决孤立点的问题。

3.问题

3.1 gain

  1. 速度较top-down更快,只用前向一次
  2. 引入human detection,当两个人挨的很近时,一方面防止错误在两个人之间传播,另一方面也能解决父节点检测不到而导致的孤立点问题
  3. 对抖动非常鲁棒

每个改进,小数点后两位进步。

3.2稀有姿态

数据增强

3.3合成pose考虑?

3.4建议

数据集的评分要求:OKS.

需要准确的判断这个图里有多少个人。当复杂场景,上百人,网络不能很好的作用。特别是bottom up的方式,会造成OKS的下降。

4.和COCO的区别

标注:占图片面积较大的人作为标注

评分:单纯的OKS,而不是算的mAP

2.UNet网络

  1. 改进的NMS方法,对重叠度进行抑制,找到重复的人。2.84%
  2. 随着输入size的增加,map也会增加。
  3. 多尺度的feature map融合。
  4. 对L2或者L1的定位loss的优化,直接进行OKS的损失函数的优化。weighted OKS的计算方法。对每个OKS的相似度之前。
  5. 对难样本的挖掘
  6. 低score的region抑制
  7. 进行数据集扩展,COCO2017keypoints.0.84%

数据集的问题:对于背景中的人都当作了false positive。但是我们训练的模型能够检测到,导致OKS下降。

2.基于mask rcnn

思路:人体框 –> 骨骼关键点
阈值:0.4
常见方法:高斯监督,
our method:

3.自顶向下的方法

3.1思想:

faster RCNN进行人体框,基础网络ResNet.阈值设为0.4删除多余的框。再进行骨骼关键点的检测。

3.2改进

3.2.1监督方法和目标函数

使用半径不同的监督使得模型能够学习到预测的半径,3种,然后模型进行融合

测试的时候没有进行多模型测试。

使用高斯监督,估计概率。2个点的提升

3.2.2不同区域的特征融合

3.2.3OKS的NMS:

解决框预测重复导致的节点预测重复的问题。

计算两套骨架的相似度。0.7阈值抑制框,0.5阈值抑制OKS的骨架

3.2.4输入影响

输入小,模型精简的情况下,效果不错,近乎实时。

3.2.5拓展

汽车的关键点

狗狗的关键点

智能驾驶:行为分析。

4.自顶向下

1.人体检测器:faster RCNN进行检测尽可能多的矩形框,在进行分类回归融合的关键点检测。

2.目标函数的设计方法:

分类:每个像素点进行分类,是否在某个关键点的邻域范围内。

回归:计算偏差。对每个邻近点进行投票。计算邻近点和关键点的位置回归。

delited convolution:

3.人体检测器对最后是有个正向作用。

4.一个框内有两个人

5.reference

reference