邓 景,李成海,丁兆栋,杜光辉,陆 可
(安徽工业大学管理科学与工程学院,马鞍山 243000)
中国作为全球最大的纺织品生产、出口国,纺织业已经成为我国一项重要的经济型支柱产业。受限于技术、成本等多方因素,纺织品生产过程中产生瑕疵是不可避免的。生产过程中的布匹瑕疵会使布匹的价格降低45%~65%[1]。因此,现代化的纺织工厂通常会安排一定数量的员工对纺织设备与纺织产品进行定期、定点的监测。然而,人工检验存在错检、漏检、检测准确率随时间下降和检测标准不统一等问题,同时人工检验的成本较高,不利于工厂的精益生产。
布匹瑕疵检测作为目标检测问题的一种,许多研究人员提出了自动化的布匹瑕疵检测方法,来代替人工检验[2]。传统的布匹瑕疵检测算法根据类型分为特征统计法、滤波法、图像切割法和数据结构法等。但这几类方法各自存在不抗噪点、计算量较大、泛化、迁移能力较差等问题。随着硬件水平的提高,深度学习逐渐进入研究人员的视野,基于深度学习的目标检测技术,也逐渐应用于各个行业的检测领域。
深度学习相较于传统的目标检测算法,其优势在于可以自动提取目标图像中的特征信息。从最初的R‑CNN[3]、OverFeat[4]一出现便占据了目标检测的主流地位,到后来的Fast RCNN[5]、Faster RCNN[6]进一步提升了检测速度与精度;之后,SSD[7]以及现在的YOLO 系列实现了两阶段到单阶段的革新。与两阶段算法相比,单阶段算法不需要区域建议阶段,可以生成目标的真实坐标和类别概率,以获得最终检测结果。因此,单阶段算法通常具有更快的速度。YOLO系列是2015 年提出的算法,此算法的最大优势在于不需要提前筛选候选区域,而是直接检测整个图片,获取某个类别的置信度与位置信息,所以检测速度更快。在过去几年中,研究人员提出了一些YOLO 的后续版本,如YOLOv2、YOLOv3、YOLOv4。而在2020 年被提出的YO‑LOv5,其在模型大小、检测速度与精度上都有了较大的优化。由此,本文提出了基于YOLOv5算法的布匹瑕疵检测系统。
本文的贡献如下:
(1)将YOLOv5 算法应用于布匹瑕疵检测领域,其检测速度与准确度均满足实际工业生产需要。
(2)提供了一套来自实际工业生产流水线的布匹瑕疵数据集,为布匹瑕疵研究领域提供了一些数据支持。
为了解决自动化布匹瑕疵检测的问题,研究人员提出了许多系统和算法用于解决自动化布匹瑕疵检测问题。Tong 等[8]利用复合差分进化优化了几个Gabor滤波器,成功地从布匹图像中分割出瑕疵。Mak等[9]还通过遗传算法优化了Gabor 滤波器。然而,优化的过滤器仅适用于某些类型的布匹。Kumar 等[10]提出了具有不同尺度和方向的Gabor 滤波器组,Gabor 滤波器组覆盖多分辨率,可以通过融合Gabor滤波的输出来检测缺陷的特征。尽管Gabor滤波器组可以处理不同类型的布匹,但简单地融合滤波器输出可能会加剧正常布匹图像中的噪声。传统目标检测算法尽管取得了一定的成果,但仍有相当的优化空间。随着深度学习的广泛应用,研究人员开始尝试利用深度学习算法解决布匹瑕疵的检测问题。
目前主流的布匹瑕疵检测所采用的深度学习算法均为使用卷积神经网络提取特征并分类,例如,文献[11]将传统目标检测算法中的图像增强技术与卷积神经网络算法相结合,对图像样本进行图像增强后进行模型训练,实现了对部分类型布匹瑕疵的有效检测,但输出的样本类型较为有限;文献[12]提出了基于改进的CNN 的素色布匹瑕疵检测算法,通过设计浅层的卷积神经网络结构,降低了网络的运算规模,同时采用了双模型的训练方式,提高了模型的训练效果,在单色布匹瑕疵分类方面具有良好的性能。但仍然存在对复杂瑕疵样本不敏感的问题。因此,本文将重点关注深度学习中的YOLOv5算法。
文献[13]介绍了YOLO 在目标检测场景中的应用。YOLO定义为单个神经网络,可以预测多个锚框和锚框的类别概率。与其他传统深度学习算法,如Faster R‑CNN(regions with CNN)[14]相比,其背景错误不足一半。当然,也有一些缺点:第一,它虽然可以更快地检测图像,但缺乏精度;第二,模型从给定的数据中学习预测边界框,因此,当一般图像或具有不同纵横比的图像或图像的配置改变时,预测将变得困难。
为了克服如本地化中的错误分析、相对较低的召回率等问题,文献[15]提出了另一个模型—YOLO9000(YOLOv2),引入了批量归一化、带锚框的高分辨率卷积、维度聚类、直接位置预测、多尺度训练和细粒度特征,这使YOLOv2相比于YOLO 性能更加优异。文献[16]提出了另一个优于YOLOv2 的YOLO 模型。与传统方法相比,YOLOv3 的精度是传统网络的三倍。文献[17]提出了其后的版本,这个新版本提高了目标检测的速度,还将YOLOv3平均精度和每秒帧数分别提高10%和12%。作者表示,YOLOv4适用于单GPU 训练,这是通过引入新的数据增强方法、优化超参数和遗传算法实现的。文献[18]采用Darknet53+CSP 作为主干网络的YOLOv4 模型,提升了模型对瑕疵图像的学习能力,在Neck 层采用SPP 模块和FPN+PAN 结构,进一步提取深层网络信息。该方法对布匹瑕疵的检测准确率和检测速度均较好,与其他同类深度学习算法相比体现出了一定的优势,但仍然存在网络模型较大等问题。在YOLOv4出版后的几个月内,Ultralytics LLC团队推出了YOLOv5[19]。
在将传统的目标检测算法应用到工业场景的过程中,由于其参数密度大、网络模型复杂、难以嵌入低配设备等问题,导致在应用过程中因对硬件性能要求过高,成本过大而无法投入实际生产。为了解决以上问题,首先在作业现场采集了多种复杂场景的实际应用数据,将这些数据输入模型进行学习以适应作业现场环境的复杂多样性。其次,为了解决现场硬件配置的限制导致的大规模目标检测算法难以嵌入的问题,本文采用了YOLOv5算法。由于其轻量级的网络结构可以部署在配置相对较低的设备上,同时YOLOv5可以保持相对较高的准确度。实验结果表明,YOLOv5算法在适应不同复杂度场景的情况下,鲁棒性和准确度均显著优异。
YOLO目标检测算法的核心在于小尺寸模型与快速计算。YOLO的结构原理是将全局图像作为神经网络的输入,最终在输出层直接输出回归目标框的类别和位置信息[20]。值得指出的是,YOLO 具有很强的泛化能力,因为YOLO 可以研究相当广义的特征,以转移到其他文件[21]。此外,YOLO 在训练和测试过程中使用全局图像,可以对全局信息进行编码,并减少检查背景作为目标的错误。本文使用YOLOv5的深度学习方法检测毛巾中的布匹瑕疵,并开发了基于YOLOv5的自动布匹瑕疵检测系统来检测毛巾瑕疵。
YOLOv5 是在之前版本的YOLO 基础上形成的。在保持运行速度的前提下,YOLOv5不仅获得了更好的预测精度,同时对小目标的检测能力更强[22]。因此,它可以用于工业缺陷的实时检测。而且YOLOv5的权重文件,其大小比上一代的YOLOv4小90%[23]。YOLOv5 结合CNN,利用特征金字塔和非最大抑制算法预测多标签的边界和位置。边界盒由独立的逻辑回归分类器进行分类,而不是软最大值分类[24]。在检测布匹瑕疵的情况下,准确性和效率非常重要,YOLOv5 架构有助于提高布匹瑕疵的效果。该架构由四种不同的模型组成,如YOLOv5s、YOLOv5m、YOLOv5l和YOLOv5。四种架构的主要区别在于特征提取模块和网络的卷积核;另一个差异是架构,模型的大小和模型参数的数量是不同的。例如,本文使用YOLOv5s,则其模型文件的大小仅为13.7 MB。
在本节中,我们将介绍模型的训练和测试过程。模型的训练和测试流程如图1所示。
图1 模型的训练和测试流程图
2.2.1 自建数据集与数据标注
本项目落地于江苏省某纺织企业,数据的采集全部取自真实工厂的流水线上,图2是采集的数据集中的常见瑕疵。首先,选用2D 单目彩色相机以及适合现场条件的光源组成CCD 组,对生产线上的布匹样本进行大量采集。然而,当前的数据集数量过于庞大且种类繁多,并不适合直接进行人工数据标注,需要对数据集中的数据进行筛选和聚类预处理。预处理完成后,使用LabelImg 的数据标注工具进行人工数据标注[25‑26]。对处理完毕的数据进行成功标注后,输出文本文件和类文件。为了提高速度和准确性,我们对毛巾的正反面分别建立了模型,只将其分为两类:OK和NG。文本文件包含5个十进制数字,第一个数字表示边界框的类别,第二个是中心x,然后是中心y,最后是宽度和高度。中心x和中心y被描述为边界框的中心点[27]。通过将数字除以图像的宽度和高度,来对数字进行归一化,使其值介于0 和1 之间。文本文件中的行数取决于检测到的对象数。标注的标签用于训练和测试数据集。表1显示了每个类别的训练和测试拍摄的图像数量。表2显示本文项目的类,即类文件。
图2 数据集中的瑕疵
表1 训练与测试样本数
表2 类文件名
2.2.2 使用YOLOv5训练模型
在使用YOLOv5训练模型之前,首先要满足训练YOLOv5 模型的条件,表3 为本项目所使用的硬件配置条件。
表3 硬件配置表
然后配置YOLOv5 环境、数据和目录结构,重点是设置YAML配置文件。训练YOLOv5模型需要两个YAML 文件。第一个YAML 指出测试数据的位置、训练数据的位置和类的数量,即检测对象的类型与该类型所对应的名称;第二个YAML 文件包括锚框、参数、YOLOv5 主干和YOLOv5 头部。为了训练YOLOv5 模型,需要执行train.py 命令。此时,可以指定超参数,如输出图像大小、epoch 数和batch 大小。完成训练过程后,YOLOv5的权重文件将存储在子文件夹中。可以通过使用测试的detect.py 命令来对训练完毕模型进行测试。图3所示为自测试数据集的测试结果。
图3 测试集结果
在目标检测领域,对训练模型的精确度(P)、召回率(R)和平均精度(mAP)进行了评估[28]。作为性能和可靠性的通用规范,本文也使用上述评估指标来评估缺陷检测模型的性能。图4所示为mAP、精确度和召回率。
图4 mAP曲线
TP=正确识别的毛巾OK 和NG 部分的实例数。
FP=毛巾OK和NG部分的错误识别实例数。
FN=未识别的OK和NG部件的数量。
精确度(P)是检测到的正确对象数量与检测到的对象数量之和之间的比率,是检测模型精确度的度量。其计算公式如下:
召回率是检测到的正确对象的数量与手动标记的真实对象的数量之和之间的比率,并且是检测模型的整个错误率的度量。其计算公式如下:
图5 中的准确率-召回率(PR)曲线是根据相应的准确率和召回率绘制而成。平均准确度(AP)是精确召回率(PR)曲线下的面积值,通过对精确召回函数积分来获得。
图5 PR曲线
mAP是多个测试集上测试的正确目标的平均值,通过平均精度(AP)获得。mAP的计算公式如下:
探索性数据分析最好借助相关图进行处理。整个数据集的关系可以一目了然地可视化。图6显示了置信度与准确度的P曲线,图7显示了置信度与召回率的R曲线,图8 显示了置信度与F1曲线。
图6 P曲线
图7 R曲线
图8 F1曲线
对于检测算法模型来说,检测速度是衡量算法效果的一个重要指标。本文建立的布匹瑕疵检测系统是实现对目标的实时检测,在应用于实际工业场景的情况下,其检测速度为每秒10帧,已充分满足实际需求。
建立一套自动化布匹瑕疵检测系统的难点在于,除了实时检测对深度学习算法的性能有一定的要求以外,对于本系统内各部分的耦合度、鲁棒性与上下游工位之间的通讯稳定性均有一定的要求。本文设计了基于深度学习的布匹瑕疵检测系统,其物理图如图9—图11 所示。该系统由三部分组成:控制子系统、机器视觉子系统与PLC电气控制系统,实现了YOLOv5算法对布匹瑕疵的实时检测。
图9 物理左视图
图10 物理右视图
图11 物理正视图
(1)控制系统由控制计算机来担任。负责传递来自PLC 系统的工作电信号,确定物料的各个工作位点;收集的数据传输到控制计算机,由YOLOv5处理,以快速检测和定位布匹瑕疵。
(2)PLC 电气控制系统由PLC、机械吸盘和红外激光传感器组成。红外激光传感器在物料到位后受遮挡,发送电信号至PLC 传达到位信号;机械吸盘由PLC 控制拖拽物料至各个工作位点;PLC 负责接收来自传感器与控制计算机的电信号,控制机械吸盘的升降与移动。
(3)机器视觉子系统由三部分组成:图像采集、标签检测和数据处理。图像采集由双CCD摄像机完成。当机械吸盘拖拽指定编号物料至指定工作位时,上CCD 摄像机和下CCD 摄像机以不同角度同时采集物料的正反面图像。标签检测由计算机完成,将采集的多标签图像通过相机数据传输接口传输到计算机以处理和分析图像。数据处理则是通过在YOLOv5模型参数中预设的置信度阈值,结合物料的正反面处理结果,得出OK 或NG 并传回相应的电信号至PLC程序,同时在上位机中显示。
基于YOLOv5的自动布匹瑕疵检测系统的物理结构示意图如图12所示。
图12 物理结构示意图
系统在项目实施过程中,受限于诸多客观因素,导致布匹瑕疵检测效果达不到预期的目标。因此,本文针对项目过程中出现的以下问题,对系统的若干部分进行了优化。
(1)在模型训练的数据收集阶段,现场采集的毛巾样本图像种类、数量庞大,人工分类效率过低,不便于进行数据标注的工作。由此,在数据的预处理阶段,使用了聚类的算法,自动对数据进行筛选、分类和去重。大大减少了准备工作阶段的时间消耗。
(2)由于工作现场环境的客观因素影响,在图像采集过程中,CCD 摄相机时常拍入毛巾样本以外的干扰因素,例如:图像内的机械结构和光源的倒影。由此,本文对YOLOv5输出端的图像进行了预处理,根据待检测毛巾的最大尺寸设计了最大预处理尺寸的锚框。加入该限值后,消除了上述干扰因素的影响,检测效果明显提高。图13表示最大预处理大小的锚框。
图13 筛选锚框
本文提出了一种基于YOLOv5算法的自动化布匹瑕疵检测系统,并将其成功应用到实际的工业生产当中。相对于传统的人工检测,通过应用YOLOv5算法,取得了良好的检测效果,有效地降低了生产成本,显著提高了纺织行业的经济效益。由于YOLOv5的权重文件小且运行速度快,使得系统在硬件配置条件有限的前提下,仍然可以成功检测出流水线上的布匹瑕疵,已充分满足实际生产中的检测需求。
此后的工作将进一步关注更多复杂场景的布匹瑕疵,为自建数据集加入更多的复杂布匹瑕疵类型,进一步扩展模型可以检测的瑕疵类别。同时继续对现有的YOLOv5 算法进行改进,提升算法在实际应用中的效果,同时对系统可以输出的内容进行进一步的扩展,不仅仅是输出布匹的良品与瑕疵,更进一步输出瑕疵的类别与位置。