一种基于排序与语义一致性约束的实例分割改进方法
技术领域
本发明属于计算机视觉图像分割
技术领域
,具体是一种新型的实例分割改进。背景技术
实例分割是计算机视觉领域的一项十分重要的任务。现代计算机视觉几大主要的任务包括:图像分类、目标检测、语义分割、实例分割等,几种任务的复杂程度是逐步递进的。实例分割不仅仅要求分割出物体的掩膜(mask),识别出它的类别,还需要区分同一类的不同实例,因而实例分割可以定义为同时解决目标检测问题和语义分割问题的技术。
对于一幅给定的图像,实例分割算法预测一组数据标签{Cj,Bj,Ij,Sj},其中Cj表示预测的第j个实例的类别,Bj表示预测的第j个实例的位置信息,Ij表示第j个实例的分割掩膜信息,Sj为预测的第j个实例的类别的置信度。
近年来随着人工智能领域的发展,涌现出众多实例分割的方法与技术,当前主流的实例分割方法可以分为两阶段实例分割方法和单阶段实例分割方法。
其中,两阶段实例分割包括自上而下与自下而上两大类,基本上脱胎自两阶段的目标检测算法。如图1所示,第一阶段是一个简单的前景背景二分类与回归过程,目的是提取子区域,子区域是用两对坐标表示的一个矩形框(预测框),两对坐标分别表示矩形框的两个角点,矩形框中可能包含一个物体实例;第二阶段主要是针对第一阶段提取的每一个子区域,对矩形框的角点坐标进行精确的回归,对矩形框进行实例分类及像素级标注,同时通过分割子网络得到实例的掩膜。这类算法的经典之作是Mask-RCNN算法,在coco数据集上达到了37.1%的mAP(平均精确率)。
根据已有的文献,两阶段实例分割算法在公开数据集上取得的精度最高。该类方法存在两个缺点:其一,两阶段的处理方案影响算法的速度,不能保证实时性成为算法落地使用的最大桎梏;其二,这类算法得到的掩膜质量仍有参差不齐现象,以Mask-RCNN为例,其最终的掩膜是利用28×28的小区域上采样而来,导致还原之后的实例掩膜质量欠佳,表现为实例掩膜覆盖实例区域不足或过多。
单阶段实例分割算法如图2所示,这类算法基本上来自于单阶段目标检测算法,相对两阶段算法来说,没有子区域提取过程。该类算法的经典之作是Yolact系列算法,在coco数据集上达到了29.8%的mAP,并且速度达到了33.5FPS。
单阶段算法的实时性足以满足落地要求,存在的问题是精度较两阶段算法更为下降,并且掩膜质量不高的问题也更严重。
综上,已有的两阶段和单阶段实例分割算法在公开数据集上的最好mAP指标表明,实例分割的掩膜质量有进一步提升的空间。
本发明提升掩膜质量的思路是在上述框架中加入新的损失函数,对可能包含实例的子区域和实例的像素级标签定义语义约束,具体形式是排序损失与语义一致性约束损失。本发明定义的损失函数可以直接应用于已有的两阶段与单阶段实例分割算法,提升原算法的mAP指标。本发明在两阶段与单阶段实例分割代表性算法Mask-RCNN与Yolact分别进行了验证实验,实验结果表明了本发明提出的损失函数的有效性。
发明内容
本发明针对已有实例分割算法得到的掩膜质量欠佳的问题,提出新的损失函数(排序损失和语义一致性约束损失)增加到已有的算法框架中,从而形成一种新的实例分割方法,提升实例分割得到的掩膜质量。
本发明提出一种基于排序与语义一致性约束的实例分割改进方法,下面针对单阶段与两阶段的实例分割框架上的实施方案分别进行介绍。
1.基于两阶段网络的实例分割改进方案
如图3所示,两阶段实例分割算法框架中,第一阶段主要完成的是感兴趣区域的提取,在这里本发明针对子区域的排序选取操作,在原有分类、回归损失的基础上,增加排序损失。针对第二阶段的分割操作,在原有分类、回归、分割损失的基础上,增加语义一致性损失。
2.基于单阶段网络的实例分割改进方案
如图4所示,在单阶段的算法中,在原有分类、回归、分割损失的基础上,将排序损失与语义一致性损失分别加在回归head与分割head上。
1.基础模型介绍
本发明在原始实例分割框架中加入排序损失、语义一致性损失。
下面分别介绍两类算法的代表作Mask-RCNN与Yolact的原始基础模块。
Mask-RCNN基础模块:
特征提取网络Backbone:ResneXt101+FPN为Backbone,使用的预训练权重为resnet101文件,其在ImageNet数据集上进行了预训练。
RPN网络:用于生成region proposals。该层通过softmax判断anchors属于positive或者negative,再利用bounding box regression修正anchors获得精确的ROIs(即子区域)。
全连接层FC:分类操作得到实例标签,回归操作得到实例框。
全卷积网络FCN:掩膜分割操作,得到实例掩膜。
各模块如图5所示:
Yolact基础模块:
特征提取网路Backbone:Resnet101+FPN为Backbone,预训练权重文件仍为resnet101文件。
Protonet网络:为每张图像生成k个原型mask。接在FPN输出的后面,是一个全卷积结构的网络,预测得到一组原型mask。
Prediction Head:回归分类操作,等同于两阶段方法中的子区域提取过程,输出子区域及其分类;同时预测k个线性组合系数,用于对原型Mask进行线性组合操作,对线性组合结果进行Crop操作获得实例掩膜。
子区域排序损失(SRLoss,Subsection Rank Loss)
此约束的核心思想是:依据评分对每个预测框进行非递增排序,鼓励正样本预测框尽可能在负样本预测框之前,这样可以获得较为精准的子区域。
排序损失定义如式(1):
其中P为正样本集合,正负样本由先验框或锚框anchor与GT Bbox计算交并比后根据阈值(如0.7与0.3,高于0.7的样本归为正样本,低于0.3的样本归为负样本,其余样本不予训练与处理)确定;依据交并比对正负样本由大及小进行排序,排序序号即为r值;依据样本的分类置信度评分由大及小进行排序,排序序号即为sort(r)的值。正样本排序结果越靠前,则SRLoss越小。
子区域语义一致性损失(SSCLoss,Subsection Semantic Consistency Loss)
该损失目的是为了约束掩膜区域内像素的语义一致性:约束子区域内像素的标注类别尽可能少;约束子区域内像素尽可能属于同一类别。前者对分割类别进行计数,当掩膜质量最好,此部分降为最低;后者计算掩膜区域内语义类别正确的像素点数目与掩膜区域内总像素点数目的比值。
记Mi为掩膜区域内标注为第i类的像素点的数目,最终的损失函数形式为:
其中c为总的类别数量,在MS COCO数据集上c=80,α为超参数。
模型训练与测试
在训练过程中,Mask-RCNN的实际流程如图7所示,矩形框内为功能块名称,折线箭头指向网络损失,新增损失均加粗表示。本发明使用的预训练模型已经在imagenet数据集上进行了训练。
使用标准的标签文件annotation包括[id,image_id,category_id,segmentation,area,bbox,iscrowd],类别标签category_id,掩膜标签segmentation,实例框标签bbox。category_id为类别标签,其中的segmentation为polygon格式数据(以相邻一对数据为实例轮廓边缘点的坐标值),bbox数据格式为[x1,y1,x2,y2]。
在第一阶段,损失函数主要是RPN网络训练所得,包括RPN前景与背景分类损失lrpn_cls,真实标签t∈{1,0,-1},真实标签为0的anchors不参与损失函数的构建,将标签为-1的转换为0进行交叉熵计算;RPN目标框回归损失lrpn_reg,以及本发明所提出的排序损失SRLoss,在本例中记为lrpn_rank。
在第二阶段,损失函数主要是分类损失lcls、回归损失lreg、分割损失lseg,以及本发明所提出的语义一致性损失SSLoss,记为lsc。
在其中的分类损失、分割损失通常为交叉熵损失,而回归损失常为Smooth_L1损失。它们的一般形式是:
交叉熵损失:
y为真实值,yi为预测概率值,n为样本个数。
Smooth_L1损失:
y*为预测值,y为标签,x为两者间差异。
总体训练分为两大部分,首先训练RPN网络部分,需要优化的损失函数L1如下:
L1=lrpn_cls+lrpn_reg+lrpn_rank (5)
ROI区域筛选进入第二阶段后,需要优化的损失函数L2如下:
L2=lcls+lreg+lseg+lsc (6)
在测试部分,使用Mask预测分支对评分最高的前100个检测框进行处理。为了加快推断效率,网络针对于每个ROI预测K个掩膜图像,但此处只需要使用其中类别概率最大的掩膜图即可,将这个掩膜图像resize回ROI大小,并以设定阈值0.5进行二值化,高于阈值的进行保留,最后分割的掩膜与原图像进行图像级add操作获得最终的实例分割可视化结果。
单阶段实例分割代表算法Yolact增加损失后的网络结构如图8所示,矩形框内为功能块名称,折线箭头指向网络损失,新增损失均加粗表示。使用的预训练模型在imagenet数据集上进行了预训练。网络训练与测试原理基本与前文相似,区别之处是不分阶段直接对所有损失进行优化,下面列出网络的总损失:
L=lcls+lreg+lseg+lsegm+lrank+lsc
其中,lcls与lreg为分类损失与回归损失,lseg为分割损失,lsegm为语义分割损失,排序损失记为lrank,语义一致性损失记为lsc都是前面所提到的交叉熵损失Lce与Smooth_L1损失Lsmooth_l1除去回归、分类损失外,粗略语义分割损失lsegm(仍为交叉熵形式损失)。
附图说明
图1两阶段实例分割方法
图2单阶段实例分割方法
图3增加排序与语义一致性损失的两阶段网络结构图
图4增加排序与语义一致性损失的单阶段网络结构图
图5 Mask-RCNN示意图
图6 Yolact示意图
图7 Mask-RCNN改进结构图
图8 Yolact改进结构图
具体实施方式
本发明采用MS COCO系列数据集(COCO2015、COCO2016)数据集进行实验。COCO数据集是一个大型的、丰富的物体检测,分割和字幕数据集。这个数据集以sceneunderstanding为目标,主要从复杂的日常场景中截取,图像中的目标通过精确的segmentation进行位置的标定。图像包括91类目标,328,000张影像和2,500,000个label。目前为止有语义分割的最大数据集,提供的类别有80类,有超过33万张图片,其中20万张有标注,整个数据集中个体的数目超过150万个。COCO数据集现在有3种标注类型:objectinstances(目标实例),object keypoints(目标关键点),和image captions(看图说话),使用JSON文件存储标签。分别使用训练集和验证集进行训练和测试。因为完成的是实例分割任务,所以使用目标实例型标注。
评估指标。本发明遵循实例分割的评估标准协议,在不同的交集-并集(IOU)阈值下,使用mAP对进行了评估。本发明使用官方提供的评估代码进行实验。
实验设置。在实验中,通过在各个框架上依次添加本发明定义的损失来检验本发明的有效性。
针对于Mask-RCNN和Yolact的实验借助商汤科技推出的mmdetection2.3版本上进行。
在Mask-RCNN实验中设置超参数如下:α=1;设置多样性输入尺寸;非极大值抑制(NMS)阈值为0.7;初始学习率为0.333,并训练过程动态进行衰减;batchsize设置为4,分别在四块GPU上进行训练;每一轮次(epoch)存储一次权重。
在Yolact上设置超参数为:α=1;设置输入图像初始尺寸为550×550;非极大值抑制(NMS)阈值为0.7;初始学习率为0.333,并训练过程动态进行衰减;batchsize设置为4,分别在四块GPU上进行训练,每一轮次(epoch)存储一次权重。
以上均设置每训练3轮,进行一次验证再继续训练。
本发明将模型的性能分数与原作者公布的baseline性能进行比较。表1为在COCO数据集上的实验结果,可以看到,实验结果均有所提升。
表1 COCO数据集实验结果