小白跑stargan v1 inference

本小白在老师的要求下,要从基础代码跳级去看stargan代码。stargan大概思想我简单捋了一下:就是一个生成器,实现多种图像编辑。实现方式是生成器需要输入图像+目标编码,进行定向的编辑;判别器不仅要判生成图的好坏,还要判别生成图的类别编辑对了没。

然后带着老师多看代码的叮嘱,我决定去跑一下官方pytorch代码。

再次强调,本人,纯纯小白,不仅深度学习刚入门,而且各方面基础知识都有所欠缺,包括github也不太会用,所以本人的经历非常之笨笨。前方笨蛋预警!

yunjey/stargan: StarGAN - Official PyTorch Implementation (CVPR 2018) (github.com)

打开论文作者大神的stargan首页,乖乖地先看readme:

1、Dependencies

python3.5+,pytorch0.4.0+,tensorflow1.3+ (optional for tensorboard)

嗯,+说明高于这个版本就好了,前2个过关。tensorflow我没装,但是没关系,它是optional的可以不装,具体什么情况我先没管。

2、dataset下载

git clone https://github.com/yunjey/StarGAN.git
cd StarGAN/
bash download.sh celeba

这是人大神给的代码,我到cmd一跑,诶,全都报错,说git和bash不是内部或外部命令,也不是可运行的程序或批处理文件。百度一搜,要解决的问题可多,看不明白,算了,先不去想为啥不能跑了。

这三行代码的意思无非是打包下载github页面的所有文件,然后下载celeba数据集。

按照上图,下载好gitHub文件的压缩包,解压,就得到了一个stargan的文件夹。

而celeba数据集下载,可以拿这个关键词百度去,我找了一会儿找到了百度云资源,进行了一个较为耗时的等待...里面解压好了以后包括images和一个list_attr_celeba文件存放图像对应的类别编码信息。

3、test

咱都知道哈,train一个深层网络在咱自己的小破电脑中不太现实,肯定想拿pretrained model跑测试程序啊。可是因为我的cmd跑不了bash,我也不知道咋去解决,算是辜负了大神的download.sh文件。我仍然去百度搜啊,又通过万能的百度云下好了资源。

后来听师姐一说,我才发现我这榆木脑袋还到处百度呢,数据集、训好的模型参数,所有要下载的资源网址,不都写好在download.sh里了吗,我bash用不了,可以改用github打开这个文件,复制网址自己去手动下载啊。

我创好了环境,在pycharm terminal里激活环境以后,就复制大佬的那行命令去跑了啊。

 我又傻了,我直接完整复制了这段命令:

$ python main.py --mode test --dataset CelebA --image_size 128 --c_dim 5 \
                 --selected_attrs Black_Hair Blond_Hair Brown_Hair Male Young \
                 --model_save_dir='stargan_celeba_128/models' \
                 --result_dir='stargan_celeba_128/results'

论这里面到底有多少个糟心的傻瓜错误?

(1)去掉那个$!!!

(2)去掉那几个\ !!!!!!不要换行,把换行和\都改成一个空格,跟前面那么多个参数之间的格式一样,保持一个空格就行!这样才能一把子命令下去。

(3)为啥跑出来一个hello pycharm??因为我运行的目录在我放所有代码的总文件夹下,那么多个main.py文件,它自然而然地运行了开天辟地hello world那一个。得加命令:

cd stargan\

将咱们这段命令的运行目录改到stargan里面来!

(4)跑出来咋报错了?数据集都打不开?

好家伙,我去看了main文件才发现:

 人家的默认路径跟我不一样啊!或者更早之前就应该发现不对了,人大神在download.sh中都写好了,它要创建什么目录、把数据集下载到哪里去,我忽视了download.sh,也难怪忽视了路径。

现在就是根据这个提示啊,在stargan文件夹下新建文件夹data,把数据集celeba文件夹移入data。

说到路径,咱刚刚一股脑复制的那段命令里好像也有提到啥路径欸?

