本文的图片只做解释用,如果大家能明白代码和文字的意思,或者觉得图片的存在过于冗余和混淆视听,可以不用看图片
1.安装nvidia 驱动
2.安装cuda
3.安装cudnn
4.安装opencv
5.安装caffe
第一步可以上网找相关的教材,关于后四步全都是坑,大家一定要非常注意
这些坑主要如下:
坑(一):版本,不同的nvidia驱动对应不同的cuda 版本和cudnn版本,后面会详细说
坑(二):安装路径,大家一定要将这些的下载安装尽量包放在**根目录**底下,否则后面添加环境变量和路径的时候会巨TMD麻烦
坑(三):注意不要重复下载或者下载不同版本的文件,比如说:如果你刚开始不知道应该用哪一个版本的cuda, 你盲目的下了cuda-9.0 但是后来你发现cuda-10.1是对的,那么请你一定要进入你的 /usr/local 目录 找到 cuda-9.0文件夹然后把他删除掉,然后将cuda-10.1的文件夹名称改成 cuda, 也就是说你的 usr/local 目录下最好只有一个cuda文件夹,因为后期添加环境变量的时候如果同时存在几个cuda,当然如果你是大神当我没说,但是如果你跟我现在一样是个菜鸡,那就慎重一些
坑(四):安装依赖包的时候记得要刷新 sudo apt-get update 和 sudo apt-get upgrade 来刷新依赖包,虽然即使这样只能解决大部分依赖安装问题,还是一部分问题没有办法彻底解决
坑(五):不要用anaconda创建的虚拟环境的 python 进行操作,过程中也不要激活anaconda 的任何环境,如果你需要caffe使用的python 版本不是你现在 电脑自带的python 版本那么请你本地先安装一个python,千万不要用anaconda 创建的python ,那样会有很多问题,如何安装python和如何解决本地python 的冲突问题请大家自行百度
坑(六):修改/.bashrc的时候,如果稍有不慎修改错误,然后又不明就里地使用了 source ~/.bashrc 可能会导致所有的命令包括ls,mv 都用不了,但是不要害怕,网上有解决办法,一行代码就可以解决 export PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
-----------------------------------------正 文 分 割 线------------------------------------
nvidia-smi
可以查看显卡状态,驱动是nvidia 430.14
所以 cuda对应的版本应该是10.1或者10.2 这里给出对应的表格:
我配置的时候选择的是nvidia driver 430 / cuda 10.1 / cudnn 7.6.5
第一步:下载cuda
https://developer.nvidia.com/cuda-downloads
Tips :如果直接按照wget的命令下载会很慢,建议如下图操作:
复制图中蓝色选中的部分直接输入到:
搜索框中就可以自行下载,建议下载过程中使用手机热点,亲测比较快
接下来:
sudo chmod 777 cuda_10.1.243_418.87.00_linux.run
sudo ./cuda_10.1.243_418.87.00_linux.run
此时会跳出一个下载的弹框选项
注意:
如果前面已经安装了nvidia 驱动,在第一个界面的最下面时候先accept ,之后会跳到第二个界面,在第二个界面中 将安装驱动的那个选项取消,取消的方式也很简单,在驱动那个选择项上按空格就可以。
第二步:更改文件夹名称+环境变量配置
/usr/local 下的 cuda文件夹名字要改正确,避免后面的麻烦
你可以cd /usr/local
然后 ls
查看你的cuda是不是叫作cuda-10.1、cuda-9.0或是什么cuda-master 如果是的话,你就要使用命令 mv cuda-10.1 cuda
将文件夹名称改成 cuda,相信我这对后面的环境配置将大有裨益。
接下来进行环境变量配置:
sudo vim ~/.bashrc #打开环境变量的文件
将下面内容写入bashrc文件的最后面:
export PATH=/usr/local/cuda/bin${PATH:+:${PATH}} #一定要注意这里!!前面说过要将解压的cuda-10.1文件夹改名成cuda
export LD_LIBRARY_PATH=/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} #这里和上面需要注意的事情一样
然后使环境变量生效:
source ~/.bashrc
第三步:测试cuda是否安装成功
cd /usr/local/cuda/samples/1_Utilities/deviceQuery
make
sudo ./deviceQuery
【第一步:下载并安装cudnn】
首先去官网 https://developer.nvidia.com/rdp/cudnn-download 下载cuDNN,需要注册一个账号才能下载。下载版本号如下图:
下载完之后进行解压:
下载的文件名字叫 cudnn-10.1-linux-x64-v7.6.5.32.solitairetheme8
sudo tar -zxvf ./cudnn-10.1-linux-x64-v7.6.5.32.tgz
虽然扩展名不一样,但是我用同样的tgz进行解压也是可以的,忽略这点;
下面比较重要,一定要弄清楚路径!!!因为这与cuda有很大关系:
【第二步:复制头文件和动态链接库】
你现在应该有两个cuda的包,他们来自于不同的地方,
(1)是你下解压cudnn的时候来的cuda包,
(2)是**/usr/local 下面的cuda的包,也就是我们上面强调要重命名**的那个!!
!!这个是你cudnn解压出来的 cuda 包里面是这样的,只有三个东西
cd cuda/include
sudo cp cudnn.h /usr/local/cuda/include #复制头文件
而这里出现的 /usr/local/cuda/include 则是另外一个,也就是前面强调需要重命名 的那个cuda 底下的include路径:
是这个东西,下面有巨多的包包。关于这两个包,一定要弄清楚!!
cd .. #回到cuda目录
cd lib64
sudo cp lib* /usr/local/cuda/lib64/ #复制动态链接库
也就是下图的这个包 lib64 里面的东西;而后面的 /usr/local/cuda/lib64 想必不用再赘述
【第三步:删除相关文件和建立软连接】
cd /usr/local/cuda/lib64/
sudo rm -rf libcudnn.so libcudnn.so.7 #删除原有动态文件
sudo ln -s libcudnn.so.7.6.5 libcudnn.so.7 #生成软衔接(注意这里要和自己下载的cudnn版本对应,可以在/usr/local/cuda/lib64下查看自己libcudnn的版本)
sudo ln -s libcudnn.so.7 libcudnn.so #生成软链接
Tips: 对于文件的版本,大家可以进入文件夹仔细观察,不要删错了,要与自己的版本对应,如果大家有经验的话,可以用tab键来补全,防止错删文件
最后:
sudo ldconfig /usr/local/cuda/lib64
注意:这个步骤不能缺少;如果你完成这一步,cudnn安装就完成了
【第四步:测试cudnn安装成功】
复制以下代码:
cp -r /usr/src/cudnn_samples_v7/ $HOME
cd $HOME/cudnn_samples_v7/mnistCUDNN
make clean && make
./mnistCUDNN
【第一步:下载相关依赖】
这里建议大家下载依赖之前先输入两个命令:
sudo apt-get update
sudo apt-get upgrade
更新一下安装包,避免安装的时候有些包太老了或者是不存在的问题
然后开始安装依赖
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
sudo apt-get install --assume-yes libopencv-dev libdc1394-22 libdc1394-22-dev libjpeg-dev libpng12-dev libtiff5-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libxine2-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev libtbb-dev libqt4-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils unzip
sudo apt-get install ffmpeg libopencv-dev libgtk-3-dev python-numpy python3-numpy libdc1394-22 libdc1394-22-dev libjpeg-dev libpng12-dev libtiff5-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libxine2-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libv4l-dev libtbb-dev qtbase5-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev
【第二步:下载/解压Opencv-3.4】
首先路径,还是建议将路径直接下到 根目录 下面,这样比较方便;
wget https://github.com/opencv/opencv/archive/3.4.0.zip
或者大家直接复制后面http的部分,用热点下载也可以,反正自己想办法
解压:
unzip 3.4.0.zip
从源码构建opencv
复制下面命令一条条执行即可
cd opencv-3.4.0
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
make
make install
【第三步:测试是否安装成功】
mkdir ~/opencv-test
cd ~/opencv-test
gedit DisplayImage.cpp
编辑如下代码:
#include
#include
using namespace cv;
int main(int argc, char** argv )
{
if ( argc != 2 )
{
printf("usage: DisplayImage.out \n" );
return -1;
}
Mat image;
image = imread( argv[1], 1 );
if ( !image.data )
{
printf("No image data \n");
return -1;
}
namedWindow("Display Image", WINDOW_AUTOSIZE );
imshow("Display Image", image);
waitKey(0);
return 0;
}
创建CMake编译文件:
sudo vim CMakeLists.txt
写入如下内容:
cmake_minimum_required(VERSION 2.8)
project( DisplayImage )
find_package( OpenCV REQUIRED )
add_executable( DisplayImage DisplayImage.cpp )
target_link_libraries( DisplayImage ${OpenCV_LIBS} )
编译:
cd ~/opencv-test
cmake .
make
执行: *此时opencv-test文件夹中已经产生了可执行文件DisplayImage,随便从网上下载一张图片放在opencv-test文件夹下,假设你给它命名cv.jpg
然后运行:
./DisplayImage cv.jpg
结果是显示我下载的这张图像。
如果想用python调用opencv,安装python-opencv:
sudo apt-get install python-opencv
sudo apt-get install python-numpy
【第一步:更新和安装依赖包】
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install --no-install-recommends libboost-all-dev #在安装这个的时候可能报错,如果报错,请自行复制错误然后上网搜救
sudo apt-get install libopenblas-dev liblapack-dev libatlas-base-dev
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
【第二步:下载并安装caffe】
这里下载caffe 还是要下在 根目录 下面:
wget https://github.com/BVLC/caffe
下载完成后,会在 根目录 的下载里找到caffe-master.zip,用unzip
unzip caffe-master.zip
命令解压到家目录下,然后重命名为caffe
【第三步:配置caffe相关变量】
复制 Makefileconfig
cd caffe
sudo cp Makefile.config.example Makefile.config
打开并修改配置文件
sudo vim Makefile.config #打开Makefile.config文件
根据个人情况修改文件:本文讲的是caffe-gpu的配置方式
若使用cudnn,则将:
#USE_CUDNN := 1
改成:
USE_CUDNN := 1
若使用opencv3 版本的:
#OPENCV_VERSION := 3
改成:
OPENCV_VERSION := 3
若要使用python来编写layer,则:
#WITH_PYTHON_LAYER := 1
改成:
WITH_PYTHON_LAYER := 1
将
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
修改Makefile文件
sudo vim Makefile
修改如下:
NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)
改成:
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
将
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5
替换成:
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial
【第四步:编译】
注 :j6 或者是 j8 取决于你电脑是几核的,按照自己的配置设置
sudo make clean
make all –j6
make test –j6
make runtest –j6
【第五步:安装pycaffe】
在caffe根目录的python文件夹下,有一个requirements.txt的清单文件,上面列出了需要的依赖库,按照这个清单安装就可以了。
在安装scipy库的时候,需要fortran编译器(gfortran),如果没有这个编译器就会报错,因此,我们可以先安装一下。
首先回到caffe的根目录,然后执行安装代码:
cd ~/caffe
sudo apt-get install gfortran
cd ./python
for req in $(cat requirements.txt); do pip install $req; done
安装完成以后,再次回到caffe根目录我们可以执行:
cd .. # 回到caffe 根目录
sudo pip install -r python/requirements.txt
就会看到,安装成功的,都会显示Requirement already satisfied, 没有安装成功的,会继续安装。
编译python接口:
make pycaffe -j6
配置环境变量,以便python调用:
sudo vim ~/.bashrc
将
export PYTHONPATH=~/caffe/python:$PYTHONPATH
添加到文件中最后一行
注意:!!!这里caffe要在根目录下,否则会有错误
最后:
source ~/.bashrc
就可以完成了。
第六步:验证安装完成
cd caffe/python
python
import caffe
如果成功那么证明你的caffe和pycaffe 没有安装错误
cd #退回根目录
python #进入python
import caffe
如果这样报错没有caffe模块,说明你的caffe 的环境变量没有成功,可以查阅相关有关caffe的文章
问题:usr/bin/ld: cannot find -lxxx
https://www.cnblogs.com/hit-joseph/p/10131183.html
错误:caffe 找不到lhdf5_hl和lhdf5的错误:
https://www.baidu.com/link?url=rXTvxpideq2pzr-iB1ltwZ8rSFL6YxRa9tl-ZBiEX8pAj_1NFMukHIz7wUlGKTaRWKIe11uwDYIK0Q7pZqmQB8sCS5cu15_eMFH0Fbc25Se&wd=&eqid=a5f0300a0016c921000000035dd0c6ec
错误:recipe for target ‘.build_release/lib/libcaffe.so.1.0.0’ failed
https://blog.csdn.net/qq_33144323/article/details/81741671
错误:recipe commences before first target. Stop
(makefile文件中修改的时候空格和tab键搞混了或者是多空格,少空格的问题)
https://blog.csdn.net/freege9/article/details/77987536
错误:nvcc fatal : Unsupported gpu architecture ‘compute_20’
https://blog.csdn.net/weixin_37983220/article/details/85341058
linux 重命名文件和删除文件夹
https://mp.csdn.net/postedit/103107527