核心思想
??本文提出一种能够对缺陷进行像素级分割和分类的算法,整个网络可以分成两个阶段:缺陷检测阶段和缺陷分类阶段。在缺陷检测阶段,作者设计了一个级联的自动编码器(CASAE),利用编码器对正常区域和缺陷区域的响应不同,通过阈值分割的方式实现缺陷区域的像素级定位。然后把缺陷区域裁剪出来得到大小不一的图块,将图块输入到缺陷分类网络,最终输出缺陷的类别。整个算法的流程如下图所示
??如图所示CASAE模块是两个AE模块级联起来得到的,前一个AE模块输出的掩码图作为第二个模块的输入,AE模块的网络结构如下图所示
??整个AE模块还是比较常规的结构,多层卷积和池化层构成编码器,多层卷积和上采样层构成解码器,编码解码器之间通过跳跃连接相连,并且其中部分卷积层替换为了空洞卷积,以增加感受野尺寸,最后通过softmax层输出预测的分割结果。阈值分割模块其实就是一个二值化的过程,将响应值大于一定阈值的点作为正常点,响应值低于阈值的点作为缺陷点,但这个阈值是需要手动调整的。得到二值化的分割图后,作者利用最小外接矩形(Minimum Enclosing Rectangle,MER)方法来得到每个缺陷的边界框,但由于每个边界框的方向都是随机的(随缺陷的形状变化),所以作者通过仿射变换的方式将其调整为正向,最后将这些区域从原图中切割出来就得到了每个缺陷所在的图块。
??分类阶段其实比较简单了,就是一个CNN。将图块统一为227 * 227大小,输入到网络中,最后通过全连接层和Softmax层输出各个类别的概率,网络结构如下图所示
实现过程
网络结构
??CASAE的结构可以参看上文图中的内容,分类网络的结构参数如下表所示
损失函数
??对CASAE的训练作者使用了加权的交叉熵损失函数
如果该像素点是缺陷区域,那损失权重为0.8,如果是正常区域,损失权重为0.2,这样有助于改善缺陷区域像素少,而正常区域像素多导致的类别不平衡问题。分类网络的损失函数没有明确说明,估计就是普通的交叉熵损失函数了。
创新点
- 设计了级联自动编码器(CASAE)用于缺陷区域的定位,并结合阈值分割法和最小邻接矩形方法实现了缺陷区域的分割
- 通过加权损失函数的方式,缓解了训练过程中样本不平衡的问题
算法评价
??本文其实就是一个两阶段的缺陷检测方法,第一阶段定位,第二阶段分类,只不过本文是显式地将其分成两个阶段了。文中采用最小邻接矩形进行图块分割和采用加权损失函数的想法还是值得借鉴的,尤其是缺陷区域比较小的时候,网络会有把所有区域都预测为正常区域的趋势,因为缺陷区域占比太小了。但本文还是需要人工设置阈值,这就还是落入了传统方法的窠臼之中了。
如果大家对于深度学习与计算机视觉领域感兴趣,希望获得更多的知识分享与最新的论文解读,欢迎关注我的个人公众号“深视”。