基于Mask R-CNN算法的塑料瓶实例分割方法
2023-06-27郭欣欣
陈 浩,郭欣欣
(1. 南阳农业职业学院信息工程学院,南阳 473000;2. 重庆大学网络教育学院,重庆 400044)
0 引言
人们现在生活在塑料时代。自20 世纪40 年代塑料大规模生产以来,由于其便携性和耐用性,塑料瓶被广泛应用于商业、农业、工业等行业。数据显示,每分钟超过一百万个塑料瓶销往世界各地,每年有近1300 万吨塑料垃圾被倾入海洋[1]。塑料瓶使用规模的迅速扩大带来了资源枯竭和环境恶化等问题。为了缓解这一问题,世界各地都采取了各种措施对塑料瓶进行检测和分类。塑料瓶检测和分类可以通过多种方式完成,比如使用一系列手动和自动方法对塑料瓶进行分类。随着科学研究的不断进步,人工对塑料瓶进行分类逐渐淡出人们的视线,深度学习中图像分析技术的改进使得分类效率进一步提高。
对于人类来说,识别和分类复杂场景中的塑料瓶对象是一种简单行为。然而,对于机器人来说,顺利完成塑料瓶识别、分类、抓取等一系列动作并不是一件容易的事情。深度神经网络的自调整能力可以有效地提高机器人在目标检测方面的自主性。与语义分割不同,实例分割主要关注实例之间的差异。近年来,实例分割作为人工智能的一项关键技术,在医学、工程等领域得到了广泛的应用。Xu 等[2]利用卷积神经网络(mask regions with convolutional neural network features,Mask R-CNN)对乳腺超声图像进行分割,用于病灶检测和良恶性诊断,为乳腺病灶检测提供了一种无创的方法。另外,为了分析树木资源,Xu 等[3]采用实例分割的方法从城市场景中分割出树木,而树木语义标注的正确率达到0.9 左右。Brabandere 等[4]提出了一个包含两项的损失函数,通过簇内拉力和簇内推力来确定嵌入像素所属的实体;该方法利用像素嵌入解决了像素级的语义实例分割问题,促进了自主驾驶技术的发展。这些研究工作表明,实例分割具有为每个对象生成高质量分割模板的能力。
实例分割一般包括两种方法:基于检测的方法和基于分割的方法。基于检测的方法主要是生成建议区域和预测边界框,然后对预测边界框中的目标进行掩膜。
Min 等[5]提出了一种基于Mask R-CNN 算法的乳腺X线摄影质量检测系统,该系统不需要人工干预,可以有效地检测乳腺X 线摄影质量。Li等[6]提出了一种全卷积的实例分割方法,该方法通过并行执行内部得分图和外部得分图,实现两个子任务的检测和分割。另一种是基于分割的实例分割方法。与基于检测的方法相比,基于分割的方法首先从输入图像中获取像素级的分割图,然后根据得到的分割图识别目标实例。Dai等[7]实现了基于Mask R-CNN 的前列腺及前列腺内病变的分割,对临床放射科医师具有重要的指导意义。Pinheiro 等[8]提出一种称为Sharp Mask 的方法,首先使用对象建议方法估计对象完全包含在图像块中的概率,同时通过给出图像输入块来同时生成分割掩模和相关分数,然后采用路径增强的方法来增强网络层之间的信息流,在公共数据集上对改进后的方法进行了验证,表明实例分割是一种有效的目标检测方法,可以极大地提高检测精度。
到目前为止,有关实例分割的相关研究还很少发表,尤其是在塑料瓶检测领域。塑料瓶的多样性对检测过程提出了挑战,实现塑料瓶自主检测的关键是提高实例分割方法的泛化能力,如在复杂场景下检测和识别的鲁棒性,以及样本之间的平衡性。本文提出了一种基于改进Mask R-CNN 算法的实例分割方法,用于检测塑料瓶。
图1 Mask R-CNN模型结构
1 Mask R-CNN
1.1 Mask R-CNN结构
2017 年,He 等[9]首次提出Mask R-CNN 算法,该算法是Faster R-CNN[10]的扩展,采用两级检测器,使用特征金字塔网络(feature pyramid network,FPN)和区域建议网络(region proposal network,RPN)进行目标检测与分割,算法流程如图1 所示。Mask R-CNN 模型结构由图像特征提取层、RPN、感兴趣区域对齐(region of interest align,RoI Align)层以及输出层4部分组成。
1.2 骨干网络
在Mask R-CNN 中将深度残差网络(deep residual network,ResNet)[11]和特征金字塔网络(FPN)[12]这2 个骨干网络作为特征提取器,具有较高的分割精度。为实现网络的轻量化,采用MobileNet[13]优化Mask R-CNN 的特征提取网络,MobileNet 作为轻量级神经网络的代表,可以在保证精度的前提下缩小模型,减少参数数目,提高模型的检测速度。
MobileNet的体系结构(见图2)基于深度可分离卷积,将标准卷积分解为深度卷积和点卷积。深度卷积对每个输入通道使用单个卷积内核。逐点卷积使用1*1卷积核来线性组合深度卷积的输出。每个深度卷积和逐点卷积后面是一个批量归一化层和线性校正单元(ReLU)[14]激活函数。另外,MobileNet 引入了两个超参数:宽度乘子和分辨率乘子。宽度倍增器用于控制输入和输出的通道数,分辨率倍增器用于控制输入的分辨率。这两个超参数的使用大大减少了计算量,加快了计算速度。
1.3 RPN
RPN 将图像作为输入并输出一组矩形建议对象,每个建议对象都有一个对象性评分,确定锚点是前景还是背景,并对属于前景的锚点执行第一次坐标校正。RPN 的结构如图3 所示。RPN 在共享卷积特征图上使用滑动窗口生成k个对象框(本文中k=15),每个像素具有预设的纵横比和比例,称为锚盒。锚点位于所讨论的滑动窗口的中心,并与比例和纵横比相关联。在Mask R-CNN 中,反馈给RoI Align 的建议区域数量非常大,一般在100~300 之间。在这种情况下,需要学习的分割图数量较大,使得掩模分支中的特征提取困难。为解决这一问题,将RPN中的非最大抑制阈值(NMS)从0.5提高到0.7,并将NMS中的联合交叉(IoU)阈值固定为0.7。
1.4 RoI Align
图3 RPN结构
感兴趣区域池(region of interest pooling,RoI Pooling)用于从共享卷积层中提取特征,并将特征输入到完全连通层中进行分类。最近邻插值是一种量化操作,当从共享卷积层提取特征时,RoI Pooling 使用最近邻插值。由于这种量化操作,每个RoI 对应的特征被转换成固定的维度,并且RoI Pooling 后输出特征映射的RoI 与输入图像的RoI 不匹配。与RoI Pooling 不同,RoI Align采用双线性插值代替最近邻插值来计算每个位置的像素值并消除量化操作。该算法首先遍历区域方案,将每个区域方案划分为k×k个单元,不量化每个单元的边界。然后,计算每个单元的坐标值,并通过双线性插值计算位置的像素值,最后执行最大池运算。由于消除了量化运算,对小目标的检测精度更为明显。双线性插值原理如下:
式中:P为插值节点,M11(x1,y1)、M12(x1,y2)、M21(x2,y1)、M22(x2,y2) 为P点周围坐标,N1(x ,y1)、N2(x ,y2)为中间节点坐标,f(·)表示各点处像素值。
1.5 损失函数
由于增加了掩膜分支,Mask R-CNN 的多任务丢失函数可以表示为
其中:LRPN-cls为RPN 中的分类损失函数,LRPN-bbox为RPN 中的位置回归损失函数,Lcls为分类损失函数,Lbbox为位置回归损失函数,Lmask为平均二元交叉熵。对于每个RoI输出维度,新的掩膜分支是k×k×m,其中m×m是掩码的大小,k表示类的数量,因此总共生成k个掩码。在得到预测的掩模后,使用逐像素Sigmoid 函数对掩模进行分类,并将所得结果作为Lmask的输入之一。注意,只有被视为前景的像素才用于计算Lmask。
2 实验
实现塑料瓶实例分割模型从准备数据集开始。Mask R-CNN 模型是使用Python 3、Tensor-Flow、Keras 和OpenCV 库,通过改进开源Mask R-CNN[15]中的代码而构建。将带标注的自定义数据集和预先训练的模型权重一起送入由多个阶段组成的训练管道。所有实验均在配备Intel(R)Core(TM)i9-11900H 处理器、32 GB 内存和NVIDIA GeForce RTX 3060 显卡的计算机上通过Pycharm、CUDA 10.0和CUDNN实现。
2.1 数据集
数据集由从互联网上下载的自定义数据集组成。尽管有许多最先进的数据集(如COCO 和PASCAL VOC)具有用于培训和研究目的的通用图像,但注意到与塑料瓶类别相关的图像的可用性是有限的,为了解决这个问题,从互联网上下载了一组离散的图像,共300 幅图像(744×992 像素)构建数据集。该数据集包含具有不同背景的正常和变形特征的单个和多个塑料瓶图像(见表1)。
表1 迁移学习(TL)框架:渐进式逐级微调
训练深度学习模型需要巨大的计算资源或使用庞大的数据集,由于自定义数据集塑料瓶数量相对较少,在深度卷积神经网络的计算过程中容易出现模型的过拟合问题,且难以收敛。本研究采用迁移学习的策略,将COCO 图像数据集中已经预训练好的网络参数迁移到塑料瓶图像数据集的Mask R-CNN 模型上来,这样模型就具有一定的特征提取能力,方便模型快速收敛。
2.2 图像预处理和标注
对每个对象进行图像标注是一项耗时且繁琐的工作。然而,对于实例分割任务来说,这是一个重要的初始步骤。为了对目标对象进行分割和掩模生成,需要定义目标对象的像素级真值。与其他对象检测器不同,Mask R-CNN 模型需要像素级标注进行训练。有许多公开可用的数据注释工具,如VIA-VGG和LabelMe。
对于这项工作,按照COCO 数据集格式,像素级多边形标注图像进行实例分割训练。自定义数据集图像的大小和格式各不相同,使用VIA-VGG 标注工具进行像素多边形图形标注,该工具对带标注的图像生成json格式的输出。分割的真值掩模表示每个目标对象的区域方向空间位置和坐标轴。带标注的数据集还包括两个无实例图像和两个部分标注图像。图像的尺寸被调整为1024×1024×3,并且为了保持纵横比,每个图像都用零填充以匹配一个尺寸的训练要求(相同尺寸的正方形格式)。图像的尺寸范围从数据集中的150×255 到2448×3264 的小图像。系统中存储的所有图像位于两个文件夹中,其中一个文件夹存放训练图像,另一个文件夹存放json文件,像素标注以及标记信息,作为图像数组存放在json文件中。
2.3 迁移学习
本研究采用基于MS-COCO 训练集上预训练好的权重,在此基础上进行迁移学习。表示低层特征的初始层中的模型权重将在目标模型中继续使用。高层特征更加抽象,在目标模型中将对其进行更改和重新训练。在初始阶段,利用主干网ResNet-50 和ResNet-101 对模型进行训练,利用随机梯度下降和Adam 优化算法对塑料瓶图像进行实例分割。ResNet-101和随机梯度下降的深层网络性能相对较好,可以在自定义数据集上进行进一步的增量训练实验。迁移学习采用预训练-微调模型,主要包括以下几个阶段:
阶段1:冻结ResNet-101 全连接层之前的所有卷积层。
阶段2:从最后一个卷积层开始逐层解冻,依次对网络进行训练。
阶段3:寻找准确率最高的结果作为最终微调模型。
COCO 数据集-预训练模型。以ResNet-101为骨干架构进行微调;SGD 作为优化器;步数为1000;学习率为0.001。
表1给出了用于训练塑料瓶分割的迁移学习方案及详细实验。阶段1:用ResNet101 骨干网初始化头部层训练,训练30个周期。阶段2:作为模型微调的一部分,阶段2模型使用前一阶段模型的学习权重进行训练。4+层和ALL 层模型训练了30 个周期,并选择数据增强。此外,4+层模型L4和L10训练多达100个周期。作为阶段3的一部分,模型接受了额外训练的20个周期来评估是否提高了性能。在阶段3 的所有层训练中,4+层训练的模型L4 和L10 最初调优到30 个周期,后来调优到100 个周期。在阶段3 中,对4+层和所有层的模型分别训练了150 和160 个周期。利用COCO 评价指标对训练后的模型进行评价,并与模型损失进行比较。
2.4 模型评估与优化
模型性能与损失指标进行比较,并使用COCO 评估指标mAP 进行评估[16-17]。图像分割模型对于交叉验证方法来说过于复杂,Mask R-CNN基于配置参数进行了超参数调整。
表2 显示了调优模型L11 超参数检测最小置信度为0.3(30%)和0.6(60%)。 该调优在mAP_val[0.5:0.05:0.95]上取得了较0.9(90%)检测最小置信度提高0.45%和0.17%的边际改进。总的来说,从结果中可以明显看出,通过精心规划的微调方法,可以利用模型性能在有限的数据集中获得更好的结果。
表2 L11微调最终模型
图4 密集实例分割
mAP[0.5:0.95:0.05]:表示阈值变化范围为0.5~0.95,步长为0.05的交并比的平均精度均值。
2.5 结果和讨论
表3 显示了根据MS COCO 评估指标AP50、AP75、AP95 和mAP[0.5:0.95:0.5]得出的模型平均精度(mAP)结果。与使用迁移学习框架训练的所有其他模型相比,阶段2 模型L11 表现良好,mAP 达到59.3%。阶段2 的4+层增强模型在第100 个周期的mAP 达到53.0%,在阶段3 调整20 个周期后逐渐改善,所有层和4+层的mAP 均达到54.0%。在阶段2,所有层未增强的调优模型表现较好,M3 模型的mAP 达到55.3%,在阶段3,L12 和L14 模型的mAP 分别达到56.2%和56.4%。AP90从阶段1的13.90%提高到阶段3微调的49.20%。
阶段2 和阶段3 不进行数据增强训练的模型表现相对较好。这可能是由于具有微调特征的模型学习与增强在训练数据中具有较少的多样性,因为它已经在Head 层训练中进行了增强训练。在这个任务中,只使用了水平左右翻转,如果应用更多样化的增强,可以在调优的后期显示出模型性能的改善。
表3 模型的性能度量
此外,需要在每次增量训练中监测模型行为,因为除了被正确地划分为正例的个数外,错误地被划分为正例的个数可能会影响输出的质量。在后期调优阶段,模型的性能并没有得到太大的改善,这可能是由于数据集不足。在训练所有层时,重要的是根据数据集决定训练,因为大多数低级特征将发生巨大变化,会影响扩展训练的输出,导致过拟合。
模型L11 在阶段2 微调中实现了mAP 为59.4%和AP50 为74.6%的精度,用于瓶子图像的实例分割,包括各种形状和特征的密集重叠实例,与使用Faster R-CNN 模型所做的研究相比,WAND[18]的研究显示没有重叠的物体(包括其他类别物体)的检测mAP 为60.6%,AP50 为86.4%,旋转RPN 为90.3%。图4 为瓶子密集团块的实例分割,模型分割的实例数随着检测最小置信水平的降低而增加。
3 结语
Mask R-CNN 是一种具有开创性意义的体系结构,其在塑料瓶分割中的应用就是一个很好的例子。通过采用迁移学习方案和数据扩充技术,解决了诸如无法获得综合数据集和训练模型所需资源等挑战。在不同阶段进行的实验表明,在不同的参数设置下对预训练模型进行微调可以显著提高性能。模型首先在预先训练的模型上使用头层进行训练,然后使用选择层训练进行微调(有增强和无增强)。
在基于Mask R-CNN 的迁移学习算法中,将其应用于塑料瓶图像实例分割,观察到以ResNet-101 为骨干网络的初始头部层训练,经过增量微调,AP50 达到了74.6%。另外,以平均精度(mAP)为评价指标,对IoU阈值范围[0.5:0.95:0.5]进行分割,得到的mAP为59.4%。通过对图像和视频数据的测试,取得了较好的分割效果。