深度学习已经在图像分类、检测、分割、高分辨率图像生成等诸多领域取得了突破性的成绩。但是它也存在一些问题。

首先,它与传统的机器学习方法一样,通常假设训练数据与测试数据服从同样的分布,或者是在训练数据上的预测结果与在测试数据上的预测结果服从同样的分布。而实际上这两者存在一定的偏差,比如在测试数据上的预测准确率就通常比在训练数据上的要低,这就是过度拟合的问题。

另一个问题是深度学习的模型(比如卷积神经网络)有时候并不能很好地学到训练数据中的一些特征。比如,在图像分割中,现有的模型通常对每个像素的类别进行预测,像素级别的准确率可能会很高,但是像素与像素之间的相互关系就容易被忽略,使得分割结果不够连续或者明显地使某一个物体在分割结果中的尺寸、形状与在金标准中的尺寸、形状差别较大。 
1、对抗学习

对抗学习(adversarial learning)就是为了解决上述问题而被提出的一种方法。学习的过程可以看做是我们要得到一个模型(例如CNN),使得它在一个输入数据X上得到的输出结果尽可能与真实的结果Y(金标准)一致。

在这个过程中使用一个鉴别器(discriminator),它可以识别出一个结果y到底是来自模型的预测值还是来自真实的结果。如果这个鉴别器的水平很高,而它又把X和Y搞混了,无法分清它们之间的区别,那么就说明我们需要的模型具有很好的表达或者预测能力。

2、GAN用于图像分割

Semantic Segmentation using Adversarial Networks (https://arxiv.org/abs/1611.08408, 25Nov 2016),这篇文章第一个将对抗网络(adversarial network)应用到图像分割中,该文章中的方法如下图。

左边是一个CNN的分割模型,右边是一个对抗网络。对抗网络的输入有两种情况,一是原始图像+金标准,二是原始图像+分割结果。它的输出是一个分类值(1代表它判断输入是第一种情况,0代表它判断输入是第二种情况)。代价函数定义为:

其中Θs和Θa分别是分割模型和对抗模型的参数。yn是金标准,s(xn)是分割结果。上式第一项是经典的分割模型的代价函数,例如交叉熵(cross entropy)即概率值的负对数。第二项和第三项是对抗模型的代价函数,由于希望对抗模型尽可能难以判别yn和S(xn), 第二项的权重是-λ。

训练过程中,交替训练对抗模型(Θa)和分割模型(Θs)。训练对抗模型的代价函数为:

使该函数最小化,得到性能尽可能好的判别器,即对抗模型。训练分割模型的代价函数为:

yn与s(xn)在像素级别尽可能接近,另一方面尽可能使判别器从整体上无法区分它们。下图是一个分割的结果,可见对抗模型得到的结果在空间上更加具有一致性。

另外从训练过程中的性能上也可以看出,使用对抗训练,降低了过度拟合。

3、GAN用于半监督学习

An Adversarial Regularisation for Semi-Supervised Training of Structured Output Neural Networks(https://arxiv.org/pdf/1702.02382.pdf, 8 Feb 2017),这篇文章中使用对抗网络来做图像分割的半监督学习。半监督学习中一部分数据有标记,而另一部分数据无标记,可以在准备训练数据的过程中节省大量的人力物力。

假设(xt,λt)是有标记的训练数据,xu是未标记的训练数据, 理论上分割结果fw(xt)与fw(xu)应该同分布,实际上由于x的维度太大而训练数据不足以表达它的所有变化,因此fw(xt)与fw(xu)存在一定偏差。该文中使用一个判别器δu(y)来得到来自于有标记的训练数据的分割结果fw(xt)的概率,1-δu(y)作为y是来自于未标记的训练数据的分割结果的概率。

训练过程的代价函数为:

C(w)是常规的基于标记数据的代价函数,Cadv(w)是基于未标记数据的代价函数,定义为:

该代价函数使分割算法在标记数据和未标记数据上得到尽可能一致的结果。整个算法可以理解成通过使用未标记数据,实现对分割网络的参数的规则化。

上图是在CamVid数据集上分别使用1/8, 1/4, 1/2 和1/1的标记数据进行训练的结果。相比于蓝线只使用标记数据进行训练,该方法得到了较大的性能提高,如红线所示。

4、GAN用于域适应的分割

关于域的理解:域适配当中的域指的是一个领域,类似于聚类中的簇。通常,域适配的文章中的实验是针对分类任务的,某个类别就可以看作是一个领域域。但是在分割任务重,一个域指的是一类分割场景,比如街道场景、游戏场景。这里的场景中包含多中类别的物体,但是就分割任务而言,某一个场景就是一个领域。
目前的自适应语义分割的训练策略包含两种:对抗训练和自训练。针对语义分割网络的架构,分别从输入和输出来做文章。

FCNs in the Wild: Pixel-level Adversarial and Constraint-based Adaptation (https://arxiv.org/abs/1612.02649, 8 Dec 2016 ),这篇文章将对抗学习用到基于域适应的分割中。

域适应是指将在一个数据集上A训练得到的模型用到与之类似的一个数据集B上,这两个数据集的数据分布有一定的偏移(distribution shift),也叫做域偏移(domain shift)。A 被称为源域 source domain,B被称为目标域 target domain。源域中的数据是有标记的,而目标域的数据没有标记,这种问题就被称为非监督域适应。该文章要解决的问题如下图所示:

该文章认为一个好的分割算法应该对图像是来自于源域还是目标域不敏感。具体而言就是从输入图像中提取的抽象特征不受域之间的差异影响,因此从源域中的图像提取的抽象特征与从目标域中的图像提取的抽象特征很接近。那么如果用一个判别器来判断这个抽象特征是来自于源域中的图像还是来自于目标域中的图像,这个判别器应该尽量无法判断出来。方法的示意图如下:

文章认为有两个方面引起了域之间的偏移,一个是全局性的,比如不同天气状况下的街道场景,一个是与特定的类别相关的 ,比如不同国家城市之间的交通标志。 因此在代价函数中考虑了这两种情况:

其中,第一项是通常的监督学习的代价函数。

第二项是对抗学习的目标函数,该函数又包括两个最小化过程,一个是更新特征提取网络,使得从两个域中的图像提取的特征接近从而判别器无法区分,一个是更新判别器参数,使它尽可能区分两个域中的图像的特征。

第三项Lmi(IT,PLs)是一个与特定类别有关的代价函数。其思想是利用源域中的标记结果,统计出各个类别物体的尺寸范围,再用这些尺寸范围作为先验知识去限制目标域中图像的分割结果。

上图是在Cityscapes数据集上的结果。实验中把训练集作为源域,验证集作为目标域,分别展示了只使用全局性的域适应(GA)和类别特异性域适应(CA)的结果。

5、小结

对抗学习的概念就是引入一个判别器来解决不同数据域之间分布不一致的问题,通过使判别器无法区分两个不同域的数据,间接使它们属于同一个分布,从而作为一个规则化的方法去指导深度学习模型更新参数,达到更好的效果。关于它的数学证明,可以参见[1]。

6、参考资料

[1]  Goodfellow, Ian, Jean Pouget-Abadie, Mehdi Mirza, Bing Xu, David Warde-Farley, Sherjil Ozair, Aaron Courville, and Yoshua Bengio. "Generative adversarial nets." In Advances in neural information processing systems, pp. 2672-2680. 2014.
[2]  Luc, Pauline, Camille Couprie, Soumith Chintala, and Jakob Verbeek. "Semantic Segmentation using Adversarial Networks." arXiv preprint arXiv:1611.08408 (2016).
[3]  Mateusz Koziński, Loïc Simon, Frédéric Jurie, "An Adversarial Regularisation for Semi-Supervised Training of Structured Output Neural Networks", arXiv preprint arXiv:1702.02382(2017).
[4] Hoffman, Judy, Dequan Wang, Fisher Yu, and Trevor Darrell. "FCNs in the Wild: Pixel-level Adversarial and Constraint-based Adaptation." arXiv preprint arXiv:1612.02649 (2016).
[5] Ledig, Christian, Lucas Theis, Ferenc Huszár, Jose Caballero, Andrew Cunningham, Alejandro Acosta, Andrew Aitken et al. "Photo-realistic single image super-resolution using a generative adversarial network." arXiv preprint arXiv:1609.04802 (2016)

感谢作者,参考资料:

https://blog.csdn.net/shenziheng1/article/details/72821001

https://blog.csdn.net/hairui88/article/details/83692090

转载于:https://www.cnblogs.com/ariel-dreamland/p/9966099.html

生成对抗网络与图像分割相关推荐

  1. 【视频课】生成对抗网络经典任务,详解基于GAN的图像生成算法!

    前言 欢迎大家关注有三AI的视频课程系列,我们的视频课程系列共分为5层境界,内容和学习路线图如下: 第1层:掌握学习算法必要的预备知识,包括Python编程,深度学习基础,数据使用,框架使用. 第2层 ...

  2. 【杂谈】有三AI秋季划增加生成对抗网络小组,你准备好大GAN一场了吗

    文/编辑 | 言有三 作为被誉为"下一代深度学习技术",同时已经在工业界能够真正成熟稳定应用的GAN,有三AI一直在关注相关的技术,并输出了大量的内容. 那如何从理论上和实践上更好 ...

  3. 万字综述之生成对抗网络(GAN)

    作者丨郭晓锋 单位丨爱奇艺 研究方向丨图像生成 前阵子学习 GAN 的过程发现现在的 GAN 综述文章大都是 2016 年 Ian Goodfellow 或者自动化所王飞跃老师那篇.可是在深度学习,G ...

  4. [Python图像识别] 四十九.图像生成之什么是生成对抗网络GAN?基础原理和代码普及

    该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...

  5. sagan 自注意力_请使用英语:自我注意生成对抗网络(SAGAN)

    sagan 自注意力 介绍 (Introduction) In my effort to better understand the concept of self-attention, I trie ...

  6. 沐神点赞!同济子豪兄精读AI经典论文,包括图像分类、目标检测、生成对抗网络、轻量化卷积神经网络等领域...

    读研/读博的你,是不是符合: 毕设/研一/博一科研小白刚进课题组,不知道如何写开题报告和综述? 前沿顶会.期刊论文.综述文献浩如烟海,不知道学习路径,无从下手? 导师放养,既不懂也不管,师兄各忙各的, ...

  7. GAN生成对抗网络综述

    前阵子学习GAN的过程发现现在的GAN综述文章大都是2016年Ian Goodfellow或者自动化所王飞跃老师那篇(最新发现一篇更新paper,也是王飞跃老师的:http://blog.scienc ...

  8. 四天搞懂生成对抗网络(三)——用CGAN做图像转换的鼻祖pix2pix

    点击左上方蓝字关注我们 [飞桨开发者说]吕坤,唐山广播电视台算法工程师,PPDE飞桨开发者技术专家,喜欢研究GAN等深度学习技术在媒体.教育上的应用. Pix2Pix的不甘の野望 也许是CycleGA ...

  9. GANs:生成对抗网络系列及应用

    GANs Goodfellow和Bengio等人发表在NIPS 2014年的文章Generative Adversarial Network是生成对抗网络的开创文章,论文思想启发自博弈论中的二人零和博 ...

最新文章

  1. Hadoop学习之MapReduce(一)
  2. 合肥工业大学网络程序设计实验报告_【院校推荐】2020合肥工业大学计算机考研备考指导及报考分析...
  3. python可以写安卓应用吗_python可以编写android程序吗?
  4. 强大的CSS3动画库animate.css
  5. linux下Epoll实现简单的C/S通信
  6. 【LeetCode笔记】剑指 Offer 33. 二叉树的后序遍历序列(Java、递归、栈)
  7. 锐捷ap怎么设置_新房装修网络布线方案一:AC+AP模式,弱电箱只放光猫和集成AC...
  8. SQL删除数据delete
  9. FIFO算法与LRU算法软考试题
  10. 非科班程序员和科班程序员的差距到底在哪里?
  11. ubuntu安装注意事项:
  12. mt4代理服务器存放文件,mt4如何保存设置好的指标?
  13. 微型计算机说明书,B52微机系统使用手册.doc
  14. cc2430的ram和rom的划分
  15. 在线latex 网址
  16. kafka消费者报错:Consider using the new consumer by passing [bootstrap-server] instead of [zookeeper].
  17. 更好的Google Glass:棱镜变长、Intel Atom处理器和外置电池组
  18. vijos 1641 Vs Snowy
  19. 潜心十年,修炼成编程高手
  20. 教程--为公众号接入客服机器人

热门文章

  1. ARC学习笔记(一)
  2. 页面中flash文件的加载
  3. 【重识 HTML + CSS】网页基础知识、基本 HTML 标签
  4. php windows svn,windows下安装svnmanager
  5. mtk 帧同步_【小松教你手游开发】【面试必读(编程基础)】网络游戏同步方式(帧同步和状态同步)...
  6. matlab编写信号采集程序,MATLAB语音信号采集课程设计
  7. java 序列化 缓存_由缓存导致的一个java序列化问题
  8. mysql innodb 间隙锁_Mysql innodb 间隙锁
  9. python类加载_如何重新加载一个类在python shell?
  10. java 字符终端库_Java 字符终端上获取输入三种的方式分享