十三 发自 凹非寺
量子位 报道 | 公众号 QbitAI

数据集太小了,无法训练GAN?试试从单个图像入手吧。

去年谷歌就提出了SinGAN,是第一个拿GAN在单幅自然图像学习的非条件生成模型(ICCV 2019最佳论文)。

而最近,来自Adobe和汉堡大学的研究人员,对这个方法做了改进,探讨了几种让GAN在单幅图像提高训练和生成能力的机制。

研究人员将改进的模型称作ConSinGAN

那么,先来看下ConSinGAN的效果吧。

上图左侧是用来训练的单个图像,右侧是利用ConSinGAN训练后生成的复杂全局结构。

可以看出效果还是比较逼真。

当然,ConSinGAN还可以用来处理许多其他任务,例如图像超分辨率( image super-resolution)、图像动画(image animation),以及图像去雾(image dehazing)。

下面两张就是它在图像协调(image harmonization)和图像编辑(image editing)上的效果。

ConSinGAN是怎么做到的呢?

训练架构优化:并行的SinGAN

首先,我们先来看下SinGAN的训练过程。

SinGAN在图像中训练几个单独的生成网络,下图便是第一个生成器,也是唯一从随机噪声生成图像的无条件生成器。

在SinGAN中训练的第一个生成器

这里的判别器从来不将图像看做一个整体,通过这种方法,它就可以知道“真实的”图像补丁(patch)是什么样子。

这样,生成器就可以通过生成,在全局来看不同,但仅从补丁来看却相似的图像,来达到“欺诈”的目的。

在更高分辨率上工作的生成器,将前一个生成器生成的图像作为输入,在此基础上生成比当前还要高分辨率的图像。

所有的生成器都是单独训练的,这意味着在训练当前生成器时,所有以前的生成器的权重都保持不变。

这一过程如下图所示。

而在Adobe与汉堡大学的研究人员发现,在给定的时间内仅能训练一个生成器,并将图像(而不是特征图)从一个生成器传输到下一个生成器,这就限制了生成器之间的交互。

因此,他们对生成器进行了端到端的训练,也就是说,在给定时间内训练多个生成器,每个生成器将前一个生成器生成的特征(而不是图像)作为输入。

这也就是ConSinGAN名字的由来——并行的SinGAN,过程如下图所示。

然而,采取这样的措施又会面临一个问题,也就是过拟合。这意味着最终的模型不会生成任何“新”图像,而是只生成训练图像。

为了防止这种现象发生,研究人员采取了2个措施:

  • 在任意给定时间内,只训练一部分生成器;

  • 对不同的生成器采用不同的学习率(learning rate)。

下图就展示了使用这两种方法实现的模型。默认情况下,最多同时训练3个生成器,并对较低的生成器,分别将学习率调至1/10和1/100。

在这个过程中,有一个有趣的现象。

如果对较低的生成器采用较高的学习率,那么生成的图像质量会高些,但是差异性较弱。

相反,如果对较低的生成器采用较小的学习率,那么生成图像的差异性会丰富一些。如下图所示。

代码已开源

ConSinGAN的代码已经在GitHub上开源。

老规矩,先介绍一下运行所需要的环境:Python 3.5;Pytorch 1.1.0。

安装也非常简单:

pip install -r requirements.txt

若要使用论文中的默认参数训练模型:

python main_train.py --gpu 0 --train_mode generation --input_name Images/Generation/angkorwat.jpg

在英伟达GeForce GTX 1080Ti上训练一个模型大约需要20-25分钟。

不同的学习率和训练阶段数量,会影响实验的结果,研究人员推荐二者的默认值分别是0.1和6。

当然也可以修改学习率:

python main_train.py --gpu 0 --train_mode generation --input_name Images/Generation/colusseum.jpg --lr_scale 0.5

修改训练阶段的数量:

python main_train.py --gpu 0 --train_mode generation --input_name Images/Generation/colusseum.jpg --train_stages 7

当然,模型也可以用来处理“图像协调”和“图像编辑”等任务,详情可参阅GitHub。

传送门

论文地址:
https://arxiv.org/pdf/2003.11512.pdf

GitHub项目地址:
https://github.com/tohinz/ConSinGAN

作者系网易新闻·网易号“各有态度”签约作者

—  —

「地平线核心技术系列公开课」第二期开始报名。4月1日20:00,地平线天工开物AI开发平台产品经理陈本东,将在线介绍地平线天工开物AI平台如何赋能用户,并剖析其应用案例。

戳下图二维码,即可报名、加入交流群~

直播推荐 | 地平线核心技术解析系列课

学习计划 | 关注AI发展新动态

量子位 QbitAI · 头条号签约作者

վ'ᴗ' ի 追踪AI技术和产品新动态

喜欢就点「在看」吧 !

单张图像就可以训练GAN!Adobe改良图像生成方法 | 已开源相关推荐

  1. 常用图像数据集原始数据(.png或.jpg格式)生成方法

    引言 在计算机视觉方面的工作,我们常常需要用到很多图像数据集.像ImageNet这样早已大名鼎鼎的数据集,我等的百十个G的硬盘容量怕是怎么也承载不下:本文中,将给出一些Hello world级的图像数 ...

  2. BLIP:用更干净更多样的数据进行多模态预训练,性能超越CLIP!代码已开源!...

    关注公众号,发现CV技术之美 ▊ 写在前面 视觉语言预训练 (VLP) 提高了许多视觉语言任务的性能.但是,大多数现有的预训练模型仅在基于理解的任务或基于生成的任务中表现出色.此外,通过使用从web收 ...

  3. 单张GPU搞定GPT-3超参数!先训练小模型,再“一键迁移” | 已开源

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 丰色 发自 凹非寺 量子位 | 公众号 QbitAI "一 ...

  4. DeepMind丢掉了归一化,让图像识别训练速度提升了8.7倍 | 已开源

    金磊 发自 凹非寺 量子位 报道 | 公众号 QbitAI 在大规模图像识别任务上,DeepMind的新方法火了. 不仅拿到了SOTA,训练速度还提升了8.7倍之多! 方法关键:去"批处理归 ...

  5. 基于生成对抗网络结构的图像修复(GAN)

    GAN网络的最初发展史 自2014 年10 月Goodfellow 等人提出了一个通过对抗过程生成模型的框架开始,GAN 网络就成为近年来在无监督学习复杂分布中最具前景的方法之一.而其最初给研究人员的 ...

  6. 丰田研究院:自监督单目图像深度估计,数据和代码已开源

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者:Vitor Guizilini 编译:McGL 自监督学习使得只使用视频作为训练数据就可以从单个 ...

  7. 对抗生成网络(GAN)简介及生成数字实战

    一.简介 生成对抗网络(Generative Adversarial Netword,简称GAN),是一种生成式机器学习模型,该方法由伊恩·古德费洛等人于2014年提出,曾被称为"机器学习这 ...

  8. 【NLP】预训练时代下的文本生成|模型技巧

    今天推荐一篇人大出品的37页文本生成综述: A Survey of Pretrained Language Models Based Text Generation https://arxiv.org ...

  9. 数据不够,Waymo用GAN来凑:生成逼真相机图像,在仿真环境中训练无人车模型...

    鱼羊 发自 凹非寺 量子位 报道 | 公众号 QbitAI 疫情当下,Waymo等自动驾驶厂商暂时不能在现实世界的公共道路上进行训练.测试了. 不过,工程师们还可以在GTA,啊不,在仿真环境里接着跑车 ...

最新文章

  1. 英伟达再发边缘AI计算设备:仅信用卡大小,性能比TX2强15倍
  2. 人工智能缺陷与误觉:让机器产生幻觉的「怪异事件」
  3. delphi 执行一个外部程序,当外部程序结束后言主程序立即响应
  4. CSS中使用flex弹性布局实现上下左右垂直居中排列并设置子元素之间的间距
  5. PAT——程序运行时间 (1026)
  6. NLTK找出最频繁的名词标记的程序(代码详细解释)
  7. uni-app 实现点击列表隐藏显示
  8. MFC之实现鼠标自动左击,频率可调,支持热键
  9. Android 蓝牙技术 实现终端间数据传输
  10. linux空磁盘划分,Linux 磁盘划分
  11. 在Windows 7上面安装Vs2005
  12. 【趣味实践】自动补帧算法——RIFE的使用
  13. CSDN如何上传照片
  14. ios 系统状态栏样式修改_iOS 导航栏颜色和状态栏颜色修改
  15. SMAA算法详解 - SMAASearchYUp(Down)
  16. Java 简单的摇骰子游戏:案例
  17. 【Cesium入门】四、相机系统
  18. 面试题:什么是野指针?产生野指针的原因?
  19. LabVIEW编程LabVIEW开发研华通用驱动XNavi 例程与相关资料
  20. 苹果9月12日发布新品,新款iPhone谍照曝光;滴滴多次拒绝调查取证;软银放弃认购蔚来汽车2亿美元IPO股票 | 雷锋早报...

热门文章

  1. 如何在Java中生成特定范围内的随机整数?
  2. CentOS 7 快速部署 ELK
  3. PhpStorm+Homestead+Xdebug调试Laravel
  4. Android每周一个学习计划——RxJava2 0的学习使用
  5. 关于EventSource的精华
  6. Redis实现分布式锁全局锁—Redis客户端Redisson中分布式锁RLock实现
  7. Android项目中使用激光推送时在模拟器上运行时报Fatal signal 11的解决
  8. 一个关于CentOS下apache配置修改生效的问题
  9. python3.6中@property装饰器的使用
  10. python取整数_python 取整函数