Caffe架构的搭建及Caffe架构下DenseNet网络的构建

笔者发现国内的教程对Caffe架构的搭建鲜有bug较少的,于是我也来写一篇来做一个备忘,也希望能帮到大家~

转载请注明出处。

0.软件准备:

需要准备哪些软件不是凭空而来的。大家要养成认真看readme的习惯,readme如果强调了版本问题的话那就最好按照文档上的版本来搭建,否则遇到问题再返回来修改版本问题得不偿失。

首先,官方的caffe链接在这里:https://github.com/Microsoft/caffe,先把这个包下载下来。开发环境我们选择集成度比较高的VS2013,以及PTVS2.2.2(链接:https://github.com/Microsoft/PTVS/releases/tag/v2.2.2),请事先务必下载好。

这里的readme文件原原本本地给出了编译caffe架构所需的各种依赖软件及其版本,大家务必按照里面所述的版本下载相应的软件。(即下载:Cuda7.5,cuDNN4或5,Miniconda2.7-64bit,Matlab版本不限但2015之前的和2015之后的会在细节上区别后面会提到),此外还要下载cygwin软件(用于模拟linux环境)以及wget软件(用于自动下载文件)。

本人用的cuDNN4,由于caffe的readme中提供的cuDNN4的链接需要注册才能下载,笔者提供一个可以直接下载的链接:http://pan.baidu.com/s/1pJVB0tt

1.caffe编译:

请大家严格按照caffe链接中的readme中的指示一步一步去做。

如果是matlab2015a及以上的版本,请在按照readme文件中的指示,把caffe文件夹里面某个文件夹下的commonsettings.props内容配置完后,还要补充配置:在<MatlabDir>词条的后面一两行左右的<IncludePath>中,我们添加一项$(MatlabDir)\toolbox\distcomp\gpu\extern\include;。这是因为新版本的matlab某些关联库的路径和之前不一样了。

其中,Download cuDNN v4 or cuDNN v5 from nVidia website. Unpack downloaded zip to %CUDA_PATH% (environment variable set by CUDA installer). Alternatively, you can unpack zip to any location and set CuDnnPath to point to this location in .\windows\CommonSettings.propsCuDnnPath defined in .\windows\CommonSettings.props. ”这句话即便照做也会出现问题,我们在这么做之后,把解压后的cuDNN4文件中的include,bin,lib文件夹中的内容分别提取出来,复制到Cuda中相应的文件夹下,笔者亲测有效。

按照readme中的指示设置完毕后,可以开始编译整个工程,编译过程中难免会出现一些报错,我们对各种错进行各种排查。

caffe工程一共有16个组件,但凡某个组件出现找不到xxx.h头文件这种报错,请在该组件条目上右击找属性->配置属性->C/C++->所有选项->附加包含目录,在这个条目上,添加这个缺少的头文件所在的目录,然后重新编译。

注:许多头文件都是用于所有16个组件,所以大家其实可以把这个头文件分别加进这16个组件的附加目录中,然后再一起重新编译,这样会省一些时间。(当然如果是只和matlab有关的头文件就只需要设置matcaffe这一个组件就行了)。

如果某个组件在编译时出现xxx.lib无法打开,请在该组件条目上右击找属性->配置属性->链接器->常规->添加库目录,把xxx.lib所在的目录添加进去,然后重新编译。

注:同样可以分别加到所有组件中,然后再编译。

2.把caffe库导入python和matlab

现在,caffe官方给出的readme文件中只剩下两个remark还没有照做,我们来做这两个remark。做完第一个remark后,可以在cmd下输入python打开python,然后输入import caffe尝试有无报错。做第二个remark的过程中,注意文中提到的matlab search path是什么,它在你打开matlab后,通过菜单栏中可以找到这个,它的中文叫“搜索路径”,有点像系统配置的环境变量,只需要把目标文件夹自身加入搜索路径即可,其子文件夹不用加入搜索路径。

3.学习在caffe下使用Dense-Net代码

Dense-Net的caffe代码在https://github.com/liuzhuang13/DenseNetCaffe中,这是在CIFAR-10数据集下的Dense-Net代码,Imagenet数据集下的Dense-Net代码在https://github.com/shicai/DenseNet-Caffe。

我们以CIFAR-10数据集下的Dense-Net代码为例来介绍:

首先,依旧是阅读readme文档,按照其所述的第0步来做。第0步涉及3个问题:首先,下载数据,按照readme给出的链接中给出的指令执行get_cifar10脚本。然后,如果继续执行后面的脚本,我这里会出现报错,我们考虑避开这个报错:在~$caffe_root\Build\x64\Release下新建一个名为input_folder的文件夹,把刚才下载下来的6个bin数据文件复制到这里面,然后打开cmd命令行,运行convert_cifar_data.exe,如果找不到的话,请切换到该exe所在的目录,然后再运行该exe。按照usage的提示,输入4个参数:convert_cifar_data input_folder的目录 output_folder的目录 leveldb即可在output_folder中把原先6个bin数据文件转换为leveldb数据库文件。最后,将转换完的数据库文件做平均值预处理,cmd运行compute_image_mean.exe。按照usage输入4个参数: compute_image_mean.exe的路径 --backend=leveldb cifar10_train_leveldb的路径 mean.binaryproto的路径(mean.binaryproto放到\examples\cifar10文件夹下),并执行,生成预处理后的数据。

之后,按照其所述的后面的步骤来做,其中readme中所说的第3步中所说的caffe path就是存放caffe.exe的目录。

勘误:readme第2步中的densenet_make.py应为make_densenet.py。

然后就可以开始训练数据啦~

如果训练时报错说内存不足,可以考虑开虚拟内存;如果说GPU显存不足,可以通过修改make_densenet.py文件来修改batch_size参数来修改内存需求。

参考文献:

[1].http://blog.csdn.net/xjz18298268521/article/details/52190184

[2].http://blog.csdn.net/freeape/article/details/71519718

[3].http://blog.csdn.net/abc8730866/article/details/52488813

会用它来跑数据只代表大家刚刚对其有个感性的了解,万不可骄傲,后面必须要认真去看DenseNet的文献以及代码,然后考虑一些实际应用或者算法改进才是重点。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值