APP下载

基于Detection Transformer的反射对称关系物体分类研究

2022-12-11暴泰焚焦慧敏张皓齐元胜吴志鹏

制造业自动化 2022年11期
关键词:编码器手套预测

暴泰焚,焦慧敏,张皓,齐元胜,吴志鹏

(北京印刷学院,北京 102600)

0 引言

目前印刷包装过程中的很多产品从外观来看具有数学上的反射对称关系,通俗地说有左右之分,例如手套,鞋子,无线蓝牙耳机等,这些产品在包装前后需要识别左右以完成分拣,多数情况下主要依赖人工识别和手动分拣,自动化程度较低,效率低下,且人在长时间重复一项工作时容易疲倦而造成错检漏检,严重影响了产品质量。针对此实际问题,可以考虑应用计算机视觉技术,搭载相应的图像采集装置,代替人工操作,完成这类产品的自动快速准确识别。本文以医用外科手套在生产脱模后左右手套识别为例进行实验研究,旨在提升生产包装过程的自动化程度及反射对称关系物体的检测识别效率。

近年来运用深度神经网络的目标检测技术突飞猛进,其中卷积神经网络(CNN)显著提高了计算机视觉、图像处理等诸多任务的性能[1],之后在CNN的基础上又发展出了许多目标检测架构,例如RCNN[2],SPP-Net[3],Fast-RCNN[4],Faster-RCNN[5],YOLO[6]等等。关于反射对称关系物体检测识别的相关研究方法也由传统机器学习算法发展到以卷积神经网络为基础的深度学习算法。比如张生军等[7]使用主成分分析法对手部特征降维,并通过左手、右手和双手遮挡3种模式进行匹配达到左右手判别的目的。De Bellis等[8]利用人手解剖学特征构建了人手的经验模型,并构造了决策树分类器来区分用户的左右手。崔欣等[9]基于人工神经网络,在皮肤颜色模型的基础上提出了一种基于多色彩通道和邻居投票的人手轮廓线提取方法,通过人手分割特征提取完成了左右手识别流程。汪飞跃等[10]使用柔性力敏传感器获取足底压力动态数据,结合脚印外观形状实现了左右脚动态识别,并验证了所用方法的鲁棒性。钟志权等[11]提出并验证了首个深度卷积神经网络,用于左右眼自动判别,在识别具有多变性的眼底图像时体现出高度的鲁棒性。琚恭伟等[12]采用YOLOv5目标检测算法,研究了医用外科手套生产过程中的左右手识别,使用固定式摄像头获得同一背景、同一主体、不同状态的数据集,通过复制数据集的方法对比不同训练模型的测试结果,得出了相同的数据集复制多份可以增加训练模型准确性的结论。高溯等[13]开发了基于机器视觉和卷积神经网络算法的左右手识别模型,通过将独立采集的左右手原始数据集与运用OTSU算法二值化后的数据集的学习精度对比,证明了数据增强方法的合理性。

本文使用一种基于Transformer的端到端目标检测(Detection Transformer,DETR)算法,以自制的医用外科手套左右手图像数据集为例进行训练,并基于python中的imgaug库函数实施一种数据增强策略,保持图像和标注框同步改变,从而实现图片与对应标注文件同时增强,以扩充数据量并增加类型多样性,极大减少人工标注,同时可以缓解模型训练时的过拟合现象,以达到增强算法模型准确性与适应性、提高反射对称关系物体检测识别的准确率与效率的目的。

1 DETR算法整体框架与原理

DETR (Detection Transformer)目标检测算法,是Facebook AI的研究者提出的Transformer视觉版本,通常应用在目标检测与全景分割领域。与Faster-RCNN、YOLOv5等目标检测算法相比,DETR不再需要诸多手工设计组件,例如非最大值抑制(Non-Maximum Suppression,NMS)、锚定(Anchor)生成等。DETR算法是一个端到端的架构,网络结构相对简单,其主要分为三个部分:传统CNN的主干网络(backbone)、Transformer结构的编码器Encoder和解码器Decoder(主要用于提取预测框Bounding box)、预测头Feed Forward Network(简称FFN,使用二分图最大匹配损失Bipartite matching loss来训练网络)。算法结构如图1所示。

图1 DETR算法整体结构图

DETR的总体流程是:首先提取出图片中目标的特定特征,将3通道图片输入到以CNN为主体的主干网络中,然后结合图片分块后各部分的位置编码信息,输入到Transformer模型的编码器和解码器中,得到Transformer的检测结果,再输入到预测头中,经过两个全连接层,分别进行分类和预测框坐标的回归,输出结果就是一系列预测框,其中每个框表示一个元组,包含物体的类别和检测框位置。

1.1 Backbone主干网络

