表面缺陷检测是工业视觉的热点应用之一,自动的表面缺陷检测技术越来越受到重视,其中以深度学习相关技术应用为代表,它通过大量图像对检测系统进行训练学习得到一个自动的视觉检测系统。这个方面基于深度学习的检测方法基本上可以分为两个大类。
1-基于目标检测网络实现的缺陷检测系统
2-基于图像分割网络实现的缺陷检测系统
网络设计
作者采用后者·实现了一个缺陷检测与缺陷大小分割的网络,实现了一个更加高效与准确的缺陷检测系统。该网络只需要20~30个样本训练量就可以得到很好的效果,避免网络训练需要成千上万的样本收集成本。
作者在论文中提到,经典的机器视觉方法已经不能满足工业4.0的技术要求,基于深度学习的方法显示出高的灵活性与准确性,传统的手工标准特征提取+SVM/KNN的视觉检测方法不如深度学习的相关方法有效。该网络模型架构策略如下:
网络在最初设计时候就充分考虑了下面两个关键问题
1 | 1-需要的标注数据多少 |
通过语义分割+决策两阶段网络基于KoletorSDD(缺陷检测公开数据库)达到最好效果,实现了少量样本训练与高精度检测。整个网络架构如下:
在网络分割部分,作者认为表面缺陷检测可以被解释成一个图像二值分割问题,所以作者首先通过一个语义分割网络实现像素级的语义分割。然后把分割结果作为输入特征构建决策部分,第一部分称为分割网络,第二部分自然就被认为是决策网络
分割网络详解
分割网络包括了11个卷积层与3个池化层,在每个卷积层后面跟上一个BN层与ReLU激活层(conv+BN+ReLU),用来优化学习加速收敛。除了最后一层卷积核大小为15 x 15,所有的卷积层都采用5 x 5大小的卷积核。最后使用1 x 1的卷积得到的图像大小是一个单通道的是原图八分之一大小的mask图像,dropout正则化则被完全抛弃,作者认为这样的网络已经足够正则化(事实后面的实验数据证明确实如此),这样的网络架构有能力在高分辨率图像实现小的缺陷检测,网络具备比较大的感受野(5 x 5),同时可以实现比较小的特征捕获(像素级分割),作者还解释了网络的下采样与高层通过大的卷积核(15 x 15)的目的是为了放大感受野大小,以及底层采用多个卷积核与下采样max-pooling层的作用
决策网络详解
决策网络用分割网络的输出作为输入,使用分割网络的最后一个卷积层加上mask通道得到1025个通道数据作为输入特征,即分隔网络的倒数第二层和最后输出的集联。
采用max-pooling+conv(5 x 5的卷积核)的方式,最后网络通过全局最大池化与均值池化输出得到66个输出向
量
作者在设计决策网络的时候考虑了以下两个重要原则:
1 | 1-网络有能力应对大而复杂的形状,所以采用三次max-pooling |
同时作者提出了一个快捷路径的概念,通过全局最大池化与卷积层实现了不同的快捷路径,有效地阻止了网络的复杂性。
训练
分割网络的学习目标是产生一个二分类分割网络,是基于像素级别的分类操作,作者采用了两种训练方式:
1 | 1-基于回归的平方错误(MSE) 损失函数:逐像素均方差 |
值得一提的是,segmentation和decision是分开训练的,先训练segmentation部分再训练decision部分,作者说这种方式应对标准化问题,我对标准化的理解是,损失包括两部分,分别是分割损失和分类部分的损失,这两个损失需要均衡一下(标准化)才能加到一起(不过两者比例很难确定
优化器是没有momenum的随机梯度下降(SGD)batch大小为1,使用逐方差训练时损失为0,005,使用交叉熵训练时损失为0.1,一共训练了100个Epochs,值得一提的是并不是每个epoch包括固定次数的迭代,而是一正常一随机的交替选择样本,33个缺陷样本全部过一遍才算一个epoch,论文中提到也可以同时训练,不过损失函数应都是用交叉熵函数,据作者说效果更佳。
数据集
作者使用的数据集是KolertorSDD,这是作者自己搜集的数据集,标签有5种,图片尺寸有两种。数据扩增包括90度旋转和标签膨胀如下图
数据如何标注:需要两个数据集,一个是拍摄的图像+黑白像素的图像,一个是图像+有无瑕疵,较难的是前一个,建立一个大小一样的1矩阵,然后将瑕疵部分的像素值置为0 。
个人总结
- 本篇论文最核心的思想,把缺陷检测当成是一个二值化图像分割问题,采用基于像素级别分割网络成功地减少了网络深度与参数总数,实现了少量样本训练就可以达到极高准确率的缺陷表面检测网络。