Skip to content

20220612 solov2 实例分割

一、文档更新记录

1. 版本信息

  • 版本号:v1
  • 论文名称:SOLOv2: Dynamic and Fast Instance Segmentation [202003CVPR]
  • 创建日期:2022.06.12
  • 创建人:扶云

二、算法介绍

1. 核心思想

  1. 新框架由一个高效且整体的实例掩码进行表示,该方案动态分割图像中的每个实例,而无需借助边界框检测。如何做?:将对象mask生成解耦为mask kernel预测和mask特征学习,它们分别负责生成卷积核和要与之卷积的特征映射;
  2. 使用矩阵非极大值抑制 (NMS) 技术显著降低了推理开销。我们的矩阵 NMS 一次性执行具有并行矩阵运算的 NMS,并产生更好的结果。我们证明我们的 SOLOv2 在速度和准确性方面都优于大多数最先进的实例分割方法。轻量级版本在 COCO test-dev 上以 31.3 FPS 的速度执行并产生 37.1% 的 AP。

Note

看起来就是采用了一个直接预测mask的方案,而不需要通过先预测边框再去做分割,第2个特点就是做了一个矩阵nms加速。 特点:无proposal、无anchor、类似FCN,速度快

直接看下效果和对比:

20220613174615

2. 结论和展望

从三个方面介绍了一种动态、快速、性能强的实例分割解决方案。

  • 我们提出了学习自适应、动态卷积核来进行mask预测,并以位置为条件,导致更紧凑但更强大的头部设计,并获得更好的结果。
  • 我们以一种简单统一的方式重新设计了对象mask生成,从而预测了更准确的边界。
  • 此外,与目标检测中的box NMS不同,对于直接实例分割,推理效率的一个瓶颈是mask的NMS。我们设计了一种简单且速度快得多的NMS策略,称为矩阵NMS,用于在不牺牲maskAP的情况下进行NMS处理。

我们在MS Coco和LVIS数据集上的实验表明,SOLOv2在准确率和速度方面都具有优越的性能。

3. 详细过程

结构创新点

动态卷积

20220908224910

  • 动态实例分割 先对比考虑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 20220908225223

这里需要注意最后输出的channel是跟动态卷积核的大小有关,假定这里确认了动态卷积之前mask feature的输出通道是256,则此处kernel的输入通道就得是256,其次如果卷积核是1 x 1,就不用变;如果卷积核用3 x 3,则此处G的输出通道应该是256 x 3 x 3。 - mask feature F 详细结构如下:作者称之为“统一且高分辨率的mask feature” 20220908225336 需要注意第一层加了一个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

  1. 所有 s_i > s_j 的mask m_im_j的影响penalty;直接通过 f(iou_{i,j}) 计算

  2. 抑制m_jm_i 在之前就被抑制的概率如何计算?如果之前m_i就已经被抑制了,那对 m_j的影响就会减弱甚至消失。而这里概率的计算,就直接采用了最可能影响m_i的那个mask跟它的iou来计算了

原文中的公式实际上

20220908225630

下式分母是计算对m_i抑制的概率,越大,则decay越小;

分子是计算f(iou_{i,j}),越小,则decay越小;

decay越小,则保留的概率越高。

4. 实验

数据集介绍

  1. coco 2017
  2. LVIS dataset LVIS[33]是最近提出的一个用于长尾物体分割的数据集,它有1000多个物体类别。在LVIS中,每个物体实例都是用高质量的掩码来分割的,其质量超过了相关COCO数据集的注释质量。由于LVIS是新的,只有Mask R-CNN的结果是公开的。因此,只将SOLOv2与Mask R-CN基线进行比较。
  3. COCO2018 的全景分割

实验结果

  1. SOLOv2比SOLO高出1.9%的AP,同时速度快33%
  2. 通过直接将预测的掩码转换为其bbox,产生44.9%的物体检测AP,这甚至超过了许多最先进的、高度工程化的物体检测方法

3个基线任务进行实验:在MS Coco[32]上对实例分割、目标检测和全景分割+在最近提出的LVIS数据集[33]上的实验结果

在LVIS dataset上的结果(少、中、多样本,小中大样本集)
  1. 实例分割

训练方法 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】
  • 坐标的有效性:本方法是通过位置信息分割目标,所有位置信息非常重要;

见下图:

20220908225753

  • 目标检测box+全景分割

20220908225852

目标检测精度

20220908225919

全景分割

20220908225934

  • 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.

20220908225956

5. 应用场景

实例分割、目标检测、全景分割

6. 附图

无。

三、附件

https://arxiv.org/abs/2003.10152

https://github.com/WXinlong/SOLO