暑期的时候有朋友问我如何配置tf-faster-rcnn,那会简单写了个steps.pdf。正好最近闲了下来,就把它汇总一下。
Introduction
这是一篇介绍如何使用tf-faster-rcnn在VOC和其他数据集训练自己模型的笔记.
笔记中所有文件的地址: github
我的机器和库版本: GTX 1060, miniconda 4.5.4, CUDA 9.0, CUDNN 7.1.4, tensorflow-gpu 1.8.0.
1 配置tf-faster-rcnn
这里参考https://github.com/endernewton/tf-faster-rcnn,具体细节有一些不同.
1.1 Intall opencv, cython, easydict
我使用的是opencv 3.4.1, cython 0.28.4 and easydict 1.7.
1.2 Clone the repository
git clone https://github.com/endernewton/tf-faster-rcnn.git
1.3 Build the Cython modules
cd tf-faster-rcnn/lib
make clean
make
cd ..
1.4 Install the Python COCO API
git clone https://github.com/pdollar/coco.git
cd coco/PythonAPI
make
cd ../..
1.5 Setup data
cd data
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCdevkit_08-Jun-2007.tar
tar xvf VOCtrainval_06-Nov-2007.tar
tar xvf VOCtest_06-Nov-2007.tar
tar xvf VOCdevkit_08-Jun-2007.tar
ln -s VOCdevkit VOCdevkit2007
cd ..
1.6 Download pre-trained model
Google Driver: link
Baidu Cloud: link
下载模型并放入目录tf-faster-rcnn/
, 在当前目录执行命令
tar xvf voc_0712_80k-110k.tgz
1.7 Create a folder and a soft link to use the pre-trained model
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 ../../..
1.8 Modify python file
修改tf-faster-rcnn/lib/datasets/voc_eval.py
, 121 line.
# save
print('Saving cached annotations to {:s}'.format(cachefile))
with open(cachefile, 'w') as f: ---> with open(cachefile, 'wb') as f:
pickle.dump(recs, f)
1.9 Demo for testing on custom images
修改python文件之后, 执行以下命令.
GPU_ID=0
CUDA_VISIBLE_DEVICES=$GPU_ID ./tools/demo.py
1.10 End
至此为止, 只需要对./tools/demo.py
进行轻微修改, 你就可以使用这个模型来预测自己的数据集(数据集中的category必须在VOC数据集里面). 当然mean iou肯定不会很高的, 大约会在0.20~0.60这个区间.