深入研究光滑表面的轻微划痕与裂纹等缺陷的自动化检测技术, 准确记录缺陷位置与状态, 对于产品质量检测与自动分类具有重要意义.由于大部分光滑表面的缺陷没有标准的几何特征, 采用传统机器学习算法进行缺陷检测需要人工定制输入特征[1-2], 而采用深度学习[3]的方法可以自己挖掘特征, 不再需要人工选取特征.因此, 近年来深度学习算法中基于卷积神经网络(Convolutional Neural Network, CNN)的语义分割、图像分类和目标检测3类方法在表面缺陷检测方面得到了应用.
2015年, Ronneberger等[4]提出了一种基于语义分割的U-Net网络用于生物医学图像分割, 可进行像素级别的分类, 但学习模型参数多, 训练难度大, 图像的标注任务也十分繁重.2016年, WEIMER等[5]基于图像分类的思路, 利用在原图中滑动窗口的方式进行子区域采样, 利用CNN充当分类器, 把采样结果分类为缺陷子区域或非缺陷子区域, 但该方法的精度取决于图像窗口的大小.2017年, REN等[6]提出了基于目标检测的Faster R-CNN网络, 它同语义分割网络一样训练比较困难, 标注任务繁重, 所需数据量较大.2018年, 梁智聪[7]在U-Net网络中加入了若干层残差网络以解决磁瓦划痕缺陷检测的小目标分割问题, 但是仍存在少量的误检测问题.2019年, 宋威[8]使用CNN中的Faster R-CNN算法对手机屏幕中暗点/亮点、暗线/亮线、斑点以及Mura区域等6种缺陷进行检测, 但只能处理一张图片中只包含其中一种缺陷的检测问题; 孙文政[9]利用CNN中的VGG Net网络模型对手机屏幕缺陷进行检测, 但4种主要缺陷的漏检率为6%~9%, 最高检测率只有94%, 不能很好地满足相关领域的需求.由此可见, 深度学习的方法在产品表面缺陷检测方面的应用仍有很多问题值得探讨, 特别是对轻微划痕与裂纹等小目标分割问题值得进一步深入研究.
本文针对手机屏幕轻微划痕检测的小目标分割问题, 分析经典的U-Net网络在微小缺陷检测中存在的漏检与误检等不足, 提出一种基于深度学习中的语义分割网络进行微小缺陷检测的新方法, 给出分类网络及对U-Net网络进行改进的方案, 搭建出泛化能力足够强的神经网络, 通过实例分析了对小目标分割与微小缺陷检测的改善效果, 为手机屏幕等光滑表面的微小缺陷检测提供一种有效方法.
1 基于U-Net的微小缺陷检测方法 1.1 数据集准备对于采集到的手机屏幕图像, 需要应用中值滤波算法去除噪声, 再对图像进行灰度化处理和图像增强.鉴于相关理论方法已经成熟, 本文不再赘述.
首先对图像增强后的数据集统一转换为1 024*1 024, 然后对样本图像中的各种划痕、点状缺陷等进行像素级别的数据集标注, 但擦拭痕迹一定不进行标注.将有缺陷部分的像素值置为255, 无缺陷部分的像素值置为0.如图 1所示.为节省神经网络训练时间, 对1 024*1 024大小的图像用512*512大小的滑动窗口以256为步长进行滑动采样, 得到有部分区域重叠的9张512*512图像, 重叠部分最终的预测结果将以投票方式决定.
本文共采集到手机屏幕原始图像55张, 经过滑动窗口采样与随机的窗口采样之后共得到359张无缺陷图像以及622张缺陷图像.然后采用图像的翻转、旋转、改变对比度或亮度等方法分别对样本图像进行数据增强, 得到有缺陷与无缺陷的手机图像各约2 500张, 使正负样本均衡.分别从有缺陷和无缺陷的图像中随机抽样500张图像作为测试数据集, 余下的4 000张图像作为训练数据集.
为更好地进行网络训练, 需要对图像数据进行归一化处理, 标签数据中有缺陷的部分置为1, 无缺陷的部分置为0.
1.2 语义分割网络针对手机屏幕的划痕等缺陷特征, 采取经典网络U-Net[4]测试缺陷检测效果.该网络架构主要包括提取图像局部特征的卷积层、增大感受野的下采样池化层、增大特征图的反卷积层以及提供非线性的激活函数层.其中卷积层和反卷积层需要学习, 使用Tensorflow搭建网络, 如图 2所示.
为评估神经网络的训练结果, 采用像素准确率A、查全率R、查准率P以及交并比IOU(intersection over union)作为评估指标.其中:
$ A=\frac{T_{\mathrm{P}}+T_{\mathrm{N}}}{T_{\mathrm{P}}+F_{\mathrm{P}}+T_{\mathrm{N}}+F_{\mathrm{N}}}, \quad R=\frac{T_{\mathrm{P}}}{T_{\mathrm{P}}+F_{\mathrm{N}}}, \\P=\frac{T_{\mathrm{P}}}{T_{\mathrm{P}}+F_{\mathrm{P}}}, \quad I_{\mathrm {O} \mathrm{U}}=\frac{T_{\mathrm{P}}}{T_{\mathrm{P}}+F_{\mathrm{P}}+T_{\mathrm{N}}}. $ |
式中:TP(true positive)为将正样本(本文指有缺陷的样本)判定成正样本的比例; TN(true negative)为将负样本(本文指没有缺陷的样本)判定成负样本的比例; FP(false positive)为将负样本判定成正样本的比例; FN(false negative)为将正样本判定成负样本的比例.
这4个指标从不同的角度评估网络训练结果的优劣, 本文希望将缺陷部分尽量都检测出来, 允许少量的误检测.因此, 为达到满意的效果, 目标定为:R>0.80, IOU> 0.75, P以及A应尽量高.
1.4 损失函数训练神经网络必须选定适当的损失函数, 它直接决定了神经网络的训练方向.由于一幅缺陷图像里缺陷部分与无缺陷部分的像素数量差距很大, 缺陷部分相对占比很小, 属于小目标分割问题, 也可以看作是一种样本极度不平衡的问题.因此, 本文中语义分割网络的损失函数采用Focal-loss函数(LF)[10]与Tversky-loss函数(LT)[11]的组合:
$ L=\alpha \cdot L_{\mathrm{F}}+\beta \cdot L_{\mathrm{T}}. $ |
式中:α与β为两个损失函数的比重值, 需要在训练网络时不断地优化确定.
$ L_{\mathrm{F}}=\left\{\begin{array}{ll} -\alpha_{\mathrm{F}} \cdot(1-y)^{\gamma} \cdot \log y, & (\text { 样本标签为 } 1); \\ -\left(1-\alpha_{\mathrm{F}}\right) \cdot y^{\gamma} \cdot \log (1-y), & (\text { 样本标签为 } 0) . \end{array}\right. $ |
式中:αF为LF的平衡因子, 代表正样本损失函数占总损失函数的比重; y为神经网络预测当前样本标签为1的概率; γ>0.
$ L_{\mathrm{T}}=\frac{T_{\mathrm{P}}}{T_{\mathrm{P}}+\alpha_{\mathrm{T}} \cdot F_{\mathrm{P}}+\beta_{\mathrm{T}} \cdot F_{\mathrm{N}}}. $ |
式中:αT+βT=1, αT与βT可以根据具体情况进行调节, 在本文中查全率R比查准率P更为重要, 即希望尽量把所有缺陷部分检测出来, 由查全率R的计算公式可知FN应小一些, 此时可以将βT调大一些.
1.5 正则化处理对深度学习网络可能会出现的过拟合问题, 需要采取适当的正则化措施解决, 同时简化网络, 并提升网络的泛化能力和鲁棒性.本文根据实际情况选用L2正则化, 计算损失值的公式如下:
$ L_{2}=E_{\mathrm{in}}+\lambda \cdot \sum\limits_{j} w_{j}^{2}. $ |
式中:Ein为样本的损失函数; λ为L2正则化损失占总损失的比重, 需要在训练时进行不断地优化; wj为神经网络中所要学习的参数.
1.6 网络初始化训练之前需要对神经网络的各个学习参数进行初始化, 本文采用Tensorflow中常用的xavier_initializer初始化方式.考虑到缺陷部分占比过小的情况, 在语义分割网络中的最后输出部分做了一些调整, 卷积层的激活函数部分的非线性计算采用如下公式:
$ z=\sigma(\boldsymbol{W} \cdot X+b). $ |
式中:z为卷积层计算的输出; W为卷积核权值矩阵; X为卷积层计算的输入; b为偏置值; σ(x)为激活函数, 选用非线性sigmoid函数:
$ S(x)=\frac{1}{1+\mathrm{e}^{-x}}. $ |
式中:S(x)为当前像素预测为有缺陷部分的概率值, 输出值的范围为0~1.这里的W与b是神经网络中最主要的学习参数.
1.7 网络的训练结果分析将训练数据集(缺陷图像与无缺陷图像各2 000张)输入神经网络, 经过400~500代的训练, 得到各个超参数取值:α=1, β=10; αF=0.7, γ=2.0;αT=0.4, βT=0.6;λ=0.001 5.此时网络评估指标的最优结果如表 1所示.
由表 1可知, 1 024*1 024尺度图像结果的IOU与R均未达到预期目标, 表明虽然大部分缺陷得到了有效地检测, 但仍然出现了比较严重的误检测与漏检测现象.
手机屏幕原图与缺陷预测图以及标签图的可视化对比如图 3~5所示, 图中的小圆圈标出了预测结果与标签图的不同之处.
图 3为轻微划痕情况的效果图, 图 4为浅划痕和点状缺陷情况的效果图, 从这两幅图可以看出:缺陷部分都能检测出来, 但是误检测的情况比较严重, 在全部图像中有超过一半存在误检测的现象.图 5为浅划痕和明显划痕兼具的情况效果图, 可以看到明显的划痕都能检测出来, 但是浅划痕只检测出了约50%.
2 改进的微小缺陷检测方法由1.7小节对网络训练结果进行分析可知, 直接采用经典的U-Net网络难以同时对有缺陷图像和无缺陷图像这两种情况进行准确的语义分割, 导致在图像无缺陷时出现缺陷误检测现象, 而在图像缺陷不太明显时出现缺陷漏检测现象.本节对传统的分类网络进行改进, 先对输入的图像分为无缺陷和有缺陷两类, 再将有缺陷的图像输入到改进的语义分割网络进行缺陷检测, 以大大降低分割网络的学习难度, 同时改善小目标分割的效果.
2.1 改进的分类网络所谓分类网络就是输入一张图像, 输出该图像的类别, 从结构上, 相对于语义分割网络, 分类网络特有的结构是全连接层, 它会将之前输出的特征图展开.本文引用He等[12]2015年提出的利用残差结构强化输出特征的方法, 在网络中增加残差计算, 并在分类网络中加入分割网络, 设计改进的分类网络, 如图 6所示.分类网络的上半部分为分割网络, 输出结果为原图1/8大小的预测图, 分类网络的下半部分在分割网络的基础上搭建, 输出有无缺陷的类别.
由于经典网络中存在特征图深度突变的情况, 影响特征图包含信息的传递.改进的网络在两个卷积层后加上一个池化层, 特征图深度变化从64到128, 然后到256, 再到512, 变化非常均匀, 深度从512变为1时也经过了128这个中间值; 改进的网络采用3*3尺度的卷积核代替原网络中5*5以及15*15的卷积核, 减小了计算量; 通过在分类网络部分加入两个残差网络, 展开后得到4 096个特征, 强化了特征的捕捉能力, 改善分类效果.
2.2 改进的语义分割网络经过分类网络处理后, 只有判定为有缺陷的图像才输入到语义分割网络中进行缺陷位置的检测.本文根据手机屏幕图像的具体情况, 为了解决缺陷图像中缺陷部分占比过少所导致的样本不平衡问题, 改善小目标检测的效果, 将文献[13]中的Attention Gate引入U-Net网络, 下采样次数由原文中的3次改为4次, 网络结构如图 7所示.深度由32到64、128、256、512, 之后上采样渐次减小, 这样的网络参数数目能充分拟合本文的数据集, 且不会出现很严重的过拟合现象; 将原网络中上采样采用反卷积改为先上采样(Upsampling, 采用双线性插值)再加一个卷积层的形式; 激活函数采用ELU函数, 以便于更快收敛.
将图 7所示的语义分割网络和图 6所示的分类网相络合, 得到复合网络:分割网络的下采样最后一层和上采样最后一层相拼接, 拼接结果作为分类网络的输入, 然后再连接卷积层和全连接层(与上文的分类网络类似)得到缺陷识别的结果.
2.4 网络的训练1) 损失函数的确定
对于语义分割网络, 损失函数采用LF与LT结合的形式:
$ L=\alpha \cdot L_{\mathrm{F}} / m+\beta \cdot L_{\mathrm{T}}. $ | (1) |
式中:m为缺陷图像中缺陷部分像素数; α与β分别为两个损失函数占总体损失函数的比重.
式(1)除以m的目的是使得缺陷像素占比大的图像与占比小的图像得到一样的重视, 使得各个缺陷图像都能得到同等的对待, 训练时也更加平稳.
对于分类网络, 其损失函数形式为
$ L=\alpha \cdot L_{\mathrm{F}}(p)+\beta \cdot L_{\mathrm{T}}(p)+\chi \cdot L_{\mathrm{F}}(c). $ |
式中:α、β与χ分别为3个损失函数占总体损失函数的比重.
前两个损失函数与语义分割网络类似, 但是其LF部分没有除以m, 主要原因是预测的标签图像已经是原图的1/8了, 缺陷部分占比将更小.因此, 这里不除以m是使得网络去充分学习每一个缺陷像素.而该式最后一项的分类损失函数也使用了LF(c), 对于难度较大的分类问题很有效果, 更注重难分类的样本.
对于复合网络, 其损失函数为
$ L=\alpha \cdot L_{\mathrm{F}}(p) / m+\beta \cdot L_{\mathrm{D}}(p)+\chi \cdot L_{\mathrm{F}}(c). $ |
式中:α、β与χ分别为3个损失函数占总体损失函数的比重; m为缺陷图像中缺陷部分像素数; LD=TP/(TP+0.5FP+0.5FN).
2) 正则化处理
根据实际情况, 全局使用L2正则化, 在分类网络的全连接层中选用Dropout正则化[14], 会使神经网络中某一层的神经元有某种概率消失的可能, 例如设置消失概率为0.5, 则在某一层神经元中大约一半的神经元将失活(直接置为0), 能有效地解决过拟合的问题, 使网络鲁棒性更好.
3) 网络的训练结果
采用与1.6节相同的初始化方式, 并将分类网络中分割网络的输出部分、语义分割网络的输出部分以及复合网络中分割网络部分的输出部分的sigmoid函数前一层的偏置全都置为-4, 这可以大大加速网络的训练.分类网络采用SGD优化器, 而语义分割网络与复合网络采用Adam优化器.经过反复地实验, 最终得到单独的分类网络与复合网络的分类网络部分训练后的结果, 如表 2所示.
由表 2可知:单独训练的分类网络的效果良好, 测试集的分类准确率达到0.981, 而复合网络的分类部分则表现得稍差一些.此外, 本文还对分类网络的原始借鉴版本以及经典的VGG16网络[15]在同样的数据集上进行训练, 测试集的结果对比见表 3.
由表 3可以看出:分类网络中借助分割网络确实能有效地提升判别准确率, 优于传统经典的分类网络VGG16, 证明了改进思路的正确性.
为了更好地验证Attention机制的效果, 本文对U-Net在有缺陷的图像数据集中进行了训练, 最终单独训练的语义分割网络Attention U-Net、复合网络的分割部分以及U-Net的测试集结果见表 4.
由表 4中可以看出:单独训练的语义分割网络Attention U-Net的4个评价指标均优于其他两种网络.为了得到更能反应真实效果的指标, 利用3种网络对1 024*1 024的原图测试的各项指标结果对比(见表 5).
由表 5可知, 分类网络+Attention U-Net的改进方案的效果最优, 验证了先分类、后分割思路的正确性.
2.5 缺陷检测的实验结果对常见的无缺陷、微划痕、小划痕、小裂纹、点状缺陷以及深浅划痕同时存在等不同情况的检测结果分别如图 8~13所示, 其中小圆圈标出了U-Net预测图与标签图不相符之处.
由图 8~13可以看出:在面对无缺陷或轻微划痕、小划痕、明显划痕以及划痕与点状缺陷兼具的情况, 改进网络表现较U-Net都好得多, 缺陷部分都能检测出来, 误检测的情况已经消除.
由图 13可以看出, 改进网络对于浅划痕与明显划痕兼具的复杂情况时, 也能准确检测出浅划痕, 泛化能力较强.
需要说明的是:运行网络计算量大需要应用到GPU, 检测时间与显卡的存储空间直接相关, 本文使用2080Ti、1080Ti、1080这3种不同显卡检测一张图像的平均时间分别为:0.87、1.22、1.29 s, 能够满足缺陷检测的实际需求.通过模型压缩与加速, 还可以进一步缩短检测时间.
3 结论本文针对手机屏幕表面划痕等轻微缺陷的自动检测问题, 对经典的U-Net神经网络进行了改进, 手机屏幕的多种不同缺陷的检测结果表明, 对光滑表面划痕等轻微缺陷效果良好, 且对手机屏幕亮斑以及擦拭痕迹都能正确处理, 并得出以下主要结论:
1) 经典的U-Net网络对手机屏幕中明显划痕等缺陷检测的准确度较高, 但对浅划痕等轻微缺陷存在比较严重的误检测与漏检测情况, 难以满足实际需求;
2) 提出先分类再分割的方法, 在分类网络中引入残差网络, 在分类正确率达到0.981;在原有的U-Net网络基础上加入了Attention机制, 改进的语义分割网络的IOU达到0.892;对分类网络和分割网络进行改进, 手机屏幕轻微划痕等缺陷检测的准确率达到0.997, 可以解决小目标检测问题;
3) 检测实例表明, 提出的“分类网络+Attention U-Net”改进方案优于经典的U-Net和VGG16网络, 能够有效地提升小目标分割问题中的分割准确率, 并可以正确处理有缺陷与无缺陷的图像, 实验结果验证了先分类后分割思路的正确性和可行性.
[1] |
BODNAROVA A, BENNAMOUN M, LATHAM S. Optimal Gabor filters for textile flaw detection[J]. Pattern Recognition, 2002, 35(12): 2973. DOI:10.1016/S0031-3203(02)00017-1 |
[2] |
INOUE S, KONISHI M, IMAI J. Surface defect inspection of a cutting tool by image processing with neural networks[J]. Memoirs of the Faculty of Engineering, Okayama University, 2009, 43: 55. DOI:10.18926/17841 |
[3] |
GOODFELLOW I, BENGIO Y, COURVILLE A.深度学习[M].赵申剑, 黎彧君, 符天凡, 等, 译.北京: 人民邮电出版社, 2017: 86 GOODFELLOW I, BENGIO Y, COURVILLE A. Deep learning[M]. ZHAO Shenjian, LI Yujun, FU Tianfan, et al. translate. Beijing: Posts & Telecom Press, 2017: 86 |
[4] |
RONNEBERGER O, FISCHER P, BROX T. U-Net: Convolutional networks for biomedical image segmentation[C]//Proceedings of International Conference on Medical Image Computer and Computer-Assisted Intervention. Cham: Springer, 2015: 234. DOI: 10.1007/978-3-319-24574-4_28
|
[5] |
WEIMER D, SCHOLZ-REITER B, SHPITALNI M. Design of deep convolutional neural network architectures for automated feature extraction in industrial inspection[J]. CIRP Annals: Manufacturing Technology, 2016, 65(1): 417. DOI:10.1016/j.cirp.2016.04.072 |
[6] |
REN Shaoqing, HE Kaiming, GIRSHICK R, et al. Faster R-CNN: towards real-time object detection with region proposal networks[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2017, 39(6): 1137. DOI:10.1109/TPAMI.2016.2577031 |
[7] |
梁智聪.基于卷积神经网络的工件表面缺陷检测系统[D].杭州: 浙江大学, 2018 LIANG Zhicong. Surface defect detection system based on convolution neural network[D]. Hangzhou: Zhejiang University, 2018 |
[8] |
宋威.基于深度卷积神经网络的手机屏幕缺陷检测[D].成都: 电子科技大学, 2019 SONG Wei. Smart phone screen defect detection based on deep convolutional neural network[D]. Chengdu: University of Electronic Science and Technology of China, 2019 |
[9] |
孙文政.基于深度学习和机器视觉的手机屏幕瑕疵检测方法研究[D].济南: 山东大学, 2019 SUN Wenzheng. Research on defect detection method of mobile phone screen based on deep learning and machine vision[D]. Jinan: Shandong University, 2019 |
[10] |
LIN T Y, GOYAL P, GIRSHICK R, et al. Focal loss for dense object detection[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2020, 42(2): 318. DOI:10.1109/TPAMI.2018.2858826 |
[11] |
SALEHI S S M, ERDOGMUS D, GHOLIPOUR A. Tversky loss function for image segmentation using 3D fully convolutional deep networks[C]// Proceedings of International Workshop on Machine Learning in Medical Imaging. Cham: Springer, 2017: 379. DOI: 10.1007/978-3-319-67389-9_44
|
[12] |
HE Kaiming, ZHANG Xiangyu, REN Shaoqing, et al. Deep residual learning for image recognition[C]// Proceedings of 2016 IEEE Conference on Computer Vision and Pattern Recognition. Las Vegas: IEEE, 2016. DOI: 10.1109/CVPR.2016.90
|
[13] |
OKTAY O, SCHLEMPER J, LE FOLGOC L, et al. Attention U-Net: learning where to look for the pancreas[Z].[2020-08-20]. https://arxiv.org/abs/1804.3999
|
[14] |
SRIVASTAVA N, HINTON G, KRIZHEVSKY A, et al. Dropout: a simple way to prevent neural networks from overfitting[J]. Journal of Machine Learning Research, 2014, 15(1): 1929. |
[15] |
SIMONYAN K, ZISSERMAN A. Very deep convolutional networks for large-scale image recognition[Z]. [2020-08-20]. https://arxiv.org/abs/1409.1556
|