在纺织品的质量控制阶段, 织物疵点检测是其中的一个重要环节[1]. 由于织物疵点种类多, 形态变化大, 观察识别难等, 导致织物疵点智能检测是困扰行业多年的技术瓶颈. 目前大部分的纺织企业仍采用人工方法检测织物瑕疵[2], 它易受主观因素影响, 缺乏一致性; 且检测人员在强光下长时间工作对视力影响较大; 还存在人工成本较高、漏检率和误检率较高、效率不高等问题.
随着计算机视觉技术的发展提高, 自动瑕疵检测技术逐渐成为新的研究热点. 目前, 国内外对织物疵点检测算法的研究主要是针对素色织物进行的[3]. 相较于素色织物, 色织物由于颜色等特征的加入, 导致检测难度较大, 所以目前对色织物疵点检测方法的研究较少, 且检测效果都不理想[3]. 其中, 纪旋等人[4]提出结合模板校正与低秩分解的纺织品瑕疵检测方法, 解决周期性织物存在拉伸变形问题; 兰瑜洁等人[5]提出基于频域滤波和区域生长法的瑕疵区域自适应分割方法, 提高瑕疵的检测精度; 张波等人[6]提出基于结构-纹理模型与自适应数学形态学的织物瑕疵加成算法, 解决织物纹理多样性和瑕疵形状尺寸不确定性造成的检测效果差的问题.
上述方法主要使用传统图像算法, 存在检测算法设计只能针对特定场景, 泛化能力弱等问题. 随着深度学习算法的不断改进, 在泛化能力、精度等方面都超越了传统图像算法. Wang等人[7]提出了基于卷积神经网络的深度学习检测算法, 在更少先验知识的情况下, 达到快速, 精确的对织物瑕疵进行检测; Zhao等人[8]提出了基于正样本训练的缺陷检测框架, 结合GAN和自动编码进行缺陷图像重建, 解决缺陷样本或阴性样本少的情况下检测的问题; Tabernik等人[9]提出了基于语义分割的织物瑕疵区域的定位方法, 可以在少量样本的训练数据中, 达到较好的检测效果等.
但是, 基于卷积神经网络的深度学习解决方案, 还存在着两个问题: (1)实际场景中, 存在部分织物花色未在训练数据集中出现, 此类织物检测效果会有较大程度退化; (2)织物花色种类繁多, 大量无标注正常织物样本没有得到很好地利用. 基于此, 本文通过使用特征残差改进Cascade RCNN算法[10], 提高对未知花色织物的检测能力; 使用瑕疵残差增强方案, 有效利用无标注正常织物样本, 提高算法泛化能力.
1 相关工作 1.1 Cascade RCNN算法概述Cascade RCNN算法是基于Faster RCNN算法[11]的两阶段目标检测算法. Faster RCNN算法首先在第一阶段, 通过特征提取网络对图像提取特征, 使用不同比例和大小的预定义框在特征图中进行滑动窗口操作, 生成若干anchors, 再使用区域推荐网络, 将这些anchors分为前景和背景, 对前景进行回归, 得到边界框, 作为推荐区域; 第二阶段将第一阶段生成的推荐区域进行第二次分类, 细分瑕疵类别, 并进行第二次回归, 得到更加精确的边界框, 作为算法的检测结果. 由于在第一阶段使用区域推荐网络进行了前景和背景的分类, 双阶段的检测算法很好地处理了正负样本比例失衡问题, 算法的检测精度较高. Cascade RCNN算法在第二阶段, 级联3个大小递增的IOU头部, 每个头部对上一个头部得到的结果再次进行回归和分类, 使得到的边界框更加精确.
1.2 边框回归如图1所示, 候选框P为预定义的anchor, 目标框G为真实标注框, 边框回归的最终目的即将模型输出的预测框G'更加接近真实目标框G. 当候选框P与标注框G的IOU较大时, 从候选框到预测框G'的变换d(*)可以认为近似的线性变换. 定义目标框的中心
$\left\{ { \begin{split} & \mathop G\nolimits_x^{'} =\mathop P\nolimits_x + \mathop P\nolimits_w \mathop d\nolimits_x (P) \\ & \mathop G\nolimits_y^{'} =\mathop P\nolimits_y + \mathop P\nolimits_h \mathop d\nolimits_y (P) \\ & \mathop G\nolimits_w^{'} =\mathop P\nolimits_w \exp (\mathop d\nolimits_w (P)) \\ & \mathop G\nolimits_h^{'} =\mathop P\nolimits_h \exp (\mathop d\nolimits_h (P)) \\ & \mathop d\nolimits_* (P)=\mathop w\nolimits_*^T \phi (P) \end{split} } \right.$ | (1) |
其中,
Cascade RCNN训练损失函数由目标框和预测框的边框误差和分类的置信度误差加权求和得到. 损失函数如式(2)所示.
$ \begin{split} & L(\mathop y\nolimits_i ,\mathop x\nolimits_i ,\mathop G\nolimits_i^{'} ,\mathop G\nolimits_i )= \sum\nolimits_{i=1}^N {((\mathop L\nolimits_{\rm{cls}} (\mathop y\nolimits_i ,h(\mathop x\nolimits_i ) + \alpha \mathop L\nolimits_{\rm{loc}} (\mathop G\nolimits_i^{'} ,\mathop G\nolimits_i ))))} \end{split} $ | (2) |
其中, N为预测框的数量,
$ \begin{split} & \mathop L\nolimits_{{\rm{loc}}} =\sum\nolimits_{i=1}^N {SmoothL1(\mathop G\nolimits_i^{'} ,\mathop G\nolimits_i )} \\ & SmoothL1(x)=\left\{ \begin{array}{l} \mathop {0.5x}\nolimits^2 ,\left| x \right| < 1 \\ \left| x \right| - 0.5,{\rm{otherwise}} \end{array} \right. \end{split} $ | (3) |
置信度损失
$\left\{ { \begin{split} & \mathop L\nolimits_{{\rm{cls}}} (\mathop y\nolimits_i ,h(\mathop x\nolimits_i ))= \mathop y\nolimits_i \ln (h(\mathop x\nolimits_i )) + (1 - \mathop y\nolimits_i )\ln (1 - h(\mathop x\nolimits_i )) \\ & h(\mathop x\nolimits_i )=\frac{{\mathop e\nolimits^j }}{{\displaystyle\sum\nolimits_j {\mathop e\nolimits^j } }} \end{split} } \right.$ | (4) |
2 算法改进 2.1 算法整体结构
FR-Cascade RCNN算法对Cascade RCNN算法进行改进, 算法整体结构为, 首先使用共享权值的特征提取网络对模板和瑕疵图像分别提取特征, 将两个特征图相减得到特征残差图, 并增加一条支路, 对瑕疵特征图使用ROIAlign[12]将特征图缩放到7×7大小作为全局特征信息; 通过使用FPN[13]网络, 增加特征的多尺度信息, 将FPN网络的输出结果使用RPN区域推荐网络生成ROI区域, 此时将7×7大小的全局特征信息叠加到ROI区域, 通过Cascade的级联方式, 对ROI区域进行分类和回归, 得到检测结果. 算法框架如图2所示.
2.2 数据增强方法常规数据增强操作只能通过对原有瑕疵样本进行变化得到新的训练样本, 不能将瑕疵特征扩展到其他样本数据中, 无法有效利用无标注的正常样本, 存在较大的局限性. 在实际应用中, 织物花色的种类较多, 存在部分花色未在训练样本中出现, 而训练样本中存在的瑕疵可能只在一些花色中存在, 导致使用原始数据或常规数据增强得到的数据训练得到的模型泛化性能必然较差. 针对此问题, 提出一种残差增强方法, 解决瑕疵特征不能扩展到其他训练样本中的问题. 该方法通过使用瑕疵样本和模板样本逐像素相减求取瑕疵残差图, 将残差图的瑕疵区域与其他花色的正常无标注图像进行融合, 得到新的训练样本. 此数据增强方式在不破坏新花色背景特征的同时将不同瑕疵与不同花色织物相互组合, 有效的利用了正常无标注织物样本, 生成特征丰富的训练数据. 使用瑕疵残差增强后, mAP指标得到了较高的提升. 增强计算方法如式(5)所示.
$ \mathop D\nolimits_r =\mathop D\nolimits_r + (\mathop F\nolimits_r - \mathop T\nolimits_r ) $ | (5) |
式中, D为待增强织物图像, F为瑕疵的织物图像, T为F的模板图像, 下标r为瑕疵区域编号. 图像增强效果图如图3, 图4所示.
数据增强流程首先从数据集中随机选择一张织物图像, 如果织物含有瑕疵, 直接将图像输入到算法模型进行训练; 如果织物不包含瑕疵, 随机抽取瑕疵图像, 提取瑕疵区域和该织物进行瑕疵残差增强, 将生成图像输入算法模型进行训练, 算法中数据增强流程如图5所示.
2.3 特征残差
针对实际场景中, 存在未经训练的织物花色, 此类样本中存在的瑕疵通过常规的检测模型较难被检出, 提出了FR-Cascade RCNN算法, 解决此问题. FR-Cascade RCNN模型通过改进Cascade RCNN算法, 在特征提取层加入特征残差结构, 消除样本背景的干扰, 提高模型对复杂或未训练花色样本瑕疵的检出能力. FR-Cascade RCNN中特征提取网络特征输出函数如式(6)所示.
$ \mathop O\nolimits_i =\mathop D\nolimits_i - \mathop T\nolimits_i $ | (6) |
其中, O为输出特征向量, D为瑕疵特征向量, T为模板特征向量, i为特征提取网络中的第i阶段. FR-Cascade RCNN中特征提取网络结构如图6所示.
图6中, 特征提取网络采用ResNext50[14]+DCN[15]模型结构, 模型结构如表1所示.
织物瑕疵图像和模板图像经过共享权值的特征提取网络, 提取特征后, 取特征差值, 再通过FPN, 增加瑕疵特征的多尺度信息, 再通过RPN区域推荐网络, 得到ROI区域, 最后通过Cascade head, 对ROI区域进行分类和回归, 得到最终瑕疵的区域和类别.
在实际场景中需要对未知花色的图像进行检测, 容易想到消除背景干扰对检测结果会有较大帮助. 可以通过采取瑕疵图像和模板图像做差后进行检测, 但是由于瑕疵图像和模板图像并不是完全对齐, 可能存在几个像素至几十个像素之间的偏移, 所以此种方法并不能提高模型的检测能力, 反而会降低模型的检测精度. 由于卷积操作本身具备平滑局部特征的能力, 所以通过使用共享权值的特征提取网络提取特征后, 对特征差值进行检测, 在较大程度上消除了图像背景的干扰, 解决了此问题, 较大地提高了对未知花色的瑕疵检出能力.
2.4 全局上下文信息由于上一步的特征残差网络对背景特征进行了极大的过滤, 在RPN阶段, 可以更好地提取得到前景框, 但是输出的候选框失去了目标周围的上下文信息, 而在检测网络中, 目标周围特征对于目标的定位也有一定帮助, 所以网络需要一个全局特征信息去辅助局部瑕疵区域的分类和定位. 把全局特征当作一个ROI叠加到每一个候选框中去可以为局部瑕疵提供全局特征, 网络根据上下文周围信息进行更加精确的定位. 在模型中添加全局上下文信息流程图如图7所示.
由于全局特征图的维度和候选框特征图的维度不相同, 需要将全局特征图的维度使用ROIAlign的方法降低到和候选框特征图相同的维度.
3 实验环境和实验数据 3.1 数据集介绍数据集由瑕疵样本和无瑕疵样本组成, 其中瑕疵样本图片有4202张, 无瑕疵样本图片有894张, 共68种花色, 分辨率为4096×1800. 训练集由3523张瑕疵样本和572张无瑕疵样本组成, 样本总计4095张, 共63种花色; 测试集由679张瑕疵样本和321张无瑕疵样本组成, 样本总计1000张, 共68种花色, 其中, 未在训练集中出现的花色有5种, 共279张. 其中包含沾污、错花、水印、花毛、缝头、缝头印、虫粘、破洞、褶子、织疵、漏印、蜡斑、色差、网折和其他等15类瑕疵, 共约17500个瑕疵区域. 数据如表2所示.
瑕疵类别部分样本中瑕疵区域如图8所示.
将测试集分为测试集A和测试集B, 其中测试集A中不包含未知花色样本, 共400张图像, 测试集B中包含所有图像, 共679张图像(测试集B由测试集A和未知花色图像组成). 实验数据部分织物如图9所示.
3.2 实验设置与评价指标
实验基于Ubuntu 16.0.4操作系统, 使用GPU版PyTorch深度学习框架, GPU型号为Tesla T4, 显存为15 GB. 由于数据集规模不大, 模型采用经过COCO数据集预训练过的参数进行初始化, 做迁移学习. 由于图像较大, batchsize设置为1. 训练时增加了多尺度训练, 增加模型对不同尺度瑕疵的适应能力, 训练设置长边尺寸为4096, 短边尺寸为1024–1440. 由于瑕疵长宽比变化范围较大, 采用K-means方法聚类得到anchor比例为[0.04, 0.15, 0.5, 1.0, 2.0, 5.0, 25.0]. 学习率初始设置为0.001 25, 模型训练初始损失值为0.9514, 经过12轮训练, 损失值收敛到0.1941, 此时降低学习率到0.000 125, 训练到15轮, 最终损失值收敛到0.1423. 损失值和mAP收敛曲线如图10, 图11所示.
部分瑕疵检测实验效果图如图12所示.
实际环境中, 算法模型除了要有较高的瑕疵检测能力, 织物是否含有瑕疵的准确率也是一个重要指标, 故评价指标设置为score=0.8×mAP+0.2×Acc, 使用mAP[16]衡量算法的瑕疵检测能力, Acc衡量织物是否含有瑕疵的准确率. mAP和Acc权值系数可根据算法着重点进行调整.
3.3 实验结果
实验结果如表3所示, RA为瑕疵残差增强(Residual Augment), Cascade+RA指在Cascade RCNN基础上, 加入RA模块; FR为特征残差(Feature Residual), FR-Cascade指在Cascade RCNN基础上增加了FR模块; FR+RA指在FR-Cascade基础上加入RA模块; GC为全局上下文信息(Global Context), FR+RA+GC指在Cascade RCNN模块上同时加入这3个模块; A-Acc 为测试集A的 Acc 指标, B-Acc 为测试集B的 Acc 指标, 其他同理. 最终各个瑕疵在测试集B中的检测结果如表4所示.
改进后的模型实验结果如表3所示, 其中瑕疵残差增强相比于增强前, Acc和mAP指标, 都有较大的提高, 在测试集A和测试B中分别提高了5.6%和2.4%; 改进的FR-Cascade RCNN算法, 在Acc和mAP指标上都得到了较大的提高, Acc在测试集A和测试集B中分别提高了19.2%和20%, mAP分别提高了11.1%和11.8%. 在FR-Cascade RCNN基础上增加RA和GC, 得到的最终结果, 在测试集A和测试集B中, Acc分别提高了19.7%和20.5%,mAP分别提高了14.3%和15.2%. 实验结果表明, 改进后的FR-Cascade RCNN算法, 不仅对已知花色有较强的检测能力, 在未知花色中, 依然保持了较高的精度.
模型对不同瑕疵的检测结果如表4所示, 改进后的模型虽然在检测精度上得到了较高的提升, 但是部分类别由于存在大量小目标、瑕疵不明显、极端长宽比、长尾分布等情况, 检测精度还存在一些不足, 这些将是算法后序的优化方向.
4 结束语
基于织物含有模板的前提下, 通过特征残差改进的FR-Cascade RCNN算法, 降低模型对织物背景花色的敏感度, 不仅提高了对已知花色织物瑕疵的检测能力, 同时, 较大程度上解决了对未知花色织物检测困难的问题. 在此基础上, 通过对ROI区域添加全局上下信息, 提高瑕疵的定位能力, 对最终的检测结果也有一定的提升. 同时提出了瑕疵残差数据增强方案, 有效利用正常无标注样本, 使模型的泛化能力得到一定的提升. 但是, 算法对小瑕疵、不明显瑕疵等的检测上依然存在一些不足, 这将是算法后序的优化方向.
[1] |
Ngan HYT, Pang GKH, Yung NHC. Automated fabric defect detection: A review. Image and Vision Computing, 2011, 29(7): 442-458. DOI:10.1016/j.imavis.2011.02.002 |
[2] |
Kumar A. Computer vision-based fabric defect detection: A survey. IEEE Transactions on Industrial Electronics, 2008, 55(1): 348-363. DOI:10.1109/TIE.1930.896476 |
[3] |
周文明, 周建, 潘如如. 应用上下文视觉显著性的色织物疵点检测. 纺织学报, 2020, 41(8): 39-44. |
[4] |
纪旋, 梁久祯, 侯振杰, 等. 基于模板校正与低秩分解的纺织品瑕疵检测方法. 模式识别与人工智能, 2019, 32(3): 268-277. |
[5] |
兰瑜洁, 钟舜聪. 基于区域生长法的自适应图像分割的网眼织物瑕疵检测. 机电工程, 2015, 32(11): 1513-1518. |
[6] |
张波, 汤春明. 基于相对总变差模型与自适应形态学的织物瑕疵检测. 纺织学报, 2017, 38(5): 145-149, 162. |
[7] |
Wang T, Chen Y, Qiao MN, et al. A fast and robust convolutional neural network-based defect detection model in product quality control. The International Journal of Advanced Manufacturing Technology, 2018, 94(9): 3465-3471. |
[8] |
Zhao ZX, Li B, Dong R, et al. A surface defect detection method based on positive samples. Proceedings of the 15th Pacific Rim International Conference on Artificial Intelligence. Cham: Springer, 2018. 473–481.
|
[9] |
Tabernik D, Šela S, Skvarč J, et al. Segmentation-based deep-learning approach for surface-defect detection. Journal of Intelligent Manufacturing, 2020, 31(3): 759-776. DOI:10.1007/s10845-019-01476-x |
[10] |
Cai ZW, Vasconcelos N. Cascade R-CNN: Delving into high quality object detection. Proceedings of the 2018 IEEE/CVF Conference on Computer Vision and Pattern Recognition. Salt Lake City: IEEE, 2018. 6154–6162.
|
[11] |
Ren SQ, He KM, Girshick R, et al. Faster R-CNN: Towards real-time object detection with region proposal networks. Advances in Neural Information Processing Systems. Montreal: NIPS, 2015. 91–99.
|
[12] |
He KM, Gkioxari G, Dollár P, et al. Mask R-CNN. Proceedings of the IEEE International Conference on Computer Vision. Venice: IEEE, 2017. 2961–2969.
|
[13] |
Lin TY, Dollár P, Girshick R, et al. Feature pyramid networks for object detection. Proceedings of the 2017 IEEE Conference on Computer Vision and Pattern Recognition. Honolulu: IEEE, 2017. 2117–2125.
|
[14] |
Xie SN, Girshick R, Dollár P, et al. Aggregated residual transformations for deep neural networks. Proceedings of the 2017 IEEE Conference on Computer Vision and Pattern Recognition. Honolulu: IEEE, 2017. 1492–1500.
|
[15] |
Dai JF, Qi HZ, Xiong YW, et al. Deformable convolutional networks. Proceedings of the 2017 IEEE International Conference on Computer Vision. Venice: IEEE, 2017. 764–773.
|
[16] |
Everingham M, Van Gool L, Williams CKI, et al. The PASCAL Visual Object Classes (VOC) challenge. International Journal of Computer Vision, 2010, 88(2): 303-338. DOI:10.1007/s11263-009-0275-4 |