pix2pixHD是pix2pix的重要升级,可以实现高分辨率图像生成图片的语义编辑。对于一个生成对抗网络(GAN),学习的关键就是理解生成器、判别器和损失函数这三部分。pix2pixHD的生成器和判别器都是多尺度的,单一尺度的生成器和判别器的结构和pix2pix是一样的。损失函数由GAN loss、Feature matching loss和Content loss组成。

pix2pixHD论文官方介绍视频

回顾pix2pix

pix2pix提供了一个统一的图像翻译(image-to-image-translation)的框架,整体的结构是conditional GAN。和原始conditional GAN不同的是,pix2pix生成器的输入没有噪声信息,只有条件信息。

生成器

生成器的结构是U net。有的GAN使用的是encoder-decoder模型作为生成器,但是相比之下,U-net效果会更好。因为上采样时加入了底层的特征信息。假设总共有n层,那么第i层和第n-i层之间有跳远连接。注意U-Net的跳远连接和ResNet的不同,和DenseNet相同,是按通道拼接的。

Encoder-decoder和U-Net的结构 图片来自原论文

Encoder-decoder和U-Net生成图片效果对比 图片来自原论文

判别器 PatchGAN

不同于直接判断图片是否是真实的,PatchGAN会分别判断N x N个patch是否为真,然后求平均值输出。L1损失可以使模型学到低频的特征,PatchGAN的结构可以使模型学到高频的特征(因为它关注的是局部的信息)。而且,当N比原图的尺寸小得多时依然有效。

这种方式类似马尔科夫随机场,因为超出一个patch半径的像素是无关的,而这和纹理(texture)、风格(style)的特点比较符合。因此PatchGAN可以理解为一种texture/style loss。

损失函数

传统的conditional-GAN的目标函数为

生成器最小化目标函数,判别器最大化目标函数。

一般会在cGANloss的基础上给生成器添加一个L2 loss,生成器不仅要骗过判别器,而且其生成的图片和ground truth之间的L2 loss要足够小。但是,pix2pix作者比较了L1 loss和L2 loss的区别,发现L2 loss生成的更模糊一点。因此pix2pix的目标函数为原conditional GAN的loss和L1 loss之和

不同loss的效果对比 图片来自原论文

Dropout与多样性

原始cGAN的输入是条件x和噪声z两种信息,这里的生成器只使用了条件信息,因此不能生成多样性的结果。因此pix2pix在训练和测试时都使用了dropout,这样可以生成多样性的结果。

pix2pixHD

pix2pixHD的改进点有两个:

  1. 高分辨率图像的生成。
  2. 图片的语义编辑。

高分辨率图片的生成

为了生成高分辨率的图片,使用了:

  • coarse-to-fine的生成器。
  • multi-scale的判别器。这个比较简单,就是在三个不同尺度上判别,然后取平均。
  • 更好的loss设计,总loss = GAN loss + Feature matching loss + Content loss。
  • 使用Instance boundary map进行训练。

coarse-to-fine的生成器 图片来自原论文

如上图,生成的流程:图片先经过一个生成器  的卷积层进行2倍下采样,然后使用另一个生成器  生成低分辨率的图,将得到的结果和刚刚下采样得到的图进行element-wise的相加,然后输出到  的后续网络生成高分辨率的图片。

这么做的好处是,低分辨率的生成器会学习到全局的连续性(越粗糙的尺度感受野越大,越重视全局一致性),高分辨率的生成器会学习到局部的精细特征,因此生成的图片会兼顾局部特征和全局特征的真实性。如果仅使用高分辨率的图生成的话,精细的局部特征可能比较真实,但是全局的特征就不那么真实了。

图片来自原论文

pix2pix使用语义分割图进行训练,但是对于同一类的相邻物体,如上图(a)中的相连的汽车,它们之间是没有边界的,这样生成的时候会导致模糊。因此使用实例分割的图进行训练,因为它包含了相邻同一类别的不同物体之间的边界,也可以说instance-level semantic label map包含了每一个物体的单独的ID。

Instance boundary map如何得到?对semantic label map的每一个像素进行扫描,如果它和周围的四个像素的任意一个类别不一致,那么该像素位置为1,否则就是0。

Instance boundary map如何使用?把它和semantic label map的one hot向量拼接,然后送到生成器里面。

从下图中可以看到添加了instance map的网络对紧挨着的相同类物体的生成更加真实。

图片来自于原论文

图片的语义编辑

图片的语义编辑是一个新的有趣功能。从语义图到真实图的生成是一个一对多的映射,理想的模型应该可以根据同一个语义图生成真实且多样的图片。pix2pix的解决方法是在输入中增加一个低维特征通道。

  1. 首先和GAN网络一起训练一个编码器。
  2. 原始图片经过编码器,然后进行instance-wise average pooling操作,对每一个目标实例计算平均特征(Features),来保证每个目标实例特征的一致性。这个平均特征会被broadcast到该实例的每一个像素位置上。
  3. 输入图像比较多时,Features的每一类像素的值就代表了这类物体的先验分布。 使用编码器对所有训练图像提取特征,再进行K-means聚类,得到K个聚类中心,以K个聚类中心代表不同的风格。
  4. 在推理阶段,从K个聚类中心选择某一个,和语义标签信息、实例信息结合作为输入,这样就能控制颜色/纹理风格。

