【论文阅读笔记】《Pix2Pix》

论文:《Image-to-Image Translation with Conditional Adversarial Networks》

发表日期:2017 CVPR

前言

pix2pix是cGAN的一个变体,能够实现从图像到图像的映射,在从标签映射合成照片、从边缘映射重建对象、图片上色等多类人物的表现较好。它比较适合于监督学习,即图像的输入和它的输出是相互匹配的。所谓匹配数据集是指在训练集中两个互相转换的领域之间有明确的一一对应数据。在工程实践中研究者需要自己收集这些匹配数据,但有时同时采集两个不同领域的匹配数据是麻烦的,通常采用的方案是从更完整的数据中还原简单数据。比如直接将彩色图片通过图像处理的方法转为黑白图片。

训练完成后,pix2pix可以将图像从领域A变换到领域B。下面这张图中,左侧的input和output分别是同一个地方白天和夜晚的照片,看作是不同领域X和Y的两张图,生成器G应尽可能得将input转换成output。

【论文阅读笔记】《Pix2Pix》

注意,因为匹配数据集的存在,研究者尝试用普通CNN进行图像对图像的变换,但是不能生成清晰逼真的图像,因为CNN会试图让最终的输出接近所有相类似的结果。

理论基础

训练思路:

下图展示了Pix2Pix使用cGAN训练生成对抗网络的思路,这里是手绘鞋和真实鞋子图像的一组配对数据,生成器通过作为条件的手绘数据生成了左图中的鞋子,然后我们将两者放入判别器中,判别器应该判断为假,而当我们将真实的配对数据输入时,判别器应该判断为真。

【论文阅读笔记】《Pix2Pix》

网络架构 生成网络

生成网络深受U-Net架构的启发。U-Net架构和自编码网络的架构非常相似,一个主要区别是U-Net网络在编码网络和解码网络的各层之间有跳跃连接,而自编码网络没有,跳跃连接可以将部分有用的重复信息直接共享到生成器中。-Net网络由编码网络和解码网络组成。下图展示了U-Net的基本架构。

【论文阅读笔记】《Pix2Pix》

上图展示了U-Net基本架构。可以看到,第一层的输出直接和最后一层合并,第二层的输出和倒数第二层合并,以此类推。如果总层数为n,那么在编码网络的第i层和解码网络的第(n - i)层之间就会有跳跃连接,对于所有层皆是如此。

所有拼接都是沿通道轴进行的。编码网络的最后一层将张量传递给解码网络的第一层。编码网络的最后一块和解码网络的最后一块之间并无拼接。

生成网络由上述两个网络组成。简单说来,编码网络是一个下采样网络,解码网络是一个上采样网络。编码网络将维度是(256, 256, 1)的图像下采样为维度是(1, 1, 512)的内部表示,而解码网络将维度是(1, 1, 512)的内部表示上采样为维度是(256, 256, 1)的输出图像。

判别网络

pix2pix的判别网络架构受到了PatchGAN架构的启发。PatchGAN包含8个卷积块,若输入的形状为(256, 256, 1),最后的输出形状变成(1, 1, 512),最后经过扁平化层将张量转换成一组数组,再经过全连接层得到最后判定。

故判别网络由8个卷积块、1个全连接层和1个扁平化层组成。判别网络接收从维度为(256, 256, 1)的图像中提取的一组图像块,然后估测给定图像块为真的概率,一般使这个值激活在0~1之间;。

目标函数

我们先重温之前提到过的cGAN的目标函数,如式(8-1)所示,其中\(D(x, y)\)表示真实配对数据输入图像x与输出图像y对于判别器D的结果,而\(D(x, G(x, z))\)则是x经过生成器产生的图像G(x, z)对于判别器判断的结果。

【论文阅读笔记】《Pix2Pix》

除了上面的cGAN优化函数以外,Pix2Pix的论文里还提到可以加入L1 Loss作为传统的损失函数对网络加以优化。

【论文阅读笔记】《Pix2Pix》

最终的生成器目标函数如下所示,其中λ为超参量,可以根据情况调节,当λ=0时表示不采用L1 Loss的损失函数。

【论文阅读笔记】《Pix2Pix》

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzpxpx.html