ubuntu16.04下caffe的配置方法

来源:互联网 发布:mac怎么设置无线鼠标 编辑:程序博客网 时间:2024/06/05 07:07

电脑配置:

系统:ubuntu16.04

显卡:GTX1050Ti


1.禁用nouveau

sudo gedit /etc/modprobe.d/blacklist.conf

在打开的blacklist.conf最后两行分别输入blacklist nouveau和 optionsnouveau modeset=0

执行 sudo update-initramfs -u

2.安装nvidia显卡驱动

(1)第一种安装方式

   a.在官网http://www.nvidia.com/Download/index.aspx?lang=en-us下载对应版本的驱动NVIDIA-Linux-x86_64-384.98.run

   b.ctrl+Alt+F1进入文字界面

   c.sudo apt-get remove –purge nvidia* 若有旧的驱动则卸载

   d.输入sudoservice lightdm stop 停用 X service

   e.进入相应目录运行a中下载的驱动./NVIDIA-Linux-x86_64-384.98.run –no-opengl-files,加入–no-opengl-files防止安装驱动后无法登陆图形界面

   f.安装成功后sudoservice lightdm start 启用 X service

   g.sudo nvidia-smi查看显卡和GPU信息

  

      若未出现process:里面GPU没有相关信息,则驱动可能安装失败

(2)第二种安装方式

      若采用上述(1)装过一次,则应该卸载刚安装的驱动./NVIDIA-Linux-x86_64-384.98.run --uninstall

     可以再运行一次sudo apt-get remove –purge nvidia*卸载旧的驱动

  a.采用sudo apt-cache search nvidia* 搜索驱动

  b.采用sudo apt-get install nvidia-384安装一个nvidia显卡驱动

  c.若安装重启后发现分辨率变得太小,则参考https://www.douban.com/note/262885853/

     更改分辨率sudo gedit /etc/X11/xorg.conf

      HorizSync 31.5 - 61.0 %这个地方修改
      VertRefresh 50.0 - 75.0 %这个地方修改

      Modes "1920×1080" % 修改

    但是我的没改回来,而是变为了1440*900,不知道是不是HorizSyncVertRefresh改的不对

3.安装cuda8.0

  (1)在http://blog.csdn.net/seven_year_promise/article/details/78390882上的百度云资源进行下载cuda8.0.run得到cuda_8.0.61_375.26_linux.run

  (2)输入命令sudo chmod 777 cuda_8.0.44_linux.run

             sudo  ./cuda_8.0.61_375.26_linux.run

     安装时询问Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 367.48?选N,因为之前已经装过了nvidian的驱动,不再安装更低的版本了

   (3)将cuda加入环境变量,参考https://www.cnblogs.com/go-better/p/7161006.html

      a.打开~/.bashrc文件:

                 sudo gedit ~/.bashrc

                  将以下内容写入到~/.bashrc尾部:

                   export PATH=/usr/local/cuda-7.5/bin${PATH:+:${PATH}}

                   export LD_LIBRARY_PATH=/usr/local/cuda-7.5/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

            b. 在/etc/profile文件中添加CUDA环境变量:

                sudo gedit /etc/profile  打开文档都在文档结尾加上下面两句:

                 PATH=/usr/local/cuda/bin:$PATH2 export PATH

                 保存后, 执行下列命令, 使环境变量立即生效:

                 source /etc/profile

            c. 添加lib库路径,在 /etc/ld.so.conf.d/新建文件 cuda.conf

              sudo gedit /etc/ld.so.conf.d/cuda.conf

              在文中加入下面内容:

              /usr/local/cuda/lib64

              执行下列命令使之立刻生效:

              sudo ldconfig

   (4)测试

     cd /usr/local/cuda-7.5/samples/1_Utilities/deviceQuery

    make

     sudo ./deviceQuery 会输出GPU的相关信息

   (5)cudnn安装

     在http://blog.csdn.net/seven_year_promise/article/details/78390882上的百度云资源进行下载cudnn5.1.10(cuda8.0)得到

      cudnn-8.0-linux-x64-v5.1.tgz,采用tar -xzvf ***.tar.gz命令解压缩

      cd cuda/include

      sudo cp cudnn.h /usr/local/cuda/include  #复制头文件

      cd lib64

      sudo cp lib* /usr/local/cuda/lib64/    #复制动态链接库

      //复制的时候可能破坏链接关系,重新建立软链接

      cd /usr/local/cuda/lib64/

      sudo chmod +r libcudnn.so.5.10.1

      sudo ln -sf libcudnn.so.5.10.1 libcudnn.so.5

      sudo ln -sf libcudnn.so.5 libcudnn.so

      sudo ldconfig

4.安装opencv

  (1)第一种安装方式,参考http://blog.csdn.net/tengxing007/article/details/54380732

    在官网上下载opencv并解压缩

    安装cmake

       sudo apt install cmake

    配置cmake

       sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..

    编译

       sudo make

    安装opencv

       sudo make install

    不自己安装,也可以采用别人写的脚本https://github.com/jayrambhia/Install-OpenCV

  (2)第二种安装方式

       参考http://blog.csdn.net/faver2014/article/details/47188319

       参考http://blog.csdn.net/tina_ttl/article/details/52745807

       参考http://blog.csdn.net/xukai871105/article/details/41084949

       apt-get update

       apt-cache search opencv 

       sudo apt-get install libcv-dev

   (3)测试

       1 sudo apt-get install python-opencv  
       2 sudo apt-get install python-numpy

       可以在python中import cv2,并写个简单的小代码测试下

       img = cv2.imread("1.jpg")

       cv2.imshow("1",img)

       cv2.waitKey(0)

 3. caffe配置     

   参考https://www.cnblogs.com/go-better/p/7161006.html

   参考http://www.linuxidc.com/Linux/2016-12/138870.htm

   安装相关库

    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


    USE_CUDNN := 1
    若使用的opencv版本是3的,则OPENCV_VERSION := 3
    若要使用python来编写layer,则WITH_PYTHON_LAYER := 1
    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


    (4)修改makefile文件(https://www.cnblogs.com/go-better/p/7161006.html
      打开makefile文件,做如下修改:(这个不知道有没有用,这一步感觉没作用)
      将:
          NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)
      替换为:
          NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
      接下来是针对安装opencv3.0.0版本的同学而言的,对于3.0.0之前的版本不需要修改:
      在位置((LIBRARIES+= glog gflags protobuf leveldb snappy lmdbboost_system hdf5_hl hdf5 m opencv_coreopencv_highgui opencv_imgproc opencv_imgcodecs))处添加opencv_imgcodecs
      这一步非常重要,否则编译后会出现错误如下:
      CXX/LD-o.build_release/tools/convert_imageset.bin
       .build_release/lib/libcaffe.so:undefined reference tocv::imread(cv::String           const&,int)'.build_release/lib/libcaffe.so: undefined referencetocv::imencode(cv::String const&, cv::_InputArray const&,std::vector >&, std::vector > const&)'
      原因就是opencv3.0.0把imread相关函数放到imgcodecs.lib中了,而非原来的imgproc.lib。
(If you input "make all",the problem is the same again.But if you delete all the file in build(rm -rf ./build/*) before "make all"(I use make clean ),you will success.I just success)

make all

make test

make runtest

出现各种库缺少的话,将其拷贝进入usr/lib中

make pycaffe

export PYTHONPATH=/home/caffe-master/python:$PYTHONPATH

import caffe


出现错误No module named skimage.io

1. sudo pip install scikit-image

2.sudo apt-get install python-skimage


出现错误No module named google.protobuf.internal,可以根据下面重新安装依赖包

http://blog.csdn.net/liyaohhh/article/details/50876777

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 python-numpy python-scipy python-matplotlib python-sklearn python-skimage python-h5py python-protobuf python-leveldb python-networkx python-nose python-pandas python-gflags Cython ipython  
sudo apt-get install protobuf-c-compiler protobuf-compiler  
sudo apt-get install libatlas-base-dev1  
sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev


1.将终端定位到Caffe根目录
cd ~/caffe
 
2.下载MNIST数据库并解压缩
./data/mnist/get_mnist.sh
 
3.将其转换成Lmdb数据库格式
./examples/mnist/create_mnist.sh
 
4.训练网络
./examples/mnist/train_lenet.sh