目录
概要
Motivation
整体架构流程
技术细节
小结
论文地址:[2003.10152] SOLOv2: Dynamic and Fast Instance Segmentation (arxiv.org)
代码地址:GitHub - WXinlong/SOLO: SOLO and SOLOv2 for instance segmentation, ECCV 2020 & NeurIPS 2020.
概要
SOLO v2遵循了SOLO的优雅、简单的设计,并且针对mask的检测效果和运行效率做了两个改进:(1)mask learning:能够更好地学习到mask(2)mask NMS:提出了matrix nms,大大减少了前向推理的时间。 最终,SOLOv2相比SOLOv1,AP提升1.9%的同时速度快了33%,light-weight 版本的SOLVv2能够在COCO上达到31.3FPS,37.1%AP。除此之外,SOLO v2还在目标检测和全景分割任务中表现上佳,证实了SOLO的思路有用在更多视觉任务的潜力。
Motivation
- 使用边界框定位对象已经被广泛探索,包括问题表述、网络架构、后处理以及所有专注于优化和处理边界框的内容。边界框是粗糙且不自然的。
- 如何开发纯实例分割(包括后处理等支持设施)在很大程度上尚未被探索。
整体架构流程
SOLO的核心思想是:将分割问题转化为位置分类问题,从而做到不需要anchor,不需要normalization,不需要bounding box detections的实例分割。具体做法是:将图片划分成S×S的网格,如果物体的中心(质心)落在了某个网格中,那么该网格就有了两个任务:(1)Category Branch 负责预测该物体语义类别(2)Mask Branch 负责预测该物体的instance mask。这就对应了网络的两个分支。同时,SOLO在骨干网络后面使用了FPN,用来应对尺寸。FPN的每一层后都接上述两个并行的分支,进行类别和位置的预测,每个分支的网格数目也相应不同,小的实例对应更多的的网格。
Category Branch负责预测物体的语义类别,每个网格预测类别S×S×C,这部分跟YOLO是类似的。
重点看一下Mask Branch,每个正样本(有类别输出的网格)都会输出对应类别的instance mask,这里的通道channel和网格的对应关系是:第k个通道负责预测出第(i,j)个网格的instance mask,k = i*S+j。因此输出维度是H×W×(S^2) 。这样的话就有了一一对应的语义类别和class-agnostic的instance mask。
技术细节
Dynamic Instance Segmentation
继承了 SOLOv1 的大部分设置,例如网格单元、多级预测、CoordConv和损失函数。在此基础上,我们引入了动态方案,其中原始掩模分支被解耦为掩模核分支和掩模特征分支,分别用于预测卷积核和卷积特征。
Matrix NMS
Matrix NMS 受到Soft NMS启发。Soft NMS 会根据重叠度来降低其它检测的得分,将其作为重叠度的单调递减函数f ( i o u ) f(iou)f(iou)。根据IoU的值,递归地降低得分,可用一个极低的分数阈值来去除较高的IoU检测。但是,这个流程是串行的,与Greedy NMS类似,无法并行实现。
MatrixNMS 在准确性和速度方面都是传统 NMS 的卓越替代品,并且可以轻松集成到最先进的检测/分割系统中。
小结
此外,与目标检测中的框 NMS 不同,例如分割,推理效率的瓶颈是掩模的 NMS。之前的工作要么使用盒子 NMS 作为替代,要么通过近似加速,这会导致损害 mask AP。本文设计了一种简单且更快的 NMS策略,称为矩阵 NMS,用于掩模的 NMS 处理,而不牺牲掩模 AP。