Song-Hai Zhang, Ruilong Li, Xin Dong, Paul L. Rosin, Zixi Cai, Han Xi, Dingcheng Yang, Hao-Zhi Huang, Shi-Min Hu
CVPR 2019
Summary 参考:
- https://blog.csdn.net/Kelly368/article/details/90609729
- https://blog.csdn.net/weixin_42137700/article/details/95879135
背景
现有的大多数图像实例分割模型(如 Fast/Faster R-CNN, Mask R-CNN, YOLO 等)都是基于 proposal regions (bounding-boxes, bbox) 的,步骤如下:
- 对图片进行目标检测,生成大量的 bbox
- 应用非最大值抑制(Non-maximum Suppression, NMS)来消除冗余的 bbox
- 在检测框里进行实例分割
然而这种基于 bbox 的方法存在以下缺陷:
- 两个同类对象可能有较大重叠面积的 bbox,但 NMS 会认为其中一个 bbox 是冗余的,并将其去掉。这意味着这种方法对具有大面积重叠的情况束手无策。
- 即使模型成功地检测出两个对象,但由于 bbox 的大面积重叠,模型难以判断其中的像素属于哪个对象
但是在计算机视觉中“人”这个类别具有特殊性,可以很好地用骨架来定义。在多重遮挡的实例中,相比于 bbox,骨架可以提供更有区分度的信息(如位置、身体部位的可见性),更好地将人的不同实例区分出来。
文章的主要贡献:
- 提出了 pose-based 的人物实例分割框架,能更好地解决遮挡重叠的问题
- 提出了 pose-based 的对齐模块,Affine-Align
- 用骨架特征指导分割(使用 concat)
- 提出了 OCHuman 数据集,该数据集中的人物对象都有较大面积的重叠
模型结构
网络框架主要由 Affine-Align, Skeleton Features 和 SegModule 三部分组成。步骤如下:
- 将有人体姿态标注的图像作为输入,用 backbone(如 resnet50FPN)提取特征
- 应用 Affine-Align 模块,基于人体姿势将 RoIs 对齐为统一大小(文中为 64 x 64)。同时,为每个人体对象生成骨架特征。
- 将上述两者 concat 之后传给 SegModule 对每个人体进行分割
- 使用 Affine-Align 操作中的仿射变换矩阵 H,将每个对象反向对齐,得到最终分割结果
Affine-Align Operation
Affine-Align 的作用与 Faster RCNN 的 ROI Pooling 和 Mask RCNN 的 ROI Align 类似,都是将 ROI 对齐成特定大小。但是与它们不同的是,Affine-Align 是基于人物姿势对齐,而不是边界框。步骤如下:
-
用 K-means 聚类得到训练集中 K 个标准的 pose templates,文中的 K = 3。距离度量在文中有公式给出。
-
通过最优化公式 (4) ,计算最佳仿射变换矩阵 H,使输入的姿势与 templates 尽可能接近。因为templates 中有多个姿势,所以通过公式 (5) 找出得分最高的姿势,确定与之最接近的姿势。
其中 H 是 2 x 3 的矩阵,有 5 个独立的变量:旋转、缩放、x 轴平移、y 轴平移、左右翻转
- 将 H 应用于图像或特征图,并用双线性插值得到固定的大小
Skeleton Features
使用 Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields 中的 part affinity fields (PAFs) 方法提取骨架特征。使用 PAFs 生成人体关键点并将它们连接起来。
SegModule
SegModule 中需要有足够大的感受野来理解上述的人工特征,并且能够学习它们与 base network 提取出的图像特征的联系。故需要更多的 residual units 来提升学习能力。下图是 residual units 的数量对结果的影响:
Performance
-
所有模型的训练数据:COCOPersons training split,包含 pose keypoints 和 segmentation masks
-
验证数据:(1) OCHuman, (2) COCOPersons val split
(1)在人物重叠情况上的表现(OCHuman)
OCHuman 数据集有大面积人物对象重叠,Pose2Seg 模型比 Mask R-CNN 的性能高出非常多。
(2)在一般情况下的表现(COCOPersons val split)
Ablation Experiments
通过 Ablation Experiments,对比 Affine-Align 和 RoI-Align 的性能,并探究是否添加骨架特征对性能的影响。结果显示:
- Affine-Align 模块表现得更好,因为它是基于人体姿势,并且允许旋转
- 添加骨架特征能为网络提供更多有用的信息,得到更精确的结果
总结
考虑到人的特殊性,将人体姿势应用到实例分割中能提升不少性能,特别是在人物对象有大量重叠的情况下