APP下载

基于Mask R-CNN和多特征融合的实例分割

2020-11-14姜世浩齐苏敏王来花

计算机技术与发展 2020年9期
关键词:分支边缘卷积

姜世浩,齐苏敏,王来花,贾 惠

(曲阜师范大学 软件学院,山东 曲阜 273165)

0 引 言

实例分割[1-2]是指给定一个图像,在正确检测出图像中所有目标的同时对每一个目标进行分类以及像素级别的分割,是一项具有挑战性的计算机视觉任务,与计算机视觉中的两个经典任务—目标检测[3-5]与语义分割[6-9]密切相关。实例分割的结果中包含非常丰富的信息,在自动驾驶、智能监控、生物医疗、人机交互等领域有着极大的利用价值。

2014年Hariharan等人提出了SDS[10]模型,该模型使用多尺度可结合组(MCG)提取建议区域,对于每个区域,使用卷积神经网络(CNN)来提取前景特征,再对每个区域使用支持向量机(SVM)在CNN顶层特征上进行分类。2015年Pinheiro等人提出了基于单个卷积网络的DeepMask[11]模型。给定一个图像块作为输入,输出一个与类别无关的掩模和该图像块完全包含一个物体的概率。同年,Dai等人提出了多任务网络层级模型(MNC)[12]。该模型分为实例区分,掩模估计,目标分类三个子任务,在共享特征的基础上,形成层级的多任务结构。2016年Pinheiro等人又提出了SharpMask[13]模型,该模型利用底层信息优化了DeepMask的输出,产生具有更高保真度的掩模。上述方法中,分割先于识别,分割结果与目标类别无关,导致结果精度较低。2017年,Y Li等人基于全卷积网络(FCN)[14]提出了一种可用于实例分割的端到端模型FCIS[15],该模型是首个全卷积、端到端的实例分割解决方案。2018年,He等人提出了一种简单通用且性能强大的实例分割模型Mask R-CNN[16]。该模型在Faster R-CNN[17]的基础上加入了一个基于全卷积网络(FCN)的掩模预测分支,并应用了先进的骨干网络—深度残差网络(Resnet)[18]与特征金字塔(FPN)[19]。此外,提出ROIAlign代替了ROIPooling操作,解决了ROIPooling产生的对齐问题,使该模型能够更好地适应像素级别的分割任务。

Mask R-CNN虽然采用特征金字塔(FPN)结构提取了多层次的丰富特征,但对各层信息尤其是边缘细节信息与空间位置信息的利用仍不充分。文中在Mask R-CNN的基础上提出了多特征融合的实例分割方法。首先,在Mask R-CNN结构中加入一条基于HED[20]的边缘检测分支以及一条基于FCN的语义分割分支,分别提供边缘细节信息与空间位置信息;其次,原始特征图在进行ROIAlign时将ROI映射到原先分配的特征层及其相邻层,以充分利用特征金字塔的各层信息;最后,将各分支得到的特征图进行融合,融合得到的新特征中既包含了丰富的边缘信息,能够提升分割结果的边缘精度以及使检测器更好的区分邻接或交错的物体,还包含了目标的空间位置信息,能够将目标前景与自然界复杂的背景进行有效的区分。实验结果表明,该模型与Mask R-CNN相比检测和分割精度都得到了提升。

1 基于Mask R-CNN和多特征融合的实例分割模型

文中提出的网络结构分为三个部分:特征提取网络、区域建议网络以及检测分割网络,整体结构如图1所示。其中,特征提取网络在原有骨干网络(Resnet-FPN)的基础上增加了边缘检测分支与语义分割分支。新增的分支在骨干网络的结果之上进行构建,与原网络联合训练,以重用骨干特征减少额外的参数,如图1左侧虚线框所示。区域建议网络和检测分割网络与Mask R-CNN相同。此外在ROIAlign操作之后加入了特征融合操作,如图1右侧虚线框中所示。

1.1 Mask R-CNN模型

Mask R-CNN模型在Faster R-CNN模型的基础上添加了一个基于FCN的掩模预测分支用于实例分割。如图1所示,输入图像首先通过骨干网络(Resnet-FPN)进行特征提取得到特征图,再通过区域建议网络(RPN)在特征图上生成感兴趣区域(ROI),并将感兴趣区域对应位置的特征池化为固定尺寸的特征,最后由检测分支进行目标框的分类和回归,由掩模预测分支对目标进行像素级别的分割。

图1 网络结构

