tensorflow faster rcnn 編譯問題總結

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章