参考代码:
这里提到的v1和v2版本分别对应的文章名称:
- SOLO: Segmenting Objects by Locations
- SOLOv2: Dynamic and Fast Instance Segmentation
1. 概述
导读:SOLO系列的文章解决的是单阶段的实例分割任务,相比之前的检测-分割(top-down)的方法在操作流程上简化不少,同时取得的效果也是不错的。在单阶段的实例分割任务中由于缺少检测带来的位置确定性,因而需要对实例分割的中的像素位置进行显式建模。在这篇文章中通过将输入的特征图划分为 S ∗ S S*S S∗S的网络(在实际数据分布下物体与物体中心的距离也是足够的,能够满足网格划分从而区分开不同的物体,物体不密集的情况-_-||),也就是通过网格划分的方式确定位置与实例mask的对应关系,并在对应的网格上完成目标的分类和网格对应实例mask的预测任务。
将文章的实例分割算法与Mask RCNN方法进行比较,见下图所示:
SOLO的方法直接建立位置与mask的关系,从而完成实例的分割。
2. SOLO-v1
2.1 网络结构
文章提出的网络结构见下图所示:
文章的方法首先使用FPN网络进行特征提取,之后预测头通过共享权重的策略实现实例mask的分割,这里采用了FPN网络的 P 2 − P 6 P2-P6 P2−P6的特征图(多尺度预测下的性能最佳),其对应的网络尺寸为 S ∈ [ 40 , 36 , 24 , 16 , 12 ] S\in[40,36,24,16,12] S∈[40,36,24,16,12],对应网格大小和数量对性能的影响见下表:
2.2 预测头
这里使用到的预测头其结构见下图所示:
分类分支:
若当前特征图需要的网格数量为 S ∗ S S*S S∗S,那么这里会首先将输入的特征进行resize操作(也就是对应上图中的Align操作),从而得到空间分辨率为 S ∗ S S*S S∗S的特征图,之后就是对这些网格进行类别回归。对于这些特征图的分类标签是通过判断GT box的中心区域落在是否落在对应网格内部确定的,落在了对应的网格内部那么对应的网络回归的目标就是GT box的类别。其中这里对GT box中心区域的确定使用的是 ( c x , c y , ϵ h , ϵ w ) , ϵ = 0.2 (c_x,c_y,\epsilon h,\epsilon w),\epsilon=0.2 (cx,cy,