文章题目:《Automatic Metallic Surface Defect Detection and Recognition with Convolutional Neural Networks》
链接:https://pan.baidu.com/s/1W8r_gG3s2DIbAVgXV8DBpw
前言:祖略的过了一下文章,内容也不像作者说的那样很创新,算是基于FCN网络的改进吧,FCN网络是端到端的语义分割网络,输入一张图像,吐出来一张语义分割的结果图像。缺陷检测论文现在好多都是借助FCN做的迁移应用到实际的工业现场等,比如国外知名的VIDI软件、国内一些检测软件。回到本文,文章内容很简单,框架很好理解,实验做的比较充分。将一张像素很高的缺陷图像输入一个语义分割网络(论文里的分割只对缺陷区域进行涂色,意思是训练样本集只标记处缺陷区域,没有分类,也不标记背景),再将语义分割后的缺陷区域进行CNN分类。
论文的最后,说论文的结果比FCN好,那是肯定的,FCN经典网络是端到端将语义意义的区域进行分割,并没有做太多的细化分割,比如点状缺陷和线状缺陷区域的分割;作者在网络后面记住CNN对缺陷分割后的区域进行分类,效果肯定是好于FCN的。
摘要:
论文中的框架分为检测和分类两部分,对于检测,作者提出一种级联自编码结构(cascaded autoencoder (CASAE))用于缺陷的定位分割,级联自编码网络将输入缺陷图像转化为基于语义分割的图像;对于缺陷分类,将分割后的缺陷区域使用CNN进行分类。网络结构在工业缺陷数据集上应用的很成功。
下图是一个工业现场采集的图像,可以看出缺陷特征种类很多。在缺陷检测研究方面,作者总结的很棒,可以认真去看一下。
关于表面缺陷的检测,在过去主要有两种流派:基于传统图像处理方法和机器学习方法,这两种方法建立在手工特征和浅层机器学习。 传统的图像处理方法利用局部异常所反映的原始属性来检测和分割缺陷,进一步分为结构法、阈值法、光谱法和基于模型的方法。
作者引用了大量传统图像处理的文献和浅层机器学习方法的文献,比如LBP+SVM等;最后,在近几年的研究上,大家开始跟着主流做起深度学习在缺陷检测应用上的研究。这里自己做一个关于缺陷检测目前的几大类总结:1.基于改进CNN做的缺陷样本集的分类;2.基于经典的图像检测框架做的缺陷检测,比如RCNN、yolo、SSD等;3.也有一些少量的研究人员开始使用GAN,效果不是很好。
下面内容我就把检测模块和分类模块的网络结构简单介绍一下,需要了解细节的可以看文章链接。论文网络模型的整体框架如下:
作者是使用高像素的工业相机直接从现场获得图像,论文中有提到图像像素很高 2720 × 2040 × 3 pixels。
检测模块
在检测模块作者使用了两个AE级联(电路中的串联)在一起,单个的AE结构如下,很明显这个结构就是一层层的卷积接上一层层的反卷积和跳跃链接,是FCN框架的迁移使用。作者在这里也对比使用了几个反卷积的方法,如下下图的atrous convolution。
分类模块
对语义分割后的缺陷区域进行分类,输入是分割后的区域原图,输入常规的CNN网络进行分类,框架和网络参数如下图:
实验部分
作者从工业现场收集50张图像,30张作为训练样本,图像有点少,做了一下数据增强,得到3000张训练图像;在最后分类时,通过缺陷分割模块获得432张有缺陷的图像,进行分类。最后,作者将算法拿到两个公共数据集DAGM2007和SEM上进行了测试,效果很好。