本菜鸟准研究生一枚(今年秋季入学),研究方向为基于深度学习的自然语言处理和图像识别,前两天导师给发了个链接,是一个基于caffe的mtcnn网络代码,让小弟学习,还没入行,光是代码就编译了好几天,好多库要找回来,配置好,很是心累!有关这个代码的帖子,要是有人有兴趣,欢迎参看本人下一篇博客(后期更新)。代码编译过程中就了解到了caffe以及Windows下的caffe,所以就有了这个帖子。
好了,言归正传,开始讲主角!在Windows下使用caffe框架,环境搭建以及数据训练和测试。关于这个问题的教程网上已经有铺天盖地的教程,重复的我不写,免得后来者看半天发现其实和其他的一样!我把我参考过的优秀帖子和搭建过程中遇到的种种问题写上来,关键的部分我用高亮标注了,欢迎参考!
一、前言:
我遇到的第一个问题是caffe-master和caffe-Windows的区别,刚入坑的我完全以为这两个代码不是一样的,在学习过程中,才发现,其实这两套代码是一个作用,都是Windows下的caffe,只不过前者是微软官方出的,后者是caffe官方为Windows环境提供的,我专门下载下来对比过,一级文件夹和二级文件夹内容完全一致,作用应该是一样的。国际惯例附上经验来源:https://blog.csdn.net/zb1165048017/article/details/51355143。
二、VS2013+caffe-master+CPU
1,CPU下编译caffe-master网上教程很多,这里不赘述,推介这两篇博客文章:
①:https://blog.csdn.net/zb1165048017/article/details/51355143
②:https://blog.csdn.net/guoyk1990/article/details/52909864(有训练教程)
两篇文章讲得都很详细,第一篇博客详细地介绍了怎样在CPU环境下跑起来这个caffe框架,亲测没有错误,但是博主没有提醒一点,就是在编译前将编译器设置为Release,X64,默认Debug,X64,感谢博主。
第二篇博客前面提到了GPU模式下需要安装的软件(CUDA平台和一个加速库:cudDNN,但是没有讲在GPU下编译、运行及测试),可以看也可以跳过,下文会讲GPU模式的搭建步骤。此博客有关于训练和测试的教程,训练测试数据在博客中也有链接,可以用来测试是否搭建成功。
2,下面讲CPU下遇到的问题
①:没有编译convert_mnist_data,如下图,解决方案中一共有16个项目,其实是16个工程,各有各的用处吧,按照博客②中讲述,下载下来的训练数据要转换成caffe可以识别的leveldb或lmdb文件类型,作者还附上了批处理代码,很方便。但是这中间要用到convert_mnist_data.exe,但是两篇博客均没有讲要编译这个工程,结果转换失败后仔细看代码才发现这个问题!单独编译convert_mnist_data工程即可解决。
②:有了convert_mnist_data.exe还是不行,还是转换不成功,提示打开文件失败,然后再一次研究批处理代码,发现,要把下载好的四个文件解压,解压后,问题结局,成功转换。
③:训练及测试过程,caffe训练时调用转换好的leveldb或lmdb文件时的路径为.\examples\mnist,博客②中作者的批处理文件代码将转换好的文件输出到了\examples\mnist\mnist_data,需要自己拿出来,或者在两个转换的批处理文件代码中,输出路径设置为.\examples\mnist,如下:
train
Build\x64\Release\convert_mnist_data.exe --backend=lmdb examples\mnist\mnist_data\train-images.idx3-ubyte examples\mnist\mnist_data\train-labels.idx1-ubyte examples\mnist\mnist_train_lmdb
pause
test
Build\x64\Release\convert_mnist_data.exe --backend=lmdb examples\mnist\mnist_data\t10k-images.idx3-ubyte examples\mnist\mnist_data\t10k-labels.idx1-ubyte examples\mnist\mnist_test_lmdb
Pause
设置好后,还存在一个问题,运行caffe.exe时提示:
④:Cannot use GPU in CPU-only,这个问题是在这里找到的:http://www.caffecn.cn/?/question/1199,但是文章中讲到在两个文件中都要做修改,一个是Makefile.config,另一个是examples/mnist/lenet_solver.prototxt,以笔者的渣渣编程基础觉得第一处修改意义并不大,因为这个都是按照程序来的,第一处本来就应该是注释。实测修改第二处即可,如果问题任然存在,可以尝试修改第一处。
本次修改后,一次过,界面如下,最后的0.99应该是最后的识别率吧,不明觉厉,哈哈,深度学习就是厉害。
二、VS2013+caffe-master+GPU+cuda7.5+cudnnv5
1,cuda7.5+cudnnv5环境配置
GPU下主要安装一个cuda的平台和cudnn的加速库,其他和CPU一致,相关信息参考以下步骤:
①:安装CUDA7.5方式可以参考以下链接
https://wenku.baidu.com/view/ef375d8587c24028905fc377.html
https://blog.csdn.net/u011821462/article/details/50145221
这两个链接应该可以解决Windows10+VS2013+cudnn的配置问题,第二个链接有测试教程,很不错,感谢大佬!
这里讲一下我的安装经验(挺重要的):
第一,在安装cuda时候,其实win10还是win7都无关紧要,只是在添加环境变量时候,win10有弹窗,每一条路径一行,而win7是用封号“;”隔开的,视觉上不太好,其他没有区别。
第二,在安装cuda时候千万要注意cuda的版本问题,并不是版本越新越好,以caffe-master为例,它只支持cuda7.5,笔者刚开始直接装了cuda9.2,却发现cudnn都下载不了,截至目前(2018-5-27)9.2版本的CUDA还不支持Windows下的cudnn加速库,看后期NVIDIA有没有更新吧!于是笔者直接下了cuda7.5,其实caffe-master官方就是cuda7.5,为了兼容性好,墙裂安利cuda7.5.
第三,下载cudnn时,笔者再一次犯错误,下载了cudnn v6,于是编译再一次报错,错误还不能定位,根本看不出来是cudnn版本错了,网上又是一番查找,无意中看到这篇帖子
(https://blog.csdn.net/zb1165048017/article/details/51549105)提到了,caffe-master在GitHub上有明确说明,只支持cudnnv4、cudnnv5,都是英文的,一开始根本没看,准确说是看到鸟语本能性排斥。在这里强调一下,对于一个开发者,鸟语真的真的很重要!找到问题就很简单了,直接在NVIDIA官网下载cudnn v5 for cuda7.5,解压后将三个文件复制到cuda的安装目录C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5 相应的文件夹中。编译通过,这里再提一下,GPU版本编译过程及其缓慢,编译信息会轮回滚动好几轮,好像死循环似的,其实没有,耐心等待就好,大概半个小时,CPU好的话会时间短点。
第四,强烈建议将显卡图形驱动更新到最新版本。
2,显卡算力 (重要!重要!重要!)
修改后:
修改后保存,然后重新打开caffe.sln
先----->>清理解决方案!清理解决方案!清理解决方案!
然后------->重新编译所有!重新编译所有!重新编译所有!
至此,所有设置均已完成,编译结束后,运行上面提到的三个批处理命令,得到GPU训练下的程序运行图:
注:若是显卡算力低于3.0,笔者也没有遇到这样的问题,因为我的显卡是GT 750M,算力为3.0,我猜测若是显卡算力低于3.0的话,可以像我一样在CommonSettings.props做相应修改后,查看Makefile.config.example里看有没有自己的算力代码,若是显卡算力为2.0或者2.1相信也可以同样解决问题,若是低于2.0的话,我觉得可能单单修改CommonSettings.props已经不会有效果了,请兄弟自行查找相关解决问题吧,爱莫能助了!
写在最后:
第一次发帖子,不足之处,敬请谅解,欢迎指正!同时向感谢文章中的所有链接作者表示感谢!希望对相关研究者有所帮助!