昇思25天打卡训练营第23天|Pix2Pix实现图像转换

1.Pix2Pix概述

Pix2Pix是基于条件生成对抗网络(cGAN, Condition Generative Adversarial Networks )实现的深

度学习图像转换模型,该模型由Phillip Isola等作者在2017年CVPR上提出,可以实现语义/标签到

真实图片、灰度图到彩色图、航空图到地图、白天到黑夜、线稿图到实物图的转换。Pix2Pix是将

cGAN应用于有监督的图像到图像翻译的经典之作,其包括两个模型:生成器和判别器。

传统上,尽管此类任务的目标都是相同的从像素预测像素,但每项都是用单独的专用机器来处理

的。而Pix2Pix使用的网络作为一个通用框架,使用相同的架构和目标,只在不同的数据上进行训

练,即可得到令人满意的结果,鉴于此许多人已经使用此网络发布了他们自己的艺术作品。

2.基础原理

cGAN的生成器与传统GAN的生成器在原理上有一些区别,cGAN的生成器是将输入图片作为指导

信息,由输入图像不断尝试生成用于迷惑判别器的“假”图像,由输入图像转换输出为相应“假”图像

的本质是从像素到另一个像素的映射,而传统GAN的生成器是基于一个给定的随机噪声生成图

像,输出图像通过其他约束条件控制生成,这是cGAN和GAN的在图像翻译任务中的差异。

Pix2Pix中判别器的任务是判断从生成器输出的图像是真实的训练图像还是生成的“假”图像。在生成

器与判别器的不断博弈过程中,模型会达到一个平衡点,生成器输出的图像与真实训练数据使得判

别器刚好具有50%的概率判断正确。

符号:

    𝑥:代表观测图像的数据,𝑧:代表随机噪声的数据。

    y=G(x, z):生成器网络,给出由观测图像 𝑥与随机噪声 𝑧生成的“假”图片,其中 𝑥来自于训练数据

而非生成器。

    D(x,G(x,z)):判别器网络,给出图像判定为真实图像的概率,其中 𝑥来自于训练数据, 𝐺(𝑥,𝑧)来自

于生成器。

cGAN的目标可以表示为:

该公式是cGAN的损失函数,D想要尽最大努力去正确分类真实图像与“假”图像,也就是使参数

𝑙𝑜𝑔𝐷(𝑥,𝑦)最大化;而G则尽最大努力用生成的“假”图像 𝑦欺骗D,避免被识破,也就是使参数

𝑙𝑜𝑔(1−𝐷(𝐺(𝑥,𝑧)))最小化。cGAN的目标可简化为:

为了对比cGAN和GAN的不同,我们将GAN的目标也进行了说明:

从公式可以看出,GAN直接由随机噪声 𝑧生成“假”图像,不借助观测图像 𝑥的任何信息。过去的经

验告诉我们,GAN与传统损失混合使用是有好处的,判别器的任务不变,依旧是区分真实图像与

“假”图像,但是生成器的任务不仅要欺骗判别器,还要在传统损失的基础上接近训练数据。假设

cGAN与L1正则化混合使用,那么有:

进而得到最终目标:

图像转换问题本质上其实就是像素到像素的映射问题,Pix2Pix使用完全一样的网络结构和目标函 

数,仅更换不同的训练数据集就能分别实现以上的任务。本任务将借助MindSpore框架来实现

Pix2Pix的应用。

3.准备环节


1) 配置环境文件

本案例在GPU,CPU和Ascend平台的动静态模式都支持。

2)准备数据

在本教程中,我们将使用指定数据集,该数据集是已经经过处理的外墙(facades)数据,可以直

接使用mindspore.dataset的方法读取。

3)数据展示

调用Pix2PixDataset和create_train_dataset读取训练集,这里我们直接下载已经处理好的数据集。

4. 创建网络

当处理完数据后,就可以来进行网络的搭建了。网络搭建将逐一详细讨论生成器、判别器和损失函

数。生成器G用到的是U-Net结构,输入的轮廓图 𝑥编码再解码成真是图片,判别器D用到的是作者

自己提出来的条件判别器PatchGAN,判别器D的作用是在轮廓图  𝑥的条件下,对于生成的图片

𝐺(𝑥)判断为假,对于真实判断为真。

1)生成器G结构

U-Net是德国Freiburg大学模式识别和图像处理组提出的一种全卷积结构。它分为两个部分,其中

左侧是由卷积和降采样操作组成的压缩路径,右侧是由卷积和上采样组成的扩张路径,扩张的每个

网络块的输入由上一层上采样的特征和压缩路径部分的特征拼接而成。网络模型整体是一个U形的

结构,因此被叫做U-Net。和常见的先降采样到低维度,再升采样到原始分辨率的编解码结构的网

络相比,U-Net的区别是加入skip-connection,对应的feature maps和decode之后的同样大小的

feature maps按通道拼一起,用来保留不同分辨率下像素级的细节信息。

定义UNet Skip Connection Block

2)基于UNet的生成器

原始cGAN的输入是条件x和噪声z两种信息,这里的生成器只使用了条件信息,因此不能生成多样

性的结果。因此Pix2Pix在训练和测试时都使用了dropout,这样可以生成多样性的结果。


3)基于PatchGAN的判别器


判别器使用的PatchGAN结构可看做卷积,生成的矩阵中的每个点代表原图的一小块区域

(patch)。通过矩阵中的各个值来判断原图中对应每个Patch的真假。

5.Pix2Pix的生成器和判别器初始化

实例化Pix2Pix生成器和判别器

6.训练


训练分为两个主要部分:训练判别器和训练生成器。训练判别器的目的是最大程度地提高判别图像

真伪的概率。训练生成器是希望能产生更好的虚假图像。在这两个部分中,分别获取训练过程中的

损失,并在每个周期结束时进行统计。

下面进行训练:

7. 推理

 获取上述训练过程完成后的ckpt文件,通过load_checkpoint和load_param_into_net将ckpt中的权

重参数导入到模型中,获取数据进行推理并对推理的效果图进行演示(由于时间问题,训练过程只

进行了3个epoch,可根据需求调整epoch)。

各数据集分别推理的效果如下

引用

[1] Phillip Isola,Jun-Yan Zhu,Tinghui Zhou,Alexei A. Efros. Image-to-Image Translation with Conditional Adversarial Networks.[J]. CoRR,2016,abs/1611.07004.

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值