APP下载

基于SOLOV2改进的实例分割算法研究

2023-09-14曾浩文汪慧兰王桂丽

计算机技术与发展 2023年9期
关键词:掩膜实例语义

曾浩文,汪慧兰,赵 侃,王桂丽

(安徽师范大学 物理与电子信息学院,安徽 芜湖 241002)

0 引 言

近年来随着深度学习的快速发展,计算机视觉任务也发展得非常迅速[1-2]。其中较热门的领域有目标检测[3]、语义分割[4]、实例分割[5]等。实例分割需要将图像中所有的物体都准确地区分出来,同时在语义层面的像素点级别上分割出每个实例,是一项具有挑战性的任务。

实例分割的研究长期以来都依赖较为复杂的两阶段(two-stage)方法,即先通过目标检测方法找到实例所在区域,再在检测框内进行语义分割,每个分割结果都作为一个不同的实例输出。例如Mask RCNN[6-7]、PANet[8]、HTC[9]等都是使用此方法。两阶段方法的精度较高,但是速度较慢,不能适应实时性的场景,从而导致它的实用性并不高。所以,出现了单阶段(one-stage)实例分割方法。

单阶段实例分割方法是先将输入图像进行像素级别的语义分割,再通过聚类、度量等学习方法在语义层面的像素点上区分并分割不同的实例,最后进行实例输出。经典的方法如YOLACT[10]、PolarMask[11]、TensorMask[12]等。以上单阶段的方法提高了速度,但是普遍存在精度有所下降的问题。基于此,Wang等人在2020年提出SOLOV2(Dynamic,Faster and Stronger)[13]单阶段的算法,通过提出“实例类别”的概念,根据实例的位置和大小,对每个实例的像素点赋予一个类别,巧妙地将实例掩码分割问题转换为一个分类问题,SOLOV2算法从精度和速度上超越目前存在的实例分割算法,得到了广泛的应用。Liu等人[14]通过对卷积结构进行优化并将其应用到农业上;Zhu等人[15]将其应用到无人机中可以快速地检测与分割目标。SOLOV2是一种以ResNet[16]为基础网络的实例分割算法,并且在骨干网络后连接FPN结构进行特征提取和特征融合,以此提高算法的精确度。最后通过Category Branch(分类分支)和Mask Branch (掩膜分支)分别得到语义分类和掩膜输出的结果,并输出最后的图像。但ResNet网络的计算量随着网络深度加深会逐渐增大,基于此,该文使用ResNext[17]作为骨干网络,在与ResNet相同参数量和计算量的情况下网络精度有所提升。此外,使用NAS-FPN[18]代替FPN[19]结构进行特征的提取和融合,NAS-FPN使用重新组合和融合特征图的方式使网络能够充分地感知特征图从而提升网络精度。实验结果表明,改进后的SOLOV2算法在速度不变的情况下精度提升2.1%,证明了算法的可行性。

1 SOLOV2算法框架

SOLOV2是一种单阶段逐像素的实例分割算法,并且是以FCN为基础架构添加两个并行分支组成,可以实现端到端的目标检测与分割。SOLOV2网络整体架构如图1所示。

图1 网络整体结构

整体网络架构由ResNet特征提取网络、FPN特征金字塔网络、语义类别分类分支和掩膜分支、像素级实例分类与掩膜输出4个部分组成。

SOLOV2的核心思想就是将实例分割问题重新表示为类别预测和实例掩码生成两个问题。具体就是,算法将输入图像划分为若干一致的网格,即S×S。如果物体的中心落在某网格内,该网格负责预测语义类别和分割该物体实例。具体过程如图1中语义分类分支和实例掩膜分支所示。

