经历了新中国成立后70多年的社会主义建设, 我国的纺织业取得了飞跃的发展, 目前已经形成了种类齐全、生产布局合理、原料充足的生产局面. 但步入信息化时代, 纺织业产品质量检测仍停留在依靠人眼、经验的基础之上, 容易因工作人员操作失误、工厂设备的老化故障或环境温度的变化等原因造成漏检、检错等情况[1].
少数纺织企业能通过智能验布系统解决其瑕疵检出率低、人员成本高等问题, 但其技术仍需不断优化. 通过自动化的布匹瑕疵检测, 促使我国纺织工业迈向智能科技创新水平, 推动纺织工业行业的科技进步, 满足中国纺织工业领域的发展需求仍然任重而道远[2].
1.2 研究现状国内外学者已提出许多布匹瑕疵检测算法, 如Kandaswarmy等研究彩色纹理图像在不同光照下的特征分析技术, 选择合适特征对其进行纹理有效性图像检测[3], Shukla等提出基于DSP的视觉检测系统方法, 实时性强[4].
目前目标检测算法主要分为3种类别: (1)基于区域建议的目标检测与识别算法, 如RCNN, Fast RCNN和Faster RCNN; (2)基于回归的目标检测与识别算法, 如YOLO和SSD; (3)基于搜索的目标检测与识别算法, 如基于视觉注意的AttentionNet, 基于强化学习的算法, 其中目前最常用的目标检测算法为Faster RCNN, YOLO和SSD[5]. YOLO和SSD算法主要针对大物体, 且速度方面相对比Faster RCNN快, 但对于小物体目标检测其表现结果却不太理想.
本研究基于Faster RCNN算法开发一款纺织布匹表面瑕疵识别系统. 该系统通过采集高速相机拍摄的来自坯布、面料、服装的带有瑕疵的产品的影像数据, 完成对布匹图像上瑕疵的检测, 对布匹上的各种疵点精准检出, 并准确定位瑕疵坐标位置.
2 数据扩展 2.1 大规模学习算法的难点大多数优秀的神经网络都需要设置大量的参数, 以深度学习领域最常见的图像识别来看, 其中一种常用的特征提取模型为VGG16, 用于初步提取图像的特征值, 然后再做后续的处理, 如分类、边框提取. 要让这些优秀的神经网络模型正常工作我们通常需要大量的数据, 然而实际环境下我们并没有如此庞大的数据集[6]. 几种模型对比如表1所示.
除此之外, 数据集里各类别的数据量比例悬殊也会影响模型的训练效果. 因此在数据不均衡时, 为了获得较高的准确率, 一般需要更多且更均匀的数据.
2.2 图像数据增强克服数据量供不应求和数据类别参差不齐的一种常用的做法就是数据增强[7]. 一般神经网络在刚开始或欠训练的时候, 并不能区分出相似的数据. 将一张含有某物体的图片进行放大缩小加噪降噪的操作, 早期的网络也会认为是同一个物体. 数据增强主要有两个好处: (1)增加训练的数据量, 提高模型的泛化能力; (2)增加数据噪声量, 提高模型的鲁棒性.
3 布匹瑕疵检测与识别 3.1 目标检测与识别算法
本研究的数据集中, 缺陷区域面积占比不到1%的布匹样本超过了82% , 因此我们选择检测速度较低但对小物体较敏感的Faster RCNN网络(对比图如图1).
Faster RCNN是2016年提出的一种新型神经网络[8], 是从RCNN、Fast RCNN进一步改进而来, 其抛弃了Selective Search[9]做法直接利用RPN网络来计算候选框, 使得目标检测速度大幅度提高.
另外, 我们针对布匹瑕疵目标小的特点, 调整RPN网络的anchor大小和数量, 以及学习率等参数, 提高了检测的准确率.
3.2 Faster RCNN原理Faster RCNN主要由区域生成网络(RPN)和Fast RCNN构成(图2), 在经过基础的卷积神经网络(本实验采用VGG16)初步提取特征值后, 其中RPN主要用于生成可能存在目标的候选区域(proposal), Fast RCNN用于对候选区域内的目标进行识别并分类, 同时进行边界回归[10]调整候选区域边框的大小和位置使其更精准地标识瑕疵目标. Faster RCNN相比前代的RCNN和Fast RCNN最大的改进是将卷积结果共享与RPN和Fast RCNN网络, 在提高准确率的同时提高了检测速度.
RPN网络是一个全卷积网络, 采用一个n×n的滑动窗口在上一层共享卷积网络的输出特征图上进行滑窗选择, 对每一个点同时预测k个被称为锚(anchor)的初始候选区域. 对于一张大小为w×h的卷积特征图, 则可得到w×h×k个锚. 接着将每个点映射到一个低维向量, 用作后续的边框分类和边框回归. 边框分类中, 通过Softmax分类anchor得到对应的前景(foreground)和背景(background), 最终初步提取出foreground anchors作为目标候选区域. 而边框回归则用于回归修正出锚的边界框, 获得精确的proposals. 因此要准确分类和回归边框需要对RPN网络进行训练以得到正确的回归参数. 在训练RPN的过程中采用端到端(end to end)的方式, 损失函数通过平衡因子将分类损失和回归损失相结合. 训练好后的RPN得到的候选区域, 再在后续Fast RCNN再做进一步的检测和纠正.
Fast RCNN网络通过ROI池化后, 输出结果为固定长度的特征向量. 将特征向量经过全连接层后分别输入到Softmax分类器和边框回归网络(bounding box regression)分别获得边框区域内对应的类别和边框偏移量, 回归得到更加精确的目标检测框.
3.3 调整RPN网络RPN的输入是卷积层后的特征映射(feature maps), 通过在特征图中运用anchor机制和box regression, 单独判断和定位瑕疵位置的网络. Anchor以每一个锚点为中心生成大小不同的k个框, 致力于使目标对象能出现在某个框中.
统计显示, 本研究的数据集里瑕疵缺陷区域面积占比不到1%的布匹样本超过了82%, 因此, 针对小目标的问题, 我们通过调整Faster RCNN中的RPN网络的候选框的大小和数量来提高检测率. 以图3、图4为例, 原始的RPN网络中每个点拥有9个矩形, 共有3种形状, 长宽比大约为0.5, 1.0和2.0, scale为8, 16, 32. 在本实验中, 选择k=36, 即每个点拥有36个anchor, 针对布匹瑕疵目标小的特点, scale为4, 8, 16, 设置候选框的长宽比为0.1, 0.5, 1, 2, 5, scale为4, 8, 16. 通过移动anchor, 利用Softmax函数判断是否为瑕疵区域, 即判定positive与negative, 实现二分类, 初步提取了检测目标候选区域box. 当得到positive的区域后, 对瑕疵边框进行坐标回归运算, 获取瑕疵区域更加精准的proposals, 同时剔除太小和超出边界的proposals.
3.4 区域推荐网络(RPN)损失函数
RPN网络层负责候选窗口的分类和回归, 本文中PRN网络的损失函数为分类交叉熵损失和回归Smooth L1损失的总和, 定义如下:
$\begin{split} L(\{ {p_i}\} ,\{ {t_i}\} ) = \frac{1}{{{N_{\rm cls}}}}\sum\limits_i {{L_{\rm cls}}} ({p_i},p_i^*) + \lambda \frac{1}{{{N_{\rm reg}}}}\sum\limits_i {p_i^*{L_{\rm reg}}({t_i},t_i^*)} \end{split} $ | (1) |
分类交叉熵公式定义为:
$\frac{1}{{{N_{\rm cls}}}}\sum\limits_i {{L_{\rm cls}}({p_i},p_i^*)} $ | (2) |
RPN网络中的分类器将候选框分为前景(foreground)和背景(background), 分别标为1和0, 并在训练过程中选择256个候选框. 式(2)中,
$p_i^* = \left\{ \begin{gathered} 0,\;\;\;\;\;{\rm{Negative\;label}} \\ 1,\;\;\;\;\;{\rm{Positive\;label}} \\ \end{gathered} \right.\;\;$ | (3) |
${L_{\rm cls}}({p_i},p_i^*) = - \log[{p_i}p_i^* + (1 - {p_i})(1 - p_i^*)]$ | (4) |
回归Smooth L1公式定义为:
$\lambda \frac{1}{{{N_{\rm reg}}}}\sum\limits_i {p_i^*{L_{\rm reg}}({t_i},t_i^*)} $ | (5) |
式中,
${t_i} = {t_{xi}} + {t_{yi}} + {t_{wi}} + {t_{hi}}$ | (6) |
$t_i^* = t_{xi}^* + t_{yi}^* + t_{wi}^* + t_{hi}^*$ | (7) |
其中,
${t_x} = \frac{{x - {x_a}}}{{{w_a}}},{t_y} = \frac{{y - {y_a}}}{{{h_a}}}$ | (8) |
${t_w} = log\left(\frac{w}{{{w_a}}}\right), \; {t_h} = \log \left(\frac{h}{{{h_a}}}\right)$ | (9) |
$t_x^* = \frac{{{x^{{*}}}{{ - }}{x_a}}}{w}, \; t_y^* = \frac{{{y^*} - {y_a}}}{{{h_a}}}$ | (10) |
$t_w^* = \log \left(\frac{{{w^*}}}{{{w_a}}}\right), \; t = \log \left(\frac{{{h^*}}}{{{h_a}}}\right)$ | (11) |
${L_{\rm reg}}(t,t_i^*) = R({t_i} - t_i^*)$ | (12) |
$\begin{split} R({t_i} - t_i^*) = Smoot{h_{L1}}({t_i} - t_i^*) = \left\{ \begin{gathered} 0.5{x^2}, \; {\rm{if}} \left\| x \right\| < 1 \\ \left\| x \right\| - 0.5, \; {{ {\rm{else}}}} \\ \end{gathered} \right. \\ \end{split} $ | (13) |
本实验使用的布匹数据集取自2018年太湖新城与阿里云联合举办的“2018雪浪制造AI挑战”天池大赛. 实验中分别进行数据增强化和调整模型的参数, 采用9:1的方式随机选择训练数据集和测试数据集, 训练共迭代45000次.
4.1 实验环境与系统架构本实验的在MAC系统上进行, 采用PyCharm开发工具和MySQL数据库, 同时利用深度学习框架Tensorflow 1.14.0和Keras 2.2.4来搭建并训练模型, 布匹瑕疵检测系统前端和后台开发分别采用Bootstrap和Flask框架. 布匹瑕疵检测系统可运行在浏览器(推荐Chrome和Firefox浏览器)上, 系统的功能主要由布匹瑕疵识别和瑕疵数据分析组成. 在第三方硬件支持上, 我们利用Google Colab来对模型进行训练.
4.2 实验过程 4.2.1 数据增强本文中原始布匹数据集里共有37种瑕疵类别, 但每种类别所包含的数据量不均匀, 如图5, 甚至个别数据异常悬殊, 如边擦洞种类有12张图片, 而粗纱种类仅有2张, 总体而言正常样本与某些缺陷类的比例超过了10:1.这对后期的训练工作带来极大不便, 易对原本数据量大的瑕疵检测出来的准确率比数据量小的要大, 甚至模型只会检测出数据量大的类别, 抛弃小数据类别.
研究首先对原始图像数据进行增强, 主要方法有翻转、亮度变化、加入噪声、裁剪以及固定角度的旋转等(图6), 同时还对数据量偏小的类别偏袒, 提高类别数量的均衡度. 数据增强后, 共有4668张布匹图片数据.
4.2.2 模型训练过程和主要参数设置研究对原始的Faster RCNN网络进行调整, 对RPN网络的候选框(或称锚)进行调整. 检测过程分为5步:
(1)增强后的布匹数据为4668张图片, 实验首先根据4668张图片转化为VOC2007数据集格式, 然后按照20:1的比例划分训练集和测试集;
(2)将测试数据集放入VGG16模型的初步提取图像特征值, 该层由基础的卷积层(Conv)、激活层(ReLU)和池化层(Pooling)构成, 提取出图片的特征映射, 用于后续的RPN层和ROI层, ;
(3)用训练好的RPN网络生成候选检测框, 也就是proposal;
(4)收集VGG16网络输出的特征映射和RPN网络输出的proposals, 结合起来进一步提取出proposal feature maps, 送入后续全连接层判定目标类别;
(5)最后进行分类, 利用Softmax分类器和proposal feature maps来判断出检测框内的布匹瑕疵类别, 并再做一个回归(regression)获得更为准确的检测框位置.
训练过程如图7所示. 主要参数调整如下:
(1)总迭代次数为4.5万次;
(2)学习率为0.001;
(3)一次训练所选取的样本数(batch size)为256;
(4)候选框的尺度为4, 8, 16;
(5)候选框的长宽比(ratios)为0.1, 0.2, 0.5, 1,2, 5.
4.2.3 实验结果与分析实验对4种检测方法(如表2所示)进行对比, 4种方法分别为Fast RCNN (原始网络+原始数据)、Faster RCNN (原始网络+原始数据)、Faster RCNN (原始网络+增强数据)、Faster RCNN (调整网络参数+增强数据), 其中最后一种方法为本研究采用的方法.
对比分析4种检测方法的结果, Faster RCNN平均训练时间总体比Fast RCNN较长, 在调整网络和增强数据后更为如此, 主要由于每个点的候选框(anchor)数量和训练集的数据量增大导致, 但最终平均检测准确率显著提升, 平均每张图片的检测速度的变化幅度也在可接受范围之内, 因此这种检测方法是可行的.
本研究测试采用的设备性能偏低, 但在实际的检测环境中, 若采用性能较好的设备, 单张图片的检测速度会进一步提升, 且准确率也是较为可观.
对测试数据集进行测试得到的部分结果如图8所示. 在图中红色检测框区域代表布匹瑕疵存在的位置, 上方为对于该检测框区域目标的分类类别以及该类别的置信率. 检测结果如图8所示, 以图8(d)为例, 模型可以同时在一张图检测出3处瑕疵, 并分别标识出对应类别的置信率. 总体准确率为79.3%.
5 讨论与总结
本研究针对原始布匹数据集中各类瑕疵的数据量不均匀以及瑕疵目标小的特点, 分别对原始数据进行了增强, 并选用对小目标更为敏感的Faster RCNN网络, 并调整其中RPN网络中原始的anchors大小和数量, 提高瑕疵识别的准确率. 因此在数据处理和识别算法上有一定的创新, 与传统的使用卷积神经网络进行检测和识别有较大的不同. 另外研究基于Faster RCNN模型开发了一款基于Web技术的布匹瑕疵检测系统, 可在布匹生产线和市场等场合用于布匹质量检测, 提前感知生产上的不足和减低布匹买卖的损失. 同时该系统使用到目前较为先进的前端开发技术, 使系统在用户交互上更加智能化, 操作简单, 互动性强.
本文将增强后的数据放入Faster RCNN模型中进行训练, 通过4.5万次迭代训练, 在检测设备性能限制下, 最终使得每张布匹的检测时间保持在10 s以内, 测试准确率为79.3%.
尽管相比于其他利用Faster RCNN检测布匹瑕疵的研究中90%以上的准确率[11], 本文的准确率比较低, 但本文是基于数据量少且类别不均匀的基础上对进行数据增强, 且多数布匹瑕疵目标特征不明显, 并针对目标的特点调整Faster RCNN网络, 同时分类出37种类别, 因此在总体性能上比该研究高.
综上所述, 本研究在数据量不足、各类别的数据量不均匀和目标小的情况下, 对现有的技术进行改进并实践, 在布匹生产质量检测领域中做出了实质性的尝试.
[1] |
田宸玮, 王雪纯, 杨嘉能, 等. 织物瑕疵检测方法研究进展. 计算机工程与应用, 2020, 56(12): 8-18. DOI:10.3778/j.issn.1002-8331.2002-0169 |
[2] |
陈健. 中国纺织工业联合会会长孙瑞哲: 科创板是纺织行业“及时雨”, 多细分领域企业有潜力. 纺织服装周刊, 2019(11): 8. DOI:10.3969/j.issn.1674-196X.2019.11.003 |
[3] |
Kandaswamy U, Adjeroh DA, Schuckers S, et al. Robust color texture features under varying illumination conditions. IEEE Transactions on Systems, Man, and Cybernetics, Part B (Cybernetics), 2012, 42(1): 58-68. DOI:10.1109/TSMCB.2011.2162400 |
[4] |
Shukla D, Ghorai SK. Development of a low cost real time strain monitoring system using DSP technique. Proceedings of 2011 International Conference on Multimedia, Signal Processing and Communication Technologies. Aligarh, India. 2011.1–4.
|
[5] |
曹燕, 李欢, 王天宝. 基于深度学习的目标检测算法研究综述. 计算机与现代化, 2020(5): 63-69. DOI:10.3969/j.issn.1006-2475.2020.05.011 |
[6] |
王鸿斌, 张立毅. 新型神经网络的发展及其应用. 忻州师范学院学报, 2007, 23(2): 50-53. DOI:10.3969/j.issn.1671-1491.2007.02.017 |
[7] |
马红强, 马时平, 许悦雷, 等. 基于深度卷积神经网络的低照度图像增强. 光学学报, 2019, 39(2): 0210004. |
[8] |
Ren SQ, He KM, Girshick R, et al. Faster R-CNN: Towards real-time object detection with region proposal networks. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2017, 39(6): 1137-1149. DOI:10.1109/TPAMI.2016.2577031 |
[9] |
Uijlings JRR, van de Sande KEA, Gevers T, et al. Selective search for object recognition. International Journal of Computer Vision, 2013, 104(2): 154-171. DOI:10.1007/s11263-013-0620-5 |
[10] |
Felzenszwalb PF, Girshick RB, McAllester D, et al. Object detection with discriminatively trained part-based models. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2010, 32(9): 1627-1645. DOI:10.1109/TPAMI.2009.167 |
[11] |
晏琳, 景军锋, 李鹏飞. Faster RCNN模型在坯布疵点检测中的应用. 棉纺织技术, 2019, 47(2): 24-27. DOI:10.3969/j.issn.1001-7415.2019.02.006 |