如何利用Pix2Pix将黑白图片自动变成彩色图片

实现黑白图片自动变成彩色图片

如果你有一幅黑白图片,你该如何上色让他变成彩色的呢?通常做法可能是使用PS工具来进行上色。那么,有没有什么办法进行自动上色呢?自动将黑白图片变成彩色图片?答案是有的,使用深度学习中的Pix2Pix网络就可以实现这一功能。
在这里插入图片描述
如图所示,我们可以将黑白动漫图片,通过网络学习,自动变成彩色。对这个Pix2Pix网络是如何实现的,想要进一步了解网络和代码的话,可以点击这个

课程链接

下面,对这个网络进行一点简要介绍。


Pix2Pix网络介绍

pix2pix算是cGAN的一种,但是和cGAN又略有不同,而且,在pix2pix这篇论文中,首次提出了PatchGAN的概念,初次接触到的人可能会略有疑惑。这篇文章,我们就一起来探讨一下,pix2pix中的判别器是如何设计的。

cGAN

提到pix2pix就一定要提一下,他的思想源泉,cGAN。最初我们所熟知的GAN的概念,当属造假钞和验假钞的对抗过程(诞生了DCGAN),造假钞造出来的假钞越来越像真钞,验假钞的越来越能够识别假钞。我们从这个具体故事里面抽象出来,其实就是说,生成器生成的图片够真,就可以骗过判别器。至于这个生成器生成的图片真的是我们想要的?就不一定了。
在这里插入图片描述
另外还有一个问题,比如上面这幅图。如果我有一堆火车图片。有正面的也有侧面的,我们都知道这是火车。但是生成对抗网络其实并不理解。如果用最基本的GAN(比如DCGAN)来做的话,很有可能最后就会得到一个normal的图片,就是正面和侧面火车平均之后的一个图片。就会导致训练之后的图片结果很模糊。

cGAN就是来解决这个问题的。c表示conditional,是控制。我想让生成器生成小狗的图片,他就不能生成火车的图片。此时我们的D和G不再是单独的一个输入,而是两种输入。
在这里插入图片描述
在生成器部分,我们不仅输入normal distribution,还输入一个条件c(比如cat或者train)。我们在判别器部分,也输入两个,一个是条件c,另外一个是x(生成的数据或者真实的数据)。这里判别器的目的不仅仅要看生成的x数据是否和真实数据分布接近。还要看和条件c是否一致。对于判别器而言,生成的图片不好,还有生成的图片和c不匹配,都要给它低分。

pix2pix的判别器

在pix2pix中我们的判别器构造和cGAN思想基本一致,但稍有不同。
在这里插入图片描述
这里,我们的判别器输入两张图像,一张是G的input图像,一张是G的output图像。也就是说,对于判别器而言,不只是输出高质量的图像就可以骗过判别器,必须要两张图像有对应关系才可以。

pix2pix的判别器训练代码

下面,我们从代码详细的看一下,pix2pix是如何对判别器进行计算的。

real_a, real_b = batch[0].to(device), batch[1].to(device)

fake_b = net_g(real_a)
optimizer_d.zero_grad()

# 判别器对虚假数据进行训练
fake_ab = torch.cat((real_a, fake_b), 1)
pred_fake = net_d.forward(fake_ab.detach())
loss_d_fake = criterionGAN(pred_fake, False)

# 判别
  • 0
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Einstellung

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值