全網流行的faster rcnn 的TensorFlow 的開源版本是
https://github.com/smallcorgi/Faster-RCNN_TF
但是在Ubuntu下配置的過程中可能會出現一些問題
第一個是要安裝完全所有的Python依賴
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple matplotlib==2.2.3 numpy scipy pillow opencv-python easydict cython tensorFlow-gpu pyyaml
第二個是gcc g++ 的版本要配合好
如果是Ubuntu 18.04 默認的是gcc 7.0 那麼與Cuda 9.0 有衝突,而TensorFlow目前默認的是9.0
所以需要gcc 降級。簡單的方法是使用軟連接。
第二個是這個代碼很多是Python 2.7的版本寫的,如果改3.5 3.6 很麻煩,但是Python 2.7 馬上就要停止支持了,matplotlib最新版 都不支持2.7 了。所以我們上面安裝了matplotlib==2.2.3 。所以姑且這個代碼還是用2.7 比較快些。
在Cuda 9.0, gcc g++ tensorflow等都安裝好的基礎上,還要修改 Faster-RCNN_TF/lib/make.sh 的內容。修改內容如下。
然後應該編譯應該就通過了,不會出現什麼問題了。
TF_INC=$(python -c 'import tensorflow as tf; print(tf.sysconfig.get_include())')
TF_LIB=$(python -c 'import tensorflow as tf; print(tf.sysconfig.get_lib())')
CUDA_PATH=/usr/local/cuda/
CXXFLAGS=''
if [[ "$OSTYPE" =~ ^darwin ]]; then
CXXFLAGS+='-undefined dynamic_lookup'
fi
cd roi_pooling_layer
if [ -d "$CUDA_PATH" ]; then
nvcc -std=c++11 -c -o roi_pooling_op.cu.o roi_pooling_op_gpu.cu.cc \
-I $TF_INC -D GOOGLE_CUDA=1 -x cu -Xcompiler -fPIC $CXXFLAGS \
-arch=sm_37 --expt-relaxed-constexpr \
g++ -std=c++11 -shared -o roi_pooling.so roi_pooling_op.cc \
roi_pooling_op.cu.o -I $TF_INC -D GOOGLE_CUDA=1 -fPIC $CXXFLAGS -D_GLIBCXX_USE_CXX11_ABI=1 \
-lcudart -L $CUDA_PATH/lib64 \
-L$TF_LIB -ltensorflow_framework \
else
g++ -std=c++11 -shared -o roi_pooling.so roi_pooling_op.cc \
-I $TF_INC -fPIC $CXXFLAGS
fi
cd ..