#Ubuntu16.04安装caffe教程
经过一整天的安装,终于在笔记本上安装成功了Caffe记录一下。
我的电脑为i7 6700 + NVIDIA GTX960M,因为是游戏本还是双系统,显卡驱动有些难装。
sudo apt-get install libprotobuf-dev
sudo apt-get install protobuf-compiler
sudo apt-get install libleveldb-dev
sudo apt-get install libsnappy-dev
sudo apt-get install libopencv-dev
sudo apt-get install libhdf5-serial-dev
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
sudo apt-get install git cmake build-essential
在这里我拆开安装因为在安装时候遇到了一些错误。
##显卡驱动的安装
到设置->软件和更新->附加驱动查看
记住型号驱动为nvidia-384
使用了推荐驱动的可以不用重新安装驱动,去下载对应的cuda即可。
若是没有安装驱动:
我按照网上其他人的安装方法来,直接导致炸机了。
方法一、正常方法是去英伟达官网下载对应版本的驱动
http://www.nvidia.com/Download/index.aspx?lang=en-us
注意驱动安装包最好放在HOME目录
终端输入sudo gedit /etc/modprobe.d/blacklist.conf
后在最后一行加上 blacklist nouveau
将Ubuntu自带的显卡驱动加入黑名单
在终端输入: sudo update-initramfs -u
更新一下
重启电脑
没有驱动开机可能直接报错,此时不要慌Ctrl+Alt+F1
进入终端界面
sudo service lightdm stop 关闭图形界面
sudo chmod +x NVIDIA-Linux-x86_64-375.20.run 使得驱动有执行权限
sudo ./NVIDIA-Linux-x86_64-375.20.run 运行驱动程序
一步步按指示来,安装成功后重启。
方法二、按方法一来的炸机的只能重装驱动了,不要慌,按Ctrl+Alt+F1
进入文字界面。
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
sudo apt-get install nvidia-384 #此处要根据上面查询到的版本适当更改
sudo apt-get install mesa-common-dev
sudo apt-get install freeglut3-dev
之后重启应该就没问题啦
##下载cuda8.0
在官网https://developer.nvidia.com/cuda-downloads找到cuda8.0下载。
嫌麻烦的直接在我百度云下载吧https://pan.baidu.com/s/11v8nqXWZUSVB8K1aqT01lw
运行sudo chmod +x cuda_8.0.44_linux.run
sudo ./cuda_8.0.44_linux.run
之后就是一系列的选择,在选择驱动时选否,其他都选是就行了。
然后设置cuda环境变量
sudo gedit ~/.bashrc
export PATH=/usr/local/cuda-8.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
source ~/.bashrc //使配置生效
验证cuda是否安装成功
cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery
出现这个就代表安装成功啦。
##安装cudnn
https://developer.nvidia.com/rdp/cudnn-download到官网下载,对应cuda版本的Linux的cudnn压缩包。
官网下载 cudnn 需要注册帐号并登录
嫌麻烦的https://download.csdn.net/download/tianjiazhao/10506832从我的csdn下载也行,嘿嘿
讲压缩包解压,两个文件夹。
在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 #删除原有动态文件
sudo ln -s libcudnn.so.5.1.10 libcudnn.so.5 #生成软衔接
sudo ln -s libcudnn.so.5 libcudnn.so #生成软链接
##安装opencv3.4
sudo apt-get update 先更新一下
1.安装build-essential、cmake、git和pkg-config工具
sudo apt-get install build-essential cmake git pkg-config
2.安装所需要的各种图像包:
sudo apt-get install libjpeg8-dev (jpeg图像包)
sudo apt-get install libtiff5-dev (tif图像包)
sudo apt-get install libjasper-dev (JPEG-2000图像包)
sudo apt-get install libpng12-dev (png图像包)
3.视频所需要的的包:
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
4.安装gtk2.0:
sudo apt-get install libgtk2.0-dev
5.优化包的安装:
sudo apt-get install libatlas-base-dev gfortran
到这一步各种工具包就安装成功啦。
https://github.com/opencv/opencv/releases到这个网站去下载opencv源码tar.gz格式的,感觉安装比较快。
下载完之后解压
1.cd ~ 移动到解压的opencv目录
2.建立一个build文件夹
mkdir build
3.cd build 进入build文件夹
4.安装到 /urs/local
开启cuda:
cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D WITH_CUDA=ON \ -D WITH_CUBLAS=ON \ -D CUDA_FAST_MATH=ON \ -D WITH_CUFFT=ON \ -D WITH_NVCUVID=ON \ -DWITH_V4L=ON \ -D WITH_LIBV4L=ON \ -D WITH_OPENGL=ON \ -D
WITH_FFMPEG=ON \ -D INSTALL_C_EXAMPLES=ON \ -D BUILD_EXAMPLES=ON ..
不开启
cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local ..
5.开始编译:
sudo make //等待一会 可以使用 sudo make -j4 加快速度不过我使用的时候系统总是崩溃
sudo make install //这个过程可能要数个小时
sudo gedit /etc/ld.so.conf.d/opencv.conf
添加/usr/local/lib
sudo ldconfig //更新一下链接库
sudo gedit /etc/bash.bashrc
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
source /etc/bash.bashrc
到此opencv就正式安装完毕!
pkg-config --modversion opencv 查看版本
可以写个代码测试一下
建立一个test.cpp
#include
#include
#include
using namespace cv;
int main()
{
Mat img=imread("1.jpg");
imshow("test",img);
waitKey(0);
return 0;
}
建立一个CMakeLists.txt写入
cmake_minimum_required(VERSION 2.8)
project( test)
find_package( OpenCV REQUIRED )
add_executable( test test.cpp )
target_link_libraries( test${OpenCV_LIBS} )
在这个文件目录下放一个名为1.jpg的图片
cd 到这个文件夹
cmake .
make
./test
若输出图像则配置正确
##安装Anaconda
https://www.continuum.io/downloads去官网下载对应python版本的
嫌麻烦从我百度云下https://pan.baidu.com/s/1S2VZXl3SVn0mso0U2QSuBQ
sudo chmod +x Anaconda3-4.2.0-Linux-x86_64.sh
./Anaconda3-4.2.0-Linux-x86_64.sh
一路按提示过去,最后会提示你是否加入环境变量中,记得选择是,默认的是否,仔细看清!
##重头戏caffe的安装
git clone https://github.com/BVLC/caffe.git
若是git速度太慢,就只能去下了,
可以参考https://blog.csdn.net/tianjiazhao/article/details/80841385
sudo cp Makefile.config.example Makefile.config
复制一份的原因是编译 caffe 时需要的是 Makefile.config 文件,而Makefile.config.example 只是caffe 给出的配置文件例子,不能用来编译 caffe。
sudo gedit Makefile.config
按照自己的需求去更改makefile.config和makefile,不懂makefile的小伙伴就很伤啦。
首先cudnn前注释去掉
USE_OPENCV注释去掉
这个注释也去掉
修改anaconda——python路径
注意要将python2的路径注释掉。
然后makefile.config就修改完啦,接下来修改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 \
opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs
将
#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!
sudo make all -j8
多线程编译,报错就改为sudo make all
编译的时候可能会出很多错误,出错误了去google一个个查找看看,不要一失败就重装系统!
成功之后sudo make runtest -j8
出现这个即为成功。
##然后编译Python接口
sudo make pycaffe -j8
python
import caffe
报错1:python/caffe/_caffe.cpp:10:31: fatal error: numpy/arrayobject.h: 没有那个文件或目录
去下载numpy库
报错2:File “<stadin>”, line 1, in ImportError: No module named caffe
sudo echo export PYTHONPATH="~/caffe/python" >> ~/.bashrc
source ~/.bashrc
将caffe填入环境变量中
报错3:ImportError: No module named ‘google’ ·
conda install protobuf==3.2.0(为什么安装3.2.0呢,因为和后面tensroflow的1.2.0相配不会出问题)
报错4:/usr/lib/x86_64-linux-gnu/libboost_python.so:对‘PyUnicode_InternFromString’未定义的引用 collect2: error: ld returned 1 exit status Makefile:632: recipe for target ‘.build_release/examples/mnist/convert_mnist_data.bin’ failed
这时候去查查makefile.config的设置有没有问题
出现下图即为正确。
更新:2018.10
Anaconda python3.6.5
报错:
/usr/bin/ld: 找不到 -lboost_python3
cd /usr/lib/x86_64-linux-gnu/
sudo ln -s libboost_python-py35.so libboost_python3.so
报错:
libcudart.so.8.0: cannot open shared object file: No such file or directory
sudo cp /usr/local/cuda-8.0/lib64/libcudart.so.8.0 /usr/local/lib/libcudart.so.8.0 && sudo ldconfig
报错:
libpython3.6m.so.1.0: cannot open shared object file: No such file or directory
sudo cp /home/tianjiazhao/anaconda3/lib/libpython3.6m.so.1.0 /usr/local/lib/libpython3.6m.so.1.0 && sudo ldconfig
报错:
libcublas.so.8.0: cannot open shared object file: No such file or directory
sudo cp /usr/local/cuda-8.0/lib64/libcublas.so.8.0 /usr/local/lib/libcublas.so.8.0 && sudo ldconfig
报错:
libcurand.so.8.0: cannot open shared object file: No such file or directory
sudo cp /usr/local/cuda-8.0/lib64/libcurand.so.8.0 /usr/local/lib/libcurand.so.8.0 && sudo ldconfig
报错:
libcudnn.so.5: cannot open shared object file: No such file or directory
报错:
warning! HDF5 library version mismatched error
The HDF5 header files used to compile this application do not match
Headers are 1.10.2, library is 1.8.16
首先卸载hdf5
conda uninstall hdf5
然后下载1.8.16版本即可
conda install hdf5=1.8.16
同时安装tensorflow:
conda create -n tensorflow python=3.6
source activate tensorflow
pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.2.0-cp36-cp36m-linux_x86_64.whl
注意:cuda8.0 cudnn5.0搭配tehsroflow1.2.0使用
①官网下载 torch-0.4.0-cp36-cp36m-linux_x86_64.whl
pip install torch-0.4.0-cp36-cp36m-linux_x86_64.whl
pip install torchvision
报错:ImportError: libcusolver.so.8.0: cannot open shared object file: No such file or directory不知道为什么设置cuda环境变量一直不起作用。
解决方法:
pycharm菜单 Run->Edit Configurations
设置如下:
/**********************************************************************************/
错误集锦:
2019-01-10 18:51:05.999013: E tensorflow/stream_executor/cuda/cuda_dnn.cc:359] could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
2019-01-10 18:51:05.999040: E tensorflow/stream_executor/cuda/cuda_dnn.cc:326] could not destroy cudnn handle: CUDNN_STATUS_BAD_PARAM
2019-01-10 18:51:05.999048: F tensorflow/core/kernels/conv_ops.cc:671] Check failed: stream->parent()->GetConvolveAlgorithms(&algorithms)
处理方法:sudo rm -rf .nv/ (.nv为在home目录下的隐藏文件)