经典论文系列| 实例分割中的新范式-SOLO

前言:

这是实例分割中的一篇经典论文,以往的实例分割模型都比较复杂,这篇论文提出了一个简单且直接的实例分割模型,如何设计这种简单直接的模型且要达到一定的精度往往会存在一些困难,论文中有很多思路或思想值得借鉴,因此十分值得一读。

在本文中,为让各个方向的读者都能看得懂并抓住重点,较为详细地介绍了本文的创新或改进思路,而对一些细节不予赘述。

 

论文:SOLO: Segmenting Objects by Locations*

代码:https://git.io/AdelaiDet

 

Introduction

实例分割需要正确分离图像中所有对象,同时还需要在像素级别对每个实例进行语义分割。最近的实例分割方法可以分类为两组,即自上而下和自下而上的范式。

第一种方法“detect-then-segment”,首先检测边界框,然后在每个边界框中分割instance mask。第二种方法通过推开属于不同实例的像素并拉近同一实例中的像素来学习亲和关系,将embedding vector分配给每个像素,然后需要进行分组后处理以分离实例。这两种范式都是step-wise的和indirect,它们要么严重依赖于精确的边界框检测,要么依赖于每个像素的embedding 学习和分组处理。

相比之下,我们的目标是在完整instance mask标注的监督下直接分割instance mask,而不是检测框内的mask或其他像素对关系。我们重新开始思考一个问题:在一张图片中,什么是目标实例之间最本质的区别呢

作者分析了MS COCO数据集,验证子集中总共有36个,780个对象,其中98.3%的对象对的中心距离大于30个像素。至于其余的1.7%的对象对,其中40.5%的大小比大于1.5倍。总之,在大多数情况下,图像中的两个实例要么具有不同的中心位置,要么具有不同的对象大小。这一发现使我们怀疑是否可以通过中心位置和对象大小直接区分实例?

在语义分割中,现在的主流范式利用全卷积网络(FCN)来输出具有N个通道的密集预测。每个输出通道负责一个语义类别(包括背景)。语义分割旨在区分不同的语义类别。类似地,在这项工作中,我们建议通过引入“ instance categories ”的概念来区分图像中的对象实例,即量化的中心位置和对象大小,从而可以按位置对对象进行分割,因此我们的方法名称为SOLO。

 

SOLO结构

前面提到作者认为图像中实例对象之间最基础的区别在于大小和位置,因此,SOLO使用FPN来生成通道数相同但大小不同的特征金字塔,来实现不同大小的实例对象在不同的level进行检测。对于金字塔每一层的feature maps都输入到两个预测头中。

注:为了简化图示,在这里没有显示特征金字塔网络(FPN),下图中的FCN没写错,后面会介绍。

图片

如上图所示,将实例细分重新定义为两个子任务:类别预测和instance mask生成。输入图像被分成均匀的网格,即S×S。如果目标的中心落入网格单元,则该网格单元负责预测语义类别(Category Branch)和实例掩码(Mask Branch)。

注:金字塔每层的预测头的权重是共享的。

格子数量(即S)在不同层是不一样的。

 

Semantic Category

这个做法与YOLO相同,通过FPN把图像分成S x S 的网格,其张量形状为S x S x C。其中每个格子属于一个单独的实例,因此每个格子只属于一个语义类别。每个格子只要是在ground truth的区域内,它就是positive。在推理阶段,C维通道预测该格子属于每个目标实例的可能性,C =类别数量。

 

Instance Mask

可以看到上面那个图中,Semantic Category中的每个格子是跟下方Instance Mask中的mask是一一对应的。由于每个格子都会预测一个实例对象,也就是会预测S^2个mask,而mask的大小为原图大小,即H x W。因此,Instance Mask的形状为H x W x S^2。

它们的对应关系是Semantic Category中第i行第j列的格子对应Instance Mask中第k维 ( k = i·S + j )的mask。

