Administrator
Administrator
发布于 2018-07-17 / 39 阅读 / 0 评论 / 0 点赞

生成对抗网络学习笔记学习笔记(1)-DCGAN

首先是各种参考博客、链接等,表示感谢。

(一)DCGAN原理介绍

我们知道深度学习中对图像处理应用最好的模型是CNN,那么如何把CNN与GAN结合?DCGAN是这方面最好的尝试之一

DCGAN的原理和GAN是一样的,这里就不在赘述。它只是把上述的G和D换成了两个卷积神经网络(CNN)。但不是直接换就可以了,DCGAN对卷积神经网络的结构做了一些改变,以提高样本的质量和收敛的速度,这些改变有:

  • 取消所有pooling层。G网络中使用转置卷积(transposed convolutional layer)进行上采样,D网络中用加入stride的卷积代替pooling。

  • 在D和G中均使用batch normalization

  • 去掉FC层,使网络变为全卷积网络

  • G网络中使用ReLU作为激活函数,最后一层使用tanh

  • D网络中使用LeakyReLU作为激活函数

测试学习

这里参考了网上的几个训练blog,生成动漫少女头像。相关的数据可以到到动漫网站自己爬下来,如果你不想从头开始爬图片,可以直接使用别人爬好的头像数据。

DCGAN在Tensorflow中已经有人造好了轮子:carpedm20/DCGAN-tensorflow,直接使用这个代码。

不过原始代码中只提供了有限的几个数据库,如何训练自己的数据?在model.py中我们找到读数据的几行代码:

if config.dataset ==>'mnist':

data_X, data_y =self.load_mnist()

else:

data=glob(os.path.join("./data", config.dataset, "*.jpg"))

这样读数据的逻辑就很清楚了,我们在data文件夹中再新建一个anime文件夹,把图片直接放到这个文件夹里,运行时指定–dataset anime即可。

运行指令(参数含义:指定生成的图片的尺寸为48x48,我们图片的大小是96x96,跑300个epoch):

python main.py--image_size 96--output_size48--dataset anime -- is_crop True -- is_train True --epoch 300

结果是报错!

仔细观察了一下,是参数没匹配上。

调整为:

python main.py -input 96 - - output_height 48 - - dataset anime -- crop True - - train True - - epoch 300

运行成功!!!

epoch 0

目前还在训练当中


评论