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