一. 环境准备:
Macbook pro 2016 python 2.7 Anaconda2
Code Source:
endernewton/tf-faster-rcnngithub.com- 创建环境:打开Terminal, 创建一个新环境,可随意命名,名称跟在--name后面,版本python 2.7
conda create --name TC python=2.7
2. 激活TC环境
conda activate -TC
此时Terminal命令行前面有TC标志
3. 安装所需要的库,pip或者conda install + 库名
pip install tensorflow
pip install easydict
pip install matplotlib
pip install cython
pip install opencv-python
pip install pillow
二. 修改配置,使适用于CPU
- 下载Github源码:想下载到哪里,就在Terminal中cd到那个位置,在下载
git clone https://github.com/endernewton/tf-faster-rcnn.git
2. 修改配置
a) 打开 tf-faster-rcnn-master / lib / setup.py ,在这里设置CPU和GPU参数, 本文选用CPU运行。
注释第55行
# CUDA = locate_cuda()
注释第87行
# self.set_executable('compiler_so', CUDA['nvcc'])
注释第120-136行
# Extension('nms.gpu_nms',
# ['nms/nms_kernel.cu', 'nms/gpu_nms.pyx'],
# library_dirs=[CUDA['lib64']],
# libraries=['cudart'],
# language='c++',
# runtime_library_dirs=[CUDA['lib64']],
# # this syntax is specific to this build system
# # we're only going to use certain compiler args with nvcc and not with gcc
# # the implementation of this trick is in customize_compiler() below
# extra_compile_args={'gcc': ["-Wno-unused-function"],
# 'nvcc': ['-arch=sm_52',
# '--ptxas-options=-v',
# '-c',
# '--compiler-options',
# "'-fPIC'"]},
# include_dirs = [numpy_include, CUDA['include']]
# )
b) 打开 tf-faster-rcnn-master / lib / model / config.py ,把269行__C.USE_GPU_NMS = True改为__C.USE_GPU_NMS = False
__C.USE_GPU_NMS = False
c) 打开tf-faster-rcnn-master / lib / model / nms_wrapper.py,注释掉12行
from model.config import cfg
# from nms.gpu_nms import gpu_nms
from nms.cpu_nms import cpu_nms
注释第20 21行
if dets.shape[0] == 0:
return []
#if cfg.USE_GPU_NMS and not force_cpu:
#return gpu_nms(dets, thresh, device_id=0)
else:
return cpu_nms(dets, thresh)
三. 编译环境,安装数据库
- 在Terminal中cd到tf-faster-rcnn-master / lib目录下,运行以下命令编译环境:
make clean
make
cd ..
返回tf-faster-rcnn-master主目录
2. 安装Python COCO API,使用COCO数据库,运行以下命令
cd data
git clone https://github.com/pdollar/coco.git
cd coco/PythonAPI
make
cd ../../..
四. 运行Demo并测试Pre-trained模型
- 模型:voc_0712_80k-110k.tgz
下载链接:
Google Drive ---
https://drive.google.com/open?id=0B1_fAEgxdnvJVjFjTFl5cFd5cEkdrive.google.com百度云 ---
https://pan.baidu.com/s/1kWkF3fTpan.baidu.com下载完成后,解压得到voc_2007_trainval+voc_2012_trainval文件夹,将其移动到tf-faster-rcnn-master / data下。
在Terminal中cd到tf-faster-rcnn-master / data目录下,并创建pre-trained模型的soft link,运行以下命令:
NET=res101
TRAIN_IMDB=voc_2007_trainval+voc_2012_trainval
mkdir -p output/${NET}/${TRAIN_IMDB}
cd output/${NET}/${TRAIN_IMDB}
ln -s ../../../voc_2007_trainval+voc_2012_trainval ./default
cd ../../..
运行前三条命令,新建一个目录:tf-faster-rcnn/data/output/res101/voc_2007_trainval+voc_2012_trainval
运行第四条命令,Terminal进入voc_2007_trainval+voc_2012_trainval文件夹
运行第五条命令,产生一个文件名为default的快捷方式文件,打开会链接到四个模型文件
运行最后一条命令,Terminal回到data目录下
2. 修改并运行Demo
打开demo.py, 修改第120行的路径:把刚刚data里的output文件夹拖入Terminal,复制你自己的完整路径并修改。
tfmodel = os.path.join('/Users/Desktop/tf-faster-rcnn/data/output', demonet, DATASETS[dataset][0], 'default',
NETS[demonet][0])
运行demo
../tools/demo.py
运行结果:
预测结果图像(部分):