许志鹏,桑庆兵
(江南大学物联网工程学院,江苏省模式识别与计算智能工程实验室,无锡214122)
传统的拉链缺陷检测以人工的方式进行,存在效率低、误检率、漏检率高等问题,随着机器视觉以及模式识别技术的发展,各种目标检测的算法相继被提出,也不断地被应用到拉链缺陷检测的工程中来。文献[1]将采集到的拉链的图片进行二值化、分割、投影、边缘检测等处理分析图像来判断拉链是否有缺陷,文献[2]将图像传感器实时采集到的拉链产品的灰度图像数据读取到计算机中,设计图像滤波器,提取拉链头和上止等部件的特征信息,建立相应的外观质量诊断模型,利用该模型对拉链的各个组成部分进行识别。文献[3]分别提出了模板匹配,基于一维灰度投影,基于神经网络模式识别的检测原理。这些方法虽然都能够实现拉链工业检测过程中的自动化检测,但都有其局限性,无法实现真正端到端的检测,且流程复杂繁琐。
随着深度学习技术的不断发展和成熟,在目标检测领域基于深度学习的方法远远超过了传统的检测方法。深度学习算法通过大量训练数据来学习更强大的模型,并使用巧妙的训练技术来不断的提高算法的准确性,文献[14]提出了基于YOLOv3 的目标检测的方法,该方法具有速度快、识别精度高等优点,要保持YOLOv3 的精度和速度,同时提高YOLOv3 模型在计算资源受限设备上的运行效率,本文提出用MobileNetV3来代替传统的DarkNet53 特征提取网络的设计思想。
本文的实验对象为尼龙注塑拉链其结构如图1 所示,分别对拉链的拉头锁、牙、上止和下止等重要部件进行特征提取,提升识别率和效率,根据处理平台的硬件要求,搭建基于YOLOv3 的缺陷检测系统,大大提高硬件处理的速度,满足工业生产的要求。
图1 拉链结构
在本文的设计中,使用摄像头来将拉链的图片进行采集,将收集到的待检测的拉链图片送入软件系统中,然后再由后台的缺陷检测算法对收集到的拉链的图像进行端到端的缺陷检测,最后将检测的结果返回到客户端程序中来。缺陷检测系统的实验工作原理如图2 所示。
图2 拉链缺陷检测实验工作原理图
拉链缺陷检测系统主要包括三个部分:硬件模块、软件模块、检测算法模块。其中硬件部分主要包括相机、嵌入式设备,软件部分包括:图像获取程序、缺陷检测程序、缺陷管理程序,算法部分为改进后的轻量级的YOLOv3 目标检测算法。
硬件模块的设计主要根据拉链缺陷检测系统的要求以及被测物体的实际需求选择合适的CCD 相机和镜头。其中所涉及到的参数包括镜头的焦距,视场大小,工作距离等。
其计算公式为:
其中Lf为焦距,d为工作距离,l为CCD 相机的宽度或者是高度,fov为视野范围的宽度或者是高度。
首先确定的d工作距离即从镜头前部到受检测物体的距离,根据实际测量的需要,本文设置的工作距离为1500mm,然后确定fov视野范围,指观测物体的可视范围,根据本次实验拉链的大小确定视野范围为800mm×800mm。最后确定相机的规格,实验过程中采用 的 CCD 相 机 为 SONY XCG- SX99E,像 素 为1360mm×1024mm,2/3 英寸,相机靶面尺寸为8.8mm×9.6mm,确定了参数后得出相机镜头的焦距Lf,在实际应用中有宽度焦距和高度焦距之分,根据上述的公式得出宽焦距Lfw和高焦距Lfh,分别为:
在实际应用中一般取较小的值作为镜头焦距,为此,选定镜头焦距为16mm。综合考虑本文选择PO⁃MEAS VP-L E-1616M 工业镜头。
另外还需要考虑的是实验平台,该系统面向边缘化、小型化设备,因此本文以树莓派3B+作为实验平台。
综合以上因素,本文实验所需的主要设备及其参数如表1 所示。
表1 主要设备及其参数
系统的软件部分主要需要实现三大功能:图像获取、缺陷检测、缺陷管理,主要依靠图形化界面来实现对软件程序的管理功能,包括系统的登录和退出、摄像头的打开和关闭,暂停检测,保存缺陷图片等,为了提高摄像头捕获到的图像的质量,在系统中增加了提高拉链图像亮度和对比度的功能,拉链缺陷检测模块主要依靠后台的目标检测算法来实现图像的缺陷的检测、分类和定位,而缺陷管理模块主要实现的是对检测出拉链缺陷的保存、以及查询缺陷的检测记录等功能,在软件系统的设计中本文采用Python+OpenCV 组合,其中系统界面设计通过PYQT5 来设计实现,当选择打开软件系统中打开相机即可直接获取到CCD 相机收集到的拉链图像,确定检测后,经过后台检测算法的处理、检测、分类和定位后,软件系统便会接收返回的数据信息,包括缺陷的种类、编号、置信度以及缺陷的坐标等。最终的拉链检测系统总体结构示意图如图3 所示,后续需要完成的工作就是缺陷检测算法的设计与实现工作。
图3 拉链检测系统总体结构示意图
(1)目标检测算法简介
YOLO 算法是one-stage 方法的开山之作,它将检测任务表述成一个统一的、端到端的回归问题,将输入图像按照模型的输出网格进行划分,划分之后就有很多的小cell,我们再看图片中物体的中心是落在哪个cell 里面,落在哪个cell 里面哪个cell 就负责预测这个物体,在训练阶段如果物体中心落在这个cell,那么就给这个cell 打上这个物体的label(包括xywh 和类别)。也就是说我们是通过这种方式来设置训练的la⁃bel 的,在测试阶段就利用之前在训练阶段已经训练好cell 去预测中心落在该cell 中的物体,这就是YOLO 算法最核心的思想。为了满足目标检测实时性以及对大小缺陷目标的多尺度检测的要求,综合以上算法的优缺点,本文提出基于YOLOv3 的目标提取方法。YO⁃LOv3 的改进之处在于借鉴了残差网络结构,形成更深的网络层次,以及多尺度检测,提升了mAP 及小物体检测效果。
(2)MobileNetV3 网络结构设计
为了实现拉链缺陷检测模型轻量化、小型化,本文利用MobileNetV3 作为YOLOv3 的backbend 特征提取网络,MobileNet 系列是专注在移动设备上的轻量级神经网络,MobileNetV3 是谷歌2019 年公布的新一代轻量级深度卷积神经网络,继承自MobileNetV1 和Mo⁃bileNetV2,且又引入了新的特性。
在MobileNetV1 中,利用深度可分离卷积代替了传统卷积,有效地降低了网络参数和计算量。深度可分离卷积操作分为深度卷积和逐点卷积。对于通道数为3,输入尺寸为3×3 的特征图,先对每个通道单独卷积,然后在使用1×1 卷积核变换通道数为N,MobileNetV1中使用3×3 的深度可分离卷积相较于普通标准卷积少了8 到9 倍的计算量,其基本结构如图4 所示。
图4 深度可分离卷积计算
MobileNetV2 中引入了具有线性瓶颈的逆残差结构,该思想借鉴了ResNet 的设计方案,只是这种逆残差结构不同于传统的残差结构的是,传统的残差结构是先降维然后再卷积最后再升维,而逆残差结构是先升维然后再卷积,最后再降维,这么做将特征提取能够在高维空间中进行,其结构如图5 所示。除此之外,该结构还采用了Linear Bottleneck 的设计思想,ReLu6 激活函数在高维空间中能有效地增加非线性,而再低维空间中则会破坏特征,不如线性的效果好,因此再一次降维之后便不再使用ReLu6。其结构如图6 所示。
图5 逆残差结构
图6 线性瓶颈结构
MobileNetV3 的内部结构继承于原有的网络结构,又根据MnasNet 模型引入的基于squeeze and excitation结构的轻量级注意力模型,该模型结构考虑通道之间的关系,以此来提升网络性能,能够显式地建立特征通道之间地相互依赖关系,通过学习的方式来获得每个特征通道之间的重要程度,按照这个重要程度来提升有用的特征的权重并抑制对当前任务用处不大的特征。同时MobileNetV3 提出了能有效提高网络精度的非线性h-swish 激活函数
随着网络的深入,应用非线性激活函数的成本会降低,能够更好地减少参数量,因此在MobileNetV3 的架构中,只在模型的后半部分使用h-swish(HS),除此之外,还在MobileNetV3 的预测部分进行了改进,Mobile⁃NetV2 网络在丰富特征的同时也引入了二外的计算开销与延时,而改进后的MobileNetV3 则是使用Avg-Pooling 代替计算量大的部分,在降低计算量的同时不会造成精度上的损失。MobileNetV3 的block 结构如图7 所示。
图7 MobileNetV3的block结构
(3)YOLOv3-MobileNetV3 网络结构图
MobileNetV3 的网络结构中多个含有卷积层的块(MobileBlock)的网络结构,SE 是Squeeze-and-Excite结构,压缩和激发;NL 是Non-Linearity,非线性;HS 是h-swish 激活函数;RE 是ReLU 激活函数;bneck 是bot⁃tleneck layers,瓶颈层;exp size:expasion factor,膨胀参数,每一行都是一个MobileBlock,即bneck。其中SE结构和激活函数是可选操作。
如图8 所示,本文去掉了MobileNetV3 中的最后几层网络,只保留前面所有包含卷积层的块(Mobile⁃Block),用以替换YOLOv3 中原有的DarkNet-53 网络,在训练时,网络接收416 像素×416 像素分辨率的图像,本文提取第73 层(52 像素×52 像素)、135 层(26 像素×26 像素),以及最后一层(13 像素×13 像素)的特征图来完成检测任务。13 像素×13 像素的特征图通过1×1 卷积,3×3 卷积变换通道数,输出第1 个预测结果,同时将预测的结果上采样至38 像素×38 像素与第135 层的输出结果融合,在经过变换通道数,输出第2 个结果。同理,得到第3 个预测结果,将3 个结果拼接起来,作为最终的预测结果,YOLOv3 基于多尺度预测的思想,在缺陷检测的过程中能够获取到更丰富的语义信息和更细粒度的特征信息。
图8 MobileNetV3网络结构图
(1)实验数据集
拉链缺陷检测进行所采用的卷积神经网络属于深度学习模型,其数据样本的规模对识别结果有一定影响。本系统的实验对象是拉链,目前,零件表面缺陷图像并没有像ImageNet、MNIST 手写字体识别等项目一样建立公共的图像库,所以本文使用的数据均为国内某工厂实际生产线采集所得,使用CCD 相机对生产后的拉链表面进行拍照收集到的图片,本文利用数据增强的方法对收集到的图片进行了扩充,按照VOC 数据集的格式通过标注制作出了自己的数据集,该数据集经过整理后分为训练集4200 张,测试集1800 张。拉链数据集包括拉头没有LOGO、没有下止、有遮挡物、下止损坏、没有上止、拉头损坏、链齿之间空隙大、贴布损坏等8 种常见缺损。
在YOLOv3 的算法中输入图片的大小为416×416,而拉链图片的大小为2048×800,因此,需要对图片大小进行转化,如果将图片直接转化成算法输入的大小416×416,会破坏原来的RGB 结构,因此,要对图片进行预处理,将原图按照纵横比例缩放至416×416 的,取Min这个比例来缩放,其中img_w表示图像的宽度,img_h表示图像的高度,保证长的边缩为需要的输入尺寸416,而短边按比例缩放不会扭曲,剩下的用白色区域填充即可构造为416×416 大小,这样输入拉链图像的尺度信息在训练的过程中不会被压缩。
(2)评价指标
深度学习目标检测中常用的评价指标精确率(P%)表示经过深度学习检测出来的结果中检测正确的比率,召回率(R%)表示经过深度学习检测出来的结果中被检测为正确的比率,可以表示为:
其中,TP 为检测到的正样本的数量,FP 为检测到的负样本的数量,FP 为负样本检测为正样本的数量,FP 为正样本检测为负样本的数量,AP(Average Preci⁃sion)Precision-recall 曲线在查准率对召回率的积分表示,mAP(mean Average Precision)表示多类物体的平均AP 值,能更好地代表模型对目标物体地检测性能。
(3)性能对比
通过YOLOv3 传统的特征提取网络,和分别以MobileNet 三种不同的版本进行缺陷检测的对比实验,得到实验结果如表2 所示。
表2 YOLOv3 不同网络结构性能对比
相对于YOLOv3 传统的特征提取网络DarkNet53、MobileNetV1 采用了深度可分离卷积的操作,大大地减少了网络模型的计算量,但是mAP 的维持情况比较稳定。而MobileNetV2 模型中使用反向残差结构,利用1×1 卷积将feature map 恢复到了高维空间,虽然丰富了特征,但是却带来了额外的计算开销和延迟,因此,MobileNetV2 相对于V1 来说增加了网络的计算量。而MobileNetV3 在保留高维特征的前提下通过将平均池化层前的层移除并用1×1 卷积来计算特征图的方式来减少延时,并通过选择不同的激活函数和较少卷积核的个数的方式降低了模型的冗余,在实现的过程中将模型自动搜索方法和新颖架构设计有机结合了起来,在精度和速度上进行了很好的平衡,更适合在移动端CPU 运行,因此MobileNetV3 在实现mAP 提高的基础上,保证了模型复杂度的降低,实现了在计算资源紧张的设备上对计算资源的高效利用。
表3 不同的网络模型的性能对比
SSD 算法使用卷积层组成的模块来提取不同尺度的特征,融合后来进行类别和目标框的预测,YOLOv3因为引入了特征金字塔预测结构,同时YOLOv3 的检测层由三级的feature map 融合,而SSD 算法则是简单地拼接尺度向量,因此,YOLOv3 相对于SSD 可以取得更高的mAP,同时YOLOv3 在拉链的缺陷进入网格内时,才进行的预测,因此可以取得26.8 frame/s 的速度,完全可以满足检测过程中实时性的要求。
部分检测结果如图。
图9 拉链及部分拉链缺陷检测结果
打开客户端软件程序,相机客户端的内置算法便可以对相机接收到的图片进行实时检测,并能够将检测的结果在系统中进行显示,同时缺陷的信息,缺陷的类别、置信度、坐标,也同样会显示出来,当检测到有缺陷的拉链时,可以暂停检测操作,同时将检测的图像进行保存。缺陷检测系统的主界面如图10 所示。
图10 拉链缺陷检测系统主界面
基于目前拉链缺陷检测行业的发展现状,本文提出了一种基于轻量级YOLOv3 网络的拉链缺陷检测方法。以MobileNetV3 为基础网络提取深度特征,利用YOLOv3 架构检测拉链及缺陷的位置,和传统的机器视觉的方法比,该算法不仅保证了较高的精确度和实时检测的速度,而且能够实现端到端的检测,更便捷,更智能,也更加容易应用到生产场景中,除此之外在算法基础上设计开发了拉链缺陷检测的硬件系统和软件系统,并成功地在树莓派这种计算资源紧张的设备上运行,让拉链检测设备的小型化、便捷化、可移动化成为可能。