ConSinGAN
使用一张图片训练一个对抗生成网络。
相关研究
SinGAN
原理:从一个分辨率很低的图像开始,进行多阶段的训练,每进入一个新的阶段,就加入更多的计算层。在每个训练阶段,都将先前阶段的计算层冻结,只在新加入的层上训练。
原因:如果只在新加入的层上进行计算,相当于将输入不断的作为input输入到新加入的层中,会影响模型的训练过程。如果每次都在所有层上计算,并对所有层的权重进行优化,则很容易造成模型的过拟合。
研究内容
低维的特征对于保持图像的结构贡献较大,高维特征对于保持图像的纹理特征和颜色非常重要。并且,对于高分辨率的图像只需要较少的训练次数,所以本文对于低分辨率图像赋予了更高的权重,对于高分辨率的图像,赋予了更少的训练阶段。
对比传统的sinGAN主要贡献有以下三点:
- 在每个阶段并行训练,并且使用不同的学习率。
- 对于每个中间阶段,不产生图像而是将特征继续前向传播。
- 引入了微调,可以针对预训练的模型进行优化。
网络结构如下:
原理:
- 在第一阶段(stage 0),只有三个卷积层的模型从一个随机噪声产生一个低分辨率的粗糙图像。
- 在训练了n轮后,向网络中加入三个卷积层,生成一个分辨率较高的图像,这一步的输入是使用前一步的输出进行计算的(stage 1)。
- 继续2步骤,直到产生本文期望的图像分辨率;并继续添加随机噪声,同时训练网络的最后三个stage(stage N)。
在训练中,判别器使用patch方式进行惩罚,随着stage的增加,patch的感受野会变得越来越小,判别器的关注点也会从低维的全局图像结构,逐渐往高维的色彩和纹理特征转换。与sinGAN相反,本文在更高的stage中不对判别器进行增大而是保持其规模不变。
本文方法
多阶段训练
整体的损失函数为:
其中, L r e c