[论文地址]:FCIS:Fully Convolutional Instance-aware Semantic Segmentation
[源代码](基于MXNet)
出发点
FCN在语义分割上取得了很好的效果,但是不适用于实例分割,因为卷积具有平移不变性,不能区分同一类型不同位置的不同个体。
当时流行的实例分割的步骤:
1)利用FCN生成一组共享的特征
2)利用ROI Pooling得到一组固定的ROI特征图
3)连接一个或多个全连接层用于拟合每个ROI内mask(gt在ROI内的特征图)
最后一步引入了平移不变性
具体来说有以下缺点:
- ROI pooling的变换和resize丢失了特征细节,但是为了于全连接层连接又不可或缺(产生固定尺寸的特征),减低了预测准确性(尤其是对较大的物体——损失的细节更多)。
- 缺少局部权重正则化的全连接层容易过拟合
- 全连接层要一个一个拟合ROIs来实现高准确率,但对于过多的候选区域而言,计算代价过大。
InstanceFCN提出了中全卷积的实例分割网络,但是不是端到端的,需要额外的downstrem网络用于检测;同时为了查找多尺度的实例,采用了耗时的图像金字塔操作。
方法概述
通过一种新的无附加参数的联合公式,充分共享了目标分割和检测子任务的卷积模块特征表达和分数图;每个ROI不需要wrap和resize。
同一组分数图用来进行目标分割和检测
对于ROI内的每个像素点,有两个学习任务:
1)检测:该像素点在相对位置是否属于对象边界框;(分别标记为检测+, 检测-)
2)分割:该像素点是否在实例的边界内部;(分别标记为分割+和分割-)
对上述学习任务,论文中综合两个(通道上的)输出特征图来给出答案,
1)内部分数高 且 外部分数低:检测+ 且 分割+
2)内部分数低 且 外部分数高:检测+ 且 分割-
3)内部分数低 且 外部分数低:检测- 且 分割-
这里的分数通过将softmax和max作用在特征图的深度方向上产生,具体看下面的网络结构。
整体结构
- 使用resnet作为backbone来提取特征,去掉末尾1000个神经元的全连接层,仅训练前面的卷积层,同时末尾添加1024d的1x1卷积层用来将原始为2048通道的输出降维;同时原来的resnet的输出特征图下采样了32x,对于语义分割来说太粗糙,在最后一层使用了空洞卷积替代下采样的卷积步长(conv5第一个block中步长为2的卷积核改步长为1,dilation设为2)。
- 使用一个RPN去产生ROIs, 接在resnet的conv4之后。
- 在conv5输出的特征图之后,连接一个1x1的卷积核输出2K^2*(C+1)通道的分数图(C个对象类别,附加一个背景类别,k默认为7(表示从不同的k个通道上按位置取样),代码中表示为group_size=7,roi的长宽方向上bins设置为21(因此每个通道上的采样被划分为3x3大小), 2表示每个类别的内部分数图和外部分数图)
- 然后该分数图作为输入,得到前述两个学习任务的答案。
- 此外,参照检测任务,在conv5特征图后并联一个4k^2-d的1x1卷积,用于回归RPN生成ROIs(平移缩放)
训练:
和最近的gt_bbox IOU>0.5时,ROI被认为是正,其他为负。每个ROI由三个权重相等loss项: - C+1类别的softmax类别检测loss
- 被预测为前景的softmax分割loss
- 边框的回归loss
后两项只有在ROI为正时才参与计算
初始权重为ImageNet分类权重,没有该权重的剩余层被随机初始化。
所有输入图像的短边被resize为600
SGD优化器,在8GPU上训练,每个GPU设置mini-batch为1张图像,因此整个网络训练时的mini-batch为8
对于VOC 数据集,前20k次迭代学习率为0.001, 后10k次迭代为0.0001
对于COCO数据集,迭代次数x8
可应用OHEM在线困难样本挖掘(Training region-based object detectors with online hard example mining. ),对前向传播为300个ROIs,选中losses最高的128个ROIs反向传播。
RPN默认使用9个anchors,但是对于COCO数据集,采用了额外的3个anchor(Microsoft COCO: Common objects in context.), RPN和FCIS采用联合训练。
推理:
RPN产生300个置信度最高的ROIs,然后通过位置回归分支,产生微调后的300个ROIs;
对每个ROI,为每个类别获取类别分数和前景mask
设置IOU阈值为0.3,使用NMS滤除部分ROIs,对保留的ROIs,将其归为类别分数较高的类,同时对每个ROI,找出300个ROIs中与之IOU大于0.5的ROIs, 对每个像素点,按照该类别的置信度加权平均得到该ROI内的前景mask,二值化后输出。