1. 程式人生 > >Ubuntu16.04+caffe的安裝和Py-faster-rcnn在CPU電腦的安裝-2

Ubuntu16.04+caffe的安裝和Py-faster-rcnn在CPU電腦的安裝-2

本機安裝在/home/whu/HS/caffe

https://blog.csdn.net/jx232515/article/details/72384465

第一步:

重點宣告:是在cpu安裝,不適用GPU.本教程caffe編譯只是編譯了通用caffe的Python介面(如果還需要編譯MATLAB介面的,請務必先看我的後一篇部落格,涉及到一個很重要的版本問題)和faster-rcnn的Python介面。gcc,g++使用的5.3版本。

基本庫安裝

Python的安裝有兩種方式:一種是系統自帶的python,只需再安裝相應的庫即可;第二種是直接安裝anaconda,很多相應的庫已經包含了。第一種直接安裝庫檔案比較簡單,不需要修改相應的包含路徑和庫檔案。選擇第一種。

sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev protobuf-compiler gfortran libjpeg62 libfreeimage-dev 

sudo apt-get install libatlas-base-dev git python-dev python-pip libgoogle-glog-dev libbz2-dev libxml2-dev libxslt-dev libffi-dev libssl-dev libgflags-dev liblmdb-dev python-yaml  

可能有的同學安裝報錯不能獲取下載地址,可以在Ubuntu的軟體更新器的其他軟體源全部勾選,就可以了,新增軟體源。

 

安裝影象包依賴OpenCV開源庫:

因為我之前安裝了opencv 2.4.10,所以這裡借用 http://blog.csdn.net/zyb19931130/article/details/53842791的內容。表示感謝。

(1)從github上下載安裝指令碼:https://github.com/jayrambhia/Install-OpenCV

 

(2)進行Ubuntu/2.4目錄,對所有指令碼增加可執行許可權

 

[python]

 view plain copy

  1. sudo chmod +x *.sh  

 

(3)安裝依賴項

 

[python] view plain copy

  1. sudo ./dependencies.sh  

(4)安裝opencv 2.4.9

[python] view plain copy

  1. sudo sh ./opencv2_4_9.sh 

 

第二:從caffe專案主頁把caffe專案clone下來:

[python] view plain copy

  1. git clone --recursive https://github.com/BVLC/caffe.git  

然後:

[python] view plain copy

  1. cd caffe  
  2. cp Makefile.config.example Makefile.config  

由於是僅CPU安裝,修改Makefile相關配置:

[plain] view plain copy

  1. 去掉註釋CPU_ONLY :=1  
  2. 註釋掉CUDA有關的行:  
  3. #CUDA_DIR := /usr/local/cuda  
  4. #CUDA_ARCH := -gencode arch=compute_20,code=sm_20 \  
  5. #        -gencode arch=compute_20,code=sm_21 \  
  6. #        -gencode arch=compute_30,code=sm_30 \  
  7. #        -gencode arch=compute_35,code=sm_35 \  
  8. #        -gencode arch=compute_50,code=sm_50 \  
  9. #        -gencode arch=compute_50,code=compute_50  
  10. 去掉註釋WITH_PYTHON_LAYER := 1  
  11. INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial  
  12. LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/i386-linux-gnu/hdf5/serial /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial  
  13. #TEST_GPUID := 0  

檔案修改完成後,開始編譯:

 

 

[python] view plain copy

  1. make all   
  2. make test  
  3. make runtest  
  4. make pycaffe  

若編譯沒有錯誤,則caffe編譯成功。可以在Python環境中使用caffe。

 

開始在Python使用.

 

[python] view plain copy

  1. $cd caffe/python  
  2. $python  
  3. >>>import caffe  

 

出現錯誤:

 

File "caffe/io.py", line 2, in <module>
    import skimage.io
ImportError: No module named skimage.io

 

此時只要按照以下命令操作即可:
$ 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 update

 

然後回到編譯caffe的目錄,重新

$ make pycaffe

 

沒報錯之後,重新進行下面操作。

 

 

  1. $cd caffe/python  
  2. $python  
  3. >>>import caffe  

到這裡,caffe以及Python介面都已經編譯成功,配置好了。

 

 

第三:下面進行Faster-rcnn Python版的安裝。

 

 

下載專案,裡面包含的caffe--rcnn與第一部分的通用的caffe並不相同。

 

[python] view plain copy

  1. git clone --recursive  https://github.com/rbgirshick/py-faster-rcnn.git  

安裝cython和easydict:

 

 

[python] view plain copy

  1. sudo pip install cython  
  2. sudo pip install easydict   

 

編譯cython

到/py-faster-rcnn/lib/目錄下修改setup.py檔案,然後在/py-faster-rcnn/lib/目錄下make,修改如下:

 

  1. #CUDA = locate_cuda()  //第一處
  2.  
  3. #self.set_executable('compiler_so', CUDA['nvcc'])  //第二處
  4.  
  5.     #Extension('nms.gpu_nms',  //第三處,就是把cuda,gpu部分修改
  6.         #['nms/nms_kernel.cu', 'nms/gpu_nms.pyx'],  
  7.         #library_dirs=[CUDA['lib64']],  
  8.         #libraries=['cudart'],  
  9.         #language='c++',  
  10.         #runtime_library_dirs=[CUDA['lib64']],  
  11.         # this syntax is specific to this build system  
  12.         # we're only going to use certain compiler args with nvcc and not with  
  13.         # gcc the implementation of this trick is in customize_compiler() below  
  14.         #extra_compile_args={'gcc': ["-Wno-unused-function"],  
  15.         #                    'nvcc': ['-arch=sm_35',  
  16.         #                             '--ptxas-options=-v',  
  17.         #                             '-c',  
  18.         #                             '--compiler-options',  
  19.         #                             "'-fPIC'"]},  
  20.         #include_dirs = [numpy_include, CUDA['include']]  
  21.     #),

 

編譯py-faster-rcnn自帶的caffe:

 

到/py-faster-rcnn/caffe-fast-rcnn/目錄下,把Makefile.config.exampe複製並重命名為Makefile.config檔案,修改Makefile.config檔案

(和第一部分中的修改一樣)和CMakeLists.txt檔案(OFF改成ON),修改如下

[python] view plain copy

  1. caffe_option(CPU_ONLY  "Build Caffe without CUDA support" ON) # TODO: rename to USE_CUDA

然後

 

 

  1. cd ~/py-faster-rcnn/caffe-fast-rcnn  
  2. make -j8&& make pycaffe  

 

 

 

第四:測試demo:

 

首先下載訓練好的模型,放在data檔案下:

[plain] view plain copy

  1. cd ~/py-faster-rcnn  
  2. ./data/scripts/fetch_faster_rcnn_models.sh  
  3.  


然後修改一些檔案:

 

A:修改/py-faster-rcnn/lib/fast_rcnn/config.py檔案(True改成False)
# Use GPU implementation of non-maximum suppression
__C.USE_GPU_NMS = False

B:將/py-faster-rcnn/tools/test_net.py和 /py-faster-rcnn/tools/train_net.py的caffe.set_mode_gpu()修改為caffe.set_mode_cpu().

C:修改/py-faster-rcnn/lib/fast_rcnn/nms_wrapper.py檔案(註釋該引用,並將False改成True)
#from nms.gpu_nms import gpu_nms
def nms(dets, thresh, force_cpu=True)

最後,執行demo:

 

[plain] view plain copy

  1. cd ~/py-faster-rcnn  
  2. ./tools/demo.py --cpu  

但是cpu還是比較慢的。且容易記憶體溢位。如果我們換成zf網路模型(預設為VGG16)需要

           ./tools/demo.py   --cpu  --net zf