#2018年7月14日 目前,若需訓練Faster R-CNN模型請使用其餘GitHub項目,能夠得到更好的效果。python
如tensorflow版的https://github.com/endernewton/tf-faster-rcnn
c++
或者使用facebook ai出品的Detectron https://github.com/facebookresearch/Detectrongit
最近在調試faster R-CNN時,遇到了各類各樣的問題。使用的算法庫爲https://github.com/smallcorgi/Faster-RCNN_TFgithub
注:本文使用的是經過virtualenv 建立python虛擬環境進行調試,python 版本2.7,tensorflow 版本爲tensorflow1.4-gpu版。
算法
1.首先要對它的庫進行編譯,python2.7
cd $FRCN_ROOT/lib make
https://drive.google.com/open?id=0ByuDEGFYmWsbZ0EzeUlHcGFIVWM測試
或者 https://www.dropbox.com/s/cfz3blmtmwj6bdh/VGGnet_fast_rcnn_iter_70000.ckpt?dl=0
3.下載好以後就能夠運行了。
cd $FRCN_ROOT
python ./tools/demo.py --model model_path
附:運行結果google
遇到的難題spa
1. 編譯過程當中 nsync_cv.h: No such file or directory,使用python虛擬環境會存在該問題。調試
/home/xxx/tensorflow/local/lib/python2.7/site-packages/tensorflow/include/tensorflow/core/platform/default/mutex.h:25:22: fatal error: nsync_cv.h: No such file or directory
解決:編譯的時候總是找不到該文件,最後直接把全路徑填上了,編譯經過,算一個笨方法吧。個人nsync_cv.h 文件的路徑爲:
/home/xxx/tensorflow/lib/python2.7/site-packages/external/nsync/public/nsync_cv.h
2. 運行demo過程當中遇到的錯誤
g++: error: roi_pooling_op.cu.o: No such file or directory
解決:按以下步驟設置
(1) export PATH=$PATH:/usr/local/cuda-8.0/bin/ (你的CUDA路徑) for your terminal
(2) 在$FRCN_ROOT/lib/ make.sh 文件中,將 CXXFLAGS+='-undefined dynamic_lookup'
改成 CXXFLAGS='-D_MWAITXINTRIN_H_INCLUDED'
3. undefined symbol: _ZTIN10tensorflow8OpKernelE
這個問題卡得最久,由於make.sh 文件中缺乏了TF_LIB 編譯參數,還須要添加 -D_GLIBCXX_USE_CXX11_ABI=0
解決:
(1)修改make.sh 添加TF_LIB,並修改相應的編譯參數
TF_LIB=$(python -c 'import tensorflow as tf; print(tf.sysconfig.get_lib())')
......
g++ -std=c++11 -shared -o roi_pooling.so roi_pooling_op.cc -D_GLIBCXX_USE_CXX11_ABI=0 \
roi_pooling_op.cu.o -I $TF_INC -L $TF_LIB -ltensorflow_framework -D GOOGLE_CUDA=1 \
-fPIC $CXXFLAGS -lcudart -L $CUDA_PATH/lib64
......
(2)從新make,而後運行
4. 缺乏yaml庫
查了網上的方法,都是這樣的
sudo apt-get install python-yaml
我試了,可是在虛擬環境中仍是沒法import,最後直接下載庫,手動安裝。注意,是在虛擬環境中,經過python setup.py install 進行安裝。
yaml 下載地址 http://pyyaml.org/download/pyyaml/PyYAML-3.12.tar.gz