基于语义分割和生成对抗网络的缺陷检测算法
一、缺陷类型
如下图所示,缺陷类型主要有缺损和裂纹两个类型。
二、语义分割网络
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训练模型的生成式模型为缺陷分割网络,与常见的条件生成式对抗模型的训练方式相同,本文设计的网络也使用交替训练的方式。
- 对于作为输入的一组图片(包含原图和标记图),首先训练判别式网络,此时生成式模型参数固定。训练的目的在于使判别式模型具有可以分辨输入的图像属于真实人工标记图还是生成网络生成的图像,于是训练过程如下:
- 把输入的一对图片中的原始工件图x和人工标记图Y同时输入到判别式网络D中,因为此时的Y是x的真实对应,所以计算判别式网络的损失函数时标签应该为真,然后以反向传播算法更新判别式网络;
- 把数据对中的工件原图x输入到生成式网络G中,得到缺陷分割生成图G(x),然后x与G(x)同时输入到判别式网络D中,此时的G(x)为生成图像,不是x的真实对应图,所以计算判别式网络损失函数时,标签应该设为假,同样地以反向传播算法更新判别式网络。
- 然后训练生成生成式网络,同样地判别式模型维持参数不变,训练过程如下:
- 把数据对中原始工件图x输入到生成式网络G,得到缺陷分割图G (x),计算G (x)与人工标记图y的L1损失函数值(图像空间距离),记为LGL_GLG;
- 把G (x)与原始工件图像x输入到判别式网络D,由于训练生成式网络G的目的是要求其能生成的分割图接近真实标记图,所以此时计算判别式网络的损失函数应该设标签为真。经过训练后的判别式网络具备判断输入图像是真实标记图还是生成图像的能力,所以此时它的损失函数值能反映输入图像G (x)与真实图像的相似程度,记为LDL_DLD;
- 更新生成式网络G的参数时,把生成图与真实标记图的空间距离LGL_GLG与判别式网络计算所得的相似程度LDL_DLD同时作为反向传播算法的代价函数,公式表示为LtotalL_{total}Ltotal = LGL_GLG + λLDλL_DλLD,,其中λ为判别式网络损失函数权重,用于决定判别式网络对生成式网络的监督反馈强度,当λ=0时,等价于传统的语义分割网络训练方法。最后利用反向传播算法更新生成式网络G的参数。
- 对于每一对训练样本,重复(1)(2)两个步骤,直到所有训练样本都参与到训练中,则完成一次训练。当训练次数达到设定量时,训练结束。
判别式网络具体结构
判别式网络输出的是一个1x16x16的feature map,值为1和0。pos标为全1,neg标为全0。
基于语义分割和生成对抗网络的缺陷检测算法相关推荐
- 【论文笔记】基于生成对抗网络的强化学习算法的研究
目录 摘要 关键词 0 引言 1 相关理论 1.1 强化学习理论 1.2 生成对抗网络理论 1.3 基于生成对抗网络的强化学习算法 1.3.1 算法总体结构框架 2 实验与分析 3 总结 摘要 解决: ...
- 【步态识别】MvGGAN 基于多视角步态生成对抗网络 算法学习《Multi-View Gait Image Generation for Cross-View Gait Recognition》
目录 1. 论文&代码源 2. 论文亮点 3. 多视角的生成对抗网络 3.1 网络生成历程 3.2 网络结构 3.3 损失函数 3.3.1 判别器损失(Discriminator Loss) ...
- 基于深度卷积的生成对抗网络
生成对抗网络(GAN) GAN分为两部分,生成器和鉴别器 生成器 接受要用于伪造的数据(数据可以是准备好的,用于伪造成真实数据风格的素材,也可以像图中一样,是杂乱随机的数据点) 理想情况下,它能够输出 ...
- 【毕业设计】基于生成对抗网络的照片上色动态算法设计与实现 - 深度学习 opencv python
文章目录 1 前言 1 课题背景 2 GAN(生成对抗网络) 2.1 简介 2.2 基本原理 3 DeOldify 框架 4 First Order Motion Model 1 前言
- 基于语义分割的身份证部件解析和文字检测
概述 这个工作主要是利用之前项目的语义分割算法,顺便探索一下身份证部件解析的功能.安排实习生利用合成的身份证照片进行了语义分割的标注. 我的目的有两个:1.检测身份证上的信息是否齐全:2.确定身份证各 ...
- 中文论文评论(1)基于生成对抗网络的人脸铅笔画算法【吉林大学学报】
闲的无聊,想做下中文核心的论文评论,详细的记录一下,论文的创新点,以及创新点的来源.方便水文. 1.论文的主要内容 论文主要做的就是利用GAN 把人脸图片转为铅笔画的形势.文章描述的呢,是采用的本实 ...
- GANs:生成对抗网络系列及应用
GANs Goodfellow和Bengio等人发表在NIPS 2014年的文章Generative Adversarial Network是生成对抗网络的开创文章,论文思想启发自博弈论中的二人零和博 ...
- 生成对抗网络(GAN)的5个最有趣的应用
https://www.toutiao.com/a6706480830081925646/ "GAN"这个词是由Ian Goodfellow在2014年引入的,但这个概念早在199 ...
- GAN(Generative Adversarial Nets (生成对抗网络))
一.GAN 1.应用 GAN的应用十分广泛,如图像生成.图像转换.风格迁移.图像修复等等. 2.简介 生成式对抗网络是近年来复杂分布上无监督学习最具前景的方法之一.模型通过框架中(至少)两个模块:生成 ...
最新文章
- C++union 联合
- Flink异步io应用场景之流表join维表
- vmware 指定的网络名不可用
- [WP8.1UI控件编程]Windows Phone自定义布局规则
- repomd.xml错误14 not found
- Java当中包装类的理解和一些常用方法的分享(学习后分享)
- php 接入微信 验证,PHP实现微信公众平台企业号验证接口
- RegOpenKeyEx 返回值 2
- sap 供应商表_SAP系统玩阴的?
- 使用nagios监控oracle
- 公交导航准确度大PK:高德地图百度地图谁更精确
- matlab 中文件夹下图像的批处理
- 区别谷歌浏览器和360极速浏览器,pingfang字体在360中模糊
- 有关十二个“一”的文艺创作-拓展版
- 紧急通知!限招100人:免费培训海外抖音TikTok视频搬运赚钱技能,0基础轻松月入2万+!...
- MS发起的PDP上下文激活过程----PPP和PDP激活是什么区别
- 自学JQuery Mobile的几个例子
- 数字芯片设计中的时钟分频电路,你了解多少?
- 【大数据】Hadoop (二) HDFS
- 局域网内PC端远程监控android设备界面