复现目标检测Faster R-CNN代码(Pytorch1.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

 

  • 3
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
Faster R-CNN是一种常用的目标检测算法,它结合了区域提取网络(Region Proposal Network,RPN)和分类网络来实现物体检测。在使用Faster R-CNN进行目标检测时,通常需要将模型的源码进行微调,以适应自己的数据集。 在PyTorch中,微调Faster R-CNN的源码需要以下几个步骤: 1. 数据集准备:首先需要准备自己的目标检测数据集。该数据集需要包含图片和对应的标签信息,标签信息通常包括物体的类别和边界框坐标。可以使用标注工具如LabelImg等进行标注,并将标注结果保存为一种格式,如VOC格式。 2. 获取源码:从PyTorch官方的GitHub仓库中获取Faster R-CNN源码。可以使用git命令行或者直接在浏览器上下载源码的压缩包。 3. 修改数据集加载:在源码中找到数据集加载部分的代码。可以通过修改已有的数据集类或者新建一个数据集类来加载自己的数据集。在数据集类中,需要定义数据集的路径、读取图片和标签的方法等。 4. 修改训练设置:在源码中找到训练设置部分的代码。根据自己的需求修改训练的batch size、学习率、训练轮数等参数。可以根据实际情况调整这些参数,以获得更好的训练效果。 5. 开始微调:在终端中切换到源码所在的目录,并执行训练指令,如"python train.py"。这将开始使用自己的数据集对Faster R-CNN进行微调。在微调过程中,可以观察训练日志和损失曲线,以评估训练的效果。 6. 模型保存:微调完成后,可以将训练得到的模型保存下来,以便后续的测试和推理使用。可以将模型保存为一个.pth文件,以便后续加载和使用。 通过以上步骤,我们可以使用PyTorch实现对Faster R-CNN的源码进行微调,以适应自己的目标检测数据集。微调后的模型可以用于检测目标物体,并根据实际需要进行后续处理和应用。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值