pytorch+faster-rcnn 训练PASCAL VOC2007数据集

作为初学者,这里不谈原理,只谈步骤

一、 下载faster-rcnn代码

代码路径: https://github.com/dongdonghy/Detection-PyTorch-Notebook.git
下载后,faster-rcnn代码路径在: Detection-PyTorch-Notebook/chapter4/faster-rcnn-pytorch

二、 安装pytorch和依赖包

1、 建议安装pytorch 0.4.0或0.4.1 版本(安装高版本的pytorch,训练时会报一堆错误)
2、 安装其它依赖包,见:Detection-PyTorch-Notebook/chapter4/faster-rcnn-pytorch/requirements.txt

三、 准备工作

1、下载PASCAL VOC2007数据集,2007数据集有三个tar包
   http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar
   http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar
   http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCdevkit_08-Jun-2007.tar
   将三个tar包放到任意一个目录下解压,如/home目录,解压后的目录结构如下:
   ----VOCdevkit
      ------VOC2007
      ------VOCcode
      ------其他一些文件和目录
说明: 我在使用VOC2012数据集的时候,训练报错,所以我这里直接使用的是VOC2007数据集
3、创建软链接,假设voc2007数据集在/home目录下
   cd Detection-PyTorch-Notebook/chapter4/faster-rcnn-pytorch && mkdir data
   cd data
   ln -sf /home/VOCdevkit VOCdevkit2007
4、下载预训练的网络模型,我使用的是vgg16
   地址:https://filebox.ece.vt.edu/~jw2yang/faster-rcnn/pretrained-base-models/vgg16_caffe.pth
   将下载的vgg16_caffe.pth拷贝到data/pretrained_model目录下
5、 根据自己的GPU型号,修改lib/make.sh文件中的CUDA_ARCH
6、 由于在NMS与RoI Pooling中使用了CUDA进行加速,因此还需要对此进行编译。
   cd lib && sh make.sh
   需要注意的是:因为代码是windows格式的,编译有可能会报错,建议使用dos2unix将所有的文件格式转换一下

四、 开始训练

   1、 修改faster-rcnn-pytorch/lib/datasets/pascal_voc.py 文件里的__init__方法,将下面两行注释掉,这里不需要指定路径,因为程序会自动解析路径的
   self._devkit_path="/root/Detection-PyTorch-Notebook/chapter4/faster-rcnn-pytorch/data/VOC2012"
   self._data_path = “/root/Detection-PyTorch-Notebook/chapter4/faster-rcnn-pytorch/data/VOC2012”
   2、 训练模型
   python trainval_net.py --dataset pascal_voc --net vgg16 --bs 24 --nw 4 --cuda --mGPUs
   我这里使用的是多GPU,如果你是单卡,可以根据情况调整参数,具体参数可以看这篇文章:https://github.com/jwyang/faster-rcnn.pytorch
   训练结束后,会在models/vgg16/pascal_voc目录下生成很多个模型文件,模型文件命名格式:faster_rcnn_${checksession}_${checkepoch}_${checkpoint}.pth
    注意: 由于py文件里有一些中文注释,在运行trainval_net.py时会提示编码错误,当报错时,在报错的py文件第一行里添加如下代码即可:# -- coding: UTF-8 --
   3、 验证模型
   python test_net.py --dataset pascal_voc --net vgg16 --cuda --mGPUs --checkepoch 20 --checkpoint 416 --checksession 1
   验证时会根据指定的checkepoch、checkpoint 和checksession找到对应的模型文件,所以这里指定的这三个参数值必须在models/vgg16/pascal_voc/ 目录下存在该模型
4、 测试自己的图片
   python demo.py --checkepoch 20 --checkpoint 416 --checksession 1 --net vgg16 --image_dir ./images
   同样的道理,会根据指定的checkepoch、checkpoint 和checksession找到对应的模型文件。 其中–image_dir 指定需要测试的图片路径,测试后,会在该目录下生成检测的结果图片

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用PyTorch中的Faster R-CNN训练自己的数据集,你需要以下步骤: 1. 准备数据集:首先准备自己的数据集,包括图像和相应的标注信息。标注信息可以使用类似于PASCAL VOC或COCO的标注格式,其中包含每个图像中物体的边界框和类别。 2. 数据预处理:对于数据预处理,你可能需要对图像进行缩放、裁剪、归一化等操作,以确保它们与模型的输入要求相匹配。同时,还需要将标注信息转换成模型所需的格式。 3. 构建数据集类:创建一个自定义数据集类,继承PyTorch的Dataset类,并实现__getitem__和__len__方法。__getitem__方法应当返回图像和标注信息的元组,同时根据需要进行必要的转换。 4. 定义模型:使用PyTorch中的torchvision.models中的Faster R-CNN模型作为基础,将其实例化为一个对象。你可以选择是否使用预训练的模型权重,以加快训练过程。 5. 设置训练参数:通过定义优化器、学习率调度器以及损失函数等来设置训练的参数。常用的优化器是SGD和Adam,并且可以使用不同的学习率调度器来动态调整学习率。 6. 训练模型:使用准备好的数据集、模型和训练参数来进行训练。在每个epoch中,循环遍历数据集并使用模型进行前向传播和反向传播,最后更新模型的权重。 7. 评估和测试模型:训练完成后,可以使用测试集或验证集对模型进行评估。评估指标可以包括准确率、召回率、平均精确度等。你可以根据需要进行必要的调整和优化。 8. 模型保存和使用:将训练好的模型保存为.pth文件,以便以后使用。你可以加载模型并在新的图像上进行预测,以获得目标检测的结果。 以上是使用PyTorch中的Faster R-CNN训练自己的数据集的大致步骤。根据具体的需求,你可能还需要进行其他的调整和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值