Automatic Fabric Defect Detection with a Multi-Scale Convolutional Denoising Autoencoder Network ...

  关于布匹的缺陷检测的一篇文章,采用的是无监督的方式进行检测,实际上作者在训练模型的过程中只使用正样本,对于有缺陷的样本,只在test过程中使用。

一、训练阶段

  先看一下,作者提出的网络结构:



  下面,具体解释一下,每个步骤的操作方式:

1、数据预处理

(1)Illumination normalization
  采用如下公式:
  I' = WLD(I)


(2)Gaussian pyramid downsampling

2、Patch Extraction

  这里注意几个问题:
(1)使用的原始图片是没有缺陷的样本,选择patch的方式是随机的
(2)在3个level中所选取的所有的patch大小都是一样的
(3)在3个level中选择patch的时候,每个level的patch只是自己使用,不和其他level中的patch混合
(4)Noise corruption
  选择出来patch之后,对其进行噪声污染:



(ps:这里有很多细节问题,论文里没有说明。
(1)每个level的起始输入是什么,是原图还是选择出来的patches,如果是原图,那么patches到原图如何进行反向传播。
(2)3个level所在的网络是3个单独的网络,还是有联系,如果3个网络有联系,那么在每个level中就是原图作为起始输入。
(3)根据后面的做法来看,猜测应该是patch作为网络输入,这样的话,3个level就是3个不同的网络,这样的话,两个level之间的高斯卷积和下采样就不能反向传播,也就失去了意义。)

3、loss

  先来说一下,在每个level中的小网络中作者的思路,因为3个网络是相同的,我们只讨论一个就可以了。
  如果我们把选取出来的一个patch图片记为I,然后进行Noise corruption,得到图片I2,接下来将I2放入一个FCN网络中得到最终的结果I3,实际上,I3是对patch I的描述。
  所以,最后计算的loss是图片I和图片I3之间的误差。

4、Threshold Determination

  这个阈值在训练阶段计算得到,但是是在test阶段进行使用。
  首先,解释一下公式中涉及到的符号。
i:表示3个level
Np:每个level中的patch总数
xk:一个patch



最终的阈值为:

  其中,u:均值,
\sigma
:方差,
\gamma
:2

二、test阶段
1、Image Preprocessing

  和训练阶段一样,包括:Illumination normalization和Gaussian pyramid downsampling

2、Patch Extraction

  patch的size和训练阶段相同,但是取patch的方式有点不同。这里是用patch连续在整张图片上滑动(在训练阶段,是在图片上随机选取)。那么,一个level上的patch的数量为:



  其中,原图的size:[W, H],patch的size:[w, h],步长为:s

3、Residual Map Construction
4、Defect Segmentation

  将Residual Map中的v(x)和对应的阈值T进行比较,如果v(x)小于阈值,结果取为0,否则为1。那么,最终重建的图片的像素就变成了取值为0和1的mask。


5、Result Synthesization

  为了提高模型的健壮性和识别的准确率,需要把3个level得到的结果进行融合。
  融合的方法:(1)首先,把所有的residual map resize到原图大小(也就是说,把level2和level3的结果resize到level的大小)(2)对相邻两个level的图像按照像素进行and操作(3)把所有的and操作的结果得到进行or操作。




  test阶段示意图:


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容