目录
- faster-rcnn.pytorch-1.0指南(一)——序言
- faster-rcnn.pytorch-1.0指南(二)——平台搭建和模型训练
- faster-rcnn.pytorch-1.0指南(三)——制作PASCAL VOC2007数据集
- faster-rcnn.pytorch-1.0指南(四)——训练自己的数据集
一、下载Github代码
git clone https:///jwyang/faster-rcnn.pytorch.git二、创建文件夹
cd faster-rcnn.pytorch
mkdir data
cd data
mkdir pretrained_model三、下载数据
这一步和我去年写tf-faster-rcnn指南(二)是一样的
1、Download the training, validation, test data and VOCdevkit
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.tar2、Extract all of these tars into one directory named VOCdevkit
tar xvf VOCtrainval_06-Nov-2007.tar
tar xvf VOCtest_06-Nov-2007.tar
tar xvf VOCdevkit_08-Jun-2007.tar3、It should have this basic structure 解压后会有以下三个文件夹
$VOCdevkit/
$VOCdevkit/VOCcode/
$VOCdevkit/VOC20074、将VOCdevkit重命名为VOCdevkit2007
四、下载预训练模型
Dropbox要,VT Server不用,我这里就不挂链接来,可以去官方github上下载。

如图所述,我们需要将下载好的预训练模型放在之前新建的文件夹pretrained_model里。
五、编译
用cd指令回到faster-rcnn.pytorch目录下
pip install -r requirements.txt使用以下简单命令编译cuda依赖项
cd lib
python setup.py build develop六、修正异常(如果有必要)
要注意如果出现can’t import ‘imread’,请检查scipy的版本,新的版本不再使用imread。。而且scipy和pillow要在同一路径下。
解决办法按顺序参考以上两个博客,第一个上检测路径,第二个是修改版本。
七、训练
如果要训练vgg16就使用以下指令:
CUDA_VISIBLE_DEVICES=$GPU_ID python trainval_net.py \
--dataset pascal_voc --net vgg16 \
--bs $BATCH_SIZE --nw $WORKER_NUMBER \
--lr $LEARNING_RATE --lr_decay_step $DECAY_STEP \
--cuda 所有的$都是要设置的参数,可以参考以下例子:
CUDA_VISIBLE_DEVICES=0 python trainval_net.py \
--dataset pascal_voc --net vgg16 \
--epochs 1 --bs 1 --nw 4 \
--lr 1e-3 --lr_decay_step 5 \
--cuda参数的选择也可以多样(更多详情在作者的github上可以查看):

bs是batch size,默认为1
dataset是要在什么数据集上训练
net是你要使用的预训练模型,可以换为resnet101
epoch是要训练的轮数
nw是number work
lr是学习率
由上, BATCH_SIZE 和 WORKER_NUMBER 可以根据你的GPU情况来设置.。比如在 12G的Titan Xp上,可以达到4。如果你有多个GPU,可以使用下面代码使用全部的GPU来训练
python trainval_net.py --dataset pascal_voc --net vgg16 \
--bs 24 --nw 8 \
--lr $LEARNING_RATE --lr_decay_step $DECAY_STEP \
--cuda --mGPUs1、训练loss

八、测试
训练过程中会生成以下参数模型:

现在以第4个faster_rcnn_1_4_10021.pth为例:
测试的指令格式如下:
python test_net.py --dataset pascal_voc --net vgg16 \
--checksession $SESSION --checkepoch $EPOCH --checkpoint $CHECKPOINT \
--cuda 所有的$都是要设置的参数,可以参考以下例子:
python test_net.py --dataset pascal_voc --net vgg16 \
--checksession 1 --checkepoch 4 --checkpoint 10021 \
--cuda 只训练了一会,测试效果很一般


















