CVPR2021 BoxInst High-Performance Instance Segmentation with Box Annotations
目录
- BoxInst: 进一步提升实例分割算法的表现
- 创新点解析
- 引言
- 方法论
- 损失函数设计
- BoxInst重新理解
- 先前的工作综述
- 核心创新一:投影损失函数
- 核心创新二:两两对比损失函数
- 基于无mask信息的学习机制
- 附注:研究意义与挑战
- 实验结果展示
- 拓展应用探索:半监督实例分割技术
- 损失函数实现细节
- 先前的工作综述
- 创新点解析
BoxInst: High-Performance Instance Segmentation with Box Annotations
https://arxiv.org/abs/2012.02310
创新点
本文主要思路是对实例分割中的mask学习损失函数进行了优化设计,并不需要对分割网络进行任何改动。这种新方法无需mask标签即可有效监督mask的学习过程。该研究工作主要基于CondInst框架,在此基础上提出了两种不同的损失函数:第一种是通过最小化ground-truth边界映射与预测mask之间的差异来实现替代效果的项;第二种则是一种配对式的损失函数,在颜色相似度较高的相邻像素点之间强制保持相同的类别标签。
效果:在 COCO test-dev split 上实现 33.2 % 的 mask AP(vs. 全监督的 AP 为 39.1%
Introduction
作者提出了一种简洁、单一阶段且性能优越的边框监督式实例分割方法,并将其构建于全卷积实例分割架构——CondInst之上。其中一项精心设计的mask损失由两部分组成:其中一部分旨在最小化预测mask与ground-truth边界在垂直和平行方向上的映射差异。

上半损失实际上是指通过限定Mask的尺寸以及其对应位置来实现的一种方法。其中第二个项则用于进一步地约束,在这个特定范围(box)内将具有相似特征属性的像素点进行组合,并形成一个对应的Mask。
method
CondInst aims primarily to achieve instance segmentation through a ROI-free convolutional FCN approach.

CondInst 采用了可调动态滤波器以解决上述问题。该系统未采用类似于Mask R-CNN的固定mask head设计,在 CondInst 的框架中可以根据需要实时调节mask头的权重参数,并依据实例数量灵活配置多个预测头来进行计算。
基于实例mask头部设计的方法中,CondInst能够借助全卷积网络实现每个实例mask的具体提取过程,并且无需RoI操作即可完成这一过程。与Mask R-CNN不同的是,CondInst能够有效生成全图像范围内的所有实例mask区域
LOSS
总的损失: L_{mask}=L_{proj} + L_{pairwise}
Projection loss term的第一部分利用参考边界标注来指导预测mask的空间映射关系,在确保预测mask边界与参考标注具有高度一致性的前提下实现精确对应。Pairwise affinity loss term的第二部分构建了一个无向图模型G=(V,E),其中V代表图像像素集合而E代表连接这些像素的边。通过二值交叉熵损失函数衡量pairwise损失时发现仍需依赖mask注释信息,在此基础上我们提出了一种基于颜色空间中像素点相似度的阈值化处理方法来获得初步mask估计
算实例分割的弱监督学习任务
作者的视频解读https://www.bilibili.com/video/BV1x5411H79b
BoxInst再理解
motivation:标注mask的工作量较大, 但引入box后生成mask的过程相对容易, 这主要是由于mask仅限于特定区域进行操作
先前的工作
BoxSup: 利用边界框作为监督信号来训练卷积神经网络用于语义分割任务
仅利用box进行监督,并对proposal中的区域进行更新与迭代以生成mask

Weakly Supervised Instance Segmentation employing the Bounding Box Tightness Prior

在框内和框外分别进行采样操作,在该区域内的采样点至少包含一个真实正样本实例;而位于该区域外部的所有采样点则被明确标记为负样本
核心创新1:Projection LOSS
该实例对应的mask经xy轴向投影后结果与box mask完全一致。因此采用该损失函数来约束mask在xy轴向上的投影结果使其与gt-box坐标位置保持一致。数学表达式表示为:
Proj_x(b) = l_x, Proj_y(b) = l_y
其中b是一个由0-1值构成的高度乘以宽度二维集合,在生成的目标掩膜中若某一点的空间坐标位于gt-box范围内则对应位置标记为1反之则标记为0。
而projector则是通过去除y维度仅保留x维度信息并采用取最大值的方法实现上述投影过程。
而l则代表一个一维分割掩膜。

该损失基于Dice损失函数作为监督信号(CondInst)。
最终计算得到的Loss值为均值。

核心创新2:Pairwise LOSS
假设有mask annotation,在一张图像上构建无向图G = (V, E),V是像素点,E是边。

每个像素连接其邻近的K-1个点(可采用dilation操作),其中K值经后续实验研究确定最适取值为3。

其中(i,j)和(l,k)代表一条边的两个端点坐标。m表示单个像素属于前景区域的概率值,在数值上介于0到1之间。网络模型使用二元交叉熵损失函数(BCE loss)进行概率预测训练,并非直接用于计算最终pairwise损失项。定义Ein为至少一个端点位于目标框内部的所有边集合,在实际应用中我们采用带有约束条件的目标框(Ein),这不仅能够提高模型对目标边缘检测的能力,并且能有效防止因外部背景像素过多而导致训练目标函数失衡的问题。N表示上述集合中所有满足条件的边的数量
在全监督学习框架下,若仅通过pairwise损失函数来指导mask的训练,则预期会产生两种可能性:其中之一与其标注结果一致,另一个是1-m(此处仍存在疑问)。这一现象可以通过映射损失机制得以实现,从而确保所有位于边缘之外的像素均为背景区域。
通过无mask标签学习
无论我们采用投影注释(projection annotation)还是遮罩注释(mask annotation),L_{proj}始终表现出良好的效果。在L_{pairwise}中设置一个阈值用于判断边的标签是否为1;当边标签大于该阈值时,则标记为1。

c_{ij}和c_{lk}表示连接的两个像素的颜色向量,在基于LAB色彩空间中进行计算时,默认参数θ设为2。
即可计算这些具有高颜色置信度的边对应的pairwise损失,
并跳过那些类别未知的边,
真实损失值由公式(8)给出。

ll{Se≥τ}是指示函数,大于阈值为1,否则为0

x轴代码颜色相似度指标数值越大表示右侧数值越大表示要求越高右侧数值越大表示要求越高右侧数值越大表示要求越高右侧数值越大表示要求越高右侧数值越大表示要求越高右侧数值越大表示要求越高右侧数值越大表示要求越高右侧数值越大表示要求越高右侧数值越大表示要求越高右侧数值越大表示要求越高右侧数值越大表示要求更高
蓝色线条代表在约束条件下属于正样本的比例随着τ增大比例呈上升趋势随着τ增大比例呈上升趋势随着τ增大比例呈上升趋势随着τ增大比例呈上升趋势随着τ增大比例呈上升趋势随着τ增大比例呈上升趋势随着τ增大比例呈上升趋势随着τ增大比例呈上升趋势随着τ增大比例呈上升趋势随着τ增大比例呈上升趋势
红色线条代表有监督学习中被标记为正样本的比例随阈值变化曲线显示当阈值较小时超过98%的边都被正确识别为正样本这一结果表明即使在较低阈值设置下依然能够获得较高的准确率这一结果表明即使在较低阈值设置下依然能够获得较高的准确率这一结果表明即使在较低阈值设置下依然能够获得较高的准确率这一结果表明即使在较低阈值设置下依然能够获得较高的准确率这一结果表明即使在较低阈值设置下依然能够获得较高的准确率
研究者通过COCO val2017 split中的mask标签统计了所有满足Se≥τ条件的正边比例实验结果显示当τ=0.1时超过98%的边都被正确分类为正样本这一结果表明即使在较低阈值设置下依然能够获得较高的准确率这一结果表明即使在较低阈值设置下依然能够获得较高的准确率这一结果表明即使在较低阈值设置下依然能够获得较高的准确率这一结果表明即使在较低阈值设置下依然能够获得较高的准确率
进一步提高准确性需要适当增加约束条件但过高的约束可能导致可用数据量减少例如当约束条件过于严格时尽管准确性有所提升但训练集规模会显著下降这与图4中的红色曲线所示情况相吻合
在公式8中使用正样本时观察到可能出现两种情况:其中mask值要么全为0、要么全为1。当mask全部为0时无法满足投影损失条件;反之当mask全部置1时同样不成立。通过pairwise对比机制,在接近框边界的像素点上会赋予负值(假设这些边缘附近的像素颜色与背景区域的颜色相似)。
部分参考:<>
PS
定义正边的方式是:当两个端点属于同一gtlabel时,则判定为正边(ye=1)。这种定义确保了对真实物体边缘的有效识别。负样本的学习机制基于gtbox外围像素与实例对象像素之间的逐层相似度计算,在经过阈值优化后能够自动生成目标物体对应的mask区域。为了防止出现所有权重均为0或全为1的情况(即排除极端情况),引入了两个约束条件以引导模型自动寻优得到合理的mask边界描述。
https://www.zhihu.com/question/433790273
该损失函数体现出将目标区域的颜色进行了聚类分析,并与之相邻的区域也进行了类似的色彩分组。在模型训练过程中,默认采用bbox内部像素作为负样本候选人,并将目标区域内的像素视为正样本进行学习。值得注意的是,在这一过程中,默认将色彩相近度的标准设为类别数目。
一对在颜色特征相似的相邻像素中,在通过神经网络预测对应mask时得到的一致scores也必须一致。这可以通过异或操作来表示。另一个值得注意的地方是作者采用了dilated trick来构建这样的边而非直接选取相邻的像素点。一个可能的原因是太近邻像素间的相似性过于trivial(没什么意义),这类边的数量较多但并没有带来显著的优势。
在弱监督学习中
实验

Table 1a表中采用的颜色阈值选取策略中,在分割参数选择上采用实验验证的方式进行优化:当选择的分割参数为COLOR\_THRESH = 0.1时,在测试集上的平均精度(AP)表现优异;而当选择的分割参数为COLOR\_THRESH = 0.2时同样表现出色;进一步分析发现,在这种情况下导致平均精度下降的主要原因是可监督边界数量显著减少;在代码实现层面,则将COLOR\_THRESH全局设定为COLOR\_THRESH = 0.3
Table1b 采用了dilation技术以放大范围,在确定邻近点时,在3×3尺寸内增加2个像素的效果较为理想;当尺寸设定为55时,则可能导致计算负担加重

Table 2验证了我们提出的一种pairwise方法在CondInst全监督学习中同样表现出与现有方法相当的性能,并且通过新的损失函数实现mask学习具有可行性。
当阈值设为0时,默认将基于邻域大小的所有边界视为正向连接并纳入损失函数计算(参考表1a的数据)。在当前案例中发现有94.1%的真实边界属于正向连接实例;然而约6%的真实边界却被归类为负向连接情况(即被错误标记),导致损失计算过程中引入大约6%的比例噪声标签。这使得模型在实际应用中出现严重偏差现象:在该区域几乎所有的像素都被判定为前景区域;而加入阈值调节后则显著改善了模型表现

与SOTA对比

拓展:半监督的实例分割
在本节中,我们将阐述我们的方法如何有助于模型在半监督学习场景下泛化至不可见类别,其中仅有部分类别具备掩码注释.


loss核心代码
在adet/modeling/condinst/dynamic_mask_head.py文件中,
定义了一个名为compute_project_term的函数用于计算映射损失项,
另一个名为compute_pairwise_term的函数则用于计算pairwise损失项,
同时还有一个名为dice_coefficient的方法被设计为一种新的损失计算方案,
这些内容集中在第225至第244行的部分代码块内,
其中包含了关于BoxInst整体架构的具体实现细节,
特别是其默认配置参数设置的位置位于defaults.py文件中的第253行及以下部分,
并包含了与PAIRWISE相关的具体参数设置说明。

https://www.bilibili.com/video/BV1LK4y1X7VC?spm_id_from=333.337.search-card.all.click