1.2 Transformer编码器与解码器

Transformer编码器Encoder与解码器Decoder的网络结构如图2所示。

图2 Transformer编码器与解码器的网络结构图

1)Transformer编码器:首先,使用一个1×1的卷积层将一个高层特征图f∈C×H×W的通道数由C降维到d,变成一个新的特征图z0∈d×H×W。由于编码器需要一个序列作为输入的特性,因此这里将z0的空间维度压缩为一维,从而得到d×HW的特征映射。每个编码器层都有一个标准的结构,由一个多头自注意力模块(multihead self-attention)和一个前馈网络(FFN)组成。由于Transformer体系结构是固定不变的,用固定位置编码对其进行补充,并将其添加到每层的输入中。利用0作为扩充值对图像进行填充以确保所有输入图像具有相同的尺寸,其中(H0,W0)是批处理中最大的图像尺寸。

2)Transformer解码器:结构如图2右侧部分所示,它有两个输入,一个是编码器得到的特征,另一个是对象查询向量(Object queries)。Object queries是一个可以训练的嵌入向量,为了向不同的真实框(ground truth)进行优化,使用匈牙利匹配算法匹配Object queries和ground truth。

1.3 预测头FFN

预测头FFN是一个3层的感知机,激活函数使用的是ReLU函数,隐层节点数为d。每个Object queries通过预测头来预测目标的预测框和类别,其中预测框有三个值,分别是目标的中心点以及宽和高。此模型的解码器输出N个预测框,本文目标检测任务检测的感兴趣物体数目2远小于N,因此一定会有预测框内未检测到目标的情况,这类按照背景类来处理,用标签∅来表示。

2 DETR目标检测算法的实现

本实验首先搭建DETR算法运行环境,采集图像构建数据集,使用LabelImg工具标注图片生成VOC格式的.xml文件,再通过脚本转换为COCO格式的.json标签文件。并对做好的数据集实施数据增强策略生成新的数据集。最后将两数据集在DETR模型上进行训练、测试,对比分析实验结果,得出结论。

2.1 实验环境及数据集构建

本实验在Windows10系统服务器的Pycharm中配置DETR运行环境,具体使用CUDA Toolkit 10.1版本,深度学习框架Pytorch 1.7.1版本,torchvision 0.8.2版本,Python 3.8版本。

采用固定式相机对充满气状态下的医用外科手套进行拍摄,背景不变,结合实际生产过程中手套气密性检测场景,从正下方拍摄,通过平移、俯仰、旋转手套,采集不同姿态下的图片,因实验条件限制,相机在同一时刻采集多张图像,共采集了1019张图像,初步构建一个数据集,按照DETR模型所用COCO2017数据集的格式划分为训练集和验证集,比例为3:1。使用LabelImg对每张图片框选标注,标注范例如图3所示。

图3 标注范例

标注标签有left和right两类,生成对应的VOC格式的.xml标签文件,并转换为COCO格式的.json标签文件,这样就构建了原始数据集。由于实验条件的限制,采集到的图像中手套位置姿态较为单一,而且数据量较少,不足以模拟实际生产环境。为此基于Python中imgaug库函数实施一种数据增强策略。Imgaug是一个封装好的专用于图像数据增强的Python库,功能全面多样,使用多种方式进行数据增强,可用于分类、分割、检测等任务,能实现关键点(key point)和预测框(bounding box)同时变换,根据本文原数据集的特征采取对应的图像变换:翻转、镜像、随机方向旋转、改变明亮度以及添加高斯噪声等,保持图像和标注框同步改变,从而实现了图像和对应标注文件同时增强,不需要再行标注图像。通过特定的图像变换增加了手套位姿多样性,而且每张图像与对应标注文件增强的数量可以根据需求指定,这样就能灵活地扩充数据,构建出相对完善的数据集。

2.2 实验过程及结果分析

本数据集需要检测的目标类别有两个:l e f t 和right,因此修改类别数num_classes为2,初始化模型参数,根据目标检测任务修改运行配置参数:模型训练轮数epochs设置为80,批大小batch_size指一次训练输入的样本图片数,将影响到模型的优化程度和速度,为了达到内存效率和内存容量间的最佳平衡,批大小设置为2。在相同条件下训练原数据集与增强后的数据集,并可视化训练过程中各参数变化趋势,分析模型目标检测性能。使用得到的最终模型对验证集图片随机测试,并可视化预测结果,在图像上显示出预测框、对应的类别信息及置信度值。

本实验使用DETR算法框架对训练集数据进行训练,得到训练模型,然后使用验证集数据对模型进行测试,结果分别如图4、图5所示。训练后的模型进行部分预测的结果如图6所示。两个数据集的目标检测结果参数如表1所示。比较测试模型时每一次迭代所用时间,原数据集是0.2503s,增强后的数据集是0.1636s,说明经过数据增强后训练出的模型检测速度更快,对数据的敏感性更高。但结合训练过程数据可知,相较于传统目标检测算法,DETR算法训练时间较长。

