美文网首页
小白开始学深度学习(一)

小白开始学深度学习(一)

作者: liuxingzi | 来源:发表于2019-08-08 16:05 被阅读0次

为什么要学习机器学习?什么是机器学习?

说实话,这些名词听到的太多了,最早知道的是人工智能(AI),从AlphaGo与人类的围棋大战开始,逐渐知道了AI的厉害了,但一直觉得这个本事离我们还是有点远的,都是大专家们玩的,直到前一阵子做的那个小程序上线了,才开始对这一块的东西感兴趣了,想好好研究一把。其实吧,最直接是受到了DeepNude这个的影响,这么神奇的东西,怎么做的呢?

熟话说的好,兴趣是最好的老师,有了兴趣,学什么东西都快了,也有劲头了。

先把DeepNude的代码拿到研究一下吧,网上有同学对这里面涉及到的技术点研究了一下 https://github.com/yuanxiaosc/DeepNude-an-Image-to-Image-technology,做了一下猜测吧。

知道用到了什么东西,那我就学习什么东西吧。

我最初的打算是把这个代码(Python的)转化一下,写成个接口,放到我的服务器上,类似于我那个换脸的,这样的话,我的小程序也可以直接用了(当然这不一定能通过审核啦),但发现不行,这个在本地执行都太慢了,服务器没有GPU,更慢啦。这个时候我才知道搞深度学习还是需要GPU的,普通的电脑还是有点累。 (补:现在想想为什么只是使用模型也要用到GPU呢,一般不是训练模型才需要GPU吗)

那这个程序可以放到手机上吗?做个APP吗?好像也不行,太大了 模型文件

这三个模型文件加起来两个G了,放弃吧。

最后就想,能不能把这个程序改良一下呢。那就开始学吧,进入正题了。

首先,搞清楚一件事,我要学什么技能,才能写出这样的程序(其实现在想想主要的不是程序是算法啦)
听说这个属于深度学习领域的技能,那什么是深度学习,什么又是机器学习呢,两年前苹果推出了机器学习的库,没实际用过,觉得这个东西用不到我们公司的APP上,就没细研究。

说一下三者的关系吧

深度学习与机器学习关系
(图片来自于https://www.cnblogs.com/charlotte77/ 一位深度学习方面女专家,网上有她的视频讲座Free的,对于我这样的小白来说看不懂,先不去看了)

说实话,其实我并没有真正开始学习深度学习,我只是学了一些工具的使用方法,想通过兴趣再去研究更深的东东吧,如果直接去学习那些高数、算法呀,估计我肯定学不下去了。不要鄙视我,我就这样了。

其实机器学习说白了,基本上过程都是
找一堆数据集给机器,让它学习(训练)去,学习的结果是得到一个模型,有了这个模型,再对未训练过的数据进行预测,得到预测结果。

那么,我就先不管用什么算法去学习,先把这个过程试一下吧。

其实机器学习涉及到很多领域:计算机视觉、自然语言、语音识别等等,而我感兴趣的是视觉方面,再具体一点是图像生成方向的,而这里面最有名的就是GAN(生成式对抗网络,一种深度学习模型),可以用于根据学习训练生成图像,还有这基础上的 CycleGAN https://github.com/junyanz/CycleGAN

那就来试一下这个效果如何吧?按说明书上写的,能把普通马变成斑马,能把苹果变橘子。


CycleGAN

怎么训练,拿什么来训练呢? 这里就涉及到数据集了,这个是要收集的,如果我们自己收集的话,那就不用做别的事情了,收集几千张。

这里不得不引入一个机器学习的重要平台或者说框架了 PaddlePaddle 百度出品的,之前吴恩达老师在百度时主创的平台,基本上可以对标Google TensorFlow的,相对于我这种小白来说PaddlePaddle入门更容易,(当然我现在还没入门呢)。

我的目的是试一上CycleGAN的效果,PaddlePaddle帮我们整理了这个模型库,直接用吧。

图像生成相关的模型库:https://github.com/PaddlePaddle/models/tree/develop/PaddleCV/PaddleGAN

执行过程,里面有可直接执行的脚本


scripts

(这里插入说一下,学习机器学习,还是要先学习Python的,不然后面进行不下去的。)

Python 的执行,就涉及到一个环境的问题,因为Python不同版本的缘故,一般可以使用 virtualenv 或者 Anaconda ,具体使用方法百度吧,都不算麻烦。

继续,比如,我想试一下那个斑马替换的效果,
那需要先下载数据集,download.py 这个文件里,帮我写好了下载的步骤,我们只要执行一下,

python download.py --dataset=horse2zebra 

下载好后,


数据集

再去训练啦,如果不能使用GPU,只使用CPU的话,需要加参数 --use_gpu False ,默认是使用的。
python train.py --model_net CycleGAN --dataset horse2zebra --batch_size 1 --net_G resnet_9block --g_base_dim 32 --net_D basic --norm_type batch_norm --epoch 200 --load_size 286 --crop_size 256 --crop_type Random > log_out 2>log_err

这个过程是很漫长的,基本上自己的电脑是不大能完成这个任务的,肿么办?放弃嘛?还是去买个带GPU的服务器呢?木钱,为了自己这个不赚钱的兴趣,还要去花钱,不符合我的做事原则。
这里就要向大家推荐百度的平台https://aistudio.baidu.com/aistudio/index啦,免费送GPU算力(啥是算力?不知道啦,反正能让你在上面用GPU训练啦)。

百度的AI Studio 肿么用啊?
这个东东可以分成三部分
1、普通的NoteBook项目
2、脚本
3、数据集

先说我如果要在这上面训练怎么做
两种做法
1、创建一个NoteBook项目,把PaddleGAN的代码数据集都搬到这上面去,用每天送的算力去跑,也是可以的,但有个问题算力有限,且浏览器关了就断了。
所以我推荐使用方法2,但还是建议大家先使用NoteBook,熟悉一下这个平台的工作方式。
2、使用脚本任务方式训练
1)创建一个数据集,把下载好的horse2zebra数据上传。
2)把PaddleGAN的代码放到脚本项目中,执行


脚本任务

这里有些代码要修改一下,比如解压数据集文件、并生成 trainA.txt等文件,并配置训练参数。

执行,执行结束后,会生成模型的,这时到“下载输出”中下载就可以使用了。

回到上面那个过程中,当时我们不能在本地训练模型,去百度AIStudio平台上训练了,假使训练结束后,生成checkpoint模型放到output/checkpoints/199目录下

再执行
python infer.py --init_model output/checkpoints/199/ --dataset_dir "data/horse2zebra/testB/*" --image_size 256 --input_style B --model_net CycleGAN --net_G resnet_9block --g_base_dims 32

好了,到这里第一步整个过程就了解了,先到这里吧。

相关文章

网友评论

      本文标题:小白开始学深度学习(一)

      本文链接:https://www.haomeiwen.com/subject/rqpslctx.html