基于深度学习的布匹疵点检测方法
2021-04-29刘孔玲黄湳菥
李 宇,刘孔玲,黄湳菥
(1.武汉纺织大学 湖北省数字化纺织装备重点实验室 湖北 武汉 430200; 2.武汉纺织大学 湖北省功能纤维加工及检测工程技术研究中心 湖北 武汉 430200; 3.武汉纺织大学 电子与电气工程学院,湖北 武汉 430200)
在纺织品生产中,布匹质量成为影响纺织生产效益的重要因素。目前我国纺织行业依然使用人工视觉的方法进行检测。由于工人长时间检查后会出现视觉疲劳,导致检测精度、一致性、效率等方面大幅度降低,而且会对眼睛造成严重的伤害。因此,使用疵点自动检测技术成为提高布匹质量、减少人力成本的必然趋势[1]。
目前应用频次较高的布匹疵点检测方式分别是以结构为基础展开分析和以模型为基础展开分析,还包括以频谱为基础展开分析[2]。KarleKar等[3]提出了一种小波变换和形态学结合的方法,通过检测布匹纹理信息来提取疵点特征,获得了较好的成果;Jia等[4]通过形态学处理对图案重复的网格花纹布匹自动分割,再通过Gabor滤波器检测疵点信息;邓超等[5]提出一种基于边缘检测的方法,利用形态学处理和离散余弦变换自动检测布匹疵点。
近年来深度神经网络迅速发展,接连涌现了VGG-NET[6]、Resnet[7]、Densenet[8]等优秀的分类网络,还有Fast R-CNN[9],SSD[10],YOLOv3[11]等目标检测分类方法,使得检测精度、检测速率越来越高,并应用于各个领域。各种目标检测优化方法也运用于疵点检测,如陈康等[12]使用深度残差网络修改Fast R-CNN中的原始特征提取网络,获得了更高的疵点特征精度;曹振军等[13]使用Inception-v3模型并且优化图像处理算法, 疵点平均准确率达94%,实现了布匹疵点自动检测和准确分类。
针对目前布匹背景纹理复杂,瑕疵类别多,识别率精度低,速率慢的特点,本文提出一种基于深度学习物体检测框架You Only Look Once[14](YOLOv4)的布匹疵点检测的方法。该算法结合跨级部分(Cross Stage Partial,CSP)与Darknet53模块作为主干网络(Backbone)提取特征,空间金字塔池化(Spatial Pyramid Pooling,SPP)模块、特征金字塔网络(Feature Pyramid Networks,FPN)+路径聚合网络(Path Aggregation Network,PAN)的方式作为特征增强模块(Neck)进行深层次特征提取,最后采用3种不同尺度的预测方式作为预测层,实现高精度的检测。
1 基于YOLOv4的疵点检测方法
本文基于YOLOv4算法进行布匹疵点检测。YOLOv4的网络结构如图1所示。首先在输入端输入图像并对图像进行Mosaic数据增强:随机使用4张图像随机缩放,再随机分布进行拼接,丰富了检测数据集,特别是随机缩放增加了很多小目标疵点,让网络的鲁棒性更好;经过处理后的图像进入Backbone,其中Backbone采用CSPDarknet53网络结构,可以增强卷积神经网络(Convolutional Neural Network,CNN)对疵点图像的学习能力,使得在轻量化的同时保持准确性。为了更好地提取融合特征,在主干网络与输出层之间插入Neck层。Neck层采用SPP模块和FPN+PAN的方式进行深层特征提取,最后提取的信息输入到预测层,预测层中采用3种不同尺度进行预测。
1.1 输入端
YOLOv4有步长为2的下采样总计5次,因此网络的步幅上限是25=32。这里步幅所代表的是图像输入尺寸与图像输出尺寸的比值。所以网络相对应的输入图像尺寸必须是32的整数倍。图1中输入图像的尺寸为608×608像素。由于在疵点数据集中包含大量的小目标疵点,而且小目标检测更难,因此在输入端采用Mosaic数据增强,通过随机缩放、随机裁剪、随机排布的方式将图像进行拼接,可以丰富数据量,尤其增加了小目标的图像数量,让网络的鲁棒性更好。
图1 YOLOv4网络结构
1.2 Backbone
Backbone采用的是CSPDarknet53网络结构,如图2所示,位于0到104层。该结构是在YOLOv3使用的Darknet53模型上包含了5个CSP模块。输入疵点图像大小为608×608×3像素,首先经过一个3×3、步长为2、32层卷积核(Conv+Bn+Mish,CBM)进行卷积操作,图像大小成为608×608×32像素。接着经过5个CSPRes模块。CSPRes模块是由图1中的CSP模块和CBM模块组成。图中的1、2、4、8代表残差单元(Resunit)模块重复的次数。每个CSPRes模块首层相对应的卷积核的大小都是3×3,步长均为2,该层的作用是进行下采样操作。在第3个模块CSPRes8中54层有一个分支用于后续上采样的特征:76×76×256像素;第4个模块CSPRes8中85层有一个分支用于后续上采样的特征:38×38×512像素。最后得到19×19×1 024像素的特征图。
图2 CSPDarknet53结构图
1.3 Neck 层
Neck层位于主干网络与预测层之间,达到深层次提取融合特征的效果。Neck结构如图3所示,Neck层主要采用SPP模块、FPN+PAN的方式。SPP网络用在YOLOv4中的目的是增加网络的感受野,对应于108层到113层。实现对107层进行 5×5、9×9、13×13的最大池化,分别得到108、110和112层(109、111层为路由层)。完成池化后,将107层到112层在113层进行张量拼接,连接成一个特征图114层并通过1×1降维到512个通道。与使用k×k最大池化的方式相比较,采用SPP模块的方式,可以更有效地增大主干特征的接收范围,显著分离了最重要的上下文特征。除此之外,Neck层采用FPN+PAN的方式,对应于105到128层。FPN采用自顶向下将高层的特征信息通过上采样的方式进行传递融合,得到预测的特征图。另外,FPN层的后面还添加了一个自底向上的特征金字塔,其中包含2个PAN结构。FPN层自顶向下传达强语义特征,而特征金字塔则自底向上传达强定位特征,二者结合,从不同的主干层对不同的检测层聚合参数。
图3 Neck结构
1.4 预测层
YOLOv4依然延续YOLOv3的预测方式,实现3种尺度的预测。预测层如图4所示,分别是在32、16、8倍降采样,最终输出对应的特征图依次为19×19、38×38、76×76像素。106层和147层的特征拼接用于检测大小为19×19像素的特征图。由于32倍下采样倍数高,这里特征图的感受野比较大,因此19×19像素大小的特征图适合检测图像中尺寸比较大的对象。116层的特征图通过上采样及特征融合操作,得到126层的特征图,然后与136层进行张量拼接用于检测大小为38×38像素的特征图。这里感受野属于中等尺度,所以38×38像素适合对中等尺度进行检测。最后,126层特征图继续上采样,与54层的特征图融合,用来实现对特征图尺寸为76×76像素的待检测图的有效检测。因为8倍下采样倍数相对偏低,而且感受野也最小,所以76×76像素的尺寸非常适合对小尺寸进行检测。通过上采样操作能够使得越深的网络具有更好的特征表达效果。比如16倍降采样的过程当中,假设所选择的方式是直接通过下采样的特征来实现检测,这样无法使用深层次的信息,检测效果会不好。最后根据输出的特征图的数量和尺度的变化,使用 k-means 聚类算法来实现边界框相对应先验信息的有效获取。将3种先验框设定在所有的下采样尺度当中,可以聚类得到的先验框尺寸类型总计9种。最终的所有尺度图当中都能够获取到结果数量为N×N×[3×(4+1+3)]个。表示N×N个网格,3种尺度的锚点,边界框的4+1个值,3种类别。通过选择9个聚类均分到3种尺度上。
图4 预测层
2 实验与分析
2.1 数据集处理
布匹疵点图像目前还没有统一公开的数据集,因此,本次从网上挑选了1 000张疵点图像,包括百脚、破洞、吊经、污渍和结点5种疵点类型,并将图像裁剪成608×608像素大小。5种疵点类别如图5所示。
图5 5种疵点类别
为了进一步增加疵点数据量,本文采用如图6所示的图像平移,图像对比度增强以及图像旋转180°的方式进行数据扩增,将疵点数据集扩增到3 000张。
图6 图像扩增
2.2 实验环境及配置
目前有很多可供选择的深度学习环境,如caffe、Pytorch、Tensorflow等。本文采用具有良好可视化效果的Tensorflow框架实现疵点检测。本文实验任意选取80%疵点数据集作为训练集,剩余的数据作为测试集。实验环境参数如下表1所示。
表1 环境实验参数
2.3 实验性能对比
在一幅布匹图像中可能含有多个疵点目标,因此属于多标签图像分类任务,因此,本文采用平均准确率(Mean Average Precision,mAP)作为评判标准判定方法的优劣程度。
本文YOLOv4的检测结果将与YOLOv3、SSD以及Faster R-CNN方法在相同的50 000次迭代,学习率为0.001的情况下进行分类性能对比。各种方法的实验结果如表2所示。
表2 分类性能对比(AP)
从表2可以看出,SSD方法对于各类织物疵点的分类效果差,并且效果差别也很大,其中对百脚的检测效果在这5种疵点中是最好的,达到0.62,而对吊经和结点的检测效果差,分别只有0.23和0.34,使得mAP值只有0.52;YOLOv3比SSD方法有较好的效果,每一类疵点的准确率都提高了很多;使用Faster R-CNN方法在每类疵点上的检测上具有较好的稳定性,这一点在布匹的工业检测上是非常重要的。另外对于污渍这类疵点,mAP值达到了0.93,整体mAP值达到了0.83;使用YOLOv4方法对于每类的疵点都有较好的效果,检测污渍疵点的mAP值达到了1.00。由于吊经疵点不明显,边缘模糊,因此mAP值只有0.88。本文方法在各类疵点上的检测效果如图7所示。
图7 布匹疵点检测结果
为了进一步评估YOLOv4和其他网络的性能,表3给出了各类网络方法在检测608×608像素大小的布匹疵点图像的平均时间。
表3 分辨率为608×608像素的布匹图像平均检测用时 ms
从表3可以看出:拥有相对比较高mAP值的Faster R-CNN和YOLOv4方法,单张图像平均检测用时相差较大。YOLOv4方法检测单张图像平均用时比Faster R-CNN检测单张图像用时短了23 ms,达到了准确率高并且快速的要求。
3 结束语
由于卷积神经网络等深度学习的快速发展,布匹疵点检测领域进入了一个新阶段。YOLOv4采用Darknet53+CSP作为主干网络,可以提升CNN对疵点图像学习的能力,并且具有降低内存成本的优势;在Neck层采用SPP模块,FPN+PAN结构可以进一步提取深层网络信息,该方法对布匹疵点平均检测准确率达到了95%,单张疵点图像检测速率为33 ms,显著超越了人工的检测精度以及检测速度。此外,本次研究为纯色布匹疵点检测,今后将研究有图案的布匹疵点检测,并实现更多种类疵点的检测。