文章目录
Paper: https://arxiv.org/abs/2104.05239
Code: https://github.com/tinyalpha/BPR
一、背景
实例分割:
- 给图片中的每个目标生成一个带有类别信息的 pixel-wise 的 mask
- 目前比较流行的是 Mask RCNN 系列,也就是使用 Faster-RCNN 检测目标,然后使用 mask 分支来对box内部进行二类别的分割。
现有的实例分割的mask的质量仍然不尽如人意(图1左),边界很粗糙,而且没有对齐目标边界。原因主要有两个
- 特征图的分辨率太小,mask rcnn 的是 28x28,[38][43]的是输入图像的1/4,导致细小的边界都消失了,预测出来的都是粗糙或不明确的。
- 边界像素所占的比例太少,少于 1% [18],而且本来就很难分类,所以,同等的看待所有的pixels可能会导致优化偏向于目标内部区域,边界区域效果较差。

如果能提升目标边界附近的效果,那么可以较大的提升实例分割的效果。
作者做了一个上限实验,在边界附近特定距离时(1px/2px/3px),使用真实的标签来代替预测的结果,AP 有较大的提升。

二、动机
现有方法中,也有很多通过引入边界分支来提升对边界分割的效果,但这些也依赖于对边缘的准确预测,作者认为实例的边界预测和实例分割的复杂度是不相上下的。
受启发于分割真值的标注,标注人员在标注局部细小边界时,需要放大原图进行标注,在标注大边缘时,不需要放大即可标注。
故本文提出了一个在概念上很简单,但很有效的方法:crop-then-refine。
- 得到一个粗糙的mask后,首先沿着 boundaries 抽取一系列的子块
- 将mask的patch和抽取出来的boundaries patch进行concat,共同送入 refinement 网络(BPR, boundary patch refinement)。
上述方法可以解决:
- 1、小的patch就可以保存高分辨率
- 2、小的patch中的边界像素占比会提升,缓解之前的极度不平衡
三、方法

3.1 Boundary Patch Extraction
作者使用 sliding window 的方法提取边界 patch,即以边界为中心,密集的生成正方形框,然后使用 NMS 滤掉部分框
3.2 Boundary Patch Refinement
Mask Patch:

Boundary Patch Refinement Network:
该网络的目的是实现对每个 boundary patch 的二类分割,只要使用任意一个语义分割网络,实现输入4路(RGB+1 binary mask patch),输出2类即可。
作者选择了 HRNetV2 来作为 refinenet,可以保证高分辨率的保持。
Reassembling: refine 之后,使用这些patch来代替没有refine之前的patch,对于重叠的相邻区域,对其取均值后,使用阈值判断,如果大于0.5则判断为前景,否则判断为背景。
3.3 Learning and Inference
训练时,作者仅仅抽取那些预测的mask和gt的iou大于0.5的实例的boundary patch。但所有预测的实例在 inference 阶段都会保留。
模型输出是被从 gt 中提取出的 mask patch 监督的,之后做逐点的二分类cross-entropy损失。
训练时,作者的 NMS 阈值设置为 0.25,inference 时会根据速度的需要来选择不同的阈值。
四、实验
经过消融实验后,作者使用如下的超参数:
-
使用mask patch

-
boundary patch 抠图大小为 64x64,且无 padding

-
送入 refinement network 的patch被resize为 256x256的效果最好

-
NMS:0.55时取得了好的效果



1157

被折叠的 条评论
为什么被折叠?