--model_save_dir='stargan_celeba_128/models' 
--result_dir='stargan_celeba_128/results'

嗯....还要在stargan文件夹下新建文件夹stargan_celeba_128,在stargan_celeba_128下建立models和results文件夹,把刚刚预训练模型参数解压出来的200000-D.ckpt和200000-G.ckpt移进models中。

(5)嗯??怎么预训练模型参数存放路径还是报错?说找不到文件?

看具体报错信息,说" 'stargan_celeba_128/results'/ 200000-D.ckpt"不存在,发现盲点了吗朋友们,多了一对儿单引号,所以咱们python main.py命令后面跟的参数路径里,得把’’去掉。

总的来说!

应该把原来那段命令行改为以下形式:

python main.py --mode test --dataset CelebA --image_size 128 --c_dim 5 --selected_attrs Black_Hair Blond_Hair Brown_Hair Male Young --model_save_dir=stargan_celeba_128/models --result_dir=stargan_celeba_128/results

4、tensorflow

哐哐一顿跑,还没到读模型参数那一步呢,先报错我没有tensorflow,我确实没有啊,可是你不是说optional吗?我定睛一看,原来tensorflow is optional for tensorboard。百度一看,tensorboard是可视化工具,用来展示网络图、张量的指标变化、张量的分布情况等。哦,换句话说,对利用网络生成图像没影响。

于是我就去代码里ctrl+f,搜索tensorboard关键词了,想注释掉相关的调用。

main中果然有这么一个use_tensorboard参数 ,而且只有这么一处提到了。这个参数default=True,咱们改成False不就完了。果然,改完再跑,就跑起来了,results文件夹里出来了125张结果图,每张结果图有6列、16行,对应的是一个batch内16张图进行5种图像编辑,第一列是原图,第二列是黑发编辑,第三列是金发编辑,第四列是棕发编辑,第五列是性别编辑,第六列是年龄编辑。

这些都是由参数设置决定的——

(1)c_dim=5

(2)selected_attrs=“Black_Hair”,“Blond_Hair”,“Brown_Hair”,“Male”,“Young”

(3)batch_size=16

125这个数字哪里来的?看data_loader那个文件就知道了,它读入数据集的图片时,打乱顺序后,简单划分,取2000张作为test_dataset,其余的作为train_dataset。(2000=16*125)

5、怎么debug呢?

我会通过在terminal敲命令加参数运行test程序以后就在想,这样一家伙全给我跑完了,我怎么设断点debug看具体过程学习呀?我得找找手动改参数的地方。

还记得我在前文3(4)中提到,main.py里有许多参数的default,我们改掉default,然后直接点击debug main.py,不就起到了命令行一样的作用吗?

(1)mode,default由train改为test

(2)model_save_dir、result_dir,也需要改一下default:

分别由stargan/models改为stargan_celeba_128/models;stargan/results改为stargan_celeba_128/results。

(3)dataset、image_size、c_dim、selected_attrs其实default都符合命令行的参数要求,不用改。

6、想试试自己的照片怎么弄?

打开data/celeba/images,发现里面的图片都是178x218像素值的。我们可以把自己的照片用电脑自带的画画软件打开,重新调整大小,选择不固定宽高比,手动调整图片为178x218像素。然后把这张照片改名为000001.jpg,替换原images文件夹中的第一张图片。然后打开list_attr_celeba.txt文件,修改000001.jpg对应的各属性编码,一共40种属性,符合则值为1,不符合则值为-1。

记得这些图片载入后是打乱了存入test和train的数据集的,我们怎么保证这一次运行test就能看到自己的照片效果并且轻易找到它在第几张呢?

咱把打乱顺序那两行代码注释掉不就得了。

在data_loader.py文件下,有random.seed(1234)和random.shuffle(lists)两行代码,ctrl+/,快捷键注释两行即可。

——————————————————————————————

热烈欢迎走过路过的朋友们批评指正!如果能解决我避开的问题就更好啦!

  • 8
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值