pix2pixHD笔记相关推荐

  1. pix2pix 与 pix2pixHD的大致分析

    目录 pix2pix与pix2pixHD的生成器 判别器 PatchGAN(马尔科夫判别器) 1.pix2pix 简单粗暴的办法 如何解决模糊呢? 其他tricks 2.pix2pixHD 高分辨率图 ...

  2. 转载:CVPR 2018值得一看的25篇论文,都在这里了 | 源码 解读

    转载于:http://www.tuan18.org/thread-2119-1-1.html (出处: 人工智能培训) Unsupervised Person Image Synthesis in A ...

  3. CVPR2018 精彩论文合集

    Unsupervised Person Image Synthesis in Arbitrary Poses #Image Synthesis CVPR 2018 Spotlight 论文,ReID ...

  4. 论文笔记:SPADE(CVPR 2019)-Semantic Image Synthesis with Spatially-Adaptive Normalization

    论文笔记:SPADE(CVPR 2019)-Semantic Image Synthesis with Spatially-Adaptive Normalization SPADE DEMO 前言 语 ...

  5. Pix2Pix(2017)+CycleGAN+Pix2PixHD

    GAN 常规的深度学习任务如图像分类.目标检测以及语义分割或者实例分割,这些任务的结果都可以归结为预测.图像分类是预测单一的类别,目标检测是预测Bbox和类别,语义分割或者实例分割是预测每个像素的类别 ...

  6. 【读书笔记】知易行难,多实践

    前言: 其实,我不喜欢看书,只是喜欢找答案,想通过专业的解答来解决我生活的困惑.所以,我听了很多书,也看了很多书,但看完书,没有很多的实践,导致我并不很深入在很多时候. 分享读书笔记: <高效1 ...

  7. 【运维学习笔记】生命不息,搞事开始。。。

    001生命不息,搞事不止!!! 这段时间和hexesdesu搞了很多事情! 之前是机械硬盘和固态硬盘的测速,我就在那默默的看着他一个硬盘一个机械测来测去. 坐在他后面,每天都能看到这位萌萌的小男孩,各 ...

  8. SSAN 关系抽取 论文笔记

    20210621 https://zhuanlan.zhihu.com/p/353183322 [KG笔记]八.文档级(Document Level)关系抽取任务 共指id嵌入一样 但是实体嵌入的时候 ...

  9. pandas以前笔记

    # -*- coding: utf-8 -*- """ Created on Sat Jul 21 20:06:20 2018@author: heimi "& ...

最新文章

  1. JS document
  2. javascript编写_如何通过编写自己的Web开发框架来提高JavaScript技能
  3. 学 Redis ,至少要看看这篇!7000 字小结
  4. Spring AOP是什么?你都拿它做什么?
  5. php的session实现
  6. java免安装版配置,Tomcat(免安装版)的安装与配置 配置成windows服务
  7. nodeJS的管道流和链式流
  8. nginx+tomcat+php(tomcat的session共享设置)
  9. 对lua协程的一点理解
  10. 2021“MINIEYE杯”中国大学生算法设计超级联赛(7)部分题解
  11. 图论 —— 弦图 —— LexBFS 算法
  12. CentOS修改yum源【噗哈哈】
  13. 关于单细胞批次矫正那些事(一)
  14. kettle的mysql驱动应该放哪里_MySQL数据库之kettle 安装mysql 驱动
  15. 红外红外传感器电路图及工作原理
  16. 阿里 3月25日 二维矩阵列选元素最小和
  17. 新手云服务器系统,新手云服务器系统
  18. 推荐一款免费的内网穿透工具ngrok
  19. 揭秘腾讯智慧城市版图:“数字政府”+“超级大脑”的新打法
  20. css display:flex详解

热门文章

  1. 内核调试相关变量说明
  2. 读书笔记之《Windows内核原理与实现》
  3. delete指针之后应该赋值NULL
  4. 计算机对英语口语考试,计算机辅助高考英语口语考试中题型的设计与交际能力的实现.pdf...
  5. 你的计算机无法启动一键还原,教你电脑怎么一键还原
  6. 问题集锦(41-42)
  7. 微型计算机应用重点,微型计算机原理以及的应用考试重点.doc
  8. 机器人 海难饥荒_饥荒:这个人物后期轻松单挑Boss,缺点却很小,大力士都比不过...
  9. linux远程登录x11,windows linux 通过SSH X11Forwrding 使用图形化界面
  10. java web 默认页面配置文件_Tomcat中配置全局的错误页面(如404)+删除Tomcat中webapps目录下的自带项目,防止Tomcat默认文件泄露...