您的位置:首页 > 其它

论文解读:ICCV2019 Best paper SinGAN

2020-07-14 04:17 337 查看

SinGAN: Learning a Generative Model from a Single Natural Image

今天介绍一篇非常有趣的论文,同时也是 ICCV 2019 的 best paper,题目叫做 SinGAN: Learning a Generative Model from a Single Natural Image,题目非常浅显直白,就是从单张自然图像中学习一个生成模型,这篇论文的思路并不复杂,通过拟合单张自然图像中的纹理分布,进而生成更多的视觉上非常相似,但又不完全一致的纹理,从而扩充图像的内容,但这篇论文的高明之处在于,仅仅只需要一种网络模型,或者一种网络架构,就可以实现不同任务的图像处理,包括超分,图像序列的生成,图像的编辑,风格迁移等。

当然,论文也是利用目前非常流行的生成模型 GAN 网络,我们前面介绍过,统计机器学习里非常重要的一个基本原理就是概率分布,任何一组数据,任何一组变量,理论上都是存在概率分布的,差别就在于能否给出确定的分布表达式,一般情况下,我们很难获得准确的分布表达 p(x)p(x)p(x),所以绝大多数情况下,我们都是通过拟合的方式来估计。

GAN 网络,也是一种数据拟合方式,通过学习大量的数据,来获取这批数据的近似分布,然后再通过采样,重建出新的数据,GAN 网络采用了对抗学习的方式,这个有点像博弈,生成模型 GGG 负责生成图像,并且尽可能地让生成的图像真假难辨,而判别模型 DDD 负责辨别真伪,对生成模型生成的图像,应该尽可能的区分开来,两个模型优化的目的是不一样的,所以类似两个模型在互相博弈,所以 GAN 网络的训练,一般很难收敛,GAN 网络的训练技巧,也是保证 GAN 能成功运用的重要因素。

GAN 网络已经被广泛的应用于各种图像编辑里了,比如颜色转换,风格转换,超分等,不过常用的 GAN 网络模型,都是基于大量数据集训练得到,通过拟合大量的数据,来获取对整幅图像的大致估计,这篇 paper,考虑对单张图像的分布进行估计,为了获得对单张图像的完整估计,论文作者采用了高斯金字塔的多尺度方式,对不同尺度的图像 patch 进行分布估计。

图像不同尺度的 patch,其实就对应着图像不同尺度的纹理信息,这就有点像 CNN 里的 receptive field,在不同的 CNN 层,每个神经元的 receptive field 是不一样的,小尺度的 patch,就是简单的线,边缘,或者一些角点;再大一点的 patch 就是物体的局部,再大一点的 patch 就是整个物体的全貌,或者场景的一部分,最大的尺度就是整幅图像,所以 SinGAN 的作者,就提出了一种多尺度的 GAN 模型,分别对一幅图像不同尺度的 patch 纹理来拟合,重建,每个尺度的 GAN 网络也很简单,最底层的尺度,就是一个简单的 GAN 模型,利用噪声生成图像 patch,

x~N=GN(zN)\tilde {x}_N = G_N(z_N)x~N​=GN​(zN​)

对于更上层的尺度,GAN 模型的生成器的输入有两个,一个是随机噪声,另外一个则是下层 GAN 模型生成的图像,再做一个上采样得到的:

x~n=Gn(zn,(x~n+1)↑r),n<N\tilde {x}_n = G_n(z_n, (\tilde{x}_{n+1}) \uparrow^{r} ), \quad n < N x~n​=Gn​(zn​,(x~n+1​)↑r),n<N

在训练更上层的生成模型的时候,论文作者也采用了 residual Net 的形式,

x~n=(x~n+1)↑r+ϕn(zn+(x~n+1)↑r)\tilde {x}_n = (\tilde{x}_{n+1}) \uparrow^{r} + \phi_{n}(z_n + (\tilde{x}_{n+1}) \uparrow^{r})x~n​=(x~n+1​)↑r+ϕn​(zn​+(x~n+1​)↑r)

训练 GAN 网络的时候,除了常规的训练 GAN 的损失函数之外,还有一个重建误差,

min⁡Gnmax⁡DnLadv(Gn,Dn)+αLrec(Gn) \min_{G_n} \max_{D_n} L_{adv} (G_n, D_n) + \alpha L_{rec}(G_n) Gn​min​Dn​max​Ladv​(Gn​,Dn​)+αLrec​(Gn​)

在衡量重建误差的时候,论文作者选定了固定的噪声参数,除了最底层,其它上层的噪声水平都是 0,通过这种方式,论文作者声称在训练 GAN 的时候,可以估计噪声的方差,这样应该是可以帮助生成器更快地收敛吧。

整个模型的架构如下所示:

在实际训练的时候,为了模拟不同尺度的 patch,不同尺度的 GAN 网络,生成器的输入图像经过了原图的 resize,对原始图像做不同的 resize,同时让网络的 receptive field 保持一致,这样就类似同样结构的 GAN 模型,其实对应的是不同尺度的图像 patch 了。

这篇 paper 的作者,已经把代码也开源了,有兴趣的可以自己试试,不过这个方法,无法做到实时,因为针对一幅新的自然图像,这个框架都需要利用这幅图像,在线训练一个多尺度的 GAN 模型,拟合这幅图像的纹理分布,然后才能利用 GAN 模型,生成不同的图像内容。

论文的项目地址:

http://webee.technion.ac.il/people/tomermic/SinGAN/SinGAN.htm

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