陈 康,朱 威,2,任振峰,郑雅羽,2
1(浙江工业大学 信息工程学院,杭州 310023)2(浙江省嵌入式系统联合重点实验室,杭州 310023)
国际纺织行业的竞争日趋激烈,布匹质量的优劣程度对纺织生产的效益影响巨大[1],纺织企业面临着高质量标准和高人力成本的巨大压力.中国是世界上规模最大的纺织品生产国、消费国和出口国,是纺织产业链最完整、门类最齐全的国家,具有迈进世界纺织强国阵营的扎实基础.但目前我国绝大部分纺织企业的布匹疵点检测都依然停留在传统的人工检测阶段.由于工人在长时间检查之后会出现视觉疲劳,导致疵点检测在精度、一致性、效率等方面出现严重下滑,一位熟练的工人漏检率也在30%以上,检测速度仅5-10m/min,因此使用疵点自动检测技术就成为了提高布匹质量的有效方法和必然趋势[2].
现有的布匹瑕疵检测方法主要分为:基于结构分析、频谱分析、基于模型分析、学习分析等几大类[3].KarleKar等人[4]提出了一种结合小波变换和形态学的算法,通过检测布匹纹理来提取瑕疵信息,获得较好的成果.邓超等人[5]利用Sobel算子的方向性,提出一种基于边缘检测的快速检测算法,利用形态学处理和离散余弦变换自动检测布匹疵点.Jia等人[6]通过形态学成分分析对图案重复的网格花纹布匹自动分割,再通过Gabor滤波器检测疵点信息.Li等人[7]将织物图像分割成大小相同的碎块,利用疵点和无疵点样本对基于Fisher准则叠置的去噪自编码器进行训练,计算了重建图像与缺陷图像之间的残差,并通过阈值法对缺陷进行定位,该方法在周期性花纹织物和复杂提花经编织物的疵点检测中具有较好效果.
自从2012年深度神经网络AlexNet[8]大获成功之后,接连涌现了诸如VGG-NET[9]、Inception[10]、ResNet[11]等优秀的分类网络.使用深度卷积神经网络(CNN)正促使机器视觉研究进入了一个新的阶段.目前的卷积神经网络目标检测与识别方法主要有:1)基于区域建议的目标检测与识别方法,具有代表性的有R-CNN[12]、Fast R-CNN[13]、Faster R-CNN[14],表现为进一步精度提升、加速、端到端及更实用化,覆盖了从分类到检测、分割、定位各个领域;2)基于回归的目标检测与识别算法,具有代表性的有YOLO[15]、SSD[16].近年来,随着CNN的快速发展,已经成为计算机视觉领域中的主流研究方法[17].相比于传统的瑕疵检测方法,CNN不需要人工提取瑕疵特征,具有图像位移、缩放、和扭曲不变性,表现出极强的学习能力[18],具有应用到布匹疵点检测的潜力.
针对现有的布匹图像中背景纹理复杂、瑕疵类别多、瑕疵识别效率不高、识别准确率低等问题,本文提出了一种基于深度残差网络的布匹疵点检测方法,设计了视觉检测装置,使用线阵相机采集布匹图像,在Faster R-CNN的基础上使用深度残差网络提取特征信息,并增加预测锚点框,实现疵点的定位与分类.
布匹疵点视觉检测装置由三部分组成:光源系统、成像与处理系统、布匹传动系统,结构如图1所示.
在机器视觉检测系统中,光源是必不可少的部分.为了获得疵点区域与正常纹理区域的高品质图像,选择合适的光源照明方案是重要的保证.光源的选取应该从光源的照明亮度、均匀性、发热程度、使用寿命等方面进行考虑.常用的光源主要包括日光灯管、卤素光源和LED光源等.LED灯具有体积小、能耗小、热量低、亮度高、寿命长、照射均匀等优良特点,能清晰反映出布匹表面的纹理特征和疵点特征,因此本文在光源类型的选择上使用LED线性光源.如图1所示,将LED线性光源斜射照明在布匹表面,并且照射方向与布匹传送方向相反,调节照射角度,使投射至相机靶面为最大光照亮度,有利于突出疵点的边缘细节,是理想的照明方式.由于布匹的颜色有深有浅,不同颜色背景的布匹对光的反射能力不同,因此在光源的控制上还需实现光源光强可调节.计算机与光源控制器使用RS232串口通信,计算机输出需要的光强,光源控制器通过改变输入电压来调整光强.
布匹在实时在线检测时,传送速度较高,达到30m/min甚至80m/min以上,布匹图像需要较高的分辨率和清晰度,至少需要160dpi才能获得较为清晰的纹理和疵点,若使用面阵相机则难以满足上述需求,而且使用面阵相机采集图像时会造成前后图像有部分交叠,导致已检测过的部分布匹重复处理,浪费计算资源,因此本文选用2K的线阵相机作为布匹成像设备.由于在检测过程中相机的检测高度固定不变,因此选用35mm的定焦镜头配合相机采集布匹图像.计算机可以通过PCIE接口拓展出多个GigE网络接口,对于多相机拓展比较方便,因此相机的数据接口上也选用GigE网络接口,相机拍摄的布匹图像数据通过网口发送至计算机.在本文检测装置中,用于实验的布匹的宽度为60cm,如图2所示,使用两个2K线阵相机就能完成对整卷布匹的图像采集.
在布匹传动系统的设计上,使用如图2所示带有压辊的传送带装置,布匹在经过线阵相机之前,通过张力辊让布匹保持一定张力,压辊和传送带上的专用胶水保证布匹平整,使线阵相机可以拍摄到高质量的、平整的布匹图像.传送带的传动由无级变速电机带动,可以使传动期间的速度稳定,可以保证线阵相机所采集的图像质量一致性.
图2 布匹传动系统实物图Fig.2 Image of fabric transmission system
不同类型的布匹对光的反射率不同,在相同光强情况下浅色布匹会比深色布匹的反射效果好,因此在布匹检测开始之前,需要调整光源的光照强度使采集到的图像具有较好的成像效果,有利于下一步的疵点检测.本文中光强调节使用如式(1)所示的方法,统计整幅图像的平均灰度值G,其范围为[0,255],α是权重系数,β是偏置系数.在检测过程中,权重值保持不变,偏置值根据图像灰度范围选取,通过计算得到光强L,其值范围为[0,100],计算机通过串口与光源控制器保持通信,将需要的光强发送至光源控制器,光源控制器调整至设定的光强.如图3所示,在未调整光强之前整体图像偏暗,细节呈现也较差,在调整光强之后图像的整体亮度提升,布匹细节纹理也更为清晰,有利于后续的检测分析.
图3 调节光强前后图像对比Fig.3 Comparison of adjusting the light intensity
L=α×G+β
(1)
噪声信号有其不可期望性和无规律性,通常在布匹图像上随机分布.均值滤波器是一种线性滤波器,使用滤波器窗口内的像素平均灰度值代替图像中窗口中心处的灰度值,这样可以降低图像中的尖锐噪声[19].为了在平滑图像的同时尽量减少均值滤波器对图像造成的模糊,本文使用式(2)所示的3×3加权均值滤波模板对原始图像进行滤波.如图4所示,从左到右依次为原始图像、均值滤波图像、中值滤波图像以及本文中所使用的加权平均滤波图像,通过几幅图像的对比可以看出使用加权平均滤波不仅压制了图像中的尖锐噪声还较好保留了布匹图像的纹理信息,具有较好的滤波效果.
(2)
图4 各种滤波方法滤波效果对比图Fig.4 Comparison diagram of various filtering methods
布匹疵点图像目前还没有统一标准的公开数据集,因此本文在自主设计的检测装置上,采用检测中使用的线阵相机手动拍摄的方式采集人工检测后含疵点的全棉、亚麻、真丝、化纤布匹图像,获得了520张疵点图片.本文进一步参照文献[5]将相近的一些疵点类型进行归并,最终将疵点划分为重经重纬、断经断纬、筘痕、斑点、破洞、折痕、渍疵7个大类,涵盖纺织业中常见的瑕点类型,如图5所示.
图5 7类疵点图片Fig.5 Images of seven classes of defects
为了进一步增加疵点样本量,本文方法采用如图6所示的图像翻转、图像缩放、图像融合等方式扩充数据集实现数据增强,将布匹疵点数据集扩充至2080张.图像融合如式(3)所示,ImageM为融合后的图像,Image1和Image2为两张分辨率相同的布匹疵点图像;α为Image1所占的权重系数,其取值范围为[0,1],β为Image2所占的权重系数,其取值范围为[0,1],且要求α+β=1,在本文中α取值为0.5,β取值为0.5;图像融合的形式包含类间组合以及类内组合.
图6 布匹图像数据增强Fig.6 Fabric image data enhancement
(3)
本文以Faster R-CNN架构为基础设计布匹疵点检测方法.Faster R-CNN引入了“注意”机制-区域生成网络,使得对于目标检测任务形成一个统一的网络框架.布匹疵点形式类别多样,布匹种类、颜色丰富,而且布匹本身的纹理信息会带来检测干扰,依靠传统方法难以同时处理好这几点,而通过Faster R-CNN能够实现端到端的布匹疵点检测任务,并且具有较好的泛化能力,适用性比传统方法会更强.
Faster R-CNN由特征提取网络和区域生成网络组成,原始的Faster R-CNN中的特征提取网络为ZF-Net或者VGG-Net,在top-5上的分类错误率分别为11.2%和7.3%,而残差网络(ResNet)在top-5上达到了惊人的3.57%[11],相较而言有了较大的提升,并且残差网络能学习到浅层信息,对尺度较小的疵点具有更强的特征提取能力.为了提升疵点检测效果,本文方法以深度残差网络ResNet为特征提取网络改进Faster R-CNN.
4.1.1 残差网络
深度卷积神经网络的深度对最后的分类和识别效果有很大的影响,因此常规的设计思路就是把网络设计的越深越好,但事实却并不是如此.常规的网络堆叠在一定阶段之后随着网络的加深,效果会越来越差,在文献[11]中指出一个56层网络的性能却不如20层的性能好,其中主要的原因就是随着网络层数的加深,梯度消失的现象越来越明显,网络的训练效果随之下降.但是浅层网络又无法明显提升网络的识别效果,因此如何在加深网络下又解决梯度消失的问题是提升性能的关键.当网络退化时,浅层网络能够达到比深层网络更好的训练效果,但如果把低层的特征传到高层,那么效果应该至少不比浅层网络差.基于这种使用直接映射来连接网络不同层的思想,ResNet应运而生.
图7 非瓶颈残差模块与瓶颈残差模块结构图Fig.7 Schematic diagram of non-bottleneckresidual module and bottleneck residual module
如图7所示,残差模块除了正常的卷积层输出外,还有一个分支把输入直接连到输出上,该输出和卷积的输出做算术相加得到最终的输出,如式(4)所示,x是所示结构的输入,F(x)是卷积分支的输出,H(x)是整个结构的输出.残差结构人为制造了恒等映射,让整个结构朝着恒等映射的方向收敛,确保最终的错误率不会因为深度的变大而越来越差.
H(x)=F(x)+x
(4)
若网络层数较多,则靠近网络输出端的维度就会很大,若使用图7左侧结构,会加重计算负担,对于较深的网络使用图7右侧的瓶颈残差模块来减少计算量,先用一个1×1卷积进行降维,然后3×3卷积,从而令3×3的卷积可以在相对较低维度的输入上进行,以达到提高计算效率的目的,最后用1×1升维恢复原有的维度,整体上用的参数数目:1×1×256×64+3×3×64×64 +1×1×64×256=69632.若不使用瓶颈模块就是两个3×3×256的卷积,参数数目:3×3×256×256×2=1179648,与瓶颈模块相比差了16.94倍.此外,ResNet采用全局平均池化层(GAP)替代全连接层,解决全连接层参数冗余的问题.
4.1.2 基于深度残差网络的Faster R-CNN设计
在原始Faster R-CNN中采用ZF网络或VGG16作为CNN特征提取网络,生成输入图像的特征图,用于后续的区域建议网络(Region Proposal Network,RPN)和全连接层分类输出.这两个网络存在的主要弊端:1)卷积层数较少,提取的特征没有卷积层数较多的网络有效;2)虽然卷积层较少,但参数量却很大,训练和检测时占用的资源很大,并不比残差网络少.因此,本文方法将Faster R-CNN中的特征提取网络替换为深度残差网络ResNet以获得更好的布匹特征提取能力.
图8 基于残差网络的Faster R-CNN网络模型Fig.8 Model of Faster R-CNN network based on residual network
表1 ResNet各层结构Table 1 Each layer structure of ResNet
如表1所示,残差网络根据特征通道数将卷积层分成了5个部分,不同层数的残差网络只是在各层的残差堆叠块数量有所不同,堆叠的形式都是一样的.修改后的基于ResNet的Faster R-CNN网络模型如图8所示,对于输入的布匹图像先通过ResNet网络的前4个卷积部分得到一幅由1024个通道组成特征图.由RPN网络生成布匹疵点感兴趣区域(ROI),不同大小的ROI映射到卷积特征图中,通过ROI池化层生成固定尺寸的ROI卷积特征并送入到后续的ResNet第5部分卷积层.
如图8所示,使用全局平均池化层替代原始的前两个全连接层,不仅起到减少参数数量加快网络运算的目的,而且还可以很好的减轻过拟合的发生.全局平均池化层直接使用特征图的均值表示某个类的置信图,比如有10个类,就在最后输出10个特征图,每个特征图中的所有特征值加起来求出1个平均值,得到的10个平均值就是对应类的概率或者置信度.由于全局平均池化层的参数数量为零,既起到减少参数加快计算速度、防止数据冗余的作用,又达到了避免由于全连接层参数过多带来的过拟合风险,同时也剔除了全连接层黑箱子操作的特征,直接赋予了每个通道实际的类别意义.输入全局平均池化层的为经ResNet第5部分卷积生成的7×7×2048的特征图,经过全局平均池化之后生成2048个特征映射经全连接层进一步提纯特征之后分类输出.使用ResNet第5部分卷积结合全局平均池化层仅仅使用了原始两个全连接层参数量的17%,大幅减少了资源占用,优化了运行速度.
Faster R-CNN网络模型的核心理念是端到端的设计模式,要求场景中目标区域的定位与识别同时输出,创新工作在于提出了如图9中所示的RPN网络,用于候选区域的选取与定位.而在RPN网络中,若锚点框(anchor boxes)没有正确地适配,神经网络将不会知道某些小的、大的或不规则对象的存在,也就不会有机会检测它们,因此对锚点框的调整至关重要.
图9 Faster R-CNN区域生成网络的结构Fig.9 Structure of region proposal network
在原始Faster R-CNN中,设置了两个参数用于生成锚点框,分别为ratios=[0.5,1,2]代表生成锚点框的长宽比条件和scales=[8,16,32]代表生成锚点框的面积条件.原始图像在经过conv layers后变成原来1/16,那么scales中的尺寸为8×8、16×16、32×32分别对应原图的锚点框大小为像素面积为(16×8)×(16×8)= 128×128、(16×16)×(16×16)= 256×256、(16×32)×(16×32)= 512×512的区域,每个大小的区域按照ratios中的1∶2、1∶1、2∶1进行变换,如图10右侧所示标有尺寸信息的为16×16大小的锚点框.综合所有变换,每个锚点窗口生成9个锚点框.
由于布匹疵点的尺度往往没有规律性,如果完全使用原始的9种锚点框,则不能满足多尺度疵点的检测要求.因此本文方法在原有的基础上将锚点框的种类增加到16种,使得ratios=[0.25,0.5,1,2]、scales=[4,8,16,32],每个可以窗口生成16个尺度变化得锚点框.对锚点框进行裁剪过后通过分类层计算框属于前景或者后景的得分情况,另一分支回归层计算锚点框的4个平移缩放参数,即计算回归后的边界框参数.RPN网络回归层计算回归框坐标公式为:
(5)
其中x,y,w和h表示预测框的中心坐标以及宽度和高度,xa,ya,wa和ha表示锚点框的中心坐标及其宽度和高度,x*,y*,w*和h*表示真实坐标的中心坐标及其宽度和高度,t*表示回归框中心坐标以及宽度和高度平移缩放参数的真实值,t表示回归框平移缩放参数的预测值.
主要包括硬件环境、训练优化以及评价指标等内容,并对本文所提出方法与其它神经网络方法进行对比和分析.
在深度学习框架的选择和搭建上,目前可选择的环境包括Caffe、Pytorch、TensorFlow等,考虑到TensorFlow具有良好的可视效果,以及Faster R-CNN在TensorFlow上配置方便等优点,本文方法最终选择在TensorFlow框架上实现,并选取80%的布匹数据集作为训练集,剩余的作为测试集.实验环境参数如表2所示.
表2 实验环境参数
Table 2 Parameters of experimental environment
名称参数系统Ubuntu16.04框架TensorFlow语言PythonCPUIntel i9-9900kGPUNVIDIA RTX2080tiRAM32G
在一幅布匹图像中可能含有多个疵点,因此布匹疵点的分类属于多标签分类任务.在多标签图像分类任务中,图片的标签不止一个,不能使用普通单标签分类评价标准,而是采用信息检索中的评价标准-平均准确率(mean Average Precision,mAP).
本文方法中的残差网络使用ResNet101,与其对比的神经网络模型包括YOLO-v3、原始Faster R-CNN及其ResNet50和ResNet152的改进版本、以及FPN[20]的ResNet50版本.在相同的80000次迭代下,各种方法的实验结果如表3所示.从表中可以得出,YOLO-v3对于布匹疵点各类别的分类效果差别很大,其中对断经断纬的检测效果较好能达到0.8453,而对渍疵和破洞的检测效果较差,分别只有0.0284和0.0716,使得其mAP仅有0.4332.特征提取网络为VGG-16的原始Faster R-CNN的mAP达到0.7329.布匹的工业检测需要对各个疵点类别都有较好的稳定性,在这方面的表现上看Faster R-CNN更稳定,在布匹疵点检测上有较好的效果.在使用残差网络替代Faster R-CNN中原始特征提取网络VGG-16之后,Faster R-CNN改进后的布匹疵点检测精度有了大幅度的提升,使用ResNet101改进之后的mAP达到了0.8549,使用ResNet152改进之后的mAP达到了0.9190,而使用ResNet50作为特征提取网络的FPN的mAP仅为0.8391,因此改进后的Faster R-CNN有较大的提升,尤其是对于重经重纬和斑点瑕疵,在使用层数较多残差网络ResNet101和ResNet152后,相较于原始的VGG-16实现了0.2以上的mAP提升.本文方法在RPN网络中结合更多类型的锚点框之后,基于ResNet101的Faster R-CNN性能进一步得到提升,在断经断纬、折痕上有了将近0.1的提升,而在渍疵上达到了0.35以上的提升,在测试集上达到了1.0.本文方法改进锚点框后的网络对于多种尺度的疵点检测以及小目标检测更加精准,mAP达到了0.9563,改进前后检测效果对比如图10所示.本文方法在各类疵点上的检测效果如图11所示.
表3 分类性能对比(AP)
Table 3 Classification performance comparison(AP)
疵点类型YOLO-v3FPN-ResNet50Faster R-CNNVGG16Faster R-CNNResNet50本文Faster R-CNNResNet101Faster R-CNNResNet152本文Faster R-CNNResNet101-moreanchors重经重纬0.63110.88850.69150.61680.90910.90910.9072斑点0.69660.75950.58020.63740.88200.82080.9057破洞0.07160.88480.81821.00001.00001.00001.0000断经断纬0.84530.90160.72600.74480.86230.90911.0000折痕0.07160.86950.68330.73980.69930.88510.8809渍疵0.02840.82930.63120.76820.64010.90911.0000筘痕0.17360.74051.00001.00000.99171.00001.0000mAP0.43320.83910.73290.78670.85490.91900.9563
为了进一步评估本文方法和其它网络的性能,表4给出了各网络方法在检测640×480大小的布匹图像的平均时间.从表4的对比可以看出,虽然使用残差网络会增加一些检测耗时,但在30m/min的检测速度下每个线阵相机每秒采集5幅图像,同时使用两个线阵相机的情况下,保证每幅图像在100ms内的检测耗时就可以实现布匹实时检测,经本文改进后的Faster R-CNN平均检测用时为76ms,能够达到实时检测的目的.
图11 布匹疵点检测结果Fig.11 Fabric defect detection results
表4 对一幅分辨率为640×480大小的布匹图像平均检测用时(ms)Table 4 Average detection time for detecting a fabric image with a resolution of 640×480(ms)
学习率(Learning rate)作为深度学习中的重要超参,其决定着目标函数能收敛到局部最小值以及何时收敛到最小值.当学习率设置的过小时,收敛过程将变得十分缓慢;当学习率设置的过大时,梯度可能会在最小值附近来回震荡,甚至可能无法收敛.若固定学习率,则当到达收敛状态时,会在最优值附近一个较大的区域内摆动;而当随着迭代轮次的增加而减小学习率,会使得收敛时,在最优值附近一个更小的区域内摆动.因此,选择一个合适的学习率,对于模型的训练将至关重要.本文方法在训练初始设置学习率为0.001,使模型能快速收敛,在训练第二阶段迭代次数在40000~60000时降低学习率到0.0001,之后将学习率降至0.00001使目标函数能稳定收敛至局部最小值.从表5可以看出,通过变化学习率训练,检测效果进一步得到提升,mAP达到了0.9664,尤其在重经重纬上的提升明显,在实验的测试集中表现较好,提升了0.09以上,mAP值达到了1.0.不过本文方法对于斑点和折痕还有欠缺,仅有0.88左右,未能达到0.95以上,还有待提高.
表5 变化学习率的Faster R-CNN
ResNet101-moreanchors检测效果(AP)
Table 5 Testing result of changing learning rate Faster
R-CNN ResNet101-moreanchors
疵点类型准确率重经重纬1.0000斑点0.8820破洞1.0000断经断纬1.0000折痕0.8827渍疵1.0000筘痕1.0000mAP0.9664
随着卷积神经网络等深度学习算法的快速兴起,布匹疵点检测领域进入了人工智能的新阶段.本文采用深度残差网络提取布匹图像特征,并结合 Faster R-CNN目标定位框架实现疵点的提取和分类,平均检测准确率达到96%,布匹检测速度达到30m/min以上,显著超越了人工的检测精度以及检测速度.本文方法是对2K分辨率相机下拍摄的图像进行检测,对于更高分辨率下的相机,检测速度尚不能满足,需要对检测方法继续优化,提升检测速度.此外,目前的布匹疵点检测研究主要集中在纯色布匹,本文方法还不适用于含有复杂图案的印花布匹的疵点检测.在后续的研究中将会针对印花布匹的特征,精确局部化疵点区域,分析疵点类别特性,实现更多种类疵点的检测.