一、硬件和環境:
- GTX 1080 Ti, Cuda 9.0, Cudnn 7.6.0
- Ubuntu16.04
- Anaconda3 caffe47虛擬環境
(caffe3虛擬環境用pip install opencv-python和pip install opencv-contrib-python,然後下載caffe併成功編譯。) - https://blog.csdn.net/la_fe_/article/details/88547816
- https://github.com/rbgirshick/py-faster-rcnn
二、下載 py-faster-rcnn並修改Makefile.config文件
source activate caffe3
cd workspace/faster-rcnn/caffe47_py-faster-rcnn
git clone --recursive https://github.com/rbgirshick/py-faster-rcnn.git
cd py-faster-rcnn/
cd lib/
make
cd ..
cd caffe-fast-rcnn/
vi Makefile.config
由於路徑名太長,下載完之後我直接剪切文件到workspace文件夾下
python setup.py build_ext --inplace
running build_ext
cythoning utils/bbox.pyx to utils/bbox.c
building 'utils.cython_bbox' extension
creating build
creating build/temp.linux-x86_64-2.7
creating build/temp.linux-x86_64-2.7/utils
gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/home/drl/anaconda3/envs/caffe47/lib/python2.7/site-packages/numpy/core/include -I/home/drl/anaconda3/envs/caffe47/include/python2.7 -c utils/bbox.c -o build/temp.linux-x86_64-2.7/utils/bbox.o -Wno-cpp -Wno-unused-function
gcc -pthread -shared -L/home/drl/anaconda3/envs/caffe47/lib -Wl,-rpath=/home/drl/anaconda3/envs/caffe47/lib,--no-as-needed build/temp.linux-x86_64-2.7/utils/bbox.o -L/home/drl/anaconda3/envs/caffe47/lib -lpython2.7 -o /home/drl/workspace/py-faster-rcnn/lib/utils/cython_bbox.so
cythoning nms/cpu_nms.pyx to nms/cpu_nms.c
building 'nms.cpu_nms' extension
creating build/temp.linux-x86_64-2.7/nms
gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/home/drl/anaconda3/envs/caffe47/lib/python2.7/site-packages/numpy/core/include -I/home/drl/anaconda3/envs/caffe47/include/python2.7 -c nms/cpu_nms.c -o build/temp.linux-x86_64-2.7/nms/cpu_nms.o -Wno-cpp -Wno-unused-function
gcc -pthread -shared -L/home/drl/anaconda3/envs/caffe47/lib -Wl,-rpath=/home/drl/anaconda3/envs/caffe47/lib,--no-as-needed build/temp.linux-x86_64-2.7/nms/cpu_nms.o -L/home/drl/anaconda3/envs/caffe47/lib -lpython2.7 -o /home/drl/workspace/py-faster-rcnn/lib/nms/cpu_nms.so
cythoning nms/gpu_nms.pyx to nms/gpu_nms.cpp
building 'nms.gpu_nms' extension
/usr/local/cuda/bin/nvcc -I/home/drl/anaconda3/envs/caffe47/lib/python2.7/site-packages/numpy/core/include -I/usr/local/cuda/include -I/home/drl/anaconda3/envs/caffe47/include/python2.7 -c nms/nms_kernel.cu -o build/temp.linux-x86_64-2.7/nms/nms_kernel.o -arch=sm_35 --ptxas-options=-v -c --compiler-options '-fPIC'
ptxas info : 0 bytes gmem
ptxas info : Compiling entry function '_Z10nms_kernelifPKfPy' for 'sm_35'
ptxas info : Function properties for _Z10nms_kernelifPKfPy
0 bytes stack frame, 0 bytes spill stores, 0 bytes spill loads
ptxas info : Used 22 registers, 1280 bytes smem, 344 bytes cmem[0], 12 bytes cmem[2]
gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/home/drl/anaconda3/envs/caffe47/lib/python2.7/site-packages/numpy/core/include -I/usr/local/cuda/include -I/home/drl/anaconda3/envs/caffe47/include/python2.7 -c nms/gpu_nms.cpp -o build/temp.linux-x86_64-2.7/nms/gpu_nms.o -Wno-unused-function
cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++
In file included from /home/drl/anaconda3/envs/caffe47/lib/python2.7/site-packages/numpy/core/include/numpy/ndarraytypes.h:1822:0,
from /home/drl/anaconda3/envs/caffe47/lib/python2.7/site-packages/numpy/core/include/numpy/ndarrayobject.h:12,
from /home/drl/anaconda3/envs/caffe47/lib/python2.7/site-packages/numpy/core/include/numpy/arrayobject.h:4,
from nms/gpu_nms.cpp:489:
/home/drl/anaconda3/envs/caffe47/lib/python2.7/site-packages/numpy/core/include/numpy/npy_1_7_deprecated_api.h:17:2: warning: #warning "Using deprecated NumPy API, disable it with " "#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION" [-Wcpp]
#warning "Using deprecated NumPy API, disable it with " \
^
g++ -pthread -shared -L/home/drl/anaconda3/envs/caffe47/lib -Wl,-rpath=/home/drl/anaconda3/envs/caffe47/lib,--no-as-needed build/temp.linux-x86_64-2.7/nms/nms_kernel.o build/temp.linux-x86_64-2.7/nms/gpu_nms.o -L/usr/local/cuda/lib64 -L/home/drl/anaconda3/envs/caffe47/lib -Wl,-R/usr/local/cuda/lib64 -lcudart -lpython2.7 -o /home/drl/workspace/py-faster-rcnn/lib/nms/gpu_nms.so
cythoning pycocotools/_mask.pyx to pycocotools/_mask.c
building 'pycocotools._mask' extension
creating build/temp.linux-x86_64-2.7/pycocotools
gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/home/drl/anaconda3/envs/caffe47/lib/python2.7/site-packages/numpy/core/include -Ipycocotools -I/home/drl/anaconda3/envs/caffe47/include/python2.7 -c pycocotools/maskApi.c -o build/temp.linux-x86_64-2.7/pycocotools/maskApi.o -Wno-cpp -Wno-unused-function -std=c99
gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/home/drl/anaconda3/envs/caffe47/lib/python2.7/site-packages/numpy/core/include -Ipycocotools -I/home/drl/anaconda3/envs/caffe47/include/python2.7 -c pycocotools/_mask.c -o build/temp.linux-x86_64-2.7/pycocotools/_mask.o -Wno-cpp -Wno-unused-function -std=c99
gcc -pthread -shared -L/home/drl/anaconda3/envs/caffe47/lib -Wl,-rpath=/home/drl/anaconda3/envs/caffe47/lib,--no-as-needed build/temp.linux-x86_64-2.7/pycocotools/maskApi.o build/temp.linux-x86_64-2.7/pycocotools/_mask.o -L/home/drl/anaconda3/envs/caffe47/lib -lpython2.7 -o /home/drl/workspace/py-faster-rcnn/lib/pycocotools/_mask.so
rm -rf build
將以前的Makefile和Makefile.config文件copy到caffe-fast-rcnn下,並做相對應的修改,python3改爲python2,並將use_cudnn註釋掉。
將在workspace/caffe/Makefile.config和Makefile文件複製到workspace/faster-rcnn/py-faster-rcnn/caffe-fast-rcnn/文件夾下,其中Makefile不改變,而Makefile.config文件根據視頻裏面的Makefile.config文件做一些修改,如
- 註釋掉USE_CUDNN:=1
- 將
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial/
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib
改爲:
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial/
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial
四、編譯py-faster-rcnn
make -j8
make pycaffe
打開workspace/faster-rcnn/py-faster-rcnn/data/scripts/fetch_faster_rcnn_models.sh,複製裏面的網址https://dl.dropboxusercontent.com/s/o6ii098bu51d139/faster_rcnn_models.tgz?dl=0下載faster-rcnn_models
下載好之後把模型放在py-faster-rcnn/data/文件夾下。