语义分类:对于每个网格,SOLOV2预测一个C维度的输出,表示语义类别的概率,C是类别的个数。这些概率值取决于这些网格。如果将图像划分为S×S个网格,则输出空间为S×S×C,如图1语义分类分支所示。这样设计是基于一个假定,即每一个网格都属于一个单独的实例,因此只属于一个语义类别。在推理时,C维度的输出表示每个实例的类别概率。由于此分支需要对C维度的网格进行分类,但一般网格是实例所在区域概率较小,大部分是背景区域,这种差异如果较大则会影响检测结果,所以此分支中使用Focal loss损失函数可以很好地抑制这种差异较大导致精度降低的现象。

实例掩膜:与语义类别预测平行,每个网格都会输出一个相应的实例掩码。给定一个输入图像i,将之划分为S×S个网格,总共就有至多S2个预测掩码。在3D输出张量中,将在第三个维度中直接对这些掩码进行编码。输出的实例掩码的维度就是H1×W1×S2。第k个通道负责在第(i,j)个网格中分割实例,k=i·S+j(i,j都是从0开始)。这样就在语义类别和掩码之间构建起了一一对应的关系,如图2所示[13]。当此分支开始对拥有实例的网格进行掩膜时,有些网格中实例占比可能较少,从而导致掩膜精度降低,所以使用Dice loss损失函数来抑制这种现象,从而有效提升精度。

图2 实例掩膜对应关系

2 改进SOLOV2算法

2.1 ResNext网络结构

SOLOV2常用的骨干网络是ResNet-50 /101残差网络,ResNet网络中加入了一个残差结构,解决了随着网络加深准确率下降的问题。ResNet网络残差结构如图3所示[16]。

图3 ResNet网络残差结构

残差结构对每层的输入做一个反馈(X),通过加深层学习形成残差函数,这种残差函数更容易优化,能使网络层数大大加深。但是随着网络层数的不断增加,网络计算量和参数也随之增加,导致速度降低精度却没有增加,所以,该文采用改进的ResNext网络,在ResNet网络残差结构中增加了Inception结构[20],如图4所示。

图4 Inception结构

从图5中可以看出,改进后的ResNext网络在ResNet网络结构的基础上增加了平行堆叠拓扑结构,在网络深度不变的情况下增加了基数,将多维度的乘积运算变为更低维度的求和运算,网络的参数量和计算量不会变多,但能有效提升网络精度。表1显示了ResNet网络和ResNext网络参数量和计算量的对比。

表1 网络参数量和计算量对比

图5 网络结构对比

2.2 NAS-FPN结构

传统的FPN结构如图1中FPN方框中所示。FPN结构从不同的网络层次提取不同尺度的特征图,将提取的特征图每个都做1 × 1卷积,从而减少卷积核的个数。经过处理的特征图从顶层开始依次向下做上采样操作,目的是为了和上一层的特征图尺寸一样从而做特征图的融合操作。可在融合之后还会再采用3×3的卷积核对每个融合结果进行卷积来消除上采样的混叠效应。经过融合操作后最底层的特征图所包含的特征语义信息最多,但是还会对过程中的每个特征图都做预测操作,这样就大大减少了在特征融合过程中因为卷积所损失 。但是FPN的这种结构不能充分的利用特征图,所以使用改进的NAS-FPN结构来提升网络精度。

NAS-FPN结构对于FPN的改进之处在于将原来的FPN结构中所得到的那些特征图重新进行组合,不再是通过从高层次特征图依次向下和低层次的特征图融合的这种方式。NAS-FPN结构如图6所示。

图6 NAS-FPN结构

NAS-FPN对5个尺度上的特征图进行重组,5个尺度的特征图分别表示为:{C3,C4,C5,C6,C7},相对输入图像的步长(缩放倍数)分别为{8,16,32,64,128},其中C3、C4、C5是ResNext提取的三个尺度上的特征层,C6和C7是把C5特征层池化后得到的。

NAS-FPN的核心设计是合并单元,它负责搜索、抽取输入特征图以及经过二元操作得到输出特征图。具体步骤如下:

(1)从候选特征层中选取2个作为输入特征层。

(2)选择输出特征的分辨率。

(3)选择一个二元操作将两个输入特征层整成新的输出特征,并加入候选特征层中。

上述步骤重复进行,最初的候选特征层就是5个尺度的特征图,最后5个循环分别生成最终输出特征层{P3,P4,P5,P6,P7},这5个特征层的分辨率分别与最初的5个候选特征层相对应。合并单元通常会叠加多个,上一个合并单元的5个输出特征层作为下一个合并单元的5个初始候选特征层。合并单元的操作过程和二元操作如图7所示[18]。

图7 合并单元和二进制操作过程

实验使用ResNext网络作为特征提取骨干网络,为了可以在不增加网络参数量和计算量的情况下提升网络精度,使用NAS-FPN结构对特征图进行重新组合和融合。为了使网络可以更好地感知特征图,改进后的网络结构如图8所示。

图8 改进后的网络

3 改进SOLOV2算法基本流程

3.1 算法基本流程

在SOLOV2测试模型时,给定一个输入图像,先通过骨干网络处理得到一系列特征图,再通过金字塔结构将特征图进行处理,并传入到能对特征图进行分类和预测的算法头部中,最后得到一个带有将目标用掩膜覆盖的图像。整个算法步骤大致如下:

(1)对输入图像进行预处理操作。

(2)搭建如图8所示的网络框架,将输入图像送入ResNext基础网络得到输入图像的特征图,在特征图的每一点上面进行回归操作,训练获取网络模型。

(3)将预训练的网络模型应用到测试图像中,从特征金字塔的多个Head获得预测结果;其中Head检测网络分为语义分类分支和实例掩膜分支。并且两个分支使用不同的损失函数,语义分类分支使用的是Focal loss损失函数,掩膜分支使用的是Dice loss损失函数。

(4)使用NMS后处理操作得到最终预测结果。

3.2 损失函数介绍

(1)Focal loss损失函数。

此损失函数主要是为解决类别不平衡的问题所提出的。因为网络在处理数据时负样本数量太大,占总的损失的大部分,而且多是容易分类的,由于负样本太多可能会不能够正确地识别正样本,从而导致准确率变低。计算公式为:

FL(pt)=-αt(1-pt)γlogpt

(1)

其中,(1-pt)γ为调制系数,pt的范围是0到1,为任意数,α一般会取0到0.5来增加-1这个类的样本的权重。

(2)Dice loss损失函数。

Dice loss损失函数源于二分类,本质上是衡量两个样本的重叠部分。该指标范围从0到1,其中“1”表示完整的重叠。其计算公式为:

(2)

其中,|A∩B|表示集合A、B之间的共同元素,|A|表示A中的元素个数,B也用相似的表示方法。为了计算预测的分割图的dice系数,将|A∩B|近似为预测图的每个类别的得分和目标之间的点乘,并将结果函数中的元素相加。

4 实验结果及分析

基于Pytorch深度学习框架上实现SOLOV2实例分割模型并进行模型的训练和测试。操作系统为Linux 16.04.5LT,服务器的处理器为Intel Xeon(R) CPU E5-2678V3内存64G,实验显卡为NVIDIA GeForce GTX1080TiGPU,GPU数量为4,使用的CUDA版本为10.2。

4.1 实验数据集及损失值分析

实验采用Microsoft COCO2017标准数据集,COCO2017数据集分为目标检测、关键点检测、实例分割、全景分割、图像说明等5种标注类型;标注信息使用JSON格式存储,预处理通过COCO API用于访问和操作所有“标注”。其中训练数据集图像11万8千多张,测试数据集图像5千多张。数据集中包含人、车等80个类别。为了加速训练,实验使用迁移学习来训练。首先加载已经训练好的ResNext模型的权重,使用monentum=0.9,weigt_decay=0.000 1的SGD优化器,使用GN,一共迭代100 000次大约12个epoch。初始的学习率设为0.01,在第7个epoch和第10个epoch分别将学习率除以10。模型改进前后的损失值如图9所示,其中loss_cls为语义分类中的损失值,loss_mask为实例掩膜中的损失值,loss为总的损失值。

