前提:已经配置好了faster rcnn运行环境。如果还没有,请参考:https://mp.csdn.net/console/editor/html/105133096
faster rcnn可以使用不同的backbone(基础网络/分类网络)例如:VGG16,ZF,VGG_CNN_M_1024。这里以VGG_CNN_M_1024为例。
训练faster rcnn也有不同的训练模式,例如:faster_rcnn_alt_opt,faster_rcnn_end2end。这里以faster_rcnn_end2end为例。
一、下载数据
在终端输入:
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
二、
在py-faster-rcnn-master/data目录下将(1)中下载的三个压缩包解压。解压后,data文件夹中有VOCdevkit文件夹,VOCdevkit文件夹中主要包含VOC2007和VOCcode。
解压命令:
tar xvf VOCtrainval_06-Nov-2007.tar
tar xvf VOCtest_06-Nov-2007.tar
tar xvf VOCdevkit_08-Jun-2007.tar
三、建立软连接
cd到py-faster-rcnn-master/data目录下:
sudo ln -s VOCdevkit VOCdevkit2007
四、下载预训练好的ImageNet模型
cd到py-faster-rcnn-master目录下:
./data/scripts/fetch_imagenet_models.sh
下载后,在data文件夹中会有一个imagenet_models文件夹。(如果没有,找到imagenet_models文件夹,将其放到data中)
注:下载pre-trained ImageNet models时,最好不要在终端上下载,因为需要外网,所以终端下载可能会出错。你可以连接外网,手动下载https://dl.dropboxusercontent.com/s/gstw7122padlf0l/imagenet_models.tgz?dl=0
五、训练+测试
【如果进行过一次训练,在下次训练之前一定要把以下文件删除】
(1)output文件夹
(2)py-faster-rcnn/data/cache中的文件
(3)py-faster-rcnn/data/VOCdevkit2007软链接中的annotations_cache文件
开始训练测试!
cd到py-faster-rcnn-master目录下:
./experiments/scripts/faster_rcnn_end2end.sh 0 VGG_CNN_M_1024 pascal_voc
执行以上命令,会进行训练,训练结束后会自动进行测试。
你也可以训练和测试分开进行:
(1)训练:
cd到py-faster-rcnn-master目录下:
./tools/train_net.py
--gpu ${GPU_ID}
--solver models/${PT_DIR}/${NET}/faster_rcnn_end2end/solver.prototxt
--weights data/imagenet_models/${NET}.v2.caffemodel
--imdb ${TRAIN_IMDB} # voc_2007_trianval
--iters ${ITERS} # 迭代次数
--cfg experiments/cfgs/faster_rcnn_end2end.yml
(以上命令只是一个模子,需要大家根据自己的情况自行填写完整)
(2)测试:
cd到py-faster-rcnn-master目录下:
./tools/test_net.py
--gpu 0
--def models/pascal_voc/VGG_CNN_M_1024/faster_rcnn_end2end/test.prototxt
--net output/foobar/voc_2007_trainval/vgg_cnn_m_1024_faster_rcnn_iter_70000.caffemodel
--imdb voc_2007_test
--cfg experiments/cfgs/faster_rcnn_end2end.yml
(以上命令只是针对我自己的一个例子,具体的命令你需要根据自己的情况自行修改参数路径)
以上命令行参数,如果你嫌麻烦,可以提前在
~/py-faster-rcnn-master/experiments/scripts/faster_rcnn_end2end.sh
文件中进行设置。
另外,一些超参数在
~/py-faster-rcnn-master/py-faster-rcnn-master/models/pascal_voc/VGG_CNN_M_1024/faster_rcnn_end2end/solver.prototxt
文件中可以自行修改。
参考博客: