基于YOLOv3的装配零件多目标实时检测
2022-08-02冯丹彤方祝平
1 引言
现代工业高质量生产的需求急速增长,自动化生产线的智能化转型是制造业升级的关键一环。在工业领域中,装配机械臂在自动化生产线上应用广泛,但是在装配环节中,往往需要人工将零件安装到位后方可利用装配机器人进行下一步的装配操作。这种依靠人力进行的装配效率低、操作精度低,在装配环节中成为亟待解决的问题。为提高零件等在工业产线上的装配效率,需从零件识别定位、装配测距校准及机械臂控制等多个方向进行研究。
基于机器视觉的装配系统能提高生产自动化程度,计算机视觉算法在零件的自动分拣与装配、机械设备及配件缺陷与磨损检测、非接触测量、零件图像检索等生产的各个环节应用广泛。国内外学者对于将计算机视觉技术应用于工业零件装配及检测也有诸多研究。李红卫等人
为获取机械零件的位姿信息以控制机械臂的抓取动作,构建了基于三维点云的语义分割算法,以实现机械零件位姿的三维空间区域感知。徐万泽等人
为解决传统匹配方法准确率低的问题,用若干环形区域分割待检测零件的特征面,然后用包含最多纹理特征的网环区域代替特征面进行特征提取,解决了因零件不同侧面而导致的模版不匹配问题。汪晓龙等人
提出一种使用MobileNet V2代替VGG网络作为前置网络的改进SSD模型进行目标零件检测,该算法简化了模型结构,提升了特征信息的提取效率。
近年来,财会教师以财务咨询、代理记账、财务分析等真实项目为载体,与行业财务总监合作,让学生从大一开始接触专业训练,设置成单元项目课程项目融入财务会计课程教学中,加强理论与实际的联系,更好地适应社会对高素质创新型人才培养的需要。
YOLO(You Only Look Once)是Joseph Redmon等人
在2016年提出的一种目标检测的新模型。相比于早于其发表的目标检测模型FasterR- CNN而言,YOLO目标检测模型的检测准确率在经典数据集上的表现略低,但是其优势在于快速的检测速率,平均可达45FPS(Frame Per Second),是FasterR- CNN模型检测速率的6倍。此后该作者又先后发表了YOLO目标检测模型的算法改进版本。YOLOv3目标检测模型
是2018年发表的改进版本,其在分类主干网络上的改进使得模型的目标检测准确率得到了进一步提升。基于YOLOv3目标检测模型的快速性和较高的目标检测识别准确率,本研究以YOLOv3算法作为目标检测框架,提出一种多目标零件识别方法,完成零件分类、多目标识别、实时定位检测,实现自动高效的多目标零件实时检测。
2 YOLOv3算法原理
YOLOv3目标检测算法是近年来在各个领域应用颇多的,以深度学习为框架的单阶段目标检测算法,它将检测问题视为回归问题,因其模型框架简单,识别速度快、精度高,而受到了广泛讨论与应用。YOLOv3目标检测模型可以分为预测部分和训练部分。预测部分使用的主干特征提取网络为Darknet-53,由52个卷积层和1个全连接层构成,并在卷积层中添加了残差连接。通过不断卷积以及残差边的叠加,由骨干网络提取出来的特征得到图像分类特征。训练好特征提取网络后,由特征金字塔网络加强特征提取。将输入的图像经过主干网络的特征提取器后,得到来自三个不同层次尺度的特征,不同层次尺度的特征由特征金字塔网络汇总融合。各个尺度的目标检测预测结果由输出层获得。每一个特征图会根据其大小产生三套与之感受野相对应的预设边界框尺寸作为先验框,总共产生10647个先验框。如此多数量的先验框也是YOLOv3相比于其前两代目标检测算法,在小目标和密集目标检测方面所做的提升与改进。获得的先验框将会与真实框进行对比,当它们的面积交并比为最大时,这个先验框被标记为正样本,面积交并比小于预设的阈值时,则此先验框被标记为负样本,而其余先验框则被忽略。
由于自建数据集样本过少,为避免网络过拟合而导致无法收敛,以及提高训练效率,本研究基于迁移学习
的思想,在训练实验中采用了在MS COCO (Microsoft Common Objects in Context)训练集上训练的预训练权重
。主干特征提取网络所预学习到的表征轮廓的基础特征,例如点、拐角、边缘等是通用的,所以使用预训练权重有利于特征提取网络的训练,以提高网络训练效率。因此,在载入预训练权重后重新训练网络,设置网络学习率为0.001,权值衰减依据YOLOv3官方配置文件设定为0.0005。
为了让训练网络能够得到一张图片中的待检测目标的位置及分类信息,需要将采集到的图片内的目标及其分类进行标注。本研究采用开源标注工具LabelImg对数据集图片的零件进行标注。该工具可以对采集的零件图像进行目标标记,并自动生成相应的标注文件以便在训练时使用。其标注信息包括目标文件名、文件路径、图像长宽信息、图像内目标物体的类别、位置等。实验中训练集(包括验证集)图片数量占总图片数量的90%,测试集图片数量占总图片数量的10%,验证集图片数量占训练集图片数量的10%。初始新的模型训练时,将随机划分训练集与测试集。在初始化网络参数后,将零件图片训练集及其标注信息输入到网络中进行模型训练。网络模型的学习率设定为0.001,权值衰减依据YOLOv3官方配置文件设定为0.0005,训练epoch设定为100。为检验目标检测结果的准确性,本研究使用mAP(Mean Average Precision)均值平均准确率作为评价指标。mAP检测的是多个目标类别的平均准确率,且mAP的值越接近于1表明检测效果越好。
与具象美术、意象美术不同,抽象美术完全不对应于现实世界存在的一切事物,是想象的,虚拟的,装饰形式或者画面是来源于艺术家的精神世界。抽象美术不再是写实写意,他是介于自然之外的精神追求,一般是艺术家表达自己的心境,或者对宇宙浩瀚的敬畏,也可能是对社会风气的讽刺。艺术家往往是通过装饰形式,笔触,色彩来表达。
(66)绒苔 Trichocolea tomentella(Ehrh.)Dumort.杨志平(2006);李粉霞等(2011);余夏君等(2018)
潘阳确实有女人缘,一来他确实长得帅,二来是他没脸没皮。潘阳说自己换女朋友的频率是每半年一个,“半年还整不上床,那就不用再整了”,他说。
进行网络初始化和参数设定之后开始训练检测模型。由于训练设备配置、参数设置及训练集的大小等因素的影响,模型训练的时间也不同。本研究在初始化网络参数后,将标注好的零件图片训练集输入到网络中进行再训练。图2为损失函数变化趋势及目标检测结果评价,由图2可以看出,在训练约40个epoch后损失函数已经收敛,训练停止于设定的第100个epoch。使用第100个epoch的训练模型进行目标检测效果测试,测试集目标检测的评价结果如图2右图所示,所有10个类的mAP为84.46%,其中大号垫片(flat_pad_big)和小号垫片(flat_pad_small)的检测AP(Average Precision)分别仅为0.50和0.13,表明其检测准确率过低,目标检测效果不好。另外,中号螺母(nut_medium)和小号螺母(nut_small)的检测AP也小于0.95,其检测准确率有待提升。
(2)
3 实验过程及结果分析
3.1 实验环境与数据
数据集零件样本共10类,其图像编号对应的零件名称、零件外径尺寸及其样本个数信息见表1。
实验使用python3.8与Pytorch搭建检测框架,数据集来自于本研究搭建的图像采集系统收集到的零件图像。数据图片拍摄不同零件组合散落摆放的俯视图,共计224张。数据集零件样本及其编号如图1所示。
(1)
3.2 实验结果与讨论
置信度是判断先验框输出的结果是否准确的一个重要参数,其数学表示如公式(2)所示。
由表1的统计信息可以看出,数据集内不同类别样本的数量是不平衡的,其中大、小号垫片(flat_pad_small、flat_pad_big)都分别只有56个样本,这可能是它们检测准确率较低的原因之一。针对样本较少的情况可以考虑数据增强,将图片进行翻转、裁剪等操作以增加样本数量。另一方面,以上检测准确率较低的零件表面及轮廓的纹理、形状等特征都较少,因此在训练检测模型时提取到的特征也可能较少。对于特征提取问题而言,由于网络训练时会随机初始化权值,而不好的随机初始化权值会影响特征的提取效果,进而导致模型训练的效果不好。
在训练部分,需要利用网络的预测结果和真实框的情况计算损失函数loss。损失函数由3部分组成:A. 目标定位偏移量损失,计算真实框与正样本坐标偏差。B. 目标置信度损失,计算正样本置信度和负样本置信度。C. 目标分类损失,逐类别计算二元交叉熵损失。对应的损失函数如公式(1)所示。
图3为使用预训练权重后的损失函数变化趋势。由图3可以看出,在训练约10个epoch后损失函数已经收敛,故在20个epoch后停止训练。由损失函数收敛情况可以看出,训练可以在较短的时间内完成,其原因可能有两点:首先是因为使用了预训练权重,且在训练过程中冻结了主干特征提取网络的权重,只在检测网络进行了权重微调,因此加速了特征的学习及网络模型训练。其次可能的原因是数据集较干净,拍摄的待检测物体光照良好且没有背景干扰信息,以及零件没有比较复杂的特征,较易学习。
粒子更新速度加上虚拟力的调整后粒子速度能够及时调整,避免了陷入局部最优,既具有较好的全局搜索能力,又具有较好的局部搜索能力。
使用测试集对使用预训练权重后训练好的检测模型进行测试, 其中一张测试图片的零件检测结果如图4所示。从图4中可以看出,所有类别的零件都被正确检出,且检测框较为准确地框选住了零件的主体部分,这样的检测效果可以为后续零件的定位分拣抓取提供参考信息。
使用预训练权重训练后的网络模型测试集目标检测的评价结果如图5所示。从图5中可以看出,所有10个类别零件的mAP从未使用预训练权重时的84.46%提升到了99.8%,大号垫片(flat_pad_big)的检测AP从0.50提升到了1.0,小号垫片(flat_pad_small)的检测AP从0.13提升到了0.99,且中号螺母(nut_medium)和小号螺母(nut_small)的检测AP也分别提升到了1.0和0.99。测试结果表明,使用预训练权重对网络模型的训练效率及准确率均有显著提升,检测结果有效。
4 结论
本研究为实现多目标零件检测任务,提出通过深度学习网络模型学习零件特征向量的方法,得到了基于YOLOv3目标检测算法的零件识别检测模型,并通过加载预训练特征权重进行特征提取网络训练提高了训练效率。实验结果表明,所提出的方法识别所有10个类别零件的mAP为99.8%,识别周期小于1s,满足实时检测的要求。该零件识别工作的实现,为后续零件位姿识别及引导机械臂抓取控制奠定了基础。本研究所得到的检测结果存在部分检测框未将零件全部框入框内的现象,导致目标定位不够准确,可能会影响后续零件位置识别;另外,本研究的数据集未考虑零件相互遮挡堆叠情况的目标检测效果,后续研究可针对以上问题进一步改进。
[1]李红卫, 张煜奇, 周军,等. 基于区域感知的机械零件位姿计算方法[J]. 南京航空航天大学学报, 2021, 53(1): 78-84.
[2]徐万泽, 李柏林, 欧阳,等. 基于环形模板匹配的金属零件识别算法[J]. 传感器与微系统, 2021, 40(2): 128-31.
[3]汪小龙, 蒋永胜. 基于改进SSD的零件目标检测研究与应用[J]. 兰州工业学院学报, 2021, 28(2): 49-54.
[4]Redmon J ,Divvala S , Girshick R , et al. You Only Look Once: Unified, Real-Time Object Detection[J]. IEEE, 2016.
[5]Redmon J. YOLOv3: An Incremental Improvement[EB/ OL].[2018 -03 -06].
[6]Pan SJ, Yang Q. A Survey on Transfer Learning[J]. Knowledge and Data Engineering. 2010, 22(10): 1345-1359.
[7]https://mscoco.org/