DCGAN全称Deep Convolutional Generative Adversarial Networks,中文名深度卷积对抗网络。
1.1 DCGAN的特点
DCGAN除了G网络与CNN不同之外,它还有以下的不同:
1.取消所有pooling层。G网络中使用转置卷积(transposed convolutional layer)进行上采样,D网络中用加入stride的卷积代替pooling。
2.除了生成器模型的输出层和判别器模型的输入层,在网络其它层上都使用了Batch Normalization,使用BN可以稳定学习,有助于处理初始化不良导致的训练问题。
3.G网络中使用ReLu作为激活函数,最后一层使用tanh
4.D网络中使用LeakyRelu作为激活函数。
二、几个重要概念
2.1 下采样(SubSampled)
下采样实际上就是缩小图像,主要目的是为了使得图像符合显示区域的大小,生成对应图像的缩略图。比如说在CNN中得池化层或卷积层就是下采样。不过卷积过程导致的图像变小是为了提取特征,而池化下采样是为了降低特征的维度。
2.2 上采样(UpSampled)
有下采样也就必然有上采样,上采样实际上就是放大图像,指的是任何可以让图像变成更高分辨率的技术,这个时候我们也就能理解为什么在G网络中能够由噪声生成一张图片了。
它有反卷积(Deconvolution)、上池化(UnPooling)方法。这里我们只介绍反卷积,因为这是是我们需要用到的。
2.3反卷积(Deconvolution)
反卷积(Deconvolution)也称为分数步长的卷积和转置卷积(transposed convolution)。在下图中,左边的为卷积,右边的为反卷积。convolution过程是将4×4的图像映射为2×2的图像,而反卷积过程则是将2×2的图像映射为4×4的图像,两者的kernel size均为3。不过显而易见,反卷积只能恢复图片的尺寸大小,而不能准确的恢复图片的像素值(此时我们想一想,在CNN中,卷积层的kernel我们可以学习,那么在反卷积中的kernel我们是不是也可以学习呢?)。
卡通数据集介绍
一共850张
生成效果
训练1000次生成的效果
训练5000次生成
训练6000次生成
训练7000次生成
训练11000次生成
训练13000次生成
训练19000次生成
训练20000次生成
对数据集和代码感兴趣的私聊,可以协作正常运行起来