基于Yolov3算法的视觉检测系统设计与实现
2020-10-09何其伟赵宇坤宗兆翔
何其伟 赵宇坤 宗兆翔
摘要:针对传统工业产线上的质量检测环节,本文提出了一种基于FPGA控制板卡与物体识别算法的机器视觉检测系统。该系统采用FPGA+GPU并行处理结构作为硬件平台,充分利用FPGA实时性好、可实现复杂控制逻辑等特点完成视觉系统各部件的控制以及数据传输,配合电脑端的GPU完成物体识别算法。实验结果表明,该方案可以满足生产线上的高速要求,并且易于部署,从而实现了深度学习在传统生产线上的落地应用。
关键词:缺陷检测;机器视觉;FPGA;深度学习
中图分类号:TP391 文献标识码:A 文章编号:1007-9416(2020)08-0128-04
0 引言
近年来,随着“工业4.0”和“中国制造2025”的提出,工业生产自动化和智能化的发展进程加速前进[1]。将机器视觉应用于工业产线检测环节是智能制造的重要应用场景之一,目前传统的基于图像处理的检测方法是将待检对象的形状、颜色等特征建立模板,利用模板对检测对象进行特征匹配[2]。此种方法带来的问题是,待检对象缺陷种类繁多且大小不一,根据不同特征建立的算法往往只对特定对象起作用,缺乏通用性和灵活性。此外,工业流水线对机器检测速度提出了较高要求。基于上述工业应用的实际需求,本文设计了一套基于深度学习的工业视觉检测系统[3],该系统利用FPGA平台完成相机、灯光控制、图像传输以及残次品剔除,基于深度学习算法开发缺陷檢测网络模型,代替传统的图像处理技术,形成一套完整的AI工业视觉检测的软硬件系统,并通过终端的UI界面实时向用户展示系统的工作状态。
1 视觉检测硬件架构
机器视觉检测硬件架构示意如图1所示,成像采集,FPGA控制系统,检测算法执行是该硬件架构中需要实现的三大主要模块。
1.1 成像采集
成像单元由工业相机、照明光源构成,负责原始图像数据的采集。采用LED环形光源可以满足大部分的照明条件需求。对于实际流水线的应用场景,检测相机的每秒采集图像个数(即帧率,fps)需要大于生产线的速度,本文方案在检测平台上选择Basler工业相机,除了提供较高帧率,其自带的库函数API还可以通过Python编程直接从以太网接口控制并可接收相机捕获的图像。
1.2 FPGA控制系统
控制模块需要控制视觉光源、工业相机触发以及图像传输等过程,特别地,对于实际工业检测场景下的多工位设置,控制模块还需要完成不同工位间的协同控制功能。考虑到图像数据量及运算量大,控制逻辑的复杂性以及检测的实时性,相应的控制模块,本文选用Xilinx FPGA系列Kintex ultralscale xcku040。FPGA(Field Programmable Gate Array)是一种高性能的可编程逻辑器件,可通过编程方式修改其内部逻辑电路,从而实现高速并行的硬件计算[4-5]。FPGA板负责图像的实时采集、存储、显示,以及处理不同工位上灯光与相机的协同工作。这其中,具体的工作包括:
(1)图像采集:编写PCIe(快速外围设备互连peripheral component interconnect express)通信模块[6]以及相机控制模块,在计算机编写PCIe通信程序使用写控制字的方式向FPGA发出指令,通过工业相机自带软件设置为外部触发模式,FPGA对其发送脉冲信号激活相机抓拍工作。多工位场景下,FPGA根据产线速度预设节拍,控制不同位置的相机、光源按照定制的逻辑次序工作。
(2)预处理:图像采集模块的图像信号,经过网口传递给FPGA进行图像的预处理,经PCIe通讯接口写入上位机系统内存,并由FPGA控制系统时序、数据处理、控制执行单元等任务。由于FPGA实时性高,大量并行单元可使用进行图片预处理,减少了计算机主机系统的大量运算,从而加快了图片读取速率,减小了相机掉帧情况。
(3)执行单元:FPGA根据电脑端反馈回来的判定结果(不通过NG 或者通过PASS),控制相应的电磁阀输出端口对缺陷产品进行剔除工作。
1.3 检测算法执行
检测模块硬件部分具体由计算机GPU、显示器、编码器等器件构成,分别用来完成缺陷识别、图像的显示、及反馈含有缺陷种类的字节信息至FPGA控制模块。
2 视觉检测算法模型
算法模块采用物体识别算法。物体识别算法的基本原理是:首先对输入图像划分成7×7的网格,对每个网格预测2个边框,然后根据阈值去除可能性比较低的目标窗口,最后再使用边框合并的方式去除冗余窗口,得出检测结果。YOLO(You only look once)是目前流行的目标识别模型之一,目前最新已经发展到V3版本了,在业界的应用广泛[7-8]。
具体实现过程:首先将具体应用场景下所拍摄的样品图片,分别准备为原始图片集、训练集、测试集。将训练集里的样本数据输入网络先与64个3×3的卷积核进行卷积运算,提取到初步特征。随后,经过3×3的最大池化操作后,数据开始进入残差模块。物体识别算法采用了残差网络结构模块(residual network),减小了梯度爆炸的风险,使得精度可以在更深的层次中得到持续提升。本文应用的残差模块包含有四个卷积层,分别是:3×3×64卷积层、 3×3×128卷积层、3×3×256卷积层、3×3×512卷积层。物体识别算法通过残差结构可以将神经网络层次加深,并通过大量的训练直至最优化。残差模块出来的数据经过 3×3的最大池化操作后,最终与1个3×3的卷积核进行卷积运算,得到输出的特征图。所述特征图经过全局平均池化操作最终得到相应输出结果。对全部训练集数据实施上述处理步骤之后,生成各层次参数即为面向某具体应用场景的深度学习网络模型。
3 实验结果与分析
3.1 具体应用实例
以陶瓷杯厂家的产线检测需求为例,面向该具体应用场景,硬件实施方案为:双工位上配置工业Basler相机搭配LED环形光源,分别从产品上方及侧方角度进行拍照。模型准备阶段在产线上采集大量陶瓷杯图片(包括合格品与残次品),对产品图片进行分类型的、像素级别的缺陷标注。根据陶瓷专业领域知识,定义缺陷类型包括:针孔、开裂、裂把、疙瘩、脏点、色脏、硬伤,具体如图2所示,双工位视觉系统如图3所示。
3.2 深度学习网络参数训练
为了训练深度学习网络模型,分别采集了20000个训练样本作为训练集,2000个样本作为测试集。采用Yolov3算法框架对模型参数进行训练,整个训练过程在Nvidia GTX1080TI平台上进行,大约耗时20小时。Yolov3网络提供训练过程的可视化数据图,如图4所示。图中横坐标单位batches为批数量,表示一批训练样本的样本数量,每batch个样本更新一次模型参数。曲线avg_loss代表平均损失率,是结构的评估参数,越小越好,期望值趋于0。通过分析图中的损失变化曲线,可以调整学习率。学习率决定着权值更新的速度,设置得太大时,虽然损失曲线前期下降很快,但后期結果容易超过最优值,设置太小时损失曲线下降速度过慢。图中显示的本文训练过程,损失率呈现滑梯式下降曲线,表明学习率设置合适。从损失率曲线可以看出损失率收敛,且接近0,表明训练后的模型识别精度完全达到产品检测要求。以陶瓷杯检测为例,该视觉系统的检测帧率可以达到3fps(即每秒检测3张图片),达到真实产线的速率要求。图5为陶瓷杯产线上部署视觉检测系统后的在线检测结果。如图所示,若产品经过视觉系统检测被判定为缺陷产品时,终端显示器的用户界面上会标识出产品的缺陷区域,并且显示判定结果为“NG”。
4 结论
本文提出了一种基于物体识别算法的视觉检测系统的软硬件实现方法。经产品检测实验表明,该系统可以快速部署到产线上,基于Yolov3算法构建的学习网络识别精度高,通用性好。
参考文献
[1] 周济.智能制造:“中国制造2025”的主攻方向[J].中国机械工程,2015,26(17):2273-2284.
[2] LOWE DG.Distinctive image features from scale-invariant keypoints[J].International Journal of Computer Vision,2004,2(2):91-110.
[3] 陈浩,吴裕斌,吴鑫,等.工业视觉检测系统控制终端软件设计[J].仪表技术与传感器,2019(6):63-66+71.
[4] Torres-Huitzil C,Arias-Estrada M.Real-time image processing with a compact FPGA-based systolic architecture[J].Real-Time Imaging,2004,10(3):177-187.
[5] Benkrid K,Belkacemi S,Design and implementation of a 2D convolution core for video applications on FPGAs[C]//Third International Workshop on Digital and Computational Video,2002.
[6] Rotal L,Caselle M,et a1.A PCIe DMA architecture for multi gigabyte per second data transmission[J].IEEE Transactions on Nuclear Science,2015,62(3):972-976.
[7] Redmon J,Divvala S,Girshick R,et al.You Only Look Once: Unified,Real-Time Object Detection[C]//2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR),2016.
[8] HE Kaiming,ZHANG Xiangyu,REN Shaoqing,et a1.YOLOV3:deep residual learning for image recognition[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition,2015.