本文已参加【新人创作礼】活动,一同开启创作之路。
导读
相比于之前,在图画修正网络结构中添加了残差块,并对每个部分区域都进行了真假的判别。
今日,我想给咱们到目前为止讨论过的深度图画修正做一个回顾。另外,我想再温习一篇图画修正的论文,稳固深度图画修正的常识。
回顾
在这儿,让咱们首先扼要回顾一下咱们从曾经的帖子中学到了什么。
Context Encoder (CE)是第一个基于GAN的修正算法。它强调了在修正使命中了解整个图画的上下文的重要性,并运用(channel-wise)全衔接层来实现这一功能。文章链接:用生成模型来做图画康复的介绍和回顾:上下文编码器
Multi-scale Neural Patch Synthesis (MNPS) 能够看作是CE的改善版别。它由两个网络组成,即内容网络和纹路网络。内容网络是CE,纹路网络是预先练习好的用于分类使命的VGG-19。运用纹路网络的想法来自于最近成功的神经风格迁移。简略地说,关于高级视觉使命(如对象分类),预练习网络的神经呼应包括有关图画方式的信息。经过鼓舞在缺失区域内外发生类似的神经呼应,咱们能够进一步增强生成像素的纹路细节,因而完结的图画将更实在。文章链接:运用多规范patch合成来做高分辨率的图画复原
Globally and Locally Consistent Image Completion (GLCIC) 是深度图画修正使命中的一个里程碑。作者选用彻底卷积网络(FCN)与扩张卷积(DilatedConv)作为他们提出的模型的框架。FCN答应不同的输入巨细和带胀大的conv来替换通道全衔接层,用于了解整个图画上下文。在此基础上,选用两种鉴别器对两种规范下的完好图画和实在图画进行差异。一个大局判别器着眼于整个图画,而一个部分判别器着眼于部分填充后的图画patch。文章链接:图画修正中的一个里程碑:大局和部分一致性的图画补全
今日,咱们将回顾这篇论文,Patch-Based Image Inpainting with Generative Adversarial Networks。这能够看作是GLCIC的一种变体,因而咱们能够对这种典型的网络结构做了一些修改。
动机
本文作者期望利用残差链接和PatchGAN鉴别器的优势,进一步进步其修正作用。图画辨认的深度残差学习(Deep Residual Learning for Image Recognition,ResNet)在深度学习方面取得了明显的成就。
经过运用残差块(残差衔接),咱们能够练习非常深的网络,许多论文标明残差学习关于获得更好的成果是有用的。
PatchGAN在图画对图画的转化方面也取得了巨大的成功。与典型GAN中的鉴别器相比,PatchGAN鉴别器(参见下面的图1)输出的是一个矩阵(2d-array),而不是单个值。简略来说,典型GAN鉴别器的输出是0 ~ 1的单个值。这意味着鉴别器会看整个图画,判别这幅图画是真的仍是假的。假如图画是实在的,它应该等于1。假如图画是假的(即生成的图画),它应该给出0。该式子重视的是整个图画,因而可能忽略图画的部分纹路细节。另一方面,PatchGAN判别器的输出是一个矩阵,这个矩阵中的每个元素都在0到1之间。留意,每个元素代表输入图画中的一个部分区域,如图1所示。因而,这一次,判别器需求检查多个部分图画patch,并判别每个patch的真伪。经过这样做,生成的图画的部分纹路细节能够得到增强。这便是为什么PatchGAN被广泛运用于图画生成使命。
图1,PatchGAN 判别器,输出是一个矩阵,矩阵中的每个元素表明输入图画的一个部分区域,假如部分区域是实在的,咱们会得到1,否则是0
介绍
图画修正能够看作是一种图画生成使命。咱们期望填充图画中缺失的区域(即生成缺失的像素),这样图画就完好了,看起来更实在。
为了生成传神的图画,GAN一般用于不同的图画生成使命,包括图画修正。典型的GAN鉴别器只经过一个单一的值[0,1]来判别输入是否为实数。本文将这种GAN鉴别器称为大局GAN (G-GAN)。
另一方面,如前一节所述,PatchGAN会在输入中检查多个部分区域,并独立决议每个部分区域的实在性。研究人员现已标明,运用PatchGAN能够经过重视更多的部分纹路细节,进一步进步生成图画的视觉质量。
计划
生成器选用了具有胀大卷积的残差块(胀大残差块)。(作者期望经过运用残差学习来进步修正作用)
Mixture of PatchGAN and G-GAN discriminators (PGGAN) 被提出,以鼓舞输出完结的图画应该具有大局和部分实在的外观。(与GLCIC的目的相同,GLCIC运用两个鉴别器,一个大局和一个部分)
奉献
PatchGAN和G-GAN discriminator (PGGAN)的组合其间前期的卷积层是同享的。试验成果标明,该办法能够进一步增强生成像素的部分纹路细节。
生成网络中运用了胀大和插值卷积。经过运用胀大残差块,改善了修补作用。
办法
图2,提出的ResNet结构的生成网络和PGGAN判别器
图3,提出的GLCIC的结构
图2和3别离给出本文和GLCIC所提出的网络结构。很明显,他们是类似的。两个主要差异是 i) 在生成器中运用了胀大残差块,ii) 修改了GLCIC中的大局和部分判别器。
在GLCIC中,大局判别器以整个图画作为输入,而部分辨认器以填充区域周围的一个子图画作为输入。将两个判别器的输出衔接起来,然后回来一个值来显现输入是真仍是假(一个对立丢失)。从这个视点来看,部分判别器会聚集在部分填充的图画patch上,然后增强填充的图画patch的部分纹路细节。一个主要缺点是部分判别器的输入依赖于缺失区域,作者在练习期间假定一个单一的矩形缺失区域。
关于PGGAN判别器,咱们几乎没有前期同享卷积层,如图2所示。然后,咱们有两个分支,一个给出一个输出值(G-GAN),一个给出一个输出矩阵(PatchGAN)。请留意1256是1616矩阵的reshape方式。如上所述,这也是一种让判别器在差异完好图画和实在图画时同时重视大局(整幅图画)和部分(部分图画patch)信息的办法。请留意,在这种情况下,咱们有两个对立丢失,因为咱们有两个分支。
胀大残差块
在之前的文章中,我现已介绍过CNN的胀大卷积。简略回想一下,胀大卷积经过跳过接连的空间位置添加感受野,而不添加额外的参数。
图4,残差块类型,从上到下依次为:规范残差块、扩张卷积在前的残差块、扩张卷积在后的剩余块\
简略地说,残差块能够写成Y = X + F(X),其间Y是输出,X是输入,F是几个层次的序列。在图4的根本残差块中,F为conv – norm – relu – conv。这意味着咱们将X输入一个卷积层,然后是一个归一化层,一个ReLU激活层,最终是另一个卷积层得到F(X)。一个关键是,输入X是直接添加到输出Y上的,这便是咱们称之为跳动衔接的原因。因为在这条途径上没有任何可练习的参数,咱们能够确保在反向传播过程中有必要有足够的梯度传递到前期的层。因而,咱们能够练习一个非常深度的网络而不会遇到梯度消失的问题。
为什么要用残差块?
你可能想知道运用残差块的优点。你们中的一些人可能现已知道答案了。以下是我的观点。让咱们比较一下Y = X + F(X)和Y = F(X),关于Y = X + F(X),咱们学习的实际上是F(X) = Y – X, Y和X的差值。这便是所谓的残差学习,X能够作为残差学习的参阅。另一方面,关于Y = F(X),咱们直接学习在没有参阅的情况下将输入X映射到输出Y。所以,人们认为残差学习是比较简略的。更重要的是,许多论文现已证明了残差学习能够带来更好的作用!
因为胀大卷积有助于添加感受野,这对修正使命很重要,作者用胀大卷积层替换了两个规范卷积层中的一个,如图4所示。胀大残差块有两种类型,i) 以胀大卷积在前,ii) 胀大卷积在后。在本文中,依据胀大残差块的数量,胀大率从1开端每次添加2倍,例如,假如有4胀大残差块,胀大率为1,2,4,8。
插值卷积
为了解决规范反卷积(即转置卷积)造成的伪影,作者在这项工作中选用了插值卷积。关于插值卷积,首先运用典型的插值办法,如双线性和双三次插值,将输入调整到所需的巨细。然后,运用规范卷积。下面的图5显现了转置卷积和插值卷积的差异。
图5,运用转置卷积核插值卷积的可视化比较
在我看来,这两种类型的卷积具有类似的功能。有时转置卷积更好,有时插值插卷积更好。
判别网络
咱们讨论了本文运用的PGGAN鉴别器。回想一下,这儿的鉴别器有两个分支,一个分支给出一个值,就像global-GAN (G-GAN)相同,另一个分支给出256个值,其间每个值表明输入中部分区域的实在性。
重视输入图画中多个部分区域的实在性,有助于改善完结图画的部分纹路细节。
目标函数
实际上,本文中运用的丢失函数(即目标函数)与咱们之前讨论过的论文或多或少是相同的。
重构丢失:这种丢失是为了保证逐像素的重构精度。咱们一般运用L1或L2(欧几里得)距离来核算这个丢失。本文选用L1丢失作为它们的重构损耗。
N为练习批中的图画数量。W、H、C别离是练习图画的宽度、高度和通道。x和y别离为ground truth和模型给出的完好图画。
对立丢失:我想你们大多数人现在都了解这种典型的对立丢失。
x是ground truth,所以咱们期望D(x)回来1,否则回来0。留意,D只是鉴别器的函数方式。
联合丢失:
式3为其联合丢失函数。Lambda 1, 2, 3用来平衡每个丢失的重要性。g_adv表明大局分支给出的输出,而p_adv表明PatchGAN分支给出的输出。需求留意的是,在他们的试验中, 1,2,3别离设置为0.995,0.0025和0.0025。
试验成果
在他们的试验中运用了三个数据集。i) Paris StreetView包括14900张练习图画和100张测验图画。ii) 谷歌StreetView拥有62058张高分辨率图画,分为10个部分。第一部分和第10部分用于测验,第9部分用于验证,其余部分用于练习。总共有46200张练习图画。iii) Places包括超越800万的练习图画。该数据集仅用于测验,以显现其通用性。
为了比较典型残差块和胀大残差块的功能,练习了PGGAN-Res和PGGAN-DRes两个模型。关于PGGAN-Res,运用根本残差块和3个子采样块。这意味着输入被向下采样了2倍3次。关于PGGAN-DRes,运用胀大残余块和2个子采样块。这意味着输入被下采样2倍。
图6,用不同的判别器练习同一生成器网络的成果。
图6显现了用不同判别器练习同一生成器网络的修正成果。从图6的最终一列来看,假如只运用G-GAN鉴别器,则会观察到窗口的部分纹路细节很差。与G-GAN相比,PatchGAN供给了更好的窗口部分纹路细节,但窗口的旮旯看起来与大局结构不一致。总之,PGGAN能够供给最好的视觉作用。
表1,巴黎街景256×256图画的定量比较
表2,来自巴黎街景数据会集512×512图画的定量比较
表1和2给出了在256256和512512两种分辨率下,不同办法在Paris StreetView数据集上的定量比较。需求留意的是,CE是Context Encoder, NPS是Multi-scale Neural Patch Synthesis (MNPS) , GLGAN是global and local Consistent Image Completion (GLCIC)。咱们现已在前面的文章中讨论了所有这些办法。
从表1和表2能够明显看出,PGGAN对所有这些措施都有改善。可是,请记住,视觉质量比这些客观的评价目标更重要。
图7,用不同的办法对完好图画进行感知比较。
作者对这些办法进行了感知评价,如图7所示。12名投票者被要求对原始图画的天然程度和各种办法的修正成果进行评分。每个选民从巴黎街景数据会集随机分配了500张图画。留意CE是在128128图画上练习的,因而它在256256测验图画上的功能很差。其他办法在这种感知评价上也有类似的体现。
图8,256×256巴黎街景数据集的量化比较
图9,512×512巴黎街景数据集的量化比较
图8和图9别离显现了巨细为256256和512512的图画的修正成果。我建议读者扩大以更好地检查成果。在我看来,PGGAN-DRes和PGGAN-Res一般会给出更好的部分纹路细节,例如,图8中的第4行和图9中的第3行。
总结
首先,将残差学习的概念以胀大残差块的方式嵌入生成网络。从他们的试验成果来看,残差学习有助于进步修正功能。
其次,将PatchGAN判别的概念与传统的GAN判别器 (G-GAN)相结合,以鼓舞更好的部分纹路细节和大局结构一致性。
关键
和曾经相同,我想在这一节中列出一些有用的关键。假如你看过我之前的文章,你会发现这篇文章相对简略。
实际上,本文的大部分内容与GLCIC类似。在网络结构中嵌入了两个新的概念,即残差块和PatchGAN判别器,进一步增强了修正成果。
期望你能认识到这种典型的图画修正网络架构。后来的图画修正的论文中提出的网络或多或少都是相同的。
你还应该留意到重建丢失和对立丢失是图画修正使命的两个根本丢失。本文提出的修正论文的办法有必要包括L1丢失和对立性丢失。
英文原文:towardsdatascience.com/revision-fo…