基于语义分割和生成对抗网络的缺陷检测算法

一、缺陷类型

如下图所示,缺陷类型主要有缺损和裂纹两个类型。
在这里插入图片描述

二、语义分割网络

FCN网络

网上介绍FCN的教程很多,在这里不再详细讲述,具体请参考链接:

https://www.cnblogs.com/gujianhan/p/6030639.html
https://blog.csdn.net/qq_36269513/article/details/80420363

在这里插入图片描述

语义分割网络

U-Net

U-Net的最初提出是为了医学图像的分割,现在被越来越多的应用到其它领域。U-Net的思想还是很简单,具体算法介绍请参考:
https://blog.csdn.net/m_buddy/article/details/79399203
https://baijiahao.baidu.com/s?id=1600400677130320639&wfr=spider&for=pc

在这里插入图片描述

U-Net分割网络

DNS缺陷分割网络

在这里插入图片描述

DSN(缺陷分割网络)

借鉴FCN和U-Net网络,在这里提出了一种新的语义分割网络,DSN(缺陷分割网络),如上图所示。DSN思想和U-Net思想基本一致,不同的是中间采用残差模块,来加深网络的深度,一般来说,网络越深,对特征的提取越有效。图像数据在送进网络之前,需要对其进行归一化。

分割图像标签的制作

在这里插入图片描述

考虑了两种不同的分割方式:一种是不保留背景的分割方式,即把缺陷区域标记为前景标签,把背景区域以及工件的非缺陷区域统一标记为背景标签,这种方式的好处是最终结果为一张二值图,可以直接提取到缺陷的特征;另一种为保留工件图片的背景以及非缺陷区域,仅把缺陷区域标记为易于区分的像素值,这种标记方法可以使结
果与原图的对比更加直观,且利用多种标签可以实现对不同缺陷的分类,便于系统的扩展。充分考虑两种分割方法的优缺点,认为后者更适合本系统,因为它能为系统提供更直观的分割效果,便于人工监督,与此同时,系统的可扩展性对于技术的推广至关重要。

由于目的是需要找到位于工件表面的缺陷区域,没有必要关注工件中的非缺陷区域以及背景区域的像素分类问题,所以在标记时只需要对缺陷区域像素替换为特定的标签值,而使其他区域像素值不做改变。为了方便后续采用连通区域标记法进行后续判别,该标签值必须易于和原图区分。采用三原色之中的红色,像素值为(255, 0, 0 ),作为缺陷标签,这个标签对比原图其他区域区分度明显,可以使用简单阈值分割法实现分割,是理想的缺陷
像素标记值。与此同时,仅对缺陷进行标记能大大地减少人工标注的工作量,易于获取大量的训练样本。

在这里插入图片描述

标注好的数据标签

利用标注好的标签就可以对语义分割网络进行训练,这里根据残差模块的数量不同,提出了三种模型。训练后的DSN模型分割效果图如下所示。其中DSN-I、DSN-II、DSN-III分别对应6、9、12个残差模块。
在这里插入图片描述

三、生成对抗网络

理论上直接使用DSN网络进行训练,然后预测也是可以的。但是从下图可以看出,缺陷分割网络对于面积较大的缺陷区域分割效果明显,但是对于面积较小的缺陷往往容易忽略。另外,对于工件表面一些与缺陷有一定相似程度的自身纹理,缺陷分割网络很容易识别为缺陷区域然后进行标记,这对于算法的实用性能有很大的影响。

通过分析缺陷分割网络的训练过程,可以发现网络的最终目的在于是网络的输出结果尽可能地接近人工标记图,但是由于小缺陷在图中所占的像素比例过低,在利用反向传播算法更新网络参数时,其对参数更新量的影响容易被面积较大缺陷区域的影响所覆盖,小区域缺陷的特征提取难以被很好的学习。与此同时,被错误标记的区域由于像素往往较少,所以在训练中也难以被正确区分。所以缺陷分割网络的一种可行的改进方法是在训练时对生成的分割图像加入必要的监督手段,增强对于小面积漏检区域以及错误标记区域的反馈,达到更好地训练缺陷分割网络的目的。

生成式对抗网络模型是一种常用的利用监督手段提高网络数据处理能力的网络训练手段。这一模型利用一个分类网络对缺陷分割网络的输出进行判断,判断的结果对缺陷分割网络进行反馈,用于提高缺陷分割网络的图像处理能力。

在这里插入图片描述
关于生成对抗网络,网上介绍资料很多,详细算法请参考:https://www.jianshu.com/p/998cf8e52209

基于生成对抗网络和DSN的联合训练

在这里插入图片描述

如图所示,DSN-GAN训练模型的生成式模型为缺陷分割网络,与常见的条件生成式对抗模型的训练方式相同,本文设计的网络也使用交替训练的方式。

  1. 对于作为输入的一组图片(包含原图和标记图),首先训练判别式网络,此时生成式模型参数固定。训练的目的在于使判别式模型具有可以分辨输入的图像属于真实人工标记图还是生成网络生成的图像,于是训练过程如下:
  • 把输入的一对图片中的原始工件图x和人工标记图Y同时输入到判别式网络D中,因为此时的Y是x的真实对应,所以计算判别式网络的损失函数时标签应该为真,然后以反向传播算法更新判别式网络;
  • 把数据对中的工件原图x输入到生成式网络G中,得到缺陷分割生成图G(x),然后x与G(x)同时输入到判别式网络D中,此时的G(x)为生成图像,不是x的真实对应图,所以计算判别式网络损失函数时,标签应该设为假,同样地以反向传播算法更新判别式网络。
  1. 然后训练生成生成式网络,同样地判别式模型维持参数不变,训练过程如下:
  • 把数据对中原始工件图x输入到生成式网络G,得到缺陷分割图G (x),计算G (x)与人工标记图y的L1损失函数值(图像空间距离),记为 L G L_G ;
  • 把G (x)与原始工件图像x输入到判别式网络D,由于训练生成式网络G的目的是要求其能生成的分割图接近真实标记图,所以此时计算判别式网络的损失函数应该设标签为真。经过训练后的判别式网络具备判断输入图像是真实标记图还是生成图像的能力,所以此时它的损失函数值能反映输入图像G (x)与真实图像的相似程度,记为 L D L_D ;
  • 更新生成式网络G的参数时,把生成图与真实标记图的空间距离 L G L_G 与判别式网络计算所得的相似程度 L D L_D 同时作为反向传播算法的代价函数,公式表示为 L t o t a l L_{total} = L G L_G + λ L D λL_D ,,其中λ为判别式网络损失函数权重,用于决定判别式网络对生成式网络的监督反馈强度,当λ=0时,等价于传统的语义分割网络训练方法。最后利用反向传播算法更新生成式网络G的参数。
  1. 对于每一对训练样本,重复(1)(2)两个步骤,直到所有训练样本都参与到训练中,则完成一次训练。当训练次数达到设定量时,训练结束。

判别式网络具体结构

在这里插入图片描述

判别式网络输出的是一个1x16x16的feature map,值为1和0。pos标为全1,neg标为全0。

猜你喜欢

转载自blog.csdn.net/qq_29462849/article/details/83825117