原文:http://blog.csdn.net/shenziheng1/article/details/72821001

深度对抗学习在图像分割和超分辨率中的应用

原创 2017年05月31日 16:43:15
  • 1982

1.前言

深度学习已经在图像分类、检测、分割、高分辨率图像生成等诸多领域取得了突破性的成绩。但是它也存在一些问题。首先,它与传统的机器学习方法一样,通常假设训练数据与测试数据服从同样的分布,或者是在训练数据上的预测结果与在测试数据上的预测结果服从同样的分布。而实际上这两者存在一定的偏差,比如在测试数据上的预测准确率就通常比在训练数据上的要低,这就是过度拟合的问题。
另一个问题是深度学习的模型(比如卷积神经网络)有时候并不能很好地学到训练数据中的一些特征。比如,在图像分割中,现有的模型通常对每个像素的类别进行预测,像素级别的准确率可能会很高,但是像素与像素之间的相互关系就容易被忽略,使得分割结果不够连续或者明显地使某一个物体在分割结果中的尺寸、形状与在金标准中的尺寸、形状差别较大。

2.对抗学习

对抗学习(adversarial learning)就是为了解决上述问题而被提出的一种方法。学习的过程可以看做是我们要得到一个模型(例如CNN),使得它在一个输入数据X上得到的输出结果尽可能与真实的结果Y(金标准)一致。在这个过程中使用一个鉴别器(discriminator),它可以识别出一个结果y到底是来自模型的预测值还是来自真实的结果。如果这个鉴别器的水平很高,而它又把和Y搞混了,无法分清它们之间的区别,那么就说明我们需要的模型具有很好的表达或者预测能力。本文通过最近的几篇文章来介绍它在图像分割和高分辨率图像生成中的应用。

3.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)在像素级别尽可能接近,另一方面尽可能使判别器从整体上无法区分它们。下图是一个分割的结果,可见对抗模型得到的结果在空间上更加具有一致性。

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

4.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的标记数据进行训练的结果。相比于蓝线只使用标记数据进行训练,该方法得到了较大的性能提高,如红线所示。

5.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)的结果。

