20220612 solov2 实例分割
一、文档更新记录¶
1. 版本信息¶
- 版本号:v1
- 论文名称:SOLOv2: Dynamic and Fast Instance Segmentation [202003CVPR]
- 创建日期:2022.06.12
- 创建人:扶云
二、算法介绍¶
1. 核心思想¶
- 新框架由
一个高效且整体的实例掩码进行表示
,该方案动态分割图像中的每个实例,而无需借助边界框检测。如何做?:将对象mask生成解耦为mask kernel预测和mask特征学习,它们分别负责生成卷积核和要与之卷积的特征映射; - 使用
矩阵非极大值抑制 (NMS) 技术
显著降低了推理开销。我们的矩阵 NMS 一次性执行具有并行矩阵运算的 NMS,并产生更好的结果。我们证明我们的 SOLOv2 在速度和准确性方面都优于大多数最先进的实例分割方法。轻量级版本在 COCO test-dev 上以 31.3 FPS 的速度执行并产生 37.1% 的 AP。
Note
看起来就是采用了一个直接预测mask的方案,而不需要通过先预测边框再去做分割,第2个特点就是做了一个矩阵nms加速。 特点:无proposal、无anchor、类似FCN,速度快
直接看下效果和对比:
2. 结论和展望¶
从三个方面介绍了一种动态、快速、性能强的实例分割解决方案。
- 我们提出了学习自适应、动态卷积核来进行mask预测,并以位置为条件,导致更紧凑但更强大的头部设计,并获得更好的结果。
- 我们以一种简单统一的方式重新设计了对象mask生成,从而预测了更准确的边界。
- 此外,与目标检测中的box NMS不同,对于直接实例分割,推理效率的一个瓶颈是mask的NMS。我们设计了一种简单且速度快得多的NMS策略,称为矩阵NMS,用于在不牺牲maskAP的情况下进行NMS处理。
我们在MS Coco和LVIS数据集上的实验表明,SOLOv2在准确率和速度方面都具有优越的性能。
3. 详细过程¶
结构创新点
动态卷积
- 动态实例分割 先对比考虑SOLO种mask的生成方式,基础版本是生成S^2个mask channel对应每个Grid的预测结果;decouple版本是区分x和y,分别S个通道,这样来减少计算量和mask矩阵稀疏的问题; 本文看图b,改进成一个kernel branch和feature branch,前者学习kernel(卷积核),后者学习特征信息,然后进行动态卷积。【没明白跟直接卷积有啥区别?】
mask kernel G
详细结构如此:4个conv+GN+Relu,1个conv
这里需要注意最后输出的channel是跟动态卷积核的大小有关,假定这里确认了动态卷积之前mask feature的输出通道是256,则此处kernel的输入通道就得是256,其次如果卷积核是1 x 1,就不用变;如果卷积核用3 x 3,则此处G的输出通道应该是256 x 3 x 3。
- mask feature F
详细结构如下:作者称之为“统一且高分辨率的mask feature”
需要注意第一层加了一个coord坐标。最后是做的element-wise 求和。
matrix nms
第二个主要的亮点就是matrix nms。
受soft nms启发,soft NMS 是每次选择置信度最高的候选mask(或框)降低与其存在重叠的候选mask(或框)的置信度。是顺序的,无法并行实现
如何理解matrix nms?
首先考虑mask m_j 是如何被抑制(decay factor)?
抑制的过程就是 新的 score_j = score_j * decay\_factor
-
所有 s_i > s_j 的mask m_i 对m_j的影响penalty;直接通过 f(iou_{i,j}) 计算
-
抑制m_j 的 m_i 在之前就被抑制的概率如何计算?如果之前m_i就已经被抑制了,那对 m_j的影响就会减弱甚至消失。而这里概率的计算,就直接采用了最可能影响m_i的那个mask跟它的iou来计算了
原文中的公式实际上
下式分母是计算对m_i抑制的概率,越大,则decay越小;
分子是计算f(iou_{i,j}),越小,则decay越小;
decay越小,则保留的概率越高。
4. 实验¶
数据集介绍¶
- coco 2017
- LVIS dataset LVIS[33]是最近提出的一个用于长尾物体分割的数据集,它有1000多个物体类别。在LVIS中,每个物体实例都是用高质量的掩码来分割的,其质量超过了相关COCO数据集的注释质量。由于LVIS是新的,只有Mask R-CNN的结果是公开的。因此,只将SOLOv2与Mask R-CN基线进行比较。
- COCO2018 的全景分割
实验结果¶
- SOLOv2比SOLO高出1.9%的AP,同时速度快33%
- 通过直接将预测的掩码转换为其bbox,产生44.9%的物体检测AP,这甚至超过了许多最先进的、高度工程化的物体检测方法
3个基线任务进行实验:在MS Coco[32]上对实例分割、目标检测和全景分割+在最近提出的LVIS数据集[33]上的实验结果

- 实例分割
训练方法
SOLOv2采用随机梯度下降(SGD)算法进行训练。我们在8个GPU上使用同步SGD,每个小批次总共有16个图像。所有模型都以0.01的初始学习率训练36个epoch(即3x),然后在第27个epoch除以10,在第33个epoch再次学习。我们使用scale jitter,其中较短的图像边被随机采样,范围是从640到800px。
消融实验
- kernel shape: 考虑输入通道数和kernel size。输入通道数从128->256 可以获得0.4% AP提升;【选择256】
- 坐标的有效性:本方法是通过位置信息分割目标,所有位置信息非常重要;
见下图:
- 目标检测box+全景分割
目标检测精度
全景分割
- lvis数据集(>1000类):Table 5 reports the performances on the rare (1∼10 images), common (11∼100), and frequent (> 100)subsets, as well as the overall AP.
5. 应用场景¶
实例分割、目标检测、全景分割
6. 附图¶
无。