由于使用py3.5编译的caffe,运行py-faster-rcnn时出现了解决不了的错误,因此最终我使用了py2.7编译并成功运行了,请参考
https://blog.csdn.net/zhangzm0128/article/details/71698880
如果遇到compute_481错误的,我下面有提到解决方法
py3.5编译caffe正文:
要在VS下使用CUDA,必须先安装好vs,再安装CUDA,不然
C:\ProgramFiles(x86)\MSBuild\Microsoft.Cpp\v4.0\V140\BuildCustomizations目录下会没有CUDA 10.0.props,也就不能对CUDA进行编译了,同时VS下也不能新建CUDA的文件。
安装VS时,要勾选c++,其他的看需要
CUDA和cuDNN的安装方法可参考:https://blog.csdn.net/qq_37296487/article/details/83028394
可跳过
也可参考官方的cuDNN的安装方法并配置VS
https://docs.nvidia.com/deeplearning/sdk/cudnn-install/index.html#install-windows
下载好cuDNN,然后解压缩,把cuda文件里的文件复制到CUDA的development文件夹中,在系统环境变量中,确认有无CUDA_PATH项
然后在创建的VS项目中,点击项目,设置项目属性并添加cudnn.lib
如果平时要经常使用VS开发CUDA
参考https://blog.csdn.net/sinat_41789705/article/details/83592783
他添加了几个环境变量,方便在VS里添加依赖项。
CUDA_SDK_PATH = C:\ProgramData\NVIDIA Corporation\CUDA Samples\v9.1
CUDA_LIB_PATH = %CUDA_PATH%\lib\x64
CUDA_BIN_PATH = %CUDA_PATH%\bin
CUDA_SDK_BIN_PATH = %CUDA_SDK_PATH%\bin\win64
CUDA_SDK_LIB_PATH = %CUDA_SDK_PATH%\common\lib\x64
如果在编译中遇到
warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
那需要把包含的文件保存为UTF8
参考:https://blog.csdn.net/helloworld_ptt/article/details/77927515
加入代码(引用他人代码)
#include
#include
#include
using namespace std;
void main(){
cudnnHandle_t handle;
cudnnStatus_t t = cudnnCreate(&handle);
cout<< cudnnGetErrorString(t);
getchar();`
测试cuDNN是否能正常运行
结果显示:CUDNN_STATES_SUCCESS
表明正常
python3.5环境配置
若安装了Anaconda,要注意anaconda里的python版本是不是3.5的,不是的话,
选择1)自己去下载个3.5的
选择2)在anaconda里创建一个3.5的环境。创建的环境的所在目录在anaconda的env文件里,
对于选择2,创建完后在系统变量PATH里面把anaconda的path去掉,加上安装好的3.5的path。我创建的环境叫caffe
在运行build_win前,需要使用pycaffe的,需要在python里装好一些库
pip install cmake ninja numpy scipy protobuf==3.1.0 six scikit-image pyyaml pydotplus graphviz
这是微软给出的caffe包:https://github.com/Microsoft/caffe
这个已经过时了,在github页面了也已经指向了最新版的caffe
https://github.com/BVLC/caffe 下载下来,解压缩
编辑scripts文件夹里的build_win.cmd
修改70行左右的配置,
BUILD_PYTHON=1
MSVC_VERSION=14表示是的vs2015
CPU_ONLY = 0 表示安装GPU版本
PYTHON_VERSION=3 表示python3.5
其他的选项默认就好
python interface这里conda config --add channels conda-forge conda config --add channels willyd这两个最好换成
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/这里是引用
这是换成了清华对应镜像,速度比较快。其实很多软件清华都有对应镜像,可以试试Google相应关键词找一下,ref:https://www.zhihu.com/question/38252144
运行了build_win之后,遇到Unsupported gpu architecture ‘compute_481’
查阅了所有资料,基本都不是417这种问题,网上都是什么20,30,40,50,60,70啥的。
所以另寻出路,就放弃使用build_win的方法,自己用cmake的可视化版编译
图形化cmake操作参考:https://blog.csdn.net/Rayue_/article/details/81199569
后面遇到的问题,上面这个链接都有说到。
但是在VS里面编译时又出现了问题:nvcc.hpp(22):fatal error C1017 后面接乱码
解决方法就是找到这个文件,然后注释掉22整个if块
最终愉快的编译了起来,花了50分钟左右完成编译,整个编译出来的项目大概6个G
其实还是不行的,编译caffe和pycaffe还是会错先nsupported gpu architecture ‘compute_481’
经过了许多研究,我尝试修改build_win.bat里的CUDA_ARCH_NAME的参数,参数把自动换成手动设置,查阅了我自己的显卡的架构是Maxwell,就改成这个,然后编译就通过了
要在python里导入caffe,要把caffe目录下的python文件夹里的东西复制到python文件夹的Lib\site-packages里
import caffe时报错:Can’t create weekday with n == 0
执行这个pip install python-dateutil --upgrade就好了