写在前面:电脑联想Y410,显卡755,ubuntu16.04,本文是caffe-ssd,没有安装anaconda,使用的python是系统自带的2.7版本,以前安装anaconda后两种python版本管理不好会出错。
1、将gcc版本降低
cuda8.0对应的gcc版本是5.3以下,ubuntu16.04的gcc版本是5.4
查看gcc版本:gcc --version
参考链接:https://blog.csdn.net/iotlpf/article/details/54175064
2、nvidia显卡驱动安装
方法一:直接在系统设置下安装
可能存在的问题:驱动的版本和自己电脑显卡对应的版本不一致,会导致后续安装的问题。
方法二:在nvidia官网下载对应驱动安装
方法三:添加源进行安装
注意:查询自己电脑显卡对应的驱动链接:www.nvidia.cn/download/index.aspx?lang=cn
一定要下载正确的驱动,否则可能后续的安装会有很多问题
具体安装方法参考链接:https://blog.csdn.net/iotlpf/article/details/54175064
3、安装cuda8.0
cuda的安装也可以看下自己的电脑适合的cuda版本:在windows下nvidia控制面板,图形显示,可以看到n卡适合的cuda版本,仅供参考。
如何查看显卡支持的CUDA版本:https://blog.csdn.net/wangyjfrecky/article/details/55100963
cuda安装参考:https://blog.csdn.net/yhaolpz/article/details/71375762
在进行测试时出现的错误:
CUDA Device Query (Runtime API) version (CUDART static linking)
cudaGetDeviceCount returned 35
-> CUDA driver version is insufficient for CUDA runtime version
Result = FAIL
解决方案:查看自己电脑安装的nvidia显卡版本是否正确,不清楚具体使用哪个就多安装几个版本试下。
cuda安装成功运行结果:
可参考链接:https://zhuanlan.zhihu.com/p/28954367
4、安装cudnn5.1
cudnn5.1的安装主要参考教程 : https://blog.csdn.net/yhaolpz/article/details/71375762
和上链接博主不同的是,在locate时并没有定位到信息,不过后面貌似没影响。
具体操作如下:
下载完成后解压,得到一个 cudn 文件夹,该文件夹下include 和 lib64 两个文件夹,命令行进入 cudn/include 路径下,然后进行以下操作:
sudo cp cudnn.h /usr/local/cuda/include/ #复制头文件
然后命令行进入 cudn/lib64 路径下,运行以下命令:
sudo cp lib* /usr/local/cuda/lib64/ #复制动态链接库
cd /usr/local/cuda/lib64/ sudo rm -rf libcudnn.so libcudnn.so.5 #删除原有动态文件
注意:如不能删除请cd到
cd /usr/local/cuda/lib64/下进行删除
sudo ln -s libcudnn.so.5.1.10 libcudnn.so.5 #生成软衔接
sudo ln -s libcudnn.so.5 libcudnn.so #生成软链接
安装完成后可用 nvcc -V 命令验证是否安装成功,若出现以下信息则表示安装成功:
5、安装opencv3.1
进入官网 : http://opencv.org/releases.html , 选择 3.1.0 版本的 source , 下载 opencv-3.1.0.zip
解压到你要安装的位置,命令行进入已解压的文件夹 opencv-3.1.0 目录下,执行:
mkdir build # 创建编译的文件目录cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
make -j8 #编译
在执行 make -j8 命令编译到 92% 时可能会出现以下错误:
modules/cudalegacy/src/graphcuts.cpp:120:54: error:
‘NppiGraphcutState’ has not been declared
typedef NppStatus (*init_func_t)(NppiSize oSize,
这是由于opecv3.1与cuda8.0不兼容导致的。解决办法:
编译成功后安装:
sudo make install #安装
安装完成后通过查看 opencv 版本验证是否安装成功:
pkg-config --modversion opencv
6、安装caffe-ssd
git clone https://github.com/weiliu89/caffe.git
cd caffe
git checkout ssd(出现“分支”则说明copy-check成功)
然后修改 Makefile.config 文件,在 caffe 目录下打开该文件:
sudo gedit Makefile.config
修改 Makefile.config 文件内容:
1.应用 cudnn
将#USE_CUDNN := 1修改成: USE_CUDNN := 1
2.应用 opencv 版本
将#OPENCV_VERSION := 3 修改为: OPENCV_VERSION := 3
3.使用 python 接口
将 #WITH_PYTHON_LAYER := 1 修改为 WITH_PYTHON_LAYER := 14.修改 python 路径
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib
修改为: INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial
然后修改 caffe 目录下的 Makefile 文件:
将#error-- unsupported GNU version! gcc versions later than 4.9 are not supported!
改为//#error-- unsupported GNU version! gcc versions later than 4.9 are not supported!
在Makefile文件中第260行左右添加boost_regex,即
LIBRARIES += boost_thread stdc++后,如下
LIBRARIES += boost_thread stdc++ boost_regex
继续在makefile文件下操作:
将:
NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)
替换为:
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
编辑/usr/local/cuda/include/host_config.h 将其中的第115行注释掉:
#error-- unsupported GNU version! gcc versions later than 4.9 are not supported!
改为
//#error-- unsupported GNU version! gcc versions later than 4.9 are not supported!
将一些文件复制到/usr/local/lib文件夹下,解决"libcudart.so.8.0 cannot openshared object file: Nosuch fileor directory":
#注意自己CUDA的版本号!
sudo cp /usr/local/cuda-8.0/lib64/libcudart.so.8.0 /usr/local/lib/libcudart.so.8.0
&& sudo ldconfig cp /usr/local/cuda-8.0/lib64/libcublas.so.8.0 /usr/local/lib/libcublas.so.8.0
&& sudo ldconfig cp /usr/local/cuda-8.0/lib64/libcurand.so.8.0 /usr/local/lib/libcurand.so.8.0 && sudo ldconfig
可能会有一点问题,但不影响,有的教程没用这步,我是一开始使用其他的教程报错使用的这步,参考:https://blog.csdn.net/qq_36673141/article/details/78428702
至此前期环境配置应该完成。
编译caffe有两种方式:
1、make all
2、cmake方式
我是使用make all编译成功的,以前看教程据说cmake更好,两种方式分别如下:
a、make all
make all -j8
sudo make runtest -j8
注意:我在另一台电脑上用sudo make runtest -j8报错
使用make runtest -j8就好了;
.build_release/tools/caffe: error while loading shared libraries: libcudart.so.8.0:」
cannot open shared object file: No such file or directory」
- b、cmake
- 本人用了一下报错没有修改,但这种编译官网上是有的,所有可以参考,前提是前面的环境配置正确。
cd caffe
mkdir build
cd buildsudo cmake -D WITH_CUDA=ON -D CUDA_ARCH_BIN="5.3" -D CUDA_ARCH_PTX="" -D WITH_GSTREAMER=ON -D BUILD_TESTS=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_EXAMPLES=OFF -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
make -j8
make install
make runtest(这一步不是必须的)7、安装 pycaffe notebook 接口环境
在上一步成功安装 caffe 之后,就可以通过 caffe 去做训练数据集或者预测各种相关的事了,只不过需要在命令行下通过 caffe 命令进行操作,而这一步 pycaffe 的安装以及 notebook 环境配置只是为了更方便的去使用 caffe ,实际上大多数都是通过 python 来操作 caffe 的,而 notebook 使用浏览器作为界面,可以更方便的编写和执行 python 代码
cd caffesudo make pycaffe -j8
编译 pycaffe 成功后,验证一下是否可以在 python 中导入 caffe 包,首先进入 python 环境:
python
然后导入 caffe :
>>> import caffe
如果没有报错只是警告可以继续操作。
可能错误1:
File "<stdin>", line 1, in <module> ImportError: No module named caffe
解决方法:
sudo echo export PYTHONPATH="~/caffe/python" >> ~/.bashrc
source ~/.bashrc
最后一步,配置notebook环境
在安装scipy库的时候,需要fortran编译器(gfortran),如果没有这个编译器就会报错,因此,我们可以先安装一下。
首先进入 caffe/python 目录下,执行安装代码
sudo apt-get install gfortranfor req in $(cat requirements.txt);
do pip install $req; done
注意:此处安装依赖项可能一次无法全部安装,多进行几次就可以,我安装时出现错误,按照提示升级了一下pip到10.0,貌似版本太高了,会报错
File "/usr/bin/pip", line 9, in <module> from pip import main ImportError: cannot import name main
我重新安装了9.1,运行后就可以了:https://blog.csdn.net/jasonzzj/article/details/53341271
在import caffe时也出现了 ImportError: cannot import name cbook错误
解决方案:
卸载之前的matplotlib:
sudo pip uninstall matplotlib
使用该命令重新安装:
sudo apt-get install python-matplotlib
这样就解决了
安装完成以后执行:
sudo pip install -r requirements.txt
就会看到,安装成功的,都会显示Requirement already satisfied, 没有安装成功的,会继续安装。
然后安装 jupyter :
sudo pip install jupyter
安装完成后运行 notebook :
jupyter notebook
安装小结:
1、前期环境配置时最重要的,首先是NVIDIA显卡,其次是cuda,之后是cudnn,每次安装好一定要测试
2、查清楚自己需要安装什么类型的显卡,文中有链接,以及cuda和cudnn的对应。
3、前期的依赖项一定多找几个教程多安装一些,(安装全一些)多装了没事,少装了后面报错可能找不到方案解决。(个人意见)
4、编译caffe之前保证opencv在系统环境里(安装opencv后的操作),编译caffe时对makefile文件和config文件改写仔细
5、编译caffe一般都会报错,仔细检查下问题出现在哪里,如果确保前期工作没问题,尝试用cmake 或者make all分别编译,出错了之后一定记得make clean
6、在编译时候有的需要权限,有的不需要权限,所以也可以尝试下分别sudo和不带sudo进行操作。
7、以上纯属瞎扯,谨慎参考。
参考链接:
1、https://blog.csdn.net/yhaolpz/article/details/71375762
2、https://blog.csdn.net/qq_36673141/article/details/78428702
3、https://blog.csdn.net/qq_36673141/article/details/78428702