预先准备
-
先到GitHub上clone相关文件
git clone https://github.com/endernewton/tf-faster-rcnn.git
-
根据GPU型号选择相应的Architecture(-arch),由于我是在服务器上操作,服务器的型号为GTX 1080,所以选择的Architecture是sm_61
cd tf-faster-rcnn/lib vim setup.py
在setup.py中找到arch,使arch = sm_61.
-
构建Cython模块
make clean make cd ..
-
在tf-faster-rcnn/data中导入coco的PythonAPI(PythonAPI),如果选择的是VOC数据集,这一步骤就不需要了,因为这是为了接受coco数据集做准备的。
cd data git clone https://github.com/pdollar/coco.git cd coco/PythonAPI make cd ../../..
数据集的准备
我使用的是来自官网的VOC数据集(当然这个数据集可以自己制作)。
aria2c -s 5 http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar
aria2c -s 5 http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar
aria2c -s 5 http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCdevkit_08-Jun-2007.tar
- 这里共涉及到三个压缩包,都需要下载。
- aria是多线程下载,可以稍加速下载速度。当然,下载也可以使用wget + 网址。
下载完压缩包后,解压压缩包,解压结束后,三个文件夹中的内容会处于同一个文件夹中。
tar -xvf VOCtrainval_06-Nov-2007.tar
tar -xvf VOCtest_06-Nov-2007.tar
tar -xvf VOCdevkit_08-Jun-2007.tar
预训练模型下载
由于GitHub中所给的预训练模型无法下载,我在其他网站上找到了一个resnet101的预训练模型。
aria2c -s 5 http://download.tensorflow.org/models/resnet_v1_101_2016_08_28.tar.gz
- 这样下载的速度特别慢,可能这需要连接外网才能快速下载,所以我先用外网将模型下载到本地文件中,在将该压缩包上传至服务器中
- 除了resnet101预训练模型,还可以下载vgg16预训练模型(vgg16模型下载网址)
scp -r resnet_v1_101_2016_08_28.tar.gz username@服务器:文件名
上传后解压,将解压后的模型放至data文件夹中
mkdir -p data/imagenet_weights
cp resnet_v1_101.ckpt (对应路径名)data/imagenet_weights --后一个用绝对路径
cd data/imagenet_weights
mv resnet_v1_101.ckpt res101.ckpt
cd ../..
设置软连接
在VOC数据集与下载的预训练模型之间设置软连接
cd data/
mkdir -p output/${res101}/${VOCdevkit}
cd output/${res101}/${VOCdevkit}
ln -s ../data/VOCdevkit ./default
cd ../..
开始训练
训练:
./experiments/scripts/train_faster_rcnn.sh [GPU_ID] [DATASET] [NET]
# Examples:
./experiments/scripts/train_faster_rcnn.sh 0 pascal_voc vgg16
./experiments/scripts/train_faster_rcnn.sh 1 pascal_voc res101
测试与验证:
./experiments/scripts/test_faster_rcnn.sh [GPU_ID] [DATASET] [NET]
# Examples:
./experiments/scripts/test_faster_rcnn.sh 0 pascal_voc vgg16
./experiments/scripts/test_faster_rcnn.sh 1 pascal_voc res101
可以用tensorboard来可视化效果:
tensorboard --logdir=tensorboard/res101/voc_2007_trainval
总结
这篇博客中的步骤可以用来新手练习复现faster rcnn,这些步骤都很简单,很快就能实现。
主要是根据GitHub中的README进行一步步操作,省略了部分操作,以上为亲自实现过的操作步骤都很简单,很快就能实现。