个人使用配置:
win 10
Anaconda 4.2.0+python 3.5.5
vs2017
opencv 3.4.6
openblas 0.2.8
CUDA 10.0
这个应该没什么问题,anaconda可以使用清华源安装,vs2017直接去官网下载好了,需要教程的话应该也有很多。
opencv网上的教程也很多,openblas的话我偷了个懒,直接下载的别人编译好的包
这是最麻烦的一步了。
主要参考https://blog.csdn.net/nk_wavelet/article/details/78935511?utm_source=blogxgwz0
根据显卡类型去官网下载cuda
这里可能有点问题,比如一开始会提示安装失败,有些教程说可以先删掉原来的驱动再重新安装https://blog.csdn.net/xgzxgzxgzxgzxgz/article/details/80634969?utm_medium=distribute.pc_relevant.none-task-blog-baidujs-8&spm=1001.2101.3001.4242
然后去官网下载对应的cudnn,将cudnn压缩包中各个文件夹中的文件
复制到cuda对应的文件夹下,可供参考的cuda路径是C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0
,lib中的文件注意放入x64文件夹下
我尝试了三种github上的caffe包,只有最后一种成功了,怕麻烦的朋友直接跳到最后一种方法就好。
因为可以很方便的自动下载nugetpakeages,一开始选择了微软的caffe包,主要参考https://blog.csdn.net/qq_41895190/article/details/82414695,不过平台工具集我选择的是v141,使用vs2015的v140工具集我会报错The specified task executable "cl.exe" could not be run. 系统找不到指定的文件
(这里我也找了很多方法 ,但是都无法解决,所以最后决定用) 。但是又出现了像NuGet Error:Unable to find version '2.4.10' of package 'OpenCV.overlay-x64_v120_Release'.
这样的问题,后续还出现了很多其他问题,非常劝退。大概是因为我使用的vs2017和微软推荐的vs2013版本不兼容的问题,使用的平台工具集也不适配。
最后我放弃了。
这里主要参考https://blog.csdn.net/fengtaoO08/article/details/83023428
前面的步骤很简单,按照以上教程来就好。在python2.7的虚拟环境下安装pycaffe依赖包的时候,我又遇到了问题,下载很慢然后会提示readtime out
,可以使用--default-time = 1000
来解决,比如
pip --default-time = 1000 install numpy
用这种方法不会加快安装的速度。想要速度快的话可以改换国内的清华源,但也可能会因为readout time问题而报错。用python3.5环境安装的时候也会很慢。接下来我也由于自动生成的库不适用于vs2017,产生很多错误,最后也放弃了。
去https://github.com/happynear/caffe-windows上下载,再参考一下 README.md 上的内容,解压出第三方包并添加至环境变量,修改.\windows\CommonSettings.props.example
为CommonSettings.props
,然后改一下其中的cuda以及cudnn版本和位置,pythonsupport设为true,还有对应的python的位置。
然后打开 caffe.sln 开始编译libcaffe,可能会出现VS_error MSB3073: :VCEnd”已退出,代码为 1
的报错,可以将libcaffe属性中生成事件里后期生成事件下在生成中使用设为否。
接下来就是编译caffe,由于我的vs2015工具集有问题,所以我又都换成v141工具集了,另外它好像同时需要python3.5和3.6。我用anaconda搭建3.6的环境后,搭建了python3.5的虚拟环境,出现现找不到libboost_thread-vc141-mt-gd-1_65_1.lib
确实可以通过重命名文件的方法解决,可以参考https://blog.csdn.net/ckkk1993/article/details/84877576。
基本上成功了一大半了。
使用minst数据集
主要参考https://blog.csdn.net/qq_14845119/article/details/52415090#
编译caffe项目中的convert_mnist_data,需要通过这一步来生成转换minst数据集为测试所要求的lmdb数据。
在我运行bat脚本的时候报错找不到cudart64_90.dll
,原来是我和happynear老师的cuda版本不一样造成的(参考https://blog.csdn.net/tudou880306/article/details/87693338)下载nccl工程自己编译,修改.\windows\nccl.vcxproj
中的75行和188行处的cuda版号以及平台工具集,
将v140改为v141。然后编译生成nccl.dll和nccl.lib ,替换掉thirdparty\bins
和thirdparty\NCCL
的所有nccl.dll和nccl.lib。caffe\examples\mnist\lenet_solver.prototxt
中保持GPU模式,caffe\examples\mnist\lenet_train_test.prototxt
按照参考修改source:
后面的内容
下载完minst数据集后解压文件的时候要保证minst数据文件名字和位置和examples里的create_minst.sh一致,写create_minst.bat的时候也要注意路径的问题。双击train_minst.bat运行得到训练的准确率和损失值即成功。
回到caffe.sln编译其中的pycaffe,将Build\x64\Release\pycaffe
目录下的caffe复制到python3.5\Lib\site-packages
下,然后在python3.5中运行import caffe
命令。可能会报错找不到google包,去 https://github.com/google/protobuf 下载protobuf,然后去 https://github.com/google/protobuf/releases 下载win64版本,解压两个包,将protobuf-xxx-win64.zip\bin
里protoc.exe文件复制到protobuf-master\src
文件夹下,参考 https://www.iteye.com/blog/sharley-2375044 安装,再在命令行窗口中输入import caffe
应该就没有问题了。