当前位置: 代码迷 >> 综合 >> 复现目标检测Faster R-CNN代码(Pytorch1.0版本)
  详细解决方案

复现目标检测Faster R-CNN代码(Pytorch1.0版本)

热度:88   发布时间:2024-01-26 11:38:14.0

最近开始做目标检测的这个模型了,里面有用到Faster R-CNN的部分,就是关于RPN网络。捣鼓了三天了,看了无数的博客,GitHub终于跑通了代码。故作以记录。

一、代码下载地址

https://github.com/jwyang/faster-rcnn.pytorch/tree/pytorch-1.0  

二、代码框架

我是通过迅雷在GitHub上下载,然后解压之后在复制到服务器。与下载后的差别就是data这个文件夹。

三、数据集准备

不管是进行测试还是训练,作者都是用的VOC2007这个数据集,因此接下来需要对数据集进行下载然后解压。

#下载
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

 当然,要创建一个data的文件夹,把这些数据集解压在data这个文件夹下:

cd faster-rcnn.pytorch-pytorch-1.0
mkdir data
cd data
tar xvf VOCtrainval_06-Nov-2007.tar
tar xvf VOCtest_06-Nov-2007.tar
tar xvf VOCdevkit_08-Jun-2007.tar

   解压之后会得到一个VOCdevkit的文件夹:

然后进入到data文件下面之后,我们要为这个数据集创建一个软连接。

ln -s ./VOCdevkit ./VOCdevkit2007

四、下载预训练的模型

进入data目录后在新建一个文件夹pretrained_model,然后下载两个预训练的模型,将这两个模型放到pretrained_model中。

vgg16:https://www.dropbox.com/s/s3brpk0bdq60nyb/vgg16_caffe.pth?dl=0
resnet101:https://www.dropbox.com/s/iev3tkbz5wyyuz9/resnet101_caffe.pth?dl=0

五、实验环境

Linux 18.04
4*2080Ti
CUDA 10.1
pytorch 1.4.0
torchvision 0.5

六、运行程序

1、demo测试

 因为要进行demo测试,因此我们要下载预先训练好的模型,执行以下操作:

cd data/pretrained_model/
sudo mkdir -p vgg16/poscal_voc

下载预训练模型,然后放至data/pretrained_model/vgg16/poscal_voc

pretrained_faster_model:https://www.dropbox.com/s/6ief4w7qzka6083/faster_rcnn_1_6_10021.pth?dl=0

这个时候所有的模型,数据集都已经下载好了,现在要做的就是安装所需要的包,并执行脚本。然后就可以进行测试了。

pip install -r requirements.txt
cd lib 
sh make.sh
cd ..

这个时候开始进行demo测试即可。运行以下命令:

python demo.py --net vgg16 --checksession 1 --checkepoch 6 --checkpoint 10021 --cuda --load_dir ./data/pretrained_model/

demo测试结果:

当然你可以把你想要测试的图片放到Image这个文件夹下面都是可以的。

2、训练模型

python trainval_net.py --dataset pascal_voc --net vgg16 \--bs 4 --nw 4 \--cuda --mGPUs

训练该模型的时候,我的batch_size设置为4,num_works设置为4,因为我有4块2080Ti,因此跑起来还是比较爽的。

忘记训练了多久,训练结束后生成了一个模型。

3、在VOC数据集上做测试

python test_net.py --dataset pascal_voc --net vgg16 --checksession 1 --checkepoch 6 --checkpoint 10021 --cuda --load_dir ./data/pretrained_model/

测试的结果如下:

mAP = 0.6581

七、雷区

在运行faster r-cnn的时候,陷阱太多了,只记录最能记清的一个陷阱:

       

对应的解决方案在下面链接中。要下载COCOAPI,然后用里面的pycocotools代替lib/pycocotools.

https://github.com/jwyang/faster-rcnn.pytorch/issues/410

 

  相关解决方案