arxiv: https://arxiv.org/pdf/1911.10529.pdf
github:https://github.com/jialee93/Improved-Body-Parts

既然是Rethinking, 那么就要先只出需要rethinking的内容. 文章主要针对于人体姿态估计中的bottom-up的方法, 提出了关于bottom-up方法里的一些问题的思考:

  1. 人体姿态估计中的尺度多变性. 由于bottom-up的方法是一次性的提取出整张图片上的所有人体的关键点, 而图片中多个人的尺度大小并不是统一的,有的人大有的人小, 这就给算法增加了很大的难处. 图像金字塔或者一些特殊的网络结构(如FPN, hourglass)等都是用来提取多尺度信息的方法
  2. 高分辨率的特征图. 这个特征图不仅是网络的输入图像大小,也是网络的输出图像大小.在HRNet中已经证明了,使用更大的图像size作为输入,保留更高分辨率的feature map作为输出,能够更准确的提取关键点坐标位置.
  3. 特征点的聚类方法. Bottom-up方法是一次性提取出所有人体的所有关键点,那么怎么把属于同一个人的特征点分在一起,而把不同人的特征点分开就很重要.之前的方法有associate embedding, Part affinity fields等方法来解决这个问题
  4. 最后一个也是其它论文经常不关注的一点是数据不平衡问题. 这个数据不平衡是指两个方面:1) 数量少的positive samples VS 数量多的negative samples. 由于目前大部分都是采用回归热力图的方法来计算关键点, 打的label是在关键点处为中心的一个高斯分布, 这就造成了一个feature map上, 只有一小部分点有值而其余绝大部分都是zero; 2) 数量少的easy samples VS 数量多的hard samples. easy samples是指高斯分布的中心极值及背景位置, 这些位置的信息容易被学习到, hard samples是指在高斯分布的范围内的遮挡处或不可见处, 这些位置的信息难以被网络学习到.

对于上面的四个问题, 文章提出了以下改进:

  • 文章使用hourglass作为backbone来进行特征提取, 并且对不同stage的相同尺度的输出层都有做信息融合. 除此外, 文章还增加了SE Block对于每一个尺度的feature map, 类似于 channel attention 机制Simple Pose: Rethinking and Improving a Bottom-up Approach for Multi-Person Pose Estimation
  • 对heatmap的生成做了改进. 首先是keypoint heatmap, 这个生成方式和其它文章的生成heatmap的方法没有什么太大不同, 主要是paf这块, 文章不再是像之前openpose的做法, 对于一个limb处, 里面的所有值都一样, 而是选择了离关键点越近的位置, heatmap值越高.Simple Pose: Rethinking and Improving a Bottom-up Approach for Multi-Person Pose Estimation
  • loss设计, 仿照focal loss, 对生成的heatmap label处每个位置都加上权重, 使得模型在计算loss的时候,忽略easy backgrounds和easy foreground, 专注于学习hard example(这段没看太懂, 但看完后个人感觉最后的作用有点类似针对打标签区域做一个mask掩码, 只在mask掩码内计算heatmap loss)Simple Pose: Rethinking and Improving a Bottom-up Approach for Multi-Person Pose Estimation

作者已开源, 具体效果可以实际跑下看看如何

相关文章: