一种基于深度学习的单阶段实例分割方法
未命名
09-13
阅读:94
评论:0

1.本发明属于深度学习与计算机视觉技术领域,具体涉及一种基于深度学习的单阶段实例分割方法。
背景技术:
2.实例分割是一项最相似于人眼视觉感受的计算机视觉任务,实例分割旨在同时解决目标定位和分割问题。
3.随着深度学习技术的发展,目标检测和语义分割领域内的算法层出不穷,这极大的促进了实例分割的发展,许多优秀的实例分割算法已被提出。现有实例分割算法网络结构设计大多是对一些优秀的目标检测器进行拓展,即在目标检测算法的基础上引入实例掩码的预测分支,主流的实例分割算法大体可以被分为两类,基于单阶段检测器扩展的算法和基于两阶段检测器拓展的算法。基于两阶段检测器的实例分割算法由于使用了更复杂的视觉特征和更严格的目标检测器,因此,这类方法往往有更准确的分割结果、更高的定位精度和更强的扩展性,它们在处理复杂场景和大规模数据集上的表现效果更佳。
4.然而,现有的方法如yolact、yolact++等,存在以下缺点:
5.1、对实例边缘信息关注少而导致分割掩码轮廓不够平滑的问题。
6.2、原型掩码组合过程中由于组合系数预测有误差,存在分割结果不准确的问题。
技术实现要素:
7.为解决上述背景技术中提出的问题,本发明提供一种基于深度学习的单阶段实例分割方法,以解决现有技术中对实例边缘信息关注少,组合系数预测有误差的问题。
8.为实现上述目的,本发明提供如下技术方案:
9.一种基于深度学习的单阶段实例分割方法,包括以下步骤:
10.s1:基于yolact方法,将实例分割划分为两个并行任务,一个任务为生成当前图片的原型掩码,另一个任务为预测每个实例的掩码系数;
11.s2:将原型掩码和掩码系数进行线性组合,并对组合结果使用激活函数激活以获得预测掩码;
12.s3:将预测掩码作为边缘信息预测分支的输入,将边缘算子作用于预测掩码,得到实例边缘掩码的预测结果,将边缘算子作用于实例的真实掩码得到实例边缘掩码标签;
13.s4:增加预测实例边缘图分支,边缘图预测分支的头部输入为预测结果和与之匹配的实例边缘掩码标签,通过卷积算子进行卷积得到预测边缘图和与之对用的边缘图的标签,构造损失函数,并优化边缘损失,得到最终模型;
14.s5:将待分割实例输入最终模型得到分割结果。
15.优选地,原型掩码的产生方法为:通过yolact中的原型掩码预测分支为整个图像预测产生k个原型掩码,原型掩码子网络protonet被实现为fcn,fcn网络的最后一层有k个通道,每个通道表示一个原型掩码,protonet的输入为骨干网络的特征层或者经过特征融
合网络后的特征层的输出。
16.优选地,掩码系数的产生方法为:
17.yolact中的anchor-based基于锚框的目标检测器的预测头部有两个分支:
18.一个分支为每个anchor锚框预测c个类别的分类置信度,c表示一个特定数据集中目标的类别数;
19.另一个分支为每个anchor锚框预测4个回归框系数;
20.增加第三个分支用来预测k个原型掩码的系数,每个原型掩码系数对应于一个原型掩码,yolact将检测器的预测头部输出从4+c个预测系数拓展为4+c+k个预测系数;
21.原型掩码基数为8,记作符号b,b是一个可调节的超参数;
22.将yolact结构中原型掩码预测分支产生的k=32个原型掩码在通道维度上拆分成个原型掩码组,与之对应的原型掩码的预测系数也将被从通道的维度拆分成g个组;
23.在yolact原型掩码系数预测分支的基础之上并行的增加第四个分支来预测原型掩码的组系数,yolact检测器的预测头部的输出从4+c+k个预测系数拓展为4+c+k+g个预测系数。
24.优选地,线性组合方法为:
25.将k个原型掩码在通道维度每b个一组进行有序分组,相应的也对k个原型掩码系数在通道维度每b个进行有序分组,分别得到输入pi和ci;
26.通过组合pi和ci得到每个分组经过组合后产生的中间原型掩码;
27.在g个原型掩码组的系数中的通道维度获得相应的每个分组的组系数gi,得到第二次融合过程的输入;
28.通过组合中间原型掩码和原型掩码组系数得到每个分组的融合结果;
29.通过累加每个分组的融合结果并由非线性函数sigmoid激活后生成预测掩码,整个融合过程可定义为公式:
[0030][0031]
其中pi为每个组的原型掩码是一个h
×w×
b的矩阵,ci为n个经过nms和阈值处理后保留的n个实例,在每个分组中的原型掩码系数是一个n
×
b的矩阵,gi为n个实例的原型掩码组的组系数是一个n
×
1的矩阵。
[0032]
优选地,s3中实例边缘掩码标签的获得方法为:
[0033]
设图像中实例的预测掩码为m
p
,一张图像中的n个实例掩码表示为一个n
×w×
h的张量,n
×w×
h的张量作为边缘信息预测分支的输入;
[0034]
将边缘检测的sobel算子或laplacian算子作用于实例的预测掩码m
p
后,得到实例边缘掩码的预测结果m
pedge
;
[0035]
相应的,将边缘检测的算子作用于实例的真实掩码m
gt
就可得到实例边缘掩码的标签m
gtedge
;
[0036]
定义边缘检测的算子为k,将与k作用的掩码定义为m
mask
,则整个实例边缘掩码的提取过程可定义为:
[0037]medge
=k*m
mask
。
[0038]
优选地,s4中,增加一个预测实例边缘图的分支,边缘图预测头部的输入为预测的
掩码图m
p
和与之匹配的真实掩码m
gt
,分别通过卷积算子进行卷积得到预测的边缘图m
pedge
和与之相对应的边缘图的标签m
gtedge
,选取二值交叉熵函数来优化边缘的损失,可定义为:
[0039]
loss=l
cls
+l
box
+l
mask
+l
edge
。
[0040]
优选地,利用图像平滑滤波器对实例边缘掩码的标签进行处理,然后将平滑后的实例边缘掩码的标签与预测掩码计算损失。
[0041]
与现有技术相比,本发明的有益效果是:
[0042]
1、本技术通过传统的边缘检测算子提取到每个实例的边缘信息,从而让网络在训练学习的过程中显示的监督对实例轮廓的学习。边缘信息的融入不仅提升了实例掩码的分割精度,而且融入边缘信息后的算法在分割掩码边缘处的表现更精细。
[0043]
2、本技术通过原型掩码分组后再融合的方法,将原型掩码的融合过程从一次增加为两次,两次融合的方式不仅提升了实例掩码的分割效果而且增加了整个算法的泛化能力。
附图说明
[0044]
图1为本发明的网络结构示意图。
具体实施方式
[0045]
为便于本领域技术人员理解本发明的技术内容,以下结合附图和具体的实例对本发明作进一步地详细说明。应当理解,此处所描述的具体实例仅用以解释本发明,并不用于限定本发明。
[0046]
实施例1
[0047]
如图1所示,一种基于深度学习的单阶段实例分割方法,包括以下步骤:
[0048]
s1:基于yolact方法,将实例分割划分为两个并行任务,一个任务为生成当前图片的原型掩码,另一个任务为预测每个实例的掩码系数;
[0049]
s2:将原型掩码和掩码系数进行线性组合,并对组合结果使用激活函数激活以获得预测掩码;
[0050]
s3:将预测掩码作为边缘信息预测分支的输入,将边缘算子作用于预测掩码,得到实例边缘掩码的预测结果,将边缘算子作用于实例的真实掩码得到实例边缘掩码标签;
[0051]
s4:增加预测实例边缘图分支,边缘图预测分支的头部输入为预测结果和与之匹配的实例边缘掩码标签,通过卷积算子进行卷积得到预测边缘图和与之对用的边缘图的标签,构造损失函数,并优化边缘损失,得到最终模型;
[0052]
s5:将待分割实例输入最终模型得到分割结果。
[0053]
在本实施例中,本技术通过传统的边缘检测算子提取到每个实例的边缘信息,从而让网络在训练学习的过程中显示的监督对实例轮廓的学习。边缘信息的融入不仅提升了实例掩码的分割精度,而且融入边缘信息后的算法在分割掩码边缘处的表现更精细,并且本技术通过原型掩码分组后再融合的方法,将原型掩码的融合过程从一次增加为两次,两次融合的方式不仅提升了实例掩码的分割效果而且增加了整个算法的泛化能力。
[0054]
实施例2
[0055]
本实施例与实施例1的区别在于:原型掩码的产生方法为:通过yolact中的原型掩
码预测分支的目的为整个图像预测产生k个原型掩码,原型掩码子网络protonet被实现为fcn,fcn网络的最后一层有k个通道,每个通道表示一个原型掩码,protonet的输入为骨干网络的特征层或者经过特征融合网络后的特征层的输出。
[0056]
这种建模方式与标准的语义分割网络类似,但不同的是在实例分割任务中,往往丢弃在原型掩码中的显示损失的计算,而是通过组装产生的整个实例掩码和其标注掩码之间的损失来监督训练原型掩码子网络。
[0057]
实施例3
[0058]
本实施例与实施例2的区别在于:掩码系数的产生方法为:
[0059]
yolact中的anchor-based基于锚框的目标检测器的预测头部有两个分支:
[0060]
一个分支为每个anchor锚框预测c个类别的分类置信度,c表示一个特定数据集中目标的类别数;
[0061]
另一个分支为每个anchor锚框预测4个回归框系数;
[0062]
yolact并行的增加第三个分支用来预测k个原型掩码的系数,每个系数对应于一个原型掩码,k可以理解为类似于通道注意力的权重,它表示了每个原型掩码在整个实例掩码产生过程所做的贡献大小;
[0063]
yolact将检测器头部的输出从4+c个系数拓展为4+c+k个系数;
[0064]
在这里我们重新思考原型掩码组合产生最终实例掩码的过程中k个原型系数的作用,对于一个实例的最终掩码而言,加操作可以增强某个实例掩码的质量,而减操作可以去除其他实例掩码对我们所需目标实例掩码的影响。这就使得对于产生的k个原型掩码的系数,在组合过程中我们需要减的操作而非只有加的操作。我们选择tanh而非relu做为k个原型掩码系数激活函数。
[0065]
在yolact算法中,当原型掩码的个数k=8的时候,就可以产生效果不错的实例分割掩码,所以我们选择每个原型掩码组中的原型掩码基数为8,记作符号b,b是一个可调节的超参数;
[0066]
将yolact结构中原型掩码预测分支产生的k=32个原型掩码在通道维度上拆分成个原型掩码组,与之对应的原型掩码的预测系数也将被从通道的维度拆分成g个组;
[0067]
在yolact原型掩码系数预测分支的基础之上并行的增加第四个分支来预测原型掩码的组系数,yolact检测器的预测头部的输出从4+c+k个系数拓展为4+c+k+g个系数。
[0068]
实施例4
[0069]
本实施例与实施例3的区别在于:如图1所示,线性组合方法为:
[0070]
为了得到最终的实例掩码,yolcat组合原型掩码预测分支的输出和原型掩码系数预测分支的输出。
[0071]
yolact通过对原型掩码和原型掩码系数进行线性组合,将组合后的输出经过非线性函数sigmoid的激活来产生最终的实例掩码。这种建模方式可以被实现为一次简单的矩阵乘法和sigmoid激活函数的激活,可以如下:
[0072]
m=σ(pct)
[0073]
其中p表示原型掩码是一个h
×w×
k的矩阵,c表示经过非极大值抑制和阈值处理之后任然保留的n个实例的原型掩码系数,它是一个n
×
k的矩阵。
[0074]
更复杂的组合步骤是可能的,为了使算法保持快和简单的特性yolact选择使用最简单的线性组合方式。我们使用三个损失去训练yolact模型:
[0075]
1)分类损失lcls;
[0076]
2)包围框回归损失lbox;
[0077]
3)实例掩码损失lmask;实验中各个损失所占的权重值分别为1,1.5和6.125。我们在组装的实例掩码和标注的真实的实例掩码之间计算逐像素的binary cross entropy(二值交差熵损失),可以定义为:
[0078]
l
mask
=bce(m,m
gt
)
[0079]
其中m为yolact模型组装产生的实例掩码,mgt为真实数据标注的实例掩码。
[0080]
将k个原型掩码在通道维度每b个一组进行有序分组,相应的也对k个原型掩码的系数在通道维度每b个进行有序分组,分别得到输入pi和ci;
[0081]
通过组合pi和ci得到每个分组经过组合后产生的中间原型掩码;
[0082]
在g个原型掩码组系数中的通道维度获得相应的每个分组的组系数gi,得到第二次融合过程的输入;
[0083]
通过组合中间原型掩码和原型掩码组系数得到每个分组的融合结果;
[0084]
通过累加每个分组的融合结果并由非线性函数sigmoid激活后生成预测掩码,整个融合过程可定义为公式:
[0085][0086]
其中pi为每个组的原型掩码是一个h
×w×
b的矩阵,ci为n个经过nms和阈值处理后保留的n个实例,在每个分组中的原型掩码的系数是一个n
×
b的矩阵,gi为n个实例的原型掩码组的组系数是一个n
×
1的矩阵。
[0087]
实施例5
[0088]
本实施例与实施例4的区别在于:如图1所示,s3中实例边缘掩码标签的获得方法为:
[0089]
设图像中实例的预测掩码为m
p
,一张图像中的n个实例掩码可表示为一个n
×w×
h的张量,n
×w×
h的张量作为边缘信息预测分支的输入;
[0090]
将边缘检测的sobel算子或laplacian算子作用于实例的预测掩码m
p
后,得到实例边缘掩码的预测结果m
pedge
;
[0091]
相应的,将边缘检测的算子作用于实例的真实掩码m
gt
就可得到实例边缘掩码的标签m
gtedge
;
[0092]
s4中优化预测结果和实例边缘掩码标签之间的差距的具体方法为:
[0093]
定义边缘检测的算子为k,将与k作用的掩码定义为m
mask
,则整个实例边缘掩码的提取过程可定义为:
[0094]medge
=k*m
mask
。
[0095]
实施例6
[0096]
本实施例与实施例5的区别在于:s4中,为计算最终的边缘损失,我们在groupyolact网络结构中增加一个预测实例边缘图的分支,边缘图预测头部的输入为预测的掩码图m
p
和与之匹配的真实掩码m
gt
,分别通过卷积算子进行卷积得到预测的边缘图m
pedge
和与之相对应的边缘图的标签m
gtedge
,选取二值交叉熵函数来优化边缘的损失,可定义为:
[0097]
loss=l
cls
+l
box
+l
mask
+l
edge
。
[0098]
实施例7
[0099]
本实施例与实施例6的区别在于:利用图像平滑滤波器对实例边缘掩码的标签进行处理,然后将平滑后的实例边缘掩码的标签与预测掩码计算损失。
[0100]
在本实施例中,为了抑制网络在推理时输出的轨道分割掩码在边缘出现锯齿状的现象,我们网络预测掩码的位置加入图像平滑的滤波器来抑制轨道分割掩码边缘锯齿状的现象。我们在网络训练优化参数的过程中,我们利用图像平滑滤波器对插值后的轨道掩码标签进行处理,然后将平滑后的轨道掩码作为真实标签和预测掩码之间计算损失。值得注意的是,由于平滑滤波器是在网络训练优化参数的时候起作用,因此,并不会影响网络的推理速度,但平滑边缘的处理会使的真实的掩码标签损失部分信息,会略微影响算法的分割精度。
[0101]
实验数据
[0102]
为了验证改进方法的有效性,在训练groupyolact的时候,所有超参数的设置和yolact模型中保持一致。图像在输入网络之前调整为800
×
800大小,因为citysacpes数据集中的图像较大。改进后算法与原算法在citscapes数据集上的对比结果如表1所示,我们可以直观的看出,改进后的算法在ap上的表现要更好。在不使用预训练权重的情况下,groupyolact算法在各个类别上的表现都要优于原有方法,这也说明了groupyolact算法中提出的原型分组后再组合的方法要比yolact中直接组合原型的方法更好,泛化能力更强。尽管在算法改进过程中增加的原型掩码组系数预测分支会降低模型的运算速度,但从实验结果来看,我们认为这种妥协是值得的。
[0103][0104]
表1yolact与groupyolact实验结果对比
[0105]
表2展示了三种不同的算法在cityscapes数据集上的表现,整个模型在融入边缘信息后在ap上的表现有了明显的提升。与原有的yolact模型相比较,在融入边缘信息后整个模型在ap上提升了有4.4个点,最重要的是这种性能的没有增加额外的速度损失,因为整个边缘信息的融入是在训练过程种增加的,而在网络推理过程中,是不会去计算边缘的损失的。从表4-2中我们可以看到一个很有意思的事情是,同样的训练模型在性能表现比较好的时候,它的推理速度会有略微的增加,我们分析这种现象是因为整个模型的优化效果在更好的时候,整个网络中一些没用的权重值可能会被丢掉,比如网络中某个3
×
3的卷积核会变的稀疏,从而使得网络的推理速度有了略微的提升。为了对比不同的边缘检测算子对整个边缘信息提取效果的影响,我们分别对sobel算子和laplacian算子做了对比实验,从表2中我们可以看出,两种算子对模型的影响效果是差不多的。为了对比不同的骨干特征提取网络之间的差别,我们也在resnet50和resnet101之间做了对比实验,从表2的结果中可以发现,当骨干特征提取网络为resnet101时,整个模型在小实例上的表现效果会更好,反
而在较大的实例如火车会比较差,我们分析这可能与原型掩码网络输入特征的选择有关。从表2中可以看出所有的模型在rider这个类别上表现效果都不是很好,我们分析是因为rider这个类别的实例很小而且它的实例轮廓比较复杂。我们发现在resnet101上,整个模型的ap反而表现的不是很好,这可能是因为cityscapes这个数据集的规模比较小,并且数据集中每种类别的实例个数并不是很多。
[0106][0107]
表2三种算法的实验结果对比
[0108]
通过表3我们可以发现我们所提出的算法训练的网络模型在速度方面相比于其他两阶段的算法有很大的优势,对于一些场景简单且对于网络推理速度有一定要求的工程应用来说有很大的利用价值。
[0109][0110]
表3不同算法之间的性能对比。
技术特征:
1.一种基于深度学习的单阶段实例分割方法,其特征在于,包括以下步骤:s1:基于yolact方法,将实例分割划分为两个并行任务,一个任务为生成当前图片的原型掩码,另一个任务为预测每个实例的掩码系数;s2:将原型掩码和掩码系数进行线性组合,并对组合结果使用激活函数激活以获得预测掩码;s3:将预测掩码作为边缘信息预测分支的输入,将边缘算子作用于预测掩码,得到实例边缘掩码的预测结果,将边缘算子作用于实例的真实掩码得到实例边缘掩码标签;s4:增加预测实例边缘图分支,边缘图预测分支的头部输入为预测结果和与之匹配的实例边缘掩码标签,通过卷积算子进行卷积得到预测边缘图和与之对用的边缘图的标签,构造损失函数,并优化边缘损失,得到最终模型;s5:将待分割实例输入最终模型得到分割结果。2.根据权利要求1所述的一种基于深度学习的单阶段实例分割方法,其特征在于,原型掩码的产生方法为:通过yolact中的原型掩码预测分支为整个图像预测产生k个原型掩码,原型掩码子网络protonet被实现为fcn,fcn网络的最后一层有k个通道,每个通道表示一个原型掩码,protonet的输入为骨干网络的特征层或者经过特征融合网络后的特征层的输出。3.根据权利要求2所述的一种基于深度学习的单阶段实例分割方法,其特征在于,掩码系数的产生方法为:yolact中的anchor-based基于锚框的目标检测器的预测头部有两个分支:一个分支为每个anchor锚框预测c个类别的分类置信度,c表示一个特定数据集中目标的类别数;另一个分支为每个anchor锚框预测4个回归框系数;增加第三个分支用来预测k个原型掩码的系数,每个原型掩码系数对应于一个原型掩码,yolact将检测器的预测头部输出从4+c个预测系数拓展为4+c+k个预测系数;原型掩码基数为8,记作符号b,b是一个可调节的超参数;将yolact结构中原型掩码预测分支产生的k=32个原型掩码在通道维度上拆分成个原型掩码组,与之对应的原型掩码的预测系数也将被从通道的维度拆分成g个组;在yolact原型掩码系数预测分支的基础之上并行的增加第四个分支来预测原型掩码的组系数,yolact检测器的预测头部的输出从4+c+k个预测系数拓展为4+c+k+g个预测系数。4.根据权利要求3所述的一种基于深度学习的单阶段实例分割方法,其特征在于,线性组合方法为:将k个原型掩码在通道维度每b个一组进行有序分组,相应的也对k个原型掩码系数在通道维度每b个进行有序分组,分别得到输入pi和ci;通过组合pi和ci得到每个分组经过组合后产生的中间原型掩码;在g个原型掩码组的系数中的通道维度获得相应的每个分组的组系数gi,得到第二次融合过程的输入;通过组合中间原型掩码和原型掩码组系数得到每个分组的融合结果;
通过累加每个分组的融合结果并由非线性函数sigmoid激活后生成预测掩码,整个融合过程可定义为公式:其中pi为每个组的原型掩码是一个h
×
w
×
b的矩阵,ci为n个经过nms和阈值处理后保留的n个实例,在每个分组中的原型掩码系数是一个n
×
b的矩阵,gi为n个实例的原型掩码组的组系数是一个n
×
1的矩阵。5.根据权利要求4所述的一种基于深度学习的单阶段实例分割方法,其特征在于,s3中实例边缘掩码标签的获得方法为:设图像中实例的预测掩码为m
p
,一张图像中的n个实例掩码表示为一个n
×
w
×
h的张量,n
×
w
×
h的张量作为边缘信息预测分支的输入;将边缘检测的sobel算子或laplacian算子作用于实例的预测掩码m
p
后,得到实例边缘掩码的预测结果m
pedge
;相应的,将边缘检测的算子作用于实例的真实掩码m
gt
就可得到实例边缘掩码的标签m
gtedge
;定义边缘检测的算子为k,将与k作用的掩码定义为m
mask
,则整个实例边缘掩码的提取过程可定义为:m
edge
=k*m
mask
。6.根据权利要求5所述的一种基于深度学习的单阶段实例分割方法,其特征在于,s4中,增加一个预测实例边缘图的分支,边缘图预测头部的输入为预测的掩码图m
p
和与之匹配的真实掩码m
gt
,分别通过卷积算子进行卷积得到预测的边缘图m
pedge
和与之相对应的边缘图的标签m
gtedge
,选取二值交叉熵函数来优化边缘的损失,可定义为:loss=l
cls
+l
box
+l
mask
+l
edge
。7.根据权利要求6所述的一种基于深度学习的单阶段实例分割方法,其特征在于,利用图像平滑滤波器对实例边缘掩码的标签进行处理,然后将平滑后的实例边缘掩码的标签与预测掩码计算损失。
技术总结
本发明公开了一种基于深度学习的单阶段实例分割方法,本申请通过传统的边缘检测算子提取到每个实例的边缘信息,从而让网络在训练学习的过程中显示的监督对实例轮廓的学习,边缘信息的融入不仅提升了实例掩码的分割精度,而且融入边缘信息后的算法在分割掩码边缘处的表现更精细,并且本申请通过原型掩码分组后再融合的方法,将原型掩码的融合过程从一次增加为两次,两次融合的方式不仅提升了实例掩码的分割效果而且增加了整个算法的泛化能力。的分割效果而且增加了整个算法的泛化能力。的分割效果而且增加了整个算法的泛化能力。
技术研发人员:吴磊 成磊 王晓敏 龚海刚 刘明
受保护的技术使用者:电子科技大学长三角研究院(衢州)
技术研发日:2023.06.09
技术公布日:2023/9/12
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/