【项目介绍】 基于Keras搭建深度卷积生成对抗网络DCGAN并训练动漫头像数据集源码+项目说明+数据集.zip 环境: CUDA:11.6.134 cuDNN:8.4.0 keras:2.9.0 tensorflow:2.9.1 注意: 项目内目录中两个文件夹: /datasets:将数据集文件解压至此 /save_models:保存训练好的模型权重文件,包括生成器权重和判别器权重两个文件 /images:保存生成的样本 DCGAN概述 2016年,Alec等人发表的论文《UNSUPERVISED REPRESENTATION LEARNING WITH DEEP CONVOLUTIONAL GENERATIVE ADVERSARIAL NETWORKS》(简称DCGAN), 首次提出将CNN应用到GAN生成对抗网络的模型中,从而代替全连接层。这篇论文中讨论了GAN特征的可视化、潜在空间差值等。 DCGAN是GAN的一个变体,DCGAN就是将CNN和原始的GAN结合到一起,生成网络和鉴别网络都运用到了深度卷积神经网络。 • 早期的GAN在图像上仅局限MNIST这样的简单数据集中,DCGAN使GAN在图像生成任务上的效果大大提升。 • DCGAN几乎奠定了GAN的标准架构,之后GAN的研究者们不用再过多关注模型架构和稳定性,可以把更多的精力放在任务本身上。 数据集: anime-faces:包含21,551张动漫头像图片,尺寸为64643 链接:https://pan.baidu.com/s/1IlqGfVOSXoVlFAC9zOxNfQ?pwd=52dl 提取码:52dl 每个eopch的step中的训练过程如下: 训练K步判别器: 随机采样batch size个真实样本 随机采样batch size个随机噪声,输入生成器获得相等数量的生成样本 将真实样本和生成样本输入判别器进行训练,真实样本标签为1,生成样本标签为0 训练V步生成器: 将生成器和判别器连接起来,并冻结判别器参数,使其不参与更新 随机采样batch size个随机噪声,输入连接起来的模型进行训练,标签为1 采用2:1训练比,每个steop判别器训练2次,生成器训练1次,根据不同场景可以更改此项。 需要注意的是,Keras训练过程中模型的状态依据的是model.compile()时的状态。 在定义判别器后,通过compile()编译判别器,然后连接生成器和判别器构成combined模型,并将判别器的trainable设置为False,再通过compile()编译combined模型。 在训练时判别器和combined模型各自保持编译时的状态,所以在训练过程中不需要反复将判别的的trainable参数设置为True和False 代码中设置: 数据归一化到-1到1之间 生成器输出层采用tanh激活函数 判别器输出层采用softmax激活函数,输出一维向量 采用label smooth平滑标签,clip=0.1 使用adam优化器,lr=0.0002,beta=0.5 使用crossentropy交叉熵损失函数 生成器使用BN,momentum=0.8,判别器不用 使用leakyrelu,激活函数,alpha=0.2 生成器使用逆卷积strides=2上采样 判别器使用strides=2卷积下采样 生成器输入采用随机高斯分布噪声 GAN模式崩溃解决方法: 1、使用合适的损失函数,有助于防止模式崩溃和收敛 2、提供足够的潜在空间,潜在空间是对生成器的输入(随机噪声)进行采样 3、保持安全的学习率,高学习率会导致导致模式崩溃或不收敛 4、特征匹配,特征匹配提出了一个新的目标函数,不直接使用鉴别器输出。生成器经过训练,使得生成器的输出预期与鉴别器的中间特征上的真实图像值相匹配。 5、使用历史平均值,在处理非凸目标函数时,历史平均可以帮助收敛模型 (生成图片缓存池)缓存生成图像,每次只取当前batch的一半,从缓存池里取剩下的一半,用于接下来的判别,提高判别器的稳定性。 GAN训练trick: 1、输入规范化为-1到1之间 2、修改损失函数 3、使用标准正态分布的随机噪声 更多见项目说明!!! 【备注】 1.项目代码均经过功能验证,确保稳定可靠运行。欢迎下载食用体验! 2.主要针对各个计算机相关专业,包括计算机科学、信息安全、数据科学与大数据技术、人工智能、通信、物联网等领域的在校学生、专业教师、企业员工。 3.项目具有丰富的拓展空间,不仅可作为入门进阶,也可作为毕设、课程设计、大作业、初期项目立项演示等用途。 4.鼓励大家基于此进行二次开发。在使用过程中,如有问题或建议,请及时沟通。 5.期待你能在项目中找到乐趣和灵感,也欢迎你的分享和反馈!
- 1
- 粉丝: 2244
- 资源: 1825
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于matlab实现配电网三相潮流计算方法,对几种常用的配电网潮流计算方法进行了对比分析.rar
- 基于matlab实现配电网潮流 经典33节点 前推回代法潮流计算 回代电流 前推电压 带注释.rar
- 基于matlab实现模拟退火遗传算法的车辆调度问题研究,用MATLAB语言加以实现.rar
- 基于matlab实现蒙特卡洛的的移动传感器节点定位算法仿真代码.rar
- 华中数控系统818用户说明书
- 基于matlab实现卡尔曼滤波器完成多传感器数据融合 对多个机器人的不同传感器数据进行融合估计足球精确位置.rar
- 基于matlab实现进行简单车辆识别-车辆检测.rar
- 基于JSP物流信息网的设计与实现
- 基于matlab实现车牌识别程序,和论文,自己做的,做毕业设计的可以看看 .rar
- Windows系统下安装与配置Neo4j的步骤