预测Instance Mask的一种直接方法是采用全卷积网络,例如语义分割中的FCN 。然而,常规的卷积运算在某种程度上在空间上是不变的。空间不变性对于某些任务(例如图像分类)是理想的,因为它会引入鲁棒性。但是,因为我们的分割mask以网格为条件,并且必须由不同的特征通道分开,因此在这里我们需要一个空间变化的模型,或者更精确地说,是位置敏感的模型。

做法比较简单,在网络初期引入两个feature map,一个是x坐标,一个y坐标,归一化在[-1,1]之间,以concatenate的方式与原始tensor结合。

 

SOLO是怎样起作用的

图片

上图显示了由S = 12个网格生成的网络输出。子图(i,j)表示相应的mask通道产生的soft mask预测结果。 在这里我们可以看到不同的实例在不同的掩码预测通道上激活。 通过在不同位置显式分割实例,SOLO将实例分割问题转换为位置感知分类任务。在每个网格处将仅激活一个实例,并且可以通过多个相邻的mask通道来预测一个实例。 在推理期间,我们使用NMS来抑制这些冗余mask。

 

Decoupled SOLO

 

当格子数量比较大时,如S取20,则会生成400个Instance Mask,在大部分情况下,图像中的目标比较稀疏且少,没必要太多的Instance Mask。

图片

 

如上图所示,将原来的输出tensor HxWxS^2用两个形状为HxWxS的tensor来代替,分别为x, y。而位置(i,j)的mask通过Xj 与Yi逐元素相乘获得。

这种分解方式比原来的方式需要的内存更少,而精度几乎一样。

 

Conclusion

图片

欢迎关注公众号 CV技术指南 ,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读。

在公众号中回复关键字 “入门指南“可获取计算机视觉入门所有必备资料。

其它文章

ML2021 | PatrickStar:通过基于块的内存管理实现预训练模型的并行训练

ICCV2021 | PnP-DETR:用Transformer进行高效的视觉分析

ICCV2021 | 医学影像等小数据集的非自然图像领域能否用transformer?

ICCV2021 | Vision Transformer中相对位置编码的反思与改进

ICCV2021 | TransFER:使用Transformer学习关系感知的面部表情表征

2021-视频监控中的多目标跟踪综述

统一视角理解目标检测算法:最新进展分析与总结

全面理解目标检测中的anchor      |    姿态估计综述

目标检测中回归损失函数总结     |     小目标检测常用方法总结

视觉Transformer综述    |    2021年小目标检测最新研究综述

Siamese network综述    |  小目标检测的一些问题,思路和方案

视频理解综述:动作识别、时序动作定位、视频Embedding

从CVPR 2021的论文看计算机视觉的现状

ICCV2021 | MicroNet:以极低的 FLOPs 改进图像识别

ICCV2021 | 重新思考视觉transformers的空间维度

CVPR2021 | TransCenter: transformer用于多目标跟踪算法

CVPR2021 | 开放世界的目标检测

CVPR2021 | TimeSformer-视频理解的时空注意模型

CVPR2021 | 一个高效的金字塔切分注意力模块PSA

CVPR2021 | 特征金字塔的新方式YOLOF

经典论文系列 | 重新思考在ImageNet上的预训练

经典论文系列 | Group Normalization & BN的缺陷

经典论文系列 | 目标检测--CornerNet  & anchor boxes的缺陷

经典论文系列 | 缩小Anchor-based和Anchor-free检测之间差距的方法:自适应训练样本选择

CV方向的高效阅读英文文献方法总结

CNN可视化技术总结(一)-特征图可视化

CNN可视化技术总结(二)--卷积核可视化

CNN可视化技术总结(三)--类可视化

CNN可视化技术总结(四)--可视化工具与项目

池化技术总结    |  NMS总结    |  注意力机制总结

特征金字塔总结      |  数据增强方法总结

CNN可视化技术总结

CNN结构演变总结—经典模型

CNN结构演变总结—轻量化模型

CNN结构演变总结—设计原则

论文创新的常见思路总结

在公众号《CV技术指南》中回复“技术总结”可获取以上所有总结系列文章的汇总pdf

posted @ 2021-04-29 23:52  CV技术指南(公众号)  阅读(526)  评论(0编辑  收藏  举报