caffe配置是一个大坑...前后断断续续配置了一个月才完全配置好。我的硬件配置是ubuntu16.04,GTX1050Ti显卡,用的是惠普笔记本暗影精灵3。装ubuntu16.04+win10时双系统引导出现了很多问题,uefi模式和security boot模式在网上能找到的教程不多,最后我是采用grub配置弄好的。nvidia显卡驱动必须在安装ubuntu以后先装好,不然没法进图形化界面,添加ppa源安装即可,对应的显卡编号去nvidia官网查找。如果卡死在进入系统帐号登陆的死循环,那么最大可能的原因就是显卡驱动没装好。以上准备做好后,即可开始后面的配置过程。
1.安装cuda 8.0
sudo sh cuda_8.0.61_375.26_linux.run #默认路径安装,没选择装openGLLibrary
也可以安装补丁
sudo sh cuda_8.0.61.2_linux.run
-
cuda 9.0不兼容opencv2.4.13,caffe要求:CUDA: Install by
apt-get
or the NVIDIA.run
package;CUDA 8 is required on Ubuntu 16.04. -
之前我已经通过源安装nvidia显卡驱动,安装的时候仍选择安装nvidia驱动,导致安装完成后不能进入图形界面。解决方法:
nvidia-uninstall sudo apt-get remove --purge nvidia* sudo add-apt-repository ppa:graphics-drivers/ppa(如果之前没有添加过源) sudo apt-get update –fix-missing sudo apt-get install nvidia-384 (显卡是GTX1050Ti,后面的号码去nvidia官网查) sudo apt install nvidia-cuda-toolkit
修改~/.bahsrc:PATH增加/usr/local/cuda-8.0/bin LD_LIBRARY_PATH增加/usr/local/cuda-8.0/lib64
source .bashrc
cat /proc/driver/nvidia/version #查看nvidiadriver
nvcc -V #查看CUDAToolkit版本,一定要和cuda版本一致,没有此命令不要尝试用sudoapt-get install nvcc,因为目前仍是7.5版本
cd ~/NVIDIA_CUDA-8.0_Samples
make -j8 # make cuda test
2.安装anaconda(python2.7)
bashAnacond2-5.0.1-Linux-x86_64.sh
安装过程中指定路径/home/fangxi/local/anaconda 修改~/.bashrc export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/home/fangxi/local/anaconda/lib" export PATH="$PATH:/home/fangxi/local/anaconda/bin" 再source ~/.bashrc
3.安装OpenBlAS
cd ~/local/OpenBLAS-0.2.18 mkdir ‐p $HOME/local/OpenBLAS make ‐j8 出错:不能检测到CPU (增加选项 make TARGET=HASWELL -j8) make TARGET=HASWELL PREFIX=$HOME/local/OpenBLAS install cd ../ rm ‐rf OpenBLAS‐0.2.18 修改 ~/.bahsrc export LD_LIBRARY_PATH=/home/fangxi/local/OpenBLAS/lib:$LD_LIBRARY_PATH export OPENBLAS_NUM_THREADS=20 source ~/.bahsrc
4.安装cmake
cd ~/local/cmake-3.10.0 mkdir ‐p $HOME/local/cmake-3.10.0 ./bootstrap ‐‐prefix=$HOME/local/cmake‐3.10.0 make ‐j8 sudo make install export PATH=$PATH:/home/fangxi/local/cmake‐3.10.0/bin source ~/.bashrc cd ../ rm ‐rf cmake‐3.10.0
5.安装Protobuf
先安装c++版 cd ~/local/protobuf-2.6.1 ./configure -prefix=$HOME/local make ‐j8 make install 然后安装Python版 cd python sudo apt-get install python-pip python setup.py build python setup.py google_test sudo python setup.py install cd ../../ rm ‐rf protobuf‐2.6.1
6.安装snappy
cd ~/local/snappy‐1.1.3 ./configure ‐prefix=$HOME/local(有时显示prefix是无法识别的命令,可能是中英文输入法的问题) make ‐j8 make install cd ../ rm ‐rf snappy‐1.1.3
7.安装leveldb
cd ~/local/leveldb‐1.18 make ‐j8 cp ‐av libleveldb.* $HOME/local/lib/ cp ‐av include/leveldb $HOME/local/include/ cd ../ rm ‐rf leveldb‐1.18
8.安装OpenCV
------2.4.11------- 报错:nvcc fatal : Unsupported gpu architecture 'compute_11' 解决:cmake时增加选项 -D CUDA_ARCH_BIN=3.2 -D CUDA_ARCH_PTX=3.2 报错:/lib/libopencv_highgui.so.2.4.11: undefined reference to `TIFF 解决:cmake加TIFF选项
报错:/home/fangxi/local/opencv-2.4.11/modules/gpu/src/graphcuts.cpp:120:54:error: ‘NppiGraphcutState’ has not been declared
解决:GraphCutdeprecated in CUDA 7.5 and removed in 8.0
在
graphcuts.cpp
中将
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)
改为
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER) || (CUDART_VERSION >= 8000)
从CMakeLists.txt里加两个路径, CMAKE_INSTALL_PREFIX=$HOME/local/opencv2.4.11 PYTHON_LIBRARY=$HOME/local/anaconda/bin cd opencv‐2.4.11 mkdir release && cd release cmake ‐D BUILD_opencv_gpu=OFF ‐D CUDA_GENERATION=Kepler -D CUDA_ARCH_BIN=3.2 -D CUDA_ARCH_PTX=3.2 -D BUILD_TIFF=ON .. make ‐j8 sudo make install cd ../../ rm ‐rf opencv‐2.4.11 修改.bashrc export LD_LIBRARY_PATH=/home/fangxi/local/opencv2.4.11/lib:$LD_LIBRARY_PATH export PATH=/home/fangxi/local/opencv2.4.11/bin:$PATH source ~/.bashrc -----3.2.0------
sudo apt-get install build-essential
sudo apt-get installcmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-devlibswscale-dev
[optional] sudoapt-get install python-dev python-numpy libtbb2 libtbb-devlibjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
cd opencv3.2/ mkdir release && cd release 修改CMakeLists.txt OPENCV_EXTRA_MODULES_PATH=/home/fangxi/local/opencv3.2/opencv_contrib/modules PYTHON_LIBRARY=$HOME/local/anaconda/bin CMAKE_INSTALL_PREFIX=/home/fangxi/local/opencv3.2.0 cmake ‐D BUILD_opencv_gpu=OFF ‐D CUDA_GENERATION=Kepler -D BUILD_TIFF=ON .. 报错:libopencv_imgcodecs.so.3.2.0: undefined reference to `TIFF 加上TIFF选项 make ‐j8 sudo make install cd ../.. rm -rf opencv3.2/ 修改~/.bashrc export LD_LIBRARY_PATH=/home/fangxi/local/opencv3.2.0/lib:$LD_LIBRARY_PATH export PATH=/home/fangxi/local/opencv3.2.0/bin:$PATH
9.安装Boost
报错:bzlib.h: No such file or directory 解决:sudo apt-get install libbz2-dev cd boost_1_60_0 ./bootstrap.sh ‐‐prefix=$HOME/local ./b2 ‐j8 ./b2 install cd ../ rm ‐rf boost_1_60_0
10.安装glog
cd glog‐0.3.4 ./configure --prefix=/home/fangxi/local make ‐j8 make install cd ../ rm ‐rf glog‐0.3.4
11.安装gflags
cd gflags‐2.1.2 mkdir build && cd build CXXFLAGS="-fPIC" cmake -D CMAKE_INSTALL_PREFIX=/home/fangxi/local .. make -j8 sudo make install cd ../../ rm ‐rf gflags‐2.1.2
12.安装lmdb
cd lmdb‐LMDB_0.9.18/libraries/liblmdb make ‐j8 sudo make prefix=$HOME/local install cd ../../../ rm ‐rf lmdb‐LMDB_0.9.18
13.安装hdf5
cd hdf5‐1.8.14 ./configure ‐‐prefix=$HOME/local make ‐j8 make check ‐j8 # run test suite. make install make check‐install ‐j8 # verify installation. cd ../ rm ‐rf hdf5‐1.8.14
14.安装cuDNN(v6 and later)
cd cuda cp -av lib64/* ~/local/lib cp -av include/* ~/local/include cd ../ rm ‐rf cuda # caffe python export PYTHONPATH=/home/sean/Documents/caffe/python:$PYTHONPATH export PYTHONPATH=/home/sean/Documents/ssd_caffe/caffe/python:$PYTHONPATH
最后,别忘了:
export LD_LIBRARY_PATH=/home/fangxi/local/lib:$LD_LIBRARY_PATH export PATH=/home/fangxi/local/bin:$PATH export CPLUS_INCLUDE_PATH=/home/fangxi/local/include:$CPLUS_INCLUDE_PATH
15.配置git
$ls-al ~/.ssh
#Checkingfor existing SSH keys
$ssh-keygen-t rsa -b 4096 -C "fx1120132692@126.com"#Generating a new SSH key
$eval "$(ssh-agent -s)" #Start the ssh-agent in thebackground.
$ssh-add ~/.ssh/id_rsa #Add your SSH private key to the ssh-agent.
Addthe SSH key to your GitHub account(码云同理):复制~/.ssh/id_rsa.pub中的内容
16.编译ssd
修改ssd的Makefile.config
make -j8
make py
make test -j8
make -j8过程中遇到的问题如下:
错误1:/bin/bash:-c line 0:syntax error… 原因:Makefile.config里面有语法错误
错误2:和cudnn有关的“未定义” 原因:cudnn7和cuda8.0不兼容,改成cudnn8
错误3: src/caffe/util/db_leveldb.cpp:2:0:7:24: fatal error: leveldb/db.h: No such file or directory
原因:库文件路径找不到,复制到#include规定的路径即可
错误4:/home/fangxi/local/include/boost/config/suffix.hpp(510): error: identifier "__float128" is undefined
原因:boost到gcc.h头文件定义存在bug
sudo gedit /home/fangxi/local/include/boost/config/compiler/gcc.hpp
改为
#if defined(_GLIBCXX_USE_FLOAT128) && !defined(__STRICT_ANSI__) && !defined(__CUDACC__)
不需重新编译
boost
mkdir cmake_build && cd cmake_build
cmake .. -DBUILD_SHARED_LIB=ON
cmake . -DCMAKE_BUILD_TYPE=Debug # switch to debug
make -j 12 && make install # installs by default to build_dir/install
cmake . -DCMAKE_BUILD_TYPE=Release # switch to release
make -j 12 && make install # doesn’t overwrite debug install\
# make the project
cd ../Detection
mkdir build && cd build
cmake ..
make
cd ..
# copy your data to ./data and modify ./data/list.txt
# copy your *.caffemodel and deploy.prototxt to ./model
./detection.sh