在Faster R-CNN中,感兴趣区域进行池化(ROIPooling)时对区域划分坐标进行了取整操作,在结果中引入了量化误差,对像素级别的分割任务影响较大。针对该问题,Mask R-CNN作者提出了ROIAlign,保留了浮点数坐标并通过双线性插值求得各个坐标点的值。

Mask R-CNN对于每一个ROI的损失函数定义为:

LMaskR-CNN=Lcls+Lbox+Lmask

(1)

式(1)中的Lcls为分类损失函数:

Lcls=-logpu

(2)

其中,pu为目标正确类别u的预测概率。

式(1)中的Lbox为边框回归损失函数:

(3)

(4)

式(1)中的Lmask为分割损失:

(5)

logxi+(1-yi)·log(1-xi)

(6)

1.2 基于HED的边缘检测分支

整体嵌套边缘检测(HED)是一种基于深度学习的边缘检测算法[21-22]。该模型是一种端到端的边缘检测模型,应用了多层级,多尺度预测的思想,将网络的不同层级的结果侧向输出并分别应用损失函数进行监督,最后用反卷积将高层输出上采样到原图大小并通过一个可训练的权重将各层的结果融合得到最终输出。

文中模型的边缘检测分支基于HED多层级预测的思想构建,以特征金字塔的输出结果作为输入,其结构如图2所示。由于特征金字塔的最高层(第五层)分辨率过低,通过反卷积操作上采样得到的结果过于模糊,对检测准确性的提升没有帮助,故舍弃该层,以前四层的输出结果作为输入。首先,每一层通过两个3×3的卷积层提取各层的边缘信息,并经过一个1×1的卷积层生成各自的边缘预测结果。然后将各层的预测结果上采样到最底层的大小,并通过一组可训练的权重将各层结果对应元素相加得到最终的边缘预测结果用于该分支的训练。最后,通过一个1×1的卷积层将该结果映射到原始特征的特征空间得到边缘特征图。

图2 边缘检测分支

在HED模型中,对每个侧边输出都应用单独的损失函数进行监督,使得边缘检测网络更容易响应物体内部的边缘纹理。而文中的边缘检测分支主要任务是识别物体的轮廓边缘,物体内部的边缘纹理反而会对目标检测任务造成干扰。因此,文中仅对边缘检测分支的最终的融合结果进行监督,其损失函数表示为:

(7)

(8)

1.3 基于FCN的语义分割分支

语义分割分支同样以特征金字塔的各层输出结果为输入,其结构如图3所示。首先将每一层特征图分别通过一个1×1的卷积层使得各层映射到相同的表示空间中,然后以第二层为基准,将高层特征图上采样,低层特征图下采样到第二层大小,并将各层特征图通过对应元素相加进行融合以结合低层特征的定位信息与高层特征的语义信息用于像素级别的语义分割。权衡分割精度与额外参数开销,以第二层为基准是最合适的。最后,将融合得到的特征通过四个3×3的卷积层进一步获取语义信息,并分别通过两个1×1的卷积层输出,其中一个输出语义分割的预测结果用于该分支的训练,另一个输出最终的语义特征图用于后续的特征融合。

图3 语义分割分支

文中模型的语义分割分支损失函数表示为逐像素的交叉熵损失:

(9)

1.4 多特征融合

在Mask R-CNN中,特征金字塔在进行ROIAlign操作时,根据ROI的大小对ROI进行分配,较大的ROI分配到低层,较小的ROI分配到高层。在此基础上,文中将ROI同时分配给相邻层进行ROIAlign操作,得到多个特征图,以充分利用特征金字塔的特征信息。最后,将前述分支得到的边缘和语义特征图经过ROIAlign操作,并将所有特征图通过元素相加进行融合,生成信息更加丰富的边框特征和掩模特征,用于后续的检测和分割任务。此外,将所有ROI特征图的分辨率提升到28×28以适应边缘和语义分割的细粒度特征。

1.5 损失函数

整个模型以端到端的方式进行训练,损失函数在原Mask R-CNN的损失函数的基础上增加了边缘损失与分割损失用来监督边缘检测分支与语义分割分支的输出结果。整体的损失函数如下:

L=LMaskR-CNN+αLedge+βLseg

(10)

其中,LMaskR-CNN为Mask R-CNN的损失函数,如式(1)所示;Ledge为边缘检测分支的损失函数,如式(7)所示;Lseg为语义分割分支的损失函数,如式(9)所示。参数α和β分别表示边缘误差和语义分割误差在整体误差中的权重系数,通过实验得出,预测精确度对α和β的变动并不敏感,故这里将α和β默认设置为0.5。