图9 改进前后的损失值对比

图中下方曲线为改进后的损失值曲线。从图9(a)语义分类损失中可以看出,改进后的损失值从1.0下降到0.2左右,比原先的0.25更小,且在迭代70k次后学习率衰减10%,损失值逐渐趋于稳定。图9(b)中看到在迭代20k次时损失值产生震荡,后继续下行缩小,最后在0.5左右趋于稳定。从图9(c)总的损失中可以看出,改进后的损失值下降更为迅速,且损失值趋于稳定后相对较小。通过分析改进前后的损失变化情况可知,改进后的损失下降迅速,说明网络收敛速度较快,稳定后的损失值较小和整体震荡较小,证明网络的鲁棒性较好。

4.2 分割结果分析

实验采用AP作为准确度的评价指标,同时也展示了AP50、AP75的精度。计算公式如式(3)所示:

AP=∑precision/N

(3)

其中,precision为准确率,AP为平均准确率,N为一个类别的图像总数,TP为正确识别并标定目标的数目,FP为错误识别但标定目标的数目。表2展示了不同模型之间的精度与改进前后的模型精度对比。

表2 不同模型的精度对比 %

由表2数据可以看出,改进前单阶段SOLOV2算法精度已经高于表中所列出的其它单阶段和两阶段算法。进一步可以看出改进后的精度,当只对骨干网络改进时即使用ResNext网络作为特征提取网络,AP精度相较于原来提升了1百分点,这是因为ResNext网络在不改变网络参数量和计算量的情况下增加了网络基数,减少了超参数,从而提升了网络精度。当只对FPN结构进行改进时,AP精度相较于原来提升了0.8百分点,NAS-FPN结构可以将提取的特征图进行随机的组合和融合操作,使网络可以更好地感知特征图,从而提升网络精度。当同时对骨干网络和FPN结构进行改进时,从表2可以看出AP精度相较于原来提升了2.1百分点。图10为改进前后网络的实例分割效果对比图以及道路场景下的效果图。

从图中可以看出,SOLOV2算法可以很好地应用在各种交通场景中,如城市街头人流量和车辆较多的情况等,且改进后的SOLOV2算法能更好地将小目标进行掩膜输出,这是因为NAS-FPN结构对于特征图的感知更加精确。也可以看出,改进后的SOLOV2算法对于多个实例的分割效果更好,边缘效果处理得也更好。结合效果图可以看出,改进后的SOLOV2算法精度更高且能用于实际场景,证明了算法的可行性。

5 结束语

以SOLOV2算法为基础,通过改变骨干网络和FPN结构来达到提升精度的目的。首先,以ResNext骨干网络为基础,因为可以在不改变网络参数量和计算量的前提下减少了超参数的量,从而有效提升了网络的精度;其次,采用NAS-FPN结构与骨干网络结合来实现目标特征的提取和融合,由于NAS-FPN结构可以对特征图进行重新组合和融合的操作,不再是原来的自顶向下的方式,使网络可以更好地感知特征图,从而提升整个模型的精度。实验使用COCO2017数据集验证整体模型精度提升了2.1%,证明了改进网络的有效性。

猜你喜欢

掩膜实例语义
利用掩膜和单应矩阵提高LK光流追踪效果
一种结合图像分割掩膜边缘优化的B-PointRend网络方法
语言与语义
光纤激光掩膜微细电解复合加工装置研发
多层阴影掩膜结构及其制造和使用方法
“上”与“下”语义的不对称性及其认知阐释
认知范畴模糊与语义模糊
完形填空Ⅱ
完形填空Ⅰ
语义分析与汉俄副名组合