图6 部分预测结果图

表1 原数据集评估参数表

图4 原数据集训练结果

图5 进行数据增强后的数据集训练结果

本实验的原数据集是使用固定式相机在相同背景下同一时刻,采集多张手套图像构建而成,相当于将数据复制多份,这样数据太为单一,会导致在模型上出现过拟合现象。从图4(a)的精确率-召回率(简称P-R)曲线可看出,精确率始终为1,不随召回率而变化,而且模型开始迭代、迭代50次、最终迭代的P-R曲线始终未变,说明训练出的模型已过拟合,因为根据其定义,精确率和召回率是一对相悖的指数,两者不可能同时高。经过数据增强,过拟合的程度减轻。从图5(a)可看出,随着召回率增大到1,精确率最终逐渐下降。对比3条P-R曲线:开始迭代的P-R曲线缓慢下降,而迭代50次、最终迭代后的P-R曲线在召回率接近1时,精确率大幅下降。后两条曲线将前者包围,这表明多轮训练迭代后,模型的性能得到提升。

表2 经过数据增强后的数据集评估参数表

使用mAP@50(IoU阈值取50%情况下的均值平均精度Mean Average Precision)、score(综合评分值)与f1(评价指标值)来评估模型目标检测性能。对比表1中的评估参数值,原数据集的mAP@50与f1值都达到最高值的理想化状态,本实验训练了80个epochs,模型还远没有收敛,这也说明其完全处于过拟合状态,综合评分值score此时不具有参考价值;增强后的数据集各参数变化趋势正常,经过迭代50次后模型接近过拟合状态,从图5(a)的综合评分-召回率(Scores-Recall)曲线可看出,当迭代50次时,随着召回率接近1,综合评分值score在1.0附近略微下降;当最终迭代时,随着召回率接近1,score值会从1.0大幅下降到0.5左右,说明从开始迭代到迭代50次的过程中,模型极有可能出现过拟合状态。但是最终迭代得到的模型各参数都有提升且处于正常状态,其目标检测性能更优。从图4(b)、图5(b)可看出,随着模型迭代次数增加,类别错误数class_error、去规模化预测框损失loss_bbox_unscaled、均值平均精度mAP三个指标值上下波动明显,曲线极不平滑,最终也无稳定趋势,所以依据最后的训练结果判断模型性能好坏是不全面的,这也说明DETR模型还未达到收敛,可能需要增加训练轮数epochs到500左右才会收敛,反映出DETR模型收敛速度较慢的问题。

如图6所示,对部分训练图片进行预测,得到预测框的位置和目标类别都是正确的,但是置信度过高甚至达到理想值1(正常在0.95左右),这也是过拟合的体现。采集不同背景、不同分辨率的医用外科手套图像进行预测,有的得不到预测框,有的得到了预测框和正确的目标类别但是置信度低于0.8,识别准确率太低,说明模型目前仅适用于相同背景、相同分辨率的图像数据集,其泛化能力还有待提升。

3 结语

本文使用一种基于Transformer的端到端目标检测(DETR)算法,针对反射对称关系物体的检测识别问题,以医用外科手套左右手分类为例,使用自制数据集进行训练。由于实验条件有限,采集的图像数量较少,只有1000多张,而且是相同背景下的数据,类型单一,导致训练过程出现过拟合现象。因此基于Python中imgaug库函数实施了一种数据增强策略,将图像和对应的标注文件同时增强,并进行对比实验,验证了数据增强后的数据集在训练模型过拟合问题上有一定缓解,模型的泛化性能与准确性有所提高,这对于提升反射对称关系物体检测识别的准确率与效率有很好的意义。

但是DETR模型存在训练时间较长、收敛较慢的问题。由于实验条件限制,本文在两个数据集上各自训练了80个epochs,非常耗时而且得到的训练模型并未完全收敛,鲁棒性较差,预计达到500个epochs模型才能完全收敛。后续研究应着眼于如何从数据角度解决训练模型的过拟合问题,如何提升模型的泛化性能即实现对不同背景下反射对称关系物体的检测识别,以及如何从算法原理、模型结构入手提升训练速度,加快模型收敛。

猜你喜欢

编码器手套预测
无可预测
融合CNN和Transformer编码器的变声语音鉴别与还原
选修2-2期中考试预测卷(A卷)
选修2-2期中考试预测卷(B卷)
棉手套
做只手套好过冬
神秘的白手套
基于双增量码道的绝对式编码器设计
棉手套
不必预测未来,只需把握现在