2 实验结果与分析

文中在COCO数据集上对模型进行训练与测试。首先,利用COCO2017train对模型进行训练,然后使用COCO2017test和COCO2017val对提出的模型进行测试和验证。对于语义分割分支,文中使用COCO stuff数据集中的训练标签进行训练。由于COCO数据集中并不包含边缘检测的标签信息,所以需要通过COCO数据集中的分割标签生成边缘标签。对于每一张图片,首先遍历该图片中所有目标的掩模标签,并将每个掩模赋予不同的非零值后合并成与原图像大小相同的掩模图,未被掩模标记的部分值为0。然后,基于掩模图判断图中的每个像素是否为边缘,若一个像素相邻的四个像素(上,下,左,右)不为同一个值,则将该像素记为边缘。对数据的其他处理与Mask R-CNN模型相同。文中以不同的IOU阈值(0.50~0.95,步长为0.05)及不同大小目标的平均精度(mAP)作为评价标准。

使用2个Tesla P100 GPU进行实验,实验模型使用Pytorch进行搭建。训练时使用随机梯度下降(SGD)对模型进行优化,初始学习率设置为0.005,动量设置为0.9,权重衰减系数设置为0.000 1,共迭代12次,学习率在第8和第11次迭代时降低为原来的0.1倍。用于对照的基线模型使用官方开源代码在相同的实验环境下运行,训练参数与官方代码相同。文中模型与Mask R-CNN在实验中均使用Resnet-50-FPN作为骨干网络。

为了进一步验证文中提出模型的有效性,将其与Mask R-CNN模型进行了比较,图4展示了文中方法与Mask R-CNN分割效果的对比。可以看出,文中方法的分割结果边缘上与目标更加贴合,缺失和冗余更少,例如在对照组(a)中,与文中模型的长颈鹿分割结果相比,Mask R-CNN的长颈鹿分割结果在足部边缘处有多处明显的缺失,且脖颈处有较明显的冗余。此外,文中模型的分割结果对相邻目标的边界区分更加清晰,例如在对照组(d)中,Mask R-CNN的分割结果与文中模型相比,在左边人物的肩膀和右边人物手臂的交界处,两个目标的像素出现了严重的重叠,无法辨别出明显的边界。

图4 Mask R-CNN(上)与文中模型(下)的分割效果对比

Mask R-CNN与文中模型检测与分割的评价结果分别如表1和表2所示。可以看出,文中模型相比Mask R-CNN在检测和分割的精度上都得到了提升,bbox与mask的mAP分别提升了1.2%与1.0%。其中对于大物体的分割精度提升最为显著,mAPL与Mask R-CNN相比提升了1.6%,但对于小物体的检测与分割精度提升较低。对该现象进行了分析,认为大物体所包含的边缘轮廓特征较为丰富,且COCO数据集中大物体的分割标签在边缘细节上刻画得比较细致,因此边缘检测分支更容易在大物体中提取到丰富的边缘信息,从而能够在大物体的分割任务上取得较大的提升。而小物体的边缘轮廓较为模糊,且COCO数据集中小物体的分割标签与大物体相比较为粗糙,因此边缘检测分支和语义分割分支在小物体上无法提取到更多的特征,故模型在小物体上的表现与原Mask R-CNN相比提升较小。

表1 COCO2017检测结果比较

表2 COCO2017分割结果比较

3 结束语

基于Mask R-CNN提出了一种多特征融合的实例分割方案。该方法在Mask R-CNN的基础上加入了边缘检测和语义分割分支,分别用于提取带有更丰富边缘信息和语义信息的特征图,并融合特征金字塔的多级特征得到包含更多信息的新特征用于检测和分割任务,提高了检测和分割的精度。实验结果表明,在COCO数据集上,与Mask R-CNN相比文中模型的box AP提升了1.2%,mask AP提升了1.0%。该模型对小目标的检测和分割精度提升较小,在今后的工作中将继续探究并加以改进。

猜你喜欢

分支边缘卷积
基于全卷积神经网络的猪背膘厚快速准确测定
一类离散时间反馈控制系统Hopf分支研究
软件多分支开发代码漏合问题及解决途径①
一种基于卷积神经网络的地磁基准图构建方法
基于3D-Winograd的快速卷积算法设计及FPGA实现
一种并行不对称空洞卷积模块①
巧分支与枝
一张图看懂边缘计算
硕果累累
在边缘寻找自我