DCGAN生成漫画头像
首先肯定是下载训练数据,而这些训练数据就是一些卡通头像。后来我们会看到这个具体的头像
就像其他的数据集目录一样,它是由一些目录和这个目录下面的文件组成的数据集。
有相当多的图片。所以可以训练出来比较好的效果。
图片的处理常规操作。一般就是缩减一下,缩小一下大小。中央部分的裁剪,通道的变化。
可见都是一些很小的头像图片。
根据论文得到的gen nn的结构如下
判别器的结构如下
定义损失函数
adversarial_loss = nn.BCELoss(reduction=‘mean’)
当然再配上2 优化器
定义D和G的forward
就是运用前面的正向得到的loss,再给优化器去优化
ms.jit会编译代码为机器码,加速的
这种模型训练的还比较快。不知道是不是网络的关系?
画个图看看D和G的loss
loss都变小
img = np.clip(np.concatenate((images[:]), axis=0), 0, 1) 这段代码只是将图片里面图片进行一个叠加,然后再把值限定在0,1,小于0的是0,大于1的是1。
1 image shape is
把0纬度的东西,就是图片取出来放到一起,就是把所有图片都放一起了。而clip的意思是裁剪,把超过0,1的值变成0,1之间。好像裁剪一样,像我前面说的那样。
ani = animation.ArtistAnimation(fig, show_list, interval=1000, repeat_delay=1000, blit=True)
ani.save(‘./dcgan.gif’, writer=‘pillow’, fps=1)
可以把静态图片变成gif动图,看到质量越来越高了。