6.GAN用于高分辨率图像重建

Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network (https://arxiv.org/abs/1609.04802, 21 Nov, 2016)这篇文章将对抗学习用于基于单幅图像的高分辨重建。基于深度学习的高分辨率图像重建已经取得了很好的效果,其方法是通过一系列低分辨率图像和与之对应的高分辨率图像作为训练数据,学习从低分辨率图像到高分辨率图像的映射函数,这函数通过卷积神经网络来表示。

传统的方法一般处理的是较小的放大倍数,当图像的放大倍数在4以上时,很容易使得到的结果显得过于平滑,而缺少一些细节上的真实感。这是因为传统的方法使用的代价函数一般是最小均方差(MSE),即

该代价函数使重建结果有较高的信噪比,但是缺少了高频信息,出现过度平滑的纹理。该文章中的方法提出的方法称为SRGAN, 它认为,应当使重建的高分辨率图像与真实的高分辨率图像无论是低层次的像素值上,还是高层次的抽象特征上,和整体概念和风格上,都应当接近。整体概念和风格如何来评估呢?可以使用一个判别器,判断一副高分辨率图像是由算法生成的还是真实的。如果一个判别器无法区分出来,那么由算法生成的图像就达到了以假乱真的效果。

因此,该文章将代价函数改进为:

第一部分是基于内容的代价函数,第二部分是基于对抗学习的代价函数。基于内容的代价函数除了上述像素空间的最小均方差MSE以外,又包含了一个基于特征空间的最小均方差,该特征是利用VGG网络提取的图像高层次特征:

对抗学习的代价函数是基于判别器输出的概率:

其中DΘd是一个图像属于真实的高分辨率图像的概率。GΘg是重建的高分辨率图像。该方法的实验结果如下

7.小结

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

8.参考资料

[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).

版权声明:本文为博主原创文章,未经博主允许不得转载。

深度对抗学习在图像分割和超分辨率中的应用相关推荐

  1. 超分辨率 | 综述!使用深度学习来实现图像超分辨率

    关注公众号"AI算法修炼营",选择"星标"公众号 精选作品,第一时间送达 今天给大家介绍一篇图像超分辨率邻域的综述,这篇综述总结了图像超分辨率领域的几方面:pr ...

  2. 2020-10-18 从SRCNN到EDSR,总结深度学习端到端超分辨率方法发展历程

    本文转自:https://blog.csdn.net/aBlueMouse/article/details/78710553 超分辨率技术(Super-Resolution, SR)是指从观测到的低分 ...

  3. 从SRCNN到EDSR,总结深度学习端到端超分辨率方法发展历程(转)

    超分辨率技术(Super-Resolution, SR)是指从观测到的低分辨率图像重建出相应的高分辨率图像,在监控设备.卫星图像和医学影像等领域都有重要的应用价值. 本文针对端到端的基于深度学习的单张 ...

  4. 【超分辨率】从SRCNN到EDSR,总结深度学习端到端超分辨率方法发展历程

    此文转自 知乎专栏 棉花糖的工坊 作者 棉花糖 (侵删) 一直在学习图像超分辨率和深度学习,看到此文写得很好,故此转载分享.如有侵权,私信联系我,我将作删除. 超分辨率技术(Super-Resolut ...

  5. 从SRCNN到EDSR,总结深度学习端到端超分辨率方法发展历程 2018.11 写的还可以

    超分辨率技术(Super-Resolution, SR)是指从观测到的低分辨率图像重建出相应的高分辨率图像,在监控设备.卫星图像和医学影像等领域都有重要的应用价值. 本文针对端到端的基于深度学习的单张 ...

  6. 从SRCNN到EDSR,总结深度学习端到端超分辨率方法发展历程

    超分辨率技术(Super-Resolution, SR)是指从观测到的低分辨率图像重建出相应的高分辨率图像,在监控设备.卫星图像和医学影像等领域都有重要的应用价值. 本文针对端到端的基于深度学习的单张 ...

  7. 【超分辨率实验】Matlab-使用深度学习的单图像超分辨率(Single Image Super-Resolution Using Deep Learning)

    [超分辨率实验]Matlab-使用深度学习的单图像超分辨率(Single Image Super-Resolution Using Deep Learning) 此示例演示如何训练非常深的超分辨率 V ...

  8. 使用TensorFlow、Keras和深度学习实现像素无序超分辨率

    使用TensorFlow.Keras和深度学习实现像素无序超分辨率> pixel shuffle Super Resolution 像素无序/洗牌超分辨率 Deep Learning Super ...

  9. 深度学习在单图像超分辨率上的应用:SRCNN、Perceptual loss、SRResNet

    单图像超分辨率技术涉及到增加小图像的大小,同时尽可能地防止其质量下降.这一技术有着广泛用途,包括卫星和航天图像分析.医疗图像处理.压缩图像/视频增强及其他应用.我们将在本文借助三个深度学习模型解决这个 ...

最新文章

  1. 20、30、40岁年轻人,2020年的建议 转载
  2. SAP SD基础知识之免费订单
  3. filter和interceptor的区别
  4. ganglia-介绍安装(二)
  5. 2020 年国外 9 个顶级的 Java 框架,你知道几个?
  6. 初等数论--原根--a^k对模m的阶
  7. flink-faker用法示例(还没弄完,到时候再说)
  8. iOS事件的响应和传递机制
  9. Python统计一个字符串中所有字符在另一个字符串出现的总次数
  10. android 之 TabHost
  11. Matlab中的函数句柄@
  12. Win 2012 OS 安装.Net Framework 3.5
  13. matlab自定义函数如何报错,MATLAB自定义函数
  14. Java的三大基本特征及其特点
  15. root 红米note5_小米红米Note 5(不要降级刷低版本)手机完美获取root教程,最强root工具,亲测可用!...
  16. 程序设计的最基本的三种结构
  17. 【vue】配置cdn加速
  18. Debian9.5 系统配置NFS详细说明
  19. java 限制录入特殊字符_要求输入框里面必须同时含有字母,数字,特殊字符,且不小于8位...
  20. token系统讲解及过期处理

热门文章

  1. Ubuntu下bpf纯c程序的编写与运行
  2. 个人的关于c++运算符重载的总结
  3. Linux系统时间和时序,什么是时序竞态 Linux系统时序竞态问题分析
  4. hp 交换机远程连接_光收发器怎么安装,光纤收发器连接示意图解
  5. mysql delete and or_Mysql delete操作
  6. php判断一个字符串是否为纯数字,php判断字符串是否为数字
  7. php中的几种跳转语句以及各自的特点,PHP中的跳转语句有且仅有break和continue两个语句。...
  8. python requests 接口测试_python+requests接口测试基础
  9. 网易二面:Kafka为什么吞吐量大、速度快?
  10. 皮一皮:所以说,快乐水才会让人变胖...