96编辑器旗下产品
找图
终身
ID:0
到期时间:永久
退出登录
您的位置:首页 > 百科管理 > 详情

图像修复gan-图像修复论文笔记:Generative Image Inpainting with Contextual Attention

原创:找图网 2023-04-25 13:04:09
  • SRGAN-超分辨率重建GAN

  • SRGAN是2017年CVPR中备受关注的超分辨率论文,把超分辨率的效果带到了一个新的高度。所谓超分辨率重建就是将低分辨率的图像恢复成对应的高分辨率图像。由于地分辨率图像存在大量的信息缺失,这是一个病态的求逆解问题,尤其在恢复高倍分辨率图像的时候。传统方法通过加入一些先验信息来恢复高分辨率图像,如,插值法、稀疏学习、还有基于回归方法的随机森林等,CNN在超分辨率问题上取得了非常好的效果。

    SRGAN是基于CNN采用GAN方法进行训练来实现图像的超分辨率重建的。它包含一个生成器和一个判别器,判别器的主体是VGG19,生成器的主体是一连串的Residual block,同时在模型的后部加入了subpixel模块,借鉴了Shi et al 的Subpixel Network的思想,让图片在最后的网络层才增加分辨率,使得提升分别率的同时减少了计算量。论文中给出的网络结构如图所示:

    论文中还给出了生成器和判别器的损失函数的形式:

    1.生成器的损失函数为 :

    其中, 为本文所提出的感知损失函数, 。

    内容损失 : ;   训练网络时使用均方差损失可以获得较高的峰值信噪比,一般的超分辨率重建方法中,内容损失都选择使用生成图像和目标图像的均方差损失(MSELoss),但是使用均方差损失恢复的图像会丢失很多高频细节。因此,本文先将生成图像和目标图像分别输入到VGG网络中,然后对他们经过VGG后得到的feature map求欧式距离,并将其作为VGG loss。

    对抗损失 : ; 为了避免当判别器训练较好时生成器出现梯度消失,本文将生成器的损失函数   进行了修改。

    2.判别器的损失函数为:

    与普通的生成对抗网络判别器的的损失函数类似。

  • 图像修复论文笔记:Generative Image Inpainting with Contextual Attention

  • 目前的基于深度学习的方法已经显示了对于修复图像中大量缺失区域的具有挑战性的任务的有希望的结果。这些方法可以生成视觉上合理的图像结构和纹理,但通常会产生与周围区域不一致的扭曲结构或模糊纹理。这主要是由于卷积神经网络不能明确复制借用远处空间的某一位的纹理导致的,但是传统的修复方法特别适合这一问题。文章对这一问题进行了解决。

    文章提出了一种新的基于深度生成模型的方法,该方法不仅可以合成新的图像结构,还可以在网络训练期间明确利用周围的图像特征作为参考,以便做出更好的预测。该模型是一个前馈全卷积神经网络,它在测试时可以处理任意位置及大小的孔的修复问题。对包括人脸(CelebA,CelebA-HQ),纹理(DTD)和自然图像(ImageNet,Places2)在内的多个数据集进行的实验表明,其提出的方法可以产生比现有方法更高质量的修复结果。

    文章首先通过复制和改进近期最新的修复模型  Globally and locally consistent image completion 来构建其基础的生成图像修复网络,作者引入了粗略到细化的网络结构,其中第一个网络进行初始粗略预测,第二个网络将粗略预测作为输入并预测精确结果。

    粗网络的训练损失为 reconstruction loss,细化网络的的损失为 reconstruction loss 和 GAN losses。直观地说,精细网络比缺少区域的原始图像拥有更完整的场景,所以它的编码器可以比粗网络学习更好的特征表示。

    除此之外,在下一部分,作者引入了attention mechanism

    卷积神经网络逐层地处理具有局部卷积核的图像特征,因此对于从远处空间位置获取特征没有效果。为了克服这个局限性,作者考虑了关注机制,并在深度生成网络中引入了一个新的contextual attention layer。

    文章使用包括Places2 ,CelebA人脸,CelebAHQ人脸,DTD纹理和ImageNet 在内的四个数据集进行了模型的评估。对比的模型为  Globally and locally consistent image completion 所提出的模型。

    tensorflow版本(官方):

  • GAN 拟合高斯分布数据Pytorch实现

  • GAN本身是一种生成式模型,所以在数据生成上用的是最普遍的,最常见的是图片生成,常用的有DCGAN WGAN,BEGAN。目前比较有意思的应用就是GAN用在图像风格迁移,图像降噪修复,图像超分辨率了,都有比较好的结果。目前也有研究者将GAN用在对抗性攻击上,具体就是训练GAN生成对抗文本,有针对或者无针对的欺骗分类器或者检测系统等等,但是目前没有见到很典范的文章。好吧,笔者有一个项目和对抗性攻击有关,所以要学习一下GAN。

    GANs组成:生成器和判别器。结构如图1所示

    针对问题: 给定一批样本,训练一个系统能够生成类似的新样本

    核心思想:博弈论中的纳什均衡,

    判别器D 的目的是判断数据来自生成器还是训练集,

    生成器G 的目的是学习真实数据的分布,使得生成的数据更接近真实数据,

    两者不断学习优化最后得到纳什平衡点。

    D( x) 表示真实数据的概率分布,

    G( z) 表示输入噪声z 产生的生成数据的概率分布

    训练目标:G( Z)在判别器上的分布D( G( Z) ) 更接近真实数据在判别器上的分布D( X)

    接下来就来实现我们的例子把,目标是把标准正态分布的数据,通过训练的GAN网络之后,得到的数据x_fake能尽量拟合均值为3方差为1的高斯分布N(3,1)的数据。

    可以看出生成器其实就是简单的全连接网络,当然CNN,RNN等网络都是适合GAN的,根据需要选择。

    可以看出判别器其实也是简单的全连接网络,当然CNN,RNN等网络都是适合GAN的,根据需要选择。

    在这里想说的是对于判别器和生成器的训练是分开的,训练判别器的时候固定生成器,训练生成器的时候固定判别器,如此循环。本例子中先训练三次判别器,接着训练一次生成器。

    为了便于理解具体训练过程,图2 、图3展示了判别器和生成器训练时的数据流向,具体就不展开了,参考注释。

    画图函数敬上

    然后调用main()函数就好了

    红色是目标分布,蓝色是生成分布,还是有一定效果的额。

    感受到是在调参了,请教我如何学习生成(xie)对抗(lun)网络(wen)。

    最新文章 更多
    最新素材 更多
    公司介绍 网站地图 图片资讯
    Copyright © 2010-2022 山东找图网络科技有限公司  鲁ICP备18007836号-3  邮箱:15653358549@163.com