与时代共振,AI助力工业缺陷检测

共 8217字,需浏览 17分钟

 ·

2021-10-17 09:34

大数据文摘授权转载自数据派THU
作者:王可汗
编辑:黄继彦
校对:林亦霖

由于深度学习强大的特征提取能力,代替了人工目检和传统的机器视觉,成为了工业缺陷检测的新利器。然而,基于深度学习的语义分割技术在工业缺陷检测领域的应用仍具有挑战性。

本文先对比自然场景下的语义分割,概述了工业缺陷检测背景下语义分割技术的特点;接着,对于工业缺陷检测的常见难点,对常见的解决方案进行介绍。最后,作者提出了关于工业缺陷检测实际应用中一些问题的思考。

问题概述:工业缺陷检测场景中的语义分割

语义分割是指使用语义标签对图像中的每一个像素进行分类。相比图像分类,前者要求更高,因为后者只是预测整个图像的单个标签[1] 。相比于人工目检的费时费力,传统机器视觉强依赖于工程师的经验与试错,基于深度学习的方法由于其端到端自动提取特征实现分割过程的特点而逐渐崭露头角。FCN(全卷积神经网络)[2]作为基于深度学习的语义分割技术的开山之作早在2014年就已经被提出,但是计算机视觉背景下的语义分割研究大多以自然场景为主,例如常用的cityscape数据集[3],便是涵盖了城市道路、车,人,树等物体的自然场景数据集。工业缺陷检测相比于自然场景,类别更少,而且工件表面一般背景干扰小,变化更少,而且可以通过硬件(如打光)等方式去改良光照等条件以获取更好的数据集。那么是否意味着工业缺陷检测中的语义分割更为简单呢?

其实不然,简单来说,工业缺陷检测中的语义分割存在以下的问题:
  1. 类间差异小,存在模糊地带:以磁瓦缺陷数据集[4]为例,线状物体在多种缺陷或者无缺陷情况都有出现。这是这一数据集的固有属性,也是缺陷检测难做的原因。有一些情况,由于正负样本类内差异小,比如按照面积、灰度值等绘制其直方图,中间过渡区域永远存在一定量的样本,处于灰色地带,很难分辨。
  2. 类内差异大:同一类缺陷下,缺陷的大小,形状,位置多变。
  3. 样本不平衡:有些数据集中,严重存在着正负样本不平衡的问题,良品多,不良率小。
  4. 缺陷级别小:例如在磁瓦缺陷数据集中 ,有些裂痕或者空洞的尺寸很小,对于目标细节的分辨率要求高。

图1  磁瓦缺陷数据集[4] 该数据集是中国科学院自动所一个课题组收集的数据集,收集了6种常见磁瓦缺陷的图像,并做了语义分割的标注。

下面我们结合上述难点,对于工业缺陷检测的常见难点,对常见的解决方案进行介绍:

选择什么样的网络拓扑可以捕捉目标细节?

Long等人提出了全卷积神经网络(FCN)[2]是基于深度学习的语义分割模型的一个里程碑。FCN将常用的CNN 架构(如VGG16和GoogleNet)中的全连接层替换成卷积层,即整个网络结构为 先通过卷积层下采样得到热图,再上采样得到空间分割映射图。如图2所示,如果直接将经过5次池化操作后得到的热图上采样,则得到FCN32s。但是这样的效果很差,这是经过多次卷积池化操作,虽然得到的语义信息不断增强,但是也造成了像素位置等信息的损失。

因此,FCN采用了(skip-connection)结构,这一结构将不同尺度的信息融合,这里主要用到的是将不同尺度的热图相加,得到了最终的分割结果(FCN8s)。相比于真实分割,网络推理的结果忽略了很多目标细节结构,而在实际工业缺陷背景下,由于缺陷级别低,特别是有些缺陷的判定会规定尺寸,例如小于某一尺寸的缺陷可以算作良品。所以选择能够提高目标细节分辨率的网络特别重要。

此外,FCN 表现不好的另一原因在于经验感受野和理论感受野的不一致[5]。感受野(ReceptiveField)是指卷积神经网络每一层输出的特征图(feature map)上的像素点在输入图片上映射的区域大小。图4的实验结果证明,FCN的经验感受野不及理论感受野的1/4,因此选择能够增强经验感受野的拓扑也是另一个重要的问题。

图2 FCN 网络拓扑示意图[2] FCN将来自于不同深度层的信息融合

FCN-32s是将特征提取的最后一层经过步长为32的上采样的像素预测结果。FCN-16s融合最后一层和4次池化操作以后经过步长为16的上采样的像素预测结果。FCN-8s融合前面两者和3次池化操作经过步长为8的上采样的像素预测结果。

图3  FCN不同分辨率下(左一至左三)的分割效果与真实标签的对比(右)[2]

图4 FCN经验感受野严重缺失示意图[5]从左至右依次是原始图像;来自网络最后一层通道的热图;由网络结构定义的理论感受野;与之对应的经验感受野

显然,经验感受野不够大,不足以捕捉全局的背景。

FCN之后的语义分割模型大致可以分为以下几类:编码器-解码器结构、基于金字塔的模型、递归神经网络、视觉注意力模型,生成对抗网络。我们着重介绍其中几类能够更好捕捉目标细节,增强网络的经验感受野的模型结构。

编码器-解码器结构与FCN类似,编码器相当于下采样提取特征的过程,解码器相当于上采样得到预测分割结果的过程。如图5,Unet是这一结构中的代表作[6]。为了扩大感受野得到更多尺度的特征信息,解码器结构设计为多层卷积池化。此外,多尺度的信息融合的过程也更为丰富,相比于FCN的直接加和,这里利用了通道维度拼接的方法。

注意的是,在拼接之前,需要把前层的特征图剪裁到和后层一样的大小。在上采样时,还加入了更为精细的卷积结构。SegNet是另一代表性结构[7](如图6),在结构上看,SegNet和U-net其实大同小异。区别在于,SegNet没有直接融合不同尺度的层的信息,而是利用了反池化操作,防止池化过程里像素位置的丢失。反池化是SegNet在池化的时候保留了最大池化对应的位置索引,然后上采样的时候加入了这个索引,就可以恢复空间信息了。

在解码器中使用最大池化索引有几个实际优势:
  • 它改善了边界的预测,因为避免了像素位置信息的损失;
  • 它对算力友好,这是由于本身上采样不会参与网络训练;
  • 这种形式的上采样可以合并到任何编码器-解码器结构中。

图5 Unet网络拓扑示意图[6]每个蓝框对应一个多通道特征图

通道的数量在框的顶部表示。每一层的x-y尺寸在框的左下边缘提供。白框表示复制的特征。箭头表示不同的操作。

图6 Segnet网络拓扑图[7]解码器使用编码器保留的池化索引对其输入进行上采样,以生成稀疏特征映射

多尺度分析是图像处理中的一个成熟思想,已被应用于各种神经网络结构中。Zhao等人开发了PSPN[8],如图7所示,利用扩展后的残差网络(ResNet)作为特征提取器,这些特征图被输入一个金字塔池模块,以四种不同的尺度汇集在一起,每一种对应于一个金字塔级别,金字塔层的输出被上采样,并与初始特征图连接,以捕获局部和全局上下文信息,从而可以更好地学习场景的全局上下文表示。

图7 PSPN 网络拓扑[8]

Deeplab系列是这一思想的另一个重要模型,其中最重要的组件就是Atrous Spatial Pyramid Pooling (ASPP),ASPP模块。该模块与上文的金字塔类似,不同在于将普通卷积换成了空洞卷积。空洞卷积设置了采样率,在不增加额外开销的前提下,增强了感受野。除此之外,Deeplabv3之后相对于先前的版本,在ASPP中加入了BatchNormalization层和特征的全局平均池化。

加入特征的全局平均池化。图8中的Image Pooling就是全局平均池化,它的加入是对全局特征的加强。另外,我们也可以把Deeplabv3+模型看成一个编码器-解码器模型。编码器部分可以利用Xception结构,这是一种可以有效减小参数量的深度可分离卷积。[9-11]

图8 Deeplabv3+网络拓扑示意图[11]

视觉注意力从注意力作用的域来看,主要可以分为通道域和空间域。Squeeze-and-Excitation Networks(SEnet)是通道域的代表作之一[12]。SEnet的基本操作是挤压(Squeeze)和激活(Excitation)。如图8所示,最左侧的是原始输入的图片X (H' x W' x C'),经过特征提取()得到一个大小 (H x W xC) 的特征图U。再经过挤压()操作,特征图变成了 1 x 1 x C 的特征向量,特征向量是特征图U在每个通道全局最大池化的结果。经过激活()操作,特征向量的维度没有变,但是向量值变成了新的值。这一步的操作视SEblock的结构而定,常见的有Inception、Resnet等等。这些值通过和U经过尺度变换()的值乘积后得到加权的最后结果的维度和特征图U一致。

图9 ASqueeze-and-Excitation block[12]

Attention toscale[13]这篇论文中提出了一个基于多尺度注意力的模型。基于特征提取的共享网络,假设输入图像的大小被调整至几个比例。每个尺度都通过Deeplab(权重值在所有尺度上共享),并生成尺度为s的得分图,表示为。为了使得不同尺度的得分图具有相同的分辨率,通过双线插差值的办法调整小尺度的得分图。最后通道 c,位置 i 特征图上的值:


其中代表尺度 s 的得分图中位置 i 的得分值。

缺陷样本少导致样本不平衡怎么办?

首先可以通过损失函数来改进。损失函数分两类,一类是基于分布的,一类是基于区域的。[14]

基于分布的损失函数常见的就是图像分类中经常用到的交叉熵损失函数,这是由于语义分割可以看成是每个像素点的分类问题。交叉熵损失的问题在于,当有缺陷的样本很少时,它对于每个样本的关注依然是相同的,这可能会导致漏检的发生。加权交叉熵以及平衡交叉熵,可以改善这一状况。

基于区域的损失函数最常见的就是Diceloss损失函数。这一损失函数首先在医学影像语义分割的背景下提出[6]。从数学上它代表着召回率和精准率的调和平均值,因此同时兼顾了漏检和过检两种情况。Diceloss的表达式如下:


y,p分别代表标注值和预测的概率值。公式中分子分母同时加1是拉普拉斯平滑化的结果,为了避免出现分母为0的情况。基于Dice loss,后续由相继提出Tverskyloss, Focel Tversky loss等等。由于Dice loss函数的非凸特性,可能导致训练时不收敛,近年来也有Log-CoshDice Loss对数损失被提出[14]。

除此之外,数据增强也是一个从原始数据集中提取更多信息的方式。数据增强的方法大致可以分为两个类型:转换现有图片,标签不变或者创造人工样本并加入训练集。转换现有图片常用的方法有几何变换(如:翻转,镜像,旋转)、色彩变换(如:rgb到hsv)、像素变换(高斯模糊,随机擦除等)。人工创造则有图像融合(例如将缺陷裁剪粘贴,泊松融合)、特征空间增强、生成对抗网络等等[15]。


一些思考

工业缺陷检测的指标需要具体情况具体分析。有些场景下的工业缺陷检测并不需要逐像素分类准确,需要知道缺陷种类和大致位置即可,更倾向于“目标分类”这样的任务。之所以不采取目标检测的方式,是由于缺陷表现形式不一,很难确定长宽比,从而进行锚框的设置。很多工业缺陷检测的评价以计算机视觉领域常用的指标来判别模型的优劣,如mAP(Mean Average Precision,均像素精度)等等,把其看成“目标检测”或者“目标分割”问题,脱离了实际的工业应用。在实际应用中,应该结合具体情况设置合适的指标。

工业缺陷检测的另一个问题是不良品样本会在产线中不断产生。这就带来一个问题即:能否保持前期训练的模型,利用新数据追加训练模型。这就是数据增量学习(DataIncremental Deep Learning)。常见的增量学习有基于正则化,基于回放数据等等。以基于正则化的Lwf(learning without forgetting)学习为例,这一算法的主要思想是来自于知识蒸馏,也就除了分类损失,还有一项蒸馏损失,使新模型在新任务上的预测与旧模型在任务上的预测相近,从而避免新任务的训练对旧模型过分调整导致新模型在旧任务上性能的下降[16]。增量学习可能成为未来工业缺陷检测结合紧密的方向。

参考文献:
[1] S.Minaee, Y. Y. Boykov, F. Porikli, A. J. Plaza, N. Kehtarnavaz, and D.Terzopoulos, "Image segmentation using deep learning: A survey," IEEE Transactions on Pattern Analysis andMachine Intelligence, 2021.
[2] J. Long, E. Shelhamer, and T. Darrell,"Fully convolutional networks for semantic segmentation," in Proceedings of the IEEE conference oncomputer vision and pattern recognition, 2015, pp. 3431-3440.
[3] M. Cordts et al., "The cityscapes dataset for semantic urban sceneunderstanding," in Proceedings ofthe IEEE conference on computer vision and pattern recognition, 2016, pp.3213-3223.
[4] Y. Huang, C. Qiu, and K. Yuan,"Surface defect saliency of magnetic tile," The Visual Computer, vol. 36, no. 1, pp. 85-96, 2020.
[5] W. Liu, A. Rabinovich, and A. C. Berg,"Parsenet: Looking wider to see better," arXiv preprint arXiv:1506.04579, 2015.
[6] O. Ronneberger, P. Fischer, and T. Brox,"U-net: Convolutional networks for biomedical image segmentation," inInternational Conference on Medical imagecomputing and computer-assisted intervention, 2015, pp. 234-241: Springer.
[7] V. Badrinarayanan, A. Kendall, and R.Cipolla, "Segnet: A deep convolutional encoder-decoder architecture forimage segmentation," IEEEtransactions on pattern analysis and machine intelligence, vol. 39, no. 12,pp. 2481-2495, 2017.
[8] H. Zhao, J. Shi, X. Qi, X. Wang, and J.Jia, "Pyramid scene parsing network," in Proceedings of the IEEE conference on computer vision and patternrecognition, 2017, pp. 2881-2890.
[9] L.-C. Chen, G. Papandreou, F. Schroff,and H. Adam, "Rethinking atrous convolution for semantic imagesegmentation," arXiv preprintarXiv:1706.05587, 2017.
[10] L.-C. Chen, G. Papandreou, I. Kokkinos,K. Murphy, and A. L. Yuille, "Deeplab: Semantic image segmentation withdeep convolutional nets, atrous convolution, and fully connected crfs," IEEE transactions on pattern analysis andmachine intelligence, vol. 40, no. 4, pp. 834-848, 2017.
[11] L.-C. Chen, Y. Zhu, G. Papandreou, F.Schroff, and H. Adam, "Encoder-decoder with atrous separable convolutionfor semantic image segmentation," in Proceedingsof the European conference on computer vision (ECCV), 2018, pp. 801-818.
[12] J. Hu, L. Shen, and G. Sun,"Squeeze-and-excitation networks," in Proceedings of the IEEE conference on computer vision and patternrecognition, 2018, pp. 7132-7141.
[13] L.-C. Chen, Y. Yang, J. Wang, W. Xu, andA. L. Yuille, "Attention to scale: Scale-aware semantic imagesegmentation," in Proceedings of theIEEE conference on computer vision and pattern recognition, 2016, pp.3640-3649.
[14] S. Jadon, "A survey of lossfunctions for semantic segmentation," in 2020 IEEE Conference on Computational Intelligence in Bioinformaticsand Computational Biology (CIBCB), 2020, pp. 1-7: IEEE.
[15] C. Shorten and T. M. Khoshgoftaar,"A survey on image data augmentation for deep learning," Journal of Big Data, vol. 6, no. 1, pp.1-48, 2019.
[16] Z. Li and D. Hoiem, "Learningwithout forgetting," IEEEtransactions on pattern analysis and machine intelligence, vol. 40, no. 12,pp. 2935-2947, 2017.

另外笔者在项目实践中也曾受到下面文章的启发,特向作者表示致谢:
https://zhuanlan.zhihu.com/p/375828501
https://blog.csdn.net/scarecrow_wiscom/article/details/102819916



点「在看」的人都变好看了哦!
浏览 12
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报