目录

  • 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.tar

2、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.tar

3、It should have this basic structure 解压后会有以下三个文件夹

$VOCdevkit/                         
$VOCdevkit/VOCcode/                  
$VOCdevkit/VOC2007

4、将VOCdevkit重命名为VOCdevkit2007

四、下载预训练模型

  Dropbox要,VT Server不用,我这里就不挂链接来,可以去官方github上下载。

fasterrcnn训练visdrone2019_数据集


  如图所述,我们需要将下载好的预训练模型放在之前新建的文件夹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上可以查看):

fasterrcnn训练visdrone2019_python_02


  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 --mGPUs

1、训练loss

fasterrcnn训练visdrone2019_python_03

八、测试

  训练过程中会生成以下参数模型:

fasterrcnn训练visdrone2019_github_04


  现在以第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

  只训练了一会,测试效果很一般

fasterrcnn训练visdrone2019_python_05

fasterrcnn训练visdrone2019_数据集_06