stylegan2 浅层实现
stylegan2-ada 图像生成
没想到我也成功了
先说一句废话:
感谢各位在网上发布项目经验和代码的大佬们
再说说运行环境:
我是在公司搞的,因为公司的电脑没有显卡,于是用vscode连得服务器linux系统,又在linux里连了一个docker镜像,然后在容器里面实现的,不过cuda是公司自己装的,容器里面已经把相关的环境需要的东西全都搞好了,就不用我操心了。
我实现的是stylegan2-ada ,是这个原来的作者在stylegan2上修改得到的,用了ada。据说用少量的数据集就可以获得比较好的效果
ABSTRACT:
“使用太少的数据训练生成对抗网络 (GAN) 通常会导致判别器过度拟合,从而导致训练发散。 我们提出了一种自适应鉴别器增强机制,可显着稳定有限数据机制中的训练。 该方法不需要更改损失函数或网络架构,并且适用于从头开始训练和在另一个数据集上对现有 GAN 进行微调时。 我们在几个数据集上证明,现在只使用几千张训练图像就可以获得良好的结果,通常将 StyleGAN2 结果与少一个数量级的图像相匹配。 我们希望这为 GAN 开辟新的应用领域。 我们还发现广泛使用的 CIFAR-10 实际上是一个有限的数据基准,并将记录 FID 从 5.59 提高到 2.42。”
docker地址:https://hub.docker.com/r/heatonresearch/stylegan2-ada
这就是他的目录下面的东西
其中 train 就是训练模型的文件,generate就是生成图像的文件,dataset_tool是转化图像的文件,projecter我还没试过,据说是你给他一张图片,他能搞一系列差不多的,然后进行微调之类的。
我先从生成图像文件开始,我相信生成图像是吸引你们进来的地方:
nvidia-docker run -it -v /home/gqy/docker/ai:/home/ai heatonresearch/stylegan2-ada /bin/bash
连接到docker
cd /home/ai/stylegan2-ada/
切换到目录
python generate.py --network=/home/ai/stylegan2-ada/model/stylegan2-ffhq-config-f.pkl --seeds=1000-1200 --trunc=0.5 --outdir=/home/ai/humanface
生成人脸,用的是stylegan2-ffhq-config-f.pkl 模型,这个模型就是别人提供的
https://nvlabs-fi-cdn.nvidia.com/stylegan2-ada/pretrained/,seeds就是随机种子, trunc 可以控制生成的图片的多样性, 一般在0.5-0.7 ,outdir就是生成的图像的地址。这只是一个例子,具体怎么实施要看你自己的文件的目录。
如果你不想用别人的数据集,你就自己训练出一个模型,首先准备一些三通道(RGB)图片,这个作者说几千张就可以,如果只有几百张,就先试试,看看效果,图片的长和宽都要求是 2 的幂,一样大 比如 3* 512* 512,或者3* 1024* 1024,图片越大对你电脑的要求越高。我本来准备的图片不是这样的,然后用Matlab转换了一下,变成了这个大小。
接着运行dataset_tool.py 就会转换格式成TFRecords, 然后进行训练。
train就是训练的文件,我说几个参数:
outdir 就是训练的结果的路径
gpus 就是你的显卡数量,我们服务器是两块
snap 就是隔多久显示一下目前的状态 ,默认是50,自己随便调整
data 就是数据,你刚刚生成的tfrecord的路径
kimg 可以理解为训练的时常,一般来说越长越好,主要还是看收敛的速度。你边训练边看状态,就知道收敛的怎么样了
resume 是是否要进行迁移学习,如果想在别人的模型基础上训练的话,就将别人的模型的路径赋值给他
metrics 好像是选择评判指标,我也不大确定
mirror 代码介绍说是图像增强的东西
dry run 是打印出你的参数,不运行程序,让你检查一下对不对
例子:
python train.py --kimg=1000 --outdir=/home/ai/result --mirror=1 --snap=50 --data=/home/ai/dataset/missile --gpus=2
fakes00000000是初始的样子
201 403 604等等就是越往后训练,训练出来的图片样子,不过这些都只是示例,你需要自己去运行generate函数去生成
pkl后缀的就是你的模型,数字分别对应训练到什么程度的模型
metric-fid0k_full 是训练的一个过程吧
最后一列越小越好,我这个显然还没有收敛,阔以增加 kimg再训练 ,或者加大学习率,不过我觉得人家既然没有把学习率搞出来让我修改,还是不要修改了,如果效果很差再修改。
我训练一次要20多个小时还是挺久的。
作者训练的样本最后这个值能达到2到3之间。
生成的图片就不展示了
stylegan2 浅层实现相关推荐
- J. Cheminform. | 基于化学基因组学中深度和浅层学习预测药物特异性
今天给大家介绍由巴黎文理研究大学计算生物研究中心的Veronique Stoven教授课题组发表在J Cheminform上的一篇文章.作者提出一种具有深度学习功能的化学基因组神经网络(CN),以分子 ...
- java中浅层克隆和深层克隆
1.浅复制与深复制概念 浅复制(浅克隆) 被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象.换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的 ...
- Tensorflow MNIST浅层神经网络的解释和答复
本系列文章由 @yhl_leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/51416540 看到之前的一篇博文:深入 ...
- 深度学习(二十二)Dropout浅层理解
Dropout浅层理解 原文地址:http://blog.csdn.net/hjimce/article/details/50413257 作者:hjimce 一.相关工作 本来今天是要搞<Ma ...
- 深度学习与神经网络关系(BP网络【浅层】与深层网络)
文章目录 Deep Learning的基本思想 浅层学习(Shallow Learning)和深度学习(Deep Learning) 浅层学习是机器学习的第一次浪潮. 深度学习是机器学习的第二次浪潮. ...
- 第06课:浅层神经网络(NN)
上一篇我们主要介绍了一些神经网络必备的基础知识,包括 Sigmoid 激活函数.损失函数.梯度下降和计算图.这些知识对我们学习神经网络非常有用!本文我们将开始真正的神经网络学习,从一个浅层的神经网络出 ...
- 吴恩达《神经网络与深度学习》精炼笔记(4)-- 浅层神经网络
上节课我们主要介绍了向量化.矩阵计算的方法和python编程的相关技巧.并以逻辑回归为例,将其算法流程包括梯度下降转换为向量化的形式,从而大大提高了程序运算速度.本节课我们将从浅层神经网络入手,开始真 ...
- 斯坦福CS231n项目实战(四):浅层神经网络
我的网站:红色石头的机器学习之路 我的CSDN:红色石头的专栏 我的知乎:红色石头 我的微博:RedstoneWill的微博 我的GitHub:RedstoneWill的GitHub 我的微信公众号: ...
- Coursera吴恩达《神经网络与深度学习》课程笔记(4)-- 浅层神经网络
红色石头的个人网站:redstonewill.com 上节课我们主要介绍了向量化.矩阵计算的方法和python编程的相关技巧.并以逻辑回归为例,将其算法流程包括梯度下降转换为向量化的形式,从而大大提高 ...
最新文章
- linux中awk下 gsub函数用法
- CSDN问答频道“华章杯”7月排行榜活动开始,丰厚奖品等你拿
- Python-OpenCV 处理视频(三): 标记运动轨迹
- Boost:assume aligned假设对齐的测试程序
- 服务器复制不了文档,服务器复制粘贴不了
- scipy是python下的什么_SciPy是什么
- MXNet.gluon——图像I/O
- 分页缓冲池占用很高怎么解决_一次线上服务高 CPU 占用优化实践
- 手rm-linux联网后自动dhcp,Linux操作系统下DHCP基础配置
- 从病毒到“基础软件污染”,Linux 真的安全吗?
- 插件开发之360 DroidPlugin源码分析(二)Hook机制
- ubuntu版网易云音乐下载
- 软件开发人员是一种很棒的职业选择的五大理由
- WPF 背景透明文本不透明
- Unity3D自由摄像头视角旋转,平移,缩放
- 04、Hadoop框架HDFS NN、SNN、DN工作原理
- (D)TLS1.3大揭秘之TLS1.3总体概览
- 6.Python常用第三方库—jieba库的使用(中文分词词库)
- 入职华为外包一个月后,我离职向“北上广深”流浪了...
- 一个完整的机器学习项目需要哪些步骤