全网流行的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 ..