王金成 刘兴
摘 要:为代替人工完成汽车零件安装状态的检测识别,基于YOLOv5算法并结合PLC、RFID、Python、OpenCV、钉钉等设计形成一套完整的视觉检测系统。该系统种所训练得到的样本模型的准确率和召回率均在98%以上,从实际运行观察,其识别并准确提醒的概率在99%以上,并且可满足生产节拍需求,优于目前人工检测的实际效果,成本较低具备良好的经济推广性。
关键词:整车生产 YOLOv5 Python 检测
The Detection System of Automobile Manufacturing Parts Based on Machine Vision Technology
Wang Jincheng Liu Xing
(FAW Volkswagen Co., Ltd. Foshan branch,Foshan 528000)
Abstract: In order to replace manual inspection and recognition of the installation status of automotive parts, we design a complete visual inspection system based on YOLOv5 combining with PLC, RFID, Python, OpenCV, nails, etc. The accuracy and recall rate of the sample models trained in this system are both above 98%. From actual operation observation, the probability of identifying and accurately reminding is above 99%, and it meets the production rhythm requirements. It is superior to the actual results of current manual detection, with low cost and good economic promotion.
Keywords: Vehicle production、YOLOv5、Python、testing
中圖分类号: T 文献标识码: 文章编号:
1 前言
随着汽车行业的快速发展,消费者对于汽车的需求逐渐增加,汽车配置种类也在逐渐增加。在整车生产制造行业,一辆高品质的汽车需要安装1 000类以上、共计上万个零件,为了避免在汽车生产时零件发生错/漏装,在制造过程中以往是通过人工安装前进行自检、相关工位互查、每条生产线尾人员检查以及质保人员终检。人工的检测主观干扰因素多,可靠性低,对于多种车型多种配置的混线生产,人工检查会因为疲劳检查等原因导致错漏装零件车下线,从而可能带来后续返修成本增加,甚者会导致错误的配置车辆流入客户,从而带来强烈的售后抱怨和经济损失。如何利用数智化的手段来识别并解决问题显得愈发重要,国内外相关人员对此做了较多的研究,许有健等[1]识别汽车制造过程中的管控要素和相应的方法;唐艳、陈莉等[2-3]制造业在数智化升级的整体框架研究。
利用机器视觉代替车间检查人员,完成整车零件的错漏装检测显得愈发重要。许多人开始着手研究,张丽秀等[4]通过采用改进的YOLOv3算法实现汽车零件配置的识别,解决传统的终检人工作业检测的弊端。汽车生产组装过程中的酒精管道插头、胶堵、空调冷凝管等零部件因为车型配置种类多,易发生错漏装的现象,且个别零件因为安装位置等原因不易第一时间发现问题,一旦出现问题就会产生返修返工、停台影响甚至会出现质量问题,会造成巨大的损失。
针对上述错漏装不易发现的问题,为了以最低成本实现集成系统式预防问题,本研究主要开发了一套基于Python、OpenCV、YOLOv5开源模型算法、snap7等技术手段来实现汽车装配类零件错漏装的图像识别系统方法,从而杜绝错漏装的现象。本系统通过Python snap7 与线体西门子PLC(S7-300系列)通信,实现如下功能。
a.通过sew变频器和编码器精准地获取当前车辆信息和车辆所处的位置;
b.利用OpenCV的Python库基于rtsp通讯协议调动普通的网络摄像头进行拍照然后对拍摄图像进行预处理;
c.利用YOLO模型进行图像识别分类;
d.最后利用位于生产线尾的语音屏和手机钉钉端进行相应的报警。
该系统具有低成本、低功率、高准确率的特点,便于在整车制造同类问题进行横向开展。
2 YOLOv5s目标检测算法
2021年,Ultralytics LLC公司提出了YOLOv5算法,YOLOv5在原有YOLOv4的架构基础上进行改进[5],YOLOv5 算法分为 YOLOv5s、YOLOv5m、YOLOv5l 和 YOLOv5x四种算法。其中,YOLOv5s 的网络最小,检测速度最快[6],因为本系统主要识别的是整车生产过程中装配类零件的错漏装检测,YOLOv5s其精度要求也是满足整车生产现场的实际需求,因此本系统基于YOLOv5s算法开展实际的设计使用。
2.1数据样本准备
本系统需要完成11种汽车零件的整体检测,为了后续集成化系统的快速开发推广使用,暂定采用每类零件都进行一次模型训练,生成11个训练模型。其所使用数据样本集是通过现场摄像头进行实时数据采集。因为系统测试车间是4种车型混线生产,且每种车型都有多个配置信息,根据零件实际情况进行样本的训练集和测试集准备。
因为在样本拍摄过程中,因为摄像头自身的问题及信号传输的可能会受到信号干扰问题,会导致图片中通常会产生高斯噪声和椒盐噪声,会出现影响视觉判断的黑白像素点,本文利用OpenCV的cv2.blur()均值滤波函数对其进行降噪处理[7]。
(1)
并根据卷积神经网络的计算要求,对图片进行归一标准化统一处理,确保图片大小等为标准形式[8],所有图片大小都设置为640×640。
(2)
式中,xi为图像像素点值;min(x)、max(x)分别为图像像素的最小值与最大值[9]。
图片标准化处理完成后,利用专业的图片标注软件为Labelimg软件对每张样本图片进行相应的标定。
2.2模型训练
在模型训练过程,将初始学习率设为0.01,weight decay 设置为0.000 5, batchsize设置为64,训练epoch设置为300轮。分别将标注好11个零件的训练与测试图片样本集,进行模训练。在本系统中,最终采用将精确率、召回率作为最终样本模型好坏的评价衡量指标。经过多轮的训练最终得到11个样本模型,再分别将其设定IOU阈值为0.5时,其每个模型的精确率分别为下表所示。
3 系统功能和框架整体介绍
整个程序系统位于服务器(服务器的配置信息),基于YOLOv5s算法,使用深度学习框架PyTorch,训练测试在PyTorch 1.8.0环境下完成,编程语言为Python 3.8,数据库为MySQL8.0.1操作系统是Win10系统。
3.1 系统整体信息
在整个系统设计过程中,五大主要模块分别为图像采集模块、车辆配置信息获取模块、车辆信息采集模块、图像识别模块和系统报警模块,系统的结构如图1所示。
3.2 具体工作流程
在该项目从车辆到站到车辆出站预警分析等需要完成6步完整步骤。
a.步骤一:基于Python snap7获取车间西门子PLC S7-300系列中的DB塊信息。工业界经常将RFID系统分为标签,阅读器和天线三大组件。阅读器通过天线发送电子信号,标签接收到信号后发射内部存储的标识信息,阅读器再通过天线接收并识别标签发回的信息,最后阅读器再将识别结果发送给主机[10]。通过安装在设备上RFID阅读器,从吊具上的数据载体(标签)中实时获取当前车辆的底盘号信息,并将其存储到PLC的DB块中。目前车间使用的为西门子S7-300系列的PLC,通过 Snap7 提供的 read_area(self, area, dbnumber, start, size)函数,读取 PLC 的DB块中的值,并将其存储到MySQL数据库中。
b.步骤二:实时从MySQL数据库中获取步骤一中得到的车辆底盘号等信息,判断该底盘号是否与识别数据库中的车辆底盘号一致,如不一致说明该车辆为最新车辆,需要利用Python中的pymssql库实时从车辆配置信息的FIS服务器上的SQL Server数据库中获取车辆的车型信息和配置信息代码,存储到对应的MySQL数据中以便后用。
c.步骤三:利用Python OpenCV,基于网络摄像头的RSTP协议流实时流传输协议(主要用来控制影响的实时多媒体流传输协议[11])控制网络摄像头,利用Python OpenCV的VideoCapture()和imwrite()控制网络摄像头获取图片。
d.步骤四:基于前期利用YOLOv5实时训练的11种零件样本的训练模型,逐个对11张图片的11类零件进行机器视觉识别,并将识别判定结果实时存储到对应的MySQL数据库中,经过近两个月的实际观察判断,其准确性在99%以上,满足现场的实际需求,而且随着时间的推移,样本数据的逐渐增加,其准确性会继续提升。
e.步骤五:针对识别的结果实时存储到后端MySQL数据库中,如何利用更加有效的手段提醒操作者和检查人员采取措施显得愈发重要,为此利用Vue.js做前端、Node.js做后端搭建语音屏的实时显示界面,位于每条生产线的链尾,进行实时的车辆检查状态提醒,即通过与线体PLC实时通讯获取当前车辆底盘号,根据底盘号实时与视觉识别结果存储数据库通讯,将其识别结果显示至工位屏上,并利用语音合成技术,将不合格结果通过语音播报出来,具体逻辑流程如图2所示。
f.步骤六:利用Python将不合格(或异常点)信息通过钉钉进行相应的报警。利用手机钉钉系统推送不合格车辆信息,在相关钉钉报警工作群中创建自定义机器人,获取到 Webhook 地址后,向这个地址发起 HTTP POST 请求[12],将相应的报警信息实时发送给相应的负责人员及时采取相应的措施。
4 结束语
在将整个系统用于现场后,经过现场两个余月的测试验证,识别准确率在99%以上,而且为了后续模型的更加精准,每隔一个月会对模型进行重新训练,使其准确性达到99.5%以上。而且利用位于每条生产线的语音屏和手机钉钉也会及时将错漏装信息反馈给检查人员,全面杜绝汽车零件错漏装的流出。之前车间漏检返修的数量:240次/年,经济损失20万元年;系统运行近6个月,相关零件错漏检返修的数量只有1次,大大降低了成本,提高了经济效益。后续笔者会对整个系统的程序和算法进行持续优化,便于快速的迭代和推广实施。
参考文献:
[1] 许有健,吴涛,梁玉环.质量信息管理系统在汽车制造质量控制中的应用[J].制造与工艺,2021(1):115-116.
[2] 唐艳,胡桐.美的数智化"探索[J].企业管理2021(2):103-106.
[3] 陈莉.美的"数智四剑客"亮相工博会,美云智数"立腕"最懂制造业的数字规划师[J].电器,2020(10):66-68.
[4] 张丽秀,田甜,邵萌,基于改进的YOLO V3算法汽车零件配置辨识[J],组合机床与自动化加工技术,2020,6: 150-153.
[5] 张锦; 屈佩琪; 孙程; 罗蒙, 基于改进YOLOv5的安全帽佩戴检测算法[J], 计算机应用 2022(4) : 1292-1300.
[6] 王莉茹, 基于YOLOv5s 的口罩佩带检测[J], 西藏科技 : 65-67.
[7] 李立宗.OpenCV轻松入门面向Python[M].北京:电子工业出版社,2019.
[8] 田佳鹭,邓立国.基于改进VGG16的猴子图像分类方法[J].信息技术与网络安全,2020,39(5):6-11.
[9] 徐晓.基于C和OpenCV相结合的猫脸识别研究[J].电脑与信息技术,2021,29(3):30-33.
[10] 杨雪珂; 熊先青, 家具生产线射频识别技术的信息采集与应用[J]. 林业工程学报, 2022(3): 180-186.
[11] 郭佳琛,网络摄像头的安全威胁技术分析[J]. 中国信息安全, 2019(4): 39-42.
[12] 李紅永, Python监听服务器业务并利用钉钉机器人实现报警[J],中国有线电视, 2020(8): 900-903.