运行tensorflow版的fasterRCNN遇到的问题总结

最近在学习使用tensorflow,从github上找了很多fcnn的开源代码,最后选择了CharlesShang版本的,因为觉得比较新,项目地址为:https://github.com/CharlesShang/TFFRCNN

该项目需要的配置作者在readme里面写的非常清楚,但是在编译cython和roi_pooling_op中遇到了一些问题,make过不去剩下的也都进行不了。 我的电脑配置是Ubuntu16.04,CUDA8.0,cudnn6,tensorflow的版本是1.4.1,显卡是TITIANX.

从地址处下载代码后,cd到Faster-RCNN_TF/lib,然后就make,就开始报错了.

第一个问题找不到 nsync_cv.h

这个问题的主要原因是因为TF的版本变了,不知nsync_cv.h的位置,

解决方式为加入nsync_cv.h路径,就是在make.sh文件中每个g++中都加入语句

-I $TF_INC"/external/nsync/public"

第二个问题 undefined symbol: _ZTIN10tensorflow8OpKernelE 

Then while trying to load the .so file I run into tensorflow.python.framework.errors_impl.

NotFoundError: ./max_align_bytes_op.so: undefined symbol: _ZTIN10tensorflow8OpKernelE

网上说貌似对10系列显卡不支持

解决方式为在 make.sh 文件中加入

TF_LIB=$(python -c 'import tensorflow as tf; print(tf.sysconfig.get_lib())')

然后在每个 g++ 中加入  -L $TF_LIB 

并且把 g++ 中的 -D_GLIBCXX_USE_CXX11_ABI=1 改为 -D_GLIBCXX_USE_CXX11_ABI=0

最终的make.sh文件如下:(如果有问题可以copy一份尝试一下)

#!/usr/bin/env bash

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())')

echo $TF_INC

echo $TF_LIB

CUDA_PATH=/usr/local/cuda/

cd roi_pooling_layer

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 -arch=sm_52

## if you install tf using already-built binary, or gcc version 4.x, uncomment the two lines below

#g++ -std=c++11 -shared -D_GLIBCXX_USE_CXX11_ABI=0 -o roi_pooling.so roi_pooling_op.cc \

# roi_pooling_op.cu.o -I $TF_INC -fPIC -lcudart -L $CUDA_PATH/lib64

# for gcc5-built tf

g++ -std=c++11 -shared -D_GLIBCXX_USE_CXX11_ABI=0 -o roi_pooling.so roi_pooling_op.cc \

roi_pooling_op.cu.o -I $TF_INC -I $TF_INC"/external/nsync/public" -L $TF_LIB -ltensorflow_framework -O2 -fPIC -lcudart -L $CUDA_PATH/lib64

cd ..

# add building psroi_pooling layer

cd psroi_pooling_layer

nvcc -std=c++11 -c -o psroi_pooling_op.cu.o psroi_pooling_op_gpu.cu.cc \

-I $TF_INC -D GOOGLE_CUDA=1 -x cu -Xcompiler -fPIC -arch=sm_52

g++ -std=c++11 -shared -D_GLIBCXX_USE_CXX11_ABI=0 -o psroi_pooling.so psroi_pooling_op.cc \

psroi_pooling_op.cu.o -I $TF_INC -I $TF_INC"/external/nsync/public" -L $TF_LIB -ltensorflow_framework -O2 -fPIC -lcudart -L $CUDA_PATH/lib64

## if you install tf using already-built binary, or gcc version 4.x, uncomment the two lines below

#g++ -std=c++11 -shared -D_GLIBCXX_USE_CXX11_ABI=0 -o psroi_pooling.so psroi_pooling_op.cc \

# psroi_pooling_op.cu.o -I $TF_INC -fPIC -lcudart -L $CUDA_PATH/lib64

cd ..

你可能感兴趣的:(运行tensorflow版的fasterRCNN遇到的问题总结)