点击上方“机器学习与生成对抗网络”,关注"星标"
获取有趣、好玩的前沿干货!
前言
GAN似乎离不开大量的训练数据量。之前在知乎回答过一个问题,关于用GAN做数据增强的个人鄙见:
https://www.zhihu.com/question/372133109/answer/1081321788
GAN作为一种生成模型,很多人以为它主要用途是进行数据增广。但是在这一方面,GAN是有很多局限之处的。
首先,GAN不好训练,目前的技术还是需要大量训练样本。而一旦有大量训练样本,那GAN增广数据的意义似乎又不大了。
再者,在极度缺乏数据的情况下,需要做数据增广,而此时想用GAN帮忙?不好意思,GAN还做不了,数据太少无法学习样本的数据分布,生成出来的东西没眼看。
不过有个情况呢,比如数据不算太少但也不算太多,似乎用GAN生成的效果还行?而我的下游任务(比如分类)各种率也不太高,那能不能让GAN帮帮忙呢?我觉得可以试试。(这种情况下,其实可能效果还不如常规的翻旋裁剪缩的增广手段来的快)
GAN用于数据补充,其实是有很多相关工作的,比如在医学图像处理:【1】GAN在医学图像上的生成,今如何?
又比如在行人重识别也有一些工作,用GAN补充各个角度、光照、衣服的行人之类。(GAN的数据增广,目前在一些分辨率要求不高、清晰度还凑合的任务里可能更容易起效果。)
总而言之,目前GAN更多的其实还是用于图像转换、图像编辑一类的工作。数据增广嘛,emmm,也许应该结合一些特定场景去搞搞、看看。
当然了,今天不是关于GAN做数据增强的。
而是一篇有趣的、用两幅图像训练GAN做不成对图像转换的文章,本文做个记录、分享。
https://arxiv.xilesou.top/pdf/2004.04634.pdf
https://github.com/linjx-ustc1106/TuiGAN-PyTorch
无监督的图像转换 unsupervised image-to-image translation (UI2I):
旨在解决学习两个不成对(即生成图像没有参考图像GT直接做loss计算)的训练数据下的图像域映射。现有的无监督图像转换需要大量训练数据集,这受限于实际场景(难以获得大量数据)。
一、所解决的问题
本文认为即便源域和目标域图像甚至仅各有一幅图像也是可以完成转换任务的!所提出的TuiGAN正是解决这个问题:通过生成器在两幅不成对的图像上训练、将源域图像又粗到细地进行转换生成。
二、整体网络结构
如图所示,采用从低分辨率到高分辨率的“渐进式转换”。最开始的“小尺度”生成器和判别器仅接收低分辨率图像,之后的生成器接收:“本层尺度”的图像和上一个小尺度生成器所生成图像的上采样的融合。
二、生成器网络
对某一尺度的生成器,输入图像和“上一小尺度”的图像怎么做融合生成?
生成器结构如图所示,通过构造一个attention注意力模块学习一个掩膜A,使用它来线性组合本层的初始输出和上一层的输出、以作为本层生成器的最终输出。
公式表示为:
四、损失函数
非常耳熟能详的四个损失:
对抗损失、循环一致性损失、同一性损失、TV损失
五、实验设置和评估标准
关于生成器和判别器的网络设置,以及损失函数中各项的权重。实验中,作者采用的了四个尺度的GAN来训练。
评估标准使用的是FID和感知距离,以及用户调查
六、实验对比和消融探究
七、个人结论
GAN受限于大训练数据量,一直以来是一个问题。去年SinGAN获得那best paper后,单图训练已成为GAN在CV的一个研究趋势。但是,对数据的宽要求下,却又对网络架构提出了更高的要求,比如更复杂、各种金字塔堆叠等。另外,目前效果似乎看上去还是非常toy、naive。尽管如此,这个方向无疑是充满趣味和极具研究意义的。
公众号近期荐读:
GAN&CV交流群,无论小白还是大佬,诚挚邀您加入!
一起讨论交流!长按备注【进群】加入:
更多分享、长按关注本公众号: