1. 程式人生 > >py-faster-rcnn部署(CPU ONLY)

py-faster-rcnn部署(CPU ONLY)

前言

機器學習 裝環境是最麻煩的 今天裝報錯 明天裝不報錯也真是玄學呢
裝環境 要有耐心!會查錯!注意備份!
我在全新的ubuntu裡搞的
版本16.04 ,64位
由於是全新ubuntu 開機只有命令列因此我直接從圖形化介面開始記錄方法 已經完成的朋友可以直接不看~

1.圖形化介面

sudo apt-get install ubuntu-desktop
如果報錯看這裡
注:我裝完ubuntu-desktop的時候進去每次都是客人會話,下載安裝什麼的都異常麻煩,有些甚至不讓你下載,必須要root許可權。而且多使用者造成了一個困惑就是沒有公共檔案!好吧 老實用root
參考解決方法

,非常可用
設定一下就預設root登陸了
害得我吐槽了那個平臺半天

2.環境安裝

1.caffe
這講的也不錯,兩者基本上是一樣的哈
依賴庫一個都不能有問題 !記住了 有問題根據報錯資訊去查解決方法 google+baidu
eg:版本不對
pip install xxx==version
很多時候出問題 先無腦更新一下pip
python -m pip install --upgrade --force pip

2.py-faster-rcnn

github地址參見url

3.克隆倉庫

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

4.安裝一坨依賴庫

sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler不然瘋狂報錯
sudo apt-get install libopenblas-dev 一股腦都裝上 我剛開始沒裝,make一次報錯一次,害得我查了老半天= =
sudo apt-get install libatlas-base-dev


apt-get install python-pip python-dev build-essential
apt-get install python-opencv
pip install easydict
建立自己的資料夾
mkdir srtp
cd srtp

5.編譯cython

修改py-faster-rcnn/lib下的setup.py檔案,註釋掉GPU的相關程式碼,然後make -j8,修改如下:

#CUDA = locate_cuda()  
#self.set_executable('compiler_so', CUDA['nvcc'])  
    #Extension('nms.gpu_nms',  
        #['nms/nms_kernel.cu', 'nms/gpu_nms.pyx'],  
        #library_dirs=[CUDA['lib64']],  
        #libraries=['cudart'],  
        #language='c++',  
        #runtime_library_dirs=[CUDA['lib64']],  
        # this syntax is specific to this build system  
        # we're only going to use certain compiler args with nvcc and not with  
        # gcc the implementation of this trick is in customize_compiler() below  
        #extra_compile_args={'gcc': ["-Wno-unused-function"],  
        #                    'nvcc': ['-arch=sm_35',  
        #                             '--ptxas-options=-v',  
        #                             '-c',  
        #                             '--compiler-options',  
        #                             "'-fPIC'"]},  
        #include_dirs = [numpy_include, CUDA['include']]  
    #),

PS: -j8是使用多核編譯,這樣編譯速度快一點。

6.編譯caffe

①輸入指令:
先進入到caffe-fast-rcnn目錄下:
cd $RCNN_ROOT/caffe-fast-rcnn
複製Makefile.config.example為Makefile.config。
cp Makefile.config.example Makefile.config
編輯Makefile.config。
gedit Makefile.config
做如下改動

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib12

--------------->
換成這兩行:其實就是加上了hdf5的路徑

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/hdf5/serial/

②將Makefile.config裡面的 WITH_PYTHON_LAYER :=1前面的註釋去掉,這是因為faster R-CNN是要Python介面的,所以這一項要有,不能註釋。

③對於CMakeLists.txt檔案,將OFF改成ON

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

④上面一堆折騰完就可以期待奇蹟了
make -j8 && make pycaffe

參考資料:
hdf5找不到相關檔案:(有兩個票數還可以的回答都可以參考著試一下)
https://stackoverflow.com/questions/37007495/caffe-didnt-see-hdf5-h-when-compiling
修改目錄位置
https://blog.csdn.net/xue_wenyuan/article/details/52037121

7.下載測試資料集 不得不用迅雷下載 ubuntu搞個迅雷有點麻煩 於是先自己電腦下載好再傳到百度雲上

百度雲配置
傳大檔案通過百度雲和我們的雲伺服器進行檔案互動
有兩個檔案,下載完畢後放到data資料夾中解壓即可
連結:https://pan.baidu.com/s/1O5yHm4Wt6Ijpy6d7_XdDTA
提取碼:2i8k
連結:https://pan.baidu.com/s/1Meqanvnui9PoRCJMh7FMZg
提取碼:5w7k

8.修改程式碼

A 修改py-faster-rcnn/lib/fast-rcnn下的config.py檔案,即:__C.USE_GPU_NMS = False
B 修改py-faster-rcnn/tools下的test_net.py、train_net.py檔案,將caffe.set_mode_gpu() 改為caffe.set_mode_cpu()
C 修改py-faster-rcnn/lib/fast-rcnn下的nms_wrapper.py檔案,即:
 #from nms.gpu_nms import gpu_nms 註釋掉

9.測試

python tools/demo.py --cpu
但是CPU速度比較慢,而且容易記憶體溢位,所以我們可以使用ZF模型(預設為VGG16):
cd ~/py-faster-rcnn
python tools/demo.py --cpu --net zf