刘桂霞, 吴彦博, 李文辉, 王天昊
(1.吉林大学 计算机科学与技术学院,吉林 长春 130012; 2.哈尔滨工程大学 船舶工程学院,黑龙江 哈尔滨 150001)
实例分割是计算机视觉领域中一项应用广泛而富有挑战性的任务,是对图像场景的深入理解。实例分割在语义分割对图像中所有像素分配标签的基础上,进一步区分同一类的所有不同个体。实例分割广泛应用于自动驾驶、水下视频监控、医学图像处理等领域。获得一个简单有效的实例分割框架对于提高图像处理的精度和速度非常重要。
当前的实例分割框架,主要基于单阶段检测器和两阶段检测器。单阶段检测器非常快,但不像两阶段检测器那样精确。本文使用了一个基于两阶段检测器的实例分割框架。随着深度学习的出现,许多基于卷积神经网络的实例分割框架应运而生,如多任务级联网络(muti-task network cascades,MNC)[1]、全卷积实例感知语义分割(fully convolutional in stance-aware semantic, segmentation,FCIS)[2]和FCIS ++[2]。本文的研究是对Mask R-CNN[3]的改进。传统的Mask R-CNN边界框回归损失采用SmoothL1Loss[4]。许多常用于目标检测和分割的大型数据集,如ImageNet和MS-COCO (common objects in context)都力求准确地定义真值。但在真实的图像场景中,当目标定位模糊或互相遮挡时,很难定义准确的真值框。SmoothL1Loss没有考虑到这种情况的影响。
本文的目的是解决边界框回归定位不确定性的问题。本文的方法是基于KL loss[5]的改进。KL loss随位置的变化而估计定位置信度,回归过程不仅预测边界框的位置,而且用高斯函数来预测边界框的概率分布。KL loss定义了真值分布和预测分布的KL散度。然而,本文发现KL loss的4个坐标点是独立运算的。实际上边界框坐标之间存在一定的联系。于是受IoU Loss[6]的启发,本文对KL loss进行改进,将独立坐标计算转换为面积差的形式,将新提出的边界框回归损失命名为KL-Area-Loss。在边界框检测和实例分割的评估实验中,平均准确率(average precision,AP)优于基线模型和KL Loss,对大目标和小目标的分割更准确。此外,本文的模型提高了训练和评估过程的速度。
目标检测是计算机视觉领域进行数字图像识别的一种有效方法。目标检测的任务不仅是对图像目标进行分类,而且需要确定目标的位置。语义分割就是对每个像素进行标记,将属于同一类别的对象从其他对象中分离出来。近年来,实例分割图像识别技术应运而生。实例分割的任务是在不同的类对象中分别标记每个实例。从目标检测到实例分割[7-11],对目标识别的准确度越来越高,实例分割成为计算机视觉领域的一个前沿且富有挑战性的任务。
最初实例分割基于自底向上掩码方案实现[12-13]。随着深度学习的出现,R-CNN[14]等高效技术取代了前者。Fast R-CNN[15]、Faster R-CNN[16]逐步改进了特征提取问题。如今流行的实例分割方法是先检测后分割(如HTC、PANet、Mask R-CNN[3]、Mask Scoring R-CNN、MPN和YOLACT)。实现实例分割的方法还有很多,如先标记像素再聚类[17-18]、密集滑动窗口方法(DeepMask、InstanceFCN和TensorMask)。本文是对Mask R-CNN框架的改进,其他方法的原理将不再重复。
Mask R-CNN[3]是一个经典、简单且高效的实例分割框架。目标检测部分基于Faster R-CNN[16]完成,掩码由经典的语义分割算法——FCN[19]生成。Mask R-CNN的结构是为掩码生成添加一个并行分支,该分支位于Faster R-CNN[16]框架的分类和回归分支之下。
将经过预处理的原始图像输入预先训练好的神经网络,如ResNet-50[20]、ResNet-101[20]和 ResNeXt-101[21],得到相应的特征图。然后,为特征图中的每个点设置一个预定的候选框ROI,获得多个候选ROI。将这些候选ROI输入区域生成网络 (region proposal network, RPN)进行二值分类(前景或背景)和边界框回归,初步过滤掉一部分ROI。对剩余的ROI进行ROIAlign操作,在N类分类、边界框回归、掩码生成的同时得到最终的ROI。特征金字塔网络 (feature pyramid network, FPN)[22]用于网络特征的分段提取,以获得更好的性能。
除实例分割外,Mask R-CNN[3]还广泛应用于计算机视觉的其他领域,包括边界框对象检测、人体关键点检测等。因为Mask R-CNN的诸多优点及广泛的应用性,各种基于它的改进算法被提出,进一步提高了Mask R-CNN的性能。
L1Loss也称为最小绝对偏差或最小绝对误差,使目标Yi和估计值f(xi)的绝对差之和最小化,它的特征是强鲁棒性和存在不稳定的解(可能有多个解)。L2Loss也称为最小二乘误差,使目标Yi和估计值f(xi)差值的平方和最小化,它具有弱鲁棒性和稳定解(总是一个解)的特点。L1Loss和L2Loss的优缺点是互补的。SmoothL1Loss结合了L1Loss和L2Loss 2种损失的功能,避免了L1Loss和L2Loss的缺点。它首先被应用于Fast R-CNN[15],在Mask R-CNN模型中得到延用。
本节将介绍KL Loss[5]和IoU Loss[6]的原理,以及本文提出改进Mask R-CNN的方法。本文提出了一种边界框回归损失,根据其特性命名为KL-Area-Loss(即为本文方法),网络结构如图1所示。本文方法的网络结构用于改善Mask R-CNN的边界框回归损失。根据Mask R-CNN的结构,本文方法不改变分类和掩码部分的损失,用于回归的损失部分增加了一个概率分布box dis,以增强位置预测的置信度。本文方法提高了整个预测和分割的准确性和速度,并提高了边界框的定位精度。
图1 本文方法网络结构示意Fig.1 Network structure of the method in this paper
2.1.1 KL Loss算法
为了解决目标本身无法准确定位或物体间遮挡导致定位不准确的问题,KL Loss[5]算法用于学习边界框回归和位置不确定性,消除模糊或遮挡样本对边界框回归损失的干扰。该算法预测坐标的偏移,假设预测值与标准值遵循概率分布,损失函数为2个分布之间的KL散度。
2.1.2 IoU Loss算法
Mask R-CNN模型原始采用的边界框回归损失是4个坐标点的独立运算,然后求和得到最终的边界框,而边界框中的点实际上是相互关联的。传统方法缺乏坐标点间的完整性,在优化过程中,有些变量优化得好,有些则不好,这可能导致最终得到的结果不理想。IoU Loss[6]可以解决这个问题,不同的框可能有相同的SmoothL1Loss[4],但是它们可能有不同的IoU,其中一些有很大的差异。IoU Loss将框的4个点看作整体进行回归。
对于每个像素(i,j),将xg=(yg1,xg1,yg2,xg2)转换为真值框坐标xgi,j=(xgtij,xgbij,xglij,xgrij),其中xgt,xgb,xgl,xgr是真值框的上、下、左、右边缘与当前像素之间的距离。同样,本文将预测框的坐标x=(y1,x1,y2,x2)改为x=(xt,xb,xl,xr),得到2个框间的IoU。IoU Loss定义为liou=-ln(IoU)。目前有几种基于IoU Loss开发的改进算法,如2019年提出的GIoU Loss,2020年提出的DIoU Loss和CIoU Loss。
本文方法将边界框位置的预测转化为边界框位置变化概率分布的预测。实际分布可能是更复杂的多元高斯或混合高斯分布。本文假设坐标是独立的,并使预测分布遵循单变量高斯分布,定义分布预测的结果为坐标4个点的高斯分布之和(遵循SmoothL1Loss的计算方式):
(1)
真值框也可以用高斯分布表示,xg是真值框的位置。当σ→0时,它用狄拉克函数表示为:
PD(x)=δ(x-xg)
(2)
KL Loss提出了多个样本PD(x)与PB(x)之间KL散度最小化的方法。在本文中使用KL散度作为边界框回归的损失函数:
(3)
如果要最小化Lbbox,在估计值不准确时,式(3)需要使σ尽可能大。由于方程中的后2项不影响KL散度的大小,本文将式(3)方程最后2项看为一个常数项λ。由于σ2是除数,小的σ在训练开始时可能会引起梯度爆炸,所以使ε=log(σ2),原方程变为:
(4)
(5)
图2 面积差运算原理示意Fig.2 Schematic diagram of area difference operation
wh=rb-lt
(6)
本文方法需得到的是xg和xin之间的面积差:
(7)
(8)
(9)
本文提出的将独立坐标计算转化为面积差的方法也可以减少模型的计算量,提高网络的速度。
本文采用的数据集是MS-COCO(common objects in context),使用train2017进行训练,使用val2017进行测试。本文实验的所有程序均由Python语言编写,基于Keras和Tensorflow框架搭建,网络骨干为ResNet 101-FPN,Mask R-CNN为基线模型。为了防止权重爆炸,本文将学习率设置为0.001,这与Mask R-CNN原文中设置的0.02不一致,可能是由于Caffe和TensorFlow计算梯度的方式不同。本文的评价指标包括AP、AP50、AP75、APS、APM、APL、AR1、AR10、AR100、ARS、ARM、ARL,分别评估边界框和分割效果。本文实验在2个GeForce RTX 2080 Ti GPU上运行。
本文将KL-area-Loss与基线模型和融合KL Loss的基线模型比较,用于MS-COCO数据集边界框目标检测。在这部分实验中,本文训练了整个Mask R-CNN模型,但只关注边界框回归分支的输出,暂时忽略掩码分支。Mask R-CNN多任务训练的优势可以进一步改善边界框检测结果。
表1 使用ResNet 101-FPN骨干的边界框检测AP对比Table 1 Bounding box detection AP comparison with ResNet 101-FPN %
表2 使用ResNet 101-FPN骨干的边界框检测AR对比Table 2 Bounding box detection AR comparison with ResNet 101-FPN %
在目标检测过程中,KL-area-loss通过改变边界框回归分支的损失函数,基于KL loss进一步改进基线模型Mask R-CNN,达到了较好的效果。
为了研究KL-area-Loss对实例分割的影响,本文将KL-Area-Loss和基线模型Mask R-CNN及融合KL Loss的基线模型对MS-COCO分割的影响进行比较。
对于实例分割,本文也进行了精度对比实验,如表3所示。KL-Area-Loss的AP比基线模型高0.1%,比KL Loss高0.3%。AP50和AP75比基线模型高0.2%和0.5%。本文方法将APS和APL分别提高了0.6%和0.5%,提升了小目标和大目标的精度。
表3 使用ResNet 101-FPN骨干的分割AP对比Table 3 Segmentation AP comparison with ResNet 101-FPN %
在表4所示的实例分割召回率实验中,ARS和ARM分别比基线模型高0.8%和0.3%。其他指标与基线模型基本持平。
表4 使用ResNet 101-FPN骨干的分割AR对比Table 4 Segmentation AR comparison with ResNet 101-FPN %
本文方法是基于KL Loss对Mask R-CNN进行改进的。从本文的分割评估来看,融合KL Loss的基线模型结果一般都低于基线Mask R-CNN,这说明KL Loss可以比基线更准确地定位边界框,但会影响实例分割的准确性。本文方法不仅能准确定位边界框,而且提升了Mask R-CNN的分割效果,说明算法在目标检测和实例分割方向都是可行的。本文获得了实例分割可视化由图3所示,各列由左至右依次为原图、Mask R-CNN[3]、Mask R-CNN+KL Loss[3,5]、Mask R-CNN+ KL-Area-Loss在MS-COCO数据集图像上的测试结果。每一行按照原始图像、Mask R-CNN、Mask R-CNN +KL Loss、Mask R-CNN+KL-Area-Loss的顺序从左到右排列。基于ResNet 101-FPN,这些结果显示了边界框、类别(类名)和置信度分数,掩码以不同的颜色显示。本文方法分割小目标比基线模型更准确,而融合KL Loss的基线模型表现并不好。此外,本文方法可以对Mask R-CNN无法识别的一些对象进行分割,进一步证明了本文方法在实例分割中的实用性。
本文方法在训练和评估实验中,花费时间较其他方法更短。本文在2个GeForce RTX 2080 Ti GPU上使用ResNet 101-FPN骨干,在MS-COCO trainval35k上训练Mask R-CNN需要31.05 h,训练融合KL Loss的基线模型需要30.75 h,训练KL-Area-Loss需要30.45 h。本文在2个GeForce RTX 2080 Ti GPU上使用ResNet 101-FPN对MS-COCO val2017进行评估。限定在500张图像上,对3个模型运行边界框和分割的MS-COCO评估,如表5所示(为了防止其他因素的干扰,本文对每个模型进行3次评估,分别选择其平均值)。结果表明,该方法比其他2方法具有更短的预测时间。
表5 MS-COCO上的测试时间对比Table 5 Prediction time comparison on MS-COCO s
实验结果如预期的那样,KL-Area-Loss将4个独立的坐标计算转换为面积差运算,可以减少边界框回归损失的计算负荷,提高模型训练和评估的速度。
1)本文提出的基于深度学习的实例分割边界框回归方法KL-Area-Loss,是为了解决现有目标检测和分割数据集中,由于对象边缘模糊或相互遮挡等导致目标定位不准确的问题。本文提出的方法受到KL Loss和IoU Loss的启发,将简单的边界框位置预测转化为定位置信度随位置变化的概率分布估计,并将边界框4个独立坐标的计算转化为面积差的计算。KL-Area-Loss的目的是替代检测器原来的回归分支损失函数,使边界框定位更加准确。
2)为了研究本文方法在先检测后分割的实例分割模型中是否有效,本文的基线模型采用ResNet 101-FPN的Mask R-CNN网络。本文方法在边界框检测、实例分割及运行时间上做了对比试验,在MS-COCO上均得到了优于其他方法的结果,证实了KL-Area-Loss在Mask R-CNN实例分割模型上的有效性。
3)本文提出的方法是针对边界框回归分支损失函数的改进算法。为了进一步提升模型的精度,可以尝试继续研究掩码分支的改进算法,进一步提升实例分割的精度;本文实验使用的是MS-COCO数据集,接下来可以尝试使用其他数据集验证本文方法在各领域上的通用性。