针对智能生产制造过程中,传统的目标检测算法对机械零件识别率不高,识别速度慢等问题,结合深度学习与现有算法,提出一种基于YOLOv5改进的目标检测算法。该算法在YOLOv5骨干网络中加入注意力机制,以用来改善原始YOLOv5算法对相似背景下相似零件识别率低的问题;其次,通过引入CIou损失函数,使得改进后的YOLOv5算法能够更快地收敛并具有更好的性能;最后,将改进前后的算法模型分别训练后对机械零件进行识别并对比分析,证实改进后的YOLOv5算法具有高的识别精度和鲁棒性。 Aiming at the problems such as low recognition rate and slow recognition speed of mechanical parts in the process of intelligent production and manufacturing, an improved object detection algorithm based on YOLOv5 was proposed by combining deep learning and existing algorithms. This algorithm adds an attention mechanism into the YOLOv5 backbone network to improve the low recognition rate of similar parts under similar backgrounds of the original YOLOv5 algorithm; Secondly, by introducing CIou loss function, the improved YOLOv5 algorithm can converge faster and have better performance; Finally, the algorithm models before and after the improvement are trained respectively to identify the mechanical parts and make a comparative analysis. It is confirmed that the improved YOLOv5 algorithm has high recognition accuracy and robustness.
针对智能生产制造过程中,传统的目标检测算法对机械零件识别率不高,识别速度慢等问题,结合深度学习与现有算法,提出一种基于YOLOv5改进的目标检测算法。该算法在YOLOv5骨干网络中加入注意力机制,以用来改善原始YOLOv5算法对相似背景下相似零件识别率低的问题;其次,通过引入CIou损失函数,使得改进后的YOLOv5算法能够更快地收敛并具有更好的性能;最后,将改进前后的算法模型分别训练后对机械零件进行识别并对比分析,证实改进后的YOLOv5算法具有高的识别精度和鲁棒性。
深度学习,骨干网络,YOLOv5,机械零件识别
Haoyang Zhang1, Shirong He1*, Dongping Meng1,2
1School of Mechanical Engineering, University of Shanghai for Science and Technology, Shanghai
2College of Science, University of Shanghai for Science and Technology, Shanghai
Received: Nov. 22nd, 2022; accepted: Dec. 22nd, 2022; published: Dec. 31st, 2022
Aiming at the problems such as low recognition rate and slow recognition speed of mechanical parts in the process of intelligent production and manufacturing, an improved object detection algorithm based on YOLOv5 was proposed by combining deep learning and existing algorithms. This algorithm adds an attention mechanism into the YOLOv5 backbone network to improve the low recognition rate of similar parts under similar backgrounds of the original YOLOv5 algorithm; Secondly, by introducing CIou loss function, the improved YOLOv5 algorithm can converge faster and have better performance; Finally, the algorithm models before and after the improvement are trained respectively to identify the mechanical parts and make a comparative analysis. It is confirmed that the improved YOLOv5 algorithm has high recognition accuracy and robustness.
Keywords:Deep Learning, Backbone Network, YOLOv5, Machine Part Identification
Copyright © 2022 by author(s) and Hans Publishers Inc.
This work is licensed under the Creative Commons Attribution International License (CC BY 4.0).
http://creativecommons.org/licenses/by/4.0/
传统制造业往往利用人工进行机械零件的装配,一方面人工劳动强度大,企业成本高;另一方面因为工人参差不齐的水平、长时间工作后产生的视觉疲劳会造成机械零件的误识别,这严重影响了制造速度与装配精度 [
现有的目标检测算法一般分为两类,一类是以方向梯度直方图(Histogram of Oriented Gradient, HOG)算法 [
针对以上问题,本文通过对现有的YOLOv5算法进行改进,并在自己制作的机械零件数据集完成相关训练与测试,实现目标的初步识别。经过不断地训练与调试,保留最优权重,实现该算法对机械零件轮廓与位置的精准捕获与识别。
YOLOv5算法无需复杂的设计过程,可以直接选择从输入图片中提取的整个特征图进行模型的训练,从而更好地实现对目标和背景区域的精准划分并能够同时预测多个目标检测框的位置及其类别。此外,在YOLOv5的4个模型中,如表1所示,YOLOv5s网络结构较简单、推理及运算时间最小、易于在各种移动设备上部署、且具有较高的定位精度以及最快的检测速度。因此,为兼顾推理时间与推理精度,本文选用YOLOv5s作为目标检测的主要网络。
YOLOv5s单阶段目标检测网络是在经历了YOLO、YOLOv2、YOLOv3、YOLOv4四个阶段的不断优化得到的,其网络结构如图1所示。在Backbone结构中,YOLOv5替换了YOLOv3的主干网络Dark-net53,将尺寸为640 × 640 × 3的图像作为输入,经过切片、拼接函数(Concat)拼接,提高特征提取能力,YOLOv5设计SPP模块,该模块借鉴了来自2018年CVPR上主要应用于图像分割的(Path Aggregation Network, PANet)。其中,(Feature Pyramid Networks, FPN)层自顶向下传达强语义特征,而特征金字塔则自底向上传达强定位特征,两者结合,从不同的主干层对不同的检测层进行参数聚合,进一步提高了特征提取的能力,SPP模块为空间池化金字塔模块,其采用分别采用5/9/13的最大池化操作,再进行Concat融合,提高感受野;在Neck结构中,YOLOv5设计CSP2结构,提高了算法模型的特征融合能力;在Prediction结构中,采用3种不同的感受野来识别不同尺寸的目标。
Model | Size | AP50 | FPS | Params |
---|---|---|---|---|
YOLOv5x | 640 | 68.7 | 167 | 87.7M |
YOLOv5l | 640 | 66.4 | 264 | 47.0M |
YOLOv5m | 640 | 63.1 | 345 | 21.4M |
YOLOv5s | 640 | 55.6 | 455 | 7.3M |
表1. YOLOv5四种模型对比
图1. YOLOv5s网络结构图
由于不同种类的机械零件形状相似,造成原始YOLOv5在实际检测过程中极容易出现漏检、误检等问题。为了改善原始算法的不足,提出在YOLOv5骨干网络部分添加(Convolutional Block Attention Module, CBAM)注意力机制 [
CBAM通过通道模块和空间模块两个顺序子模块能够让每个卷积块自适应的细化提取到的中间特征图,以便每个分支都能够分别学习到在通道和空间上要关注的“是什么”和“在哪里”的信息,并能够通过此模块可以学习要强调和抑制哪些信息,有效的帮助信息在网络机构中传递。CBAM的总体计算过程可以用下式概括:
图2. CBAM结构
F ′ = M C ( F ) ⊗ F (1)
F ″ = M S ( F ′ ) ⊗ F ′ (2)
式中:F指的是中间特征图, F ∈ R C × H × W 且F作为输入; M C 指的是1维通道注意力特征图,且 M C ∈ R C × 1 × 1 ; M S 指的是2维空间注意力特征图,且 M S ∈ R 1 × H × W ; ⊗ 指的是两个矩阵对应位置元素进行乘积,在相乘期间,通道注意力值可以沿着空间维度进行传播,空间维度也可以沿着注意力值进行传播; F ′ , F ″ 分别为中间输出和最终输出。本文改进后的Backbone结构如图3所示。
图3. 嵌入CBAM注意力机制后的骨干网络结构
为了使机械零件检测模型有更快的收敛和更好的性能,此模型边界损失函数采用CIoU损失函数,CIoU损失函数在DIoU损失函数的基础上将宽高比吸纳进来。CIoU损失包括重叠面积、中心点距离和宽高比三项,其定义如下:
L C I o U = 1 − I o U + ρ 2 ( b , b g t ) c 2 + α v (3)
α = v ( 1 − I o U ) + v (4)
v = 4 π 2 ( arctan w g t h g t − arctan w h ) 2 (5)
式中:α,v是控制预测检测框的宽高且能够尽可能快速地与真实检测框的宽高接近的影响因子; w g t , h g t 分别代表真实检测框的宽和高;w,h分别代表预测检测框的宽和高。
CIoU损失函数计算过程如图4所示,其中左下角虚线框代表预测检测框,大实线框代表真实检测框,同时也是最小边界矩形框;最小边界矩形框的对角线长度为A,虚线框与实线框之间的欧氏距离为B。
图4. 真实框与预测框之间的归一化距离
机械零件目标检测模型属于深度学习网络,欲使该检测模型具有较高的精度与鲁棒性,必须有充足的数据样本作为支撑。而目前在机械零件识别方面并没有如ImageNet、CoCo、Pascal-Voc等公共数据集。因此,必须建立一套用于机械零件检测的数据集,本文所建立的数据集包括Bearing (轴承)、Bolt (螺栓)、Flat-key (平键)、Lock-washe (锁紧垫片)、Nut (螺母)、Round-pin (圆柱销)、Screw (螺钉)、Shim (垫片)、split-pin (开口销)、woodruff-key (半圆键) 10类机械零件、共9000张零件图像,20,000个目标零件(共10类零件,每类2000个),随机选取5400张图片作为训练集;随机选取1800张图片作为验证集;随机选取1800张图片作为测试集;其中一张图像包含的目标种类有以下四种情况,如图5所示:a有一类零件,b有两类零件,c有5类零件,d有10类零件。通过不同位置、不同姿态、不同角度模拟实际生产、装配、分拣过程中的零件情况。
图5. 机械零件数据集
为将图片送入算法模型中进行训练,需要对图片中的零件进行位置和种类的标注,为兼顾标注速度与准确性,采用labelImg软件进行零件的标注,标注后的图片如图6所示。
图6. 标注后的部分图片
机械零件目标检测模型的实验平台配置如表2所示。
名称 | 配置参数 |
---|---|
CPU | Intel[R]Core[TM]i5-10400F CPU @2.90GHz |
内存 | 16G |
GPU | NVIDIA GeForce RTX3060 |
GPU加速库 | CUDA 11.3 |
深度学习框架 | Pytorch |
编程环境 | Python |
表2. 实验平台配置
为了训练模型,并提高模型的准确率及鲁棒性,采用表3所示的参数进行网络训练。
参数名称 | 设置数值 |
---|---|
Learningrate | 0.001 |
Momentum | 0.937 |
Weightdacay | 0.0005 |
Batch size | 16 |
表3. 模型的训练参数
为评估修改后的YOLOv5算法模型的识别结果,本文引入以下几个参数,分别为每类平均准确率(Average Precision, AP)、总类别平均准确率(mean Average Precision, mAP)、精确度(Precision, P)、召回率(Recall, R),其计算如下所示:
P = T P T P + F P (6)
R = T P T P + F N (7)
A P = ∫ 0 1 P ( R ) d R (8)
m A P = 1 | Q R | ∑ q = Q R A P ( q ) (9)
式中:(Truth Positive, TP)为正确预测的正样本;(False Positive, FP)为错误预测的负样本;(False Negative, FN)为错误预测的负样本;q为零件种类数,此时 q = Q R = 10 。
损失函数(Loss Function)的大小与收敛速度代表了模型在训练后是否具有高性能,Loss值越低,趋于收敛值越快,说明网络模型训练的越好。修改后的YOLOv5模型与原始YOLOv5模型训练过程中的Loss值变化趋势如图7所示。从图中可以看出,修改后的YOLOv5模型在训练开始阶段已经低于原始模型,差值为0.03,随着训练epoch的增加,新模型相比原始模型能够快速趋于稳定且最终的Loss收敛值为0.008,趋于稳定的Loss值比原始模型小0.002,证明了修改损失函数能够增加模型的性能。
图7. 训练过程不同模型损失函数变化
检测精度AP、mAP能够直观的评估模型检测效果的好坏,其值越高,检测效果越好,两种模型的检测结果如表4所示。
模型算法 | AP (%) | mAP (%) | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Bear-ing | Bolt | Flat-key | Lock-washe | Nut | Round-pin | Screw | Shim | Split-pin | Woodruff-key | ||
原始YOLOv5 | 92.8 | 77.9 | 85.2 | 93.2 | 77.8 | 80.2 | 82.2 | 83.4 | 88.0 | 84.3 | 84.5 |
改进YOLOv5 | 92.8 | 78.8 | 87.2 | 93.2 | 82.6 | 83.1 | 86.2 | 86.3 | 88.8 | 84.3 | 86.3 |
增加值 | 0 | 0.9 | 2 | 0 | 4.8 | 2.9 | 4 | 2.9 | 0.8 | 0 | 1.8 |
表4. 识别精度对比
图8. 两种算法模型检测效果对比。(a) 原始YOLOv5算法检测效果;(b) 改进YOLOv5算法检测效果
从表4可以看出,改进后的YOLOv5模型相较于原始模型在10类机械零件的检测与识别中均有不同程度的提升,其中新模型在Nut、Screw类中提升最大,分别提高了4.8%、4%;由于此类零件外形相似,因此原始YOLOv5无法提取更多的特征细节。在引入CBAM注意力机制并修改损失函数的改进算法中能够提取到更多的关于Nut、Screw的纹理及深层次的特征图,因此AP及mAP均有提升,更进一步证实了改进YOLOv5算法的有效性。两种算法模型实际检测机械零件的效果对比如图8所示:对比(a) (b)可以明显看出,原始YOLOv5识别结果中Screw、Shim、Nut、Flat-key、Round-pin未被检测出;而改进后的YOLOv5能够准确识别出(a)图中漏检部分,再次证明了改进算法的先进性与有效性。
本文针对智能制造图像识别中传统识别算法存在识别准确率低、鲁棒性差的问题,改进了YOLOv5原始算法并设计了新的算法模型。改进的思路主要有以下部分:首先在原始检测算法模型的骨干部分加入CBAM注意力机制,以改善原始模型提取冗余特征造成的识别率低等问题,使得特征提取模块能够自动学习并更多地关注对准确识别零件有用的特征,提高改进算法对机械零件的识别率;其次,将原始模型的DIoU损失函数替换为CIoU损失函数,进一步优化了锚框框选目标的准确性。实验对比表明,修改后的YOLOv5算法较原始模型在识别率及模型鲁棒性方面均有较高提升。
张浩洋,何仕荣,孟冬平. YOLOv5改进算法在机械零件中的识别与应用Identification and Application of YOLOv5 Improved Algorithm in Mechanical Parts[J]. 软件工程与应用, 2022, 11(06): 1446-1455. https://doi.org/10.12677/SEA.2022.116149