第一个深度学习项目

1、 项目源码
https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix
【pix2pix论文讲解-双语字幕-哔哩哔哩】 https://b23.tv/AQgXCAT
2、 配置环境的两种方式:
Pip
Conda
不要混用,conda包管理工具,无法管理pip下载的包

3、 搜索everything
一个很使用的搜索文件工具
4、
conda env create -f environment.yml //下载超时,pip指令逐个下载包
在anaconda里用原项目作者给出的环境配置文件创建一个新的虚拟环境,新环境名pytorch-CycleGAN-and-pix2pix
或者在pycharm里打开项目,自动检测到环境.txt文件,提示安装

5、 进入新环境
conda activate pytorch-CycleGAN-and-pix2pix
检验是否安装了gpu版本的pytorch
python
import pytorch
torch.cuda.is_available()
Ctrl+z,回车,退出python环境

6、 虚拟环境连接 Jupyter 内核
安装 ipykernel
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple ipykernel
将虚拟环境导入 Jupyter 的 kernel 中
python -m ipykernel install --user --name=环境名
删除虚拟环境的 kernel 内核
jupyter kernelspec remove 环境名

7、 下载并启动visdom
python -m visdom.server打不开,Downloading scripts, this may take a little while,
visdom需要下载相应的脚本,但是需要翻墙,所以是下载不下来的,就会卡在这里不动。
找到visdom的位置。在visdom下找到server.py文件,将文件中download_scripts()注释掉,不让他在线下载。
def download_scripts_and_run():
#download_scripts() # 注释掉这一句
main()
下载visdom的包,自己下载visdom需要的static包,将下载好的包解压,然后放到visdom中进行替换。提前下载所需静态文件,tgz解压, 三个文件 css.tgz, fonts.tgz, js.tgz 并覆盖
进入http://localhost:8097

8、 下载数据集
http://efrosgans.eecs.berkeley.edu/pix2pix/datasets,pix2pix的
http://efrosgans.eecs.berkeley.edu/cyclegan/datasets,cyclegan的
放在datasets文件
解压 windowspowershell 选好路径 tar -zxvf 文件名

9、 训练pix2pix
python train.py --dataroot ./datasets/facades --name facades_pix2pix --model pix2pix --direction BtoA
10、 训练cycleGan
python train.py --dataroot ./datasets/facades2 --name facades2_cyclegan --model cycle_gan
报错,CUDA out of memory
方法:将bacth_size改小(一次训练所选取的样本数)——已经是1了
法二:在cpu上运行
python train.py --dataroot ./datasets/facades2 --name facades2_cyclegan --model cycle_gan --gpu_ids -1

一般来说,GAN(生成式对抗网络)中包含两种类型的网络G和D。其中,G为Generator,它的作是生成图片,也就是说,在输入一个随机编码(random code)z之后,它将输出一幅由神经网络自动生成的、假的图片G(z)。另外一个网络D为Discriminator是用来判断的,它接受G输出的图像作为输入,然后判断这幅图像的真假,真的输出1,假的输出0。
当我们固定住生成器的参数训练判别器时,判别器便能学到更好的判别技巧,当我们固定住判别器参数训练生成器时,生成器为了骗过现在更厉害的判别器,被迫产生出更好质量的图片。两者便在这迭代学习的过程中逐步进化,最终达到动态平衡。
在两个网络互相博弈的过程中,两个网络的能力都越来越高:G生成的图片越来越像真的图片,D也越来越会判断图片的真假。到了这一步我们丢掉D不要了,把G拿来用作图片生成器。正式一点儿讲(上公式啦),我们就是要在最大化D的能力的前提下,最小化D对G的判断能力,这是一个最小最大值问题,它的学习目标是:min max E(log D(G(z))+log(1-D(x))]
前面说过传统的GAN的种种局限,那么现在,我们相应的目标就是:提高GAN的用户控制能力、提高GAN生成图片的分辨率和质量。为了达到这样的目标,总共分三步:
1.pix2pix:有条件地使用用户输入,它使用成对的数据(paired data)进行训练。
2.CycleGAN:使用不成对的数据(unpaireddata)就能训练。
3.pix2pixHD:生成高分辨率、高质量的图像。
Cyclegan不同域之间的图像转换,本身形状不变。
首先cyclegan的网络有两个鉴别器和两个生成器,这与之前学到的gan会有所不同。两个生成器的作用是:
G_A2B:将真实马的图片变成相同状态的斑马图片(假的)或者将生成的假的马的图片变成斑马。
G_B2A:将真实的斑马图片变成相同形状的马的图片(假的)或者将生成的斑马图片变成马。
D_A:鉴别真实的马或者鉴别生成的马。
D_B:鉴别真实的斑马或者鉴别生成的斑马。
定义生成器损失函数
一部分损失来源于将生成图片输入判别器后得到的结果与1(判定为真)之间的交叉熵损失;另一部分损失来自生成的图像与真实建筑图像之间的L1损失。
定义判别器损失函数
一部分损失来源于将生成图片输入判别器后得到的结果与0(判定为假)之间的交叉熵损失;另一部分损失来自将真实建筑图片输入判别器后得到的结果与1(判定为真)之间的交叉熵损失。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值