Faster-RCNN训练自己的数据集

本教程介绍如何将自定义数据集转换为VOC2007格式以供Faster-RCNN使用,包括图片命名、标注工具选择、XML文件生成及划分训练、验证和测试集。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

就目前我在了解到的资料来看,训练RCNN系列,一般有两种思路:

  • 修改CNN的工程代码,适应自己的数据集格式
  • 将自己的数据格式做成VOC2007形式的数据集

从工作量来看,无疑后者更容易一些,本文的思路也是如此。

  1. 首先是图片的命名格式,虽然图片的命名理论上不会影响训练。因为训练的数据都是从txt文件中读取图片的名称。但是为了统一数据集,仍然建议批量、有规律的命名数据图片。

    我的数据集是jpg格式,和PASCAL_VOC2007一样。将图片置于同一个文件夹中,然后运行一段python代码即可。

    代码见文末

  2. 命名之后,就可以进行标注了。我借用了一个网上的标注工具,windows7下运行良好,可惜没放出源码,无法学习交流。

    • 标注工具得到了一份标注的集合的txt文件,记录图片和标注信息

      这里写图片描述

  3. 上述都是准备工作,然后就可以制作VOC格式的数据集了。总体来看,VOC格式的数据集格式如下:

    ---VOC2007
    ------Annotations
    ------ImagesSet
    ---------Main
    ------JPEGImages
       
    • 1
    • 2
    • 3
    • 4
    • 5
    • Annotations中存放的是.xml文件,文件中记录描述每张图片的信息

      这里写图片描述

    • ImagesSet\Main中存放txt文件,每个文件中写入训练和测试所用的数据(也就是图片名称的集合) 
      这里写图片描述

    • JPEGImages中存放的是数据集中的图片

    关于VOC数据集格式,不清楚的可以下载一份VOC2007数据集,看一下就明白了。

  4. 搞明白了数据集包含哪些内容之后就可以制作数据集了。首先是Annotations中的xml文件,这些文件是根据标注信息得到的txt文件生成的。我参考了网上的一些代码,自己写了一份python脚本,运行良好。只需要读入txt文件和遍历图片即可。

    代码见文末

    因为JPEGImages中只是存放图片,所以我在生成Annotations时,同时拷贝了每张图片到JPEGImages中,也就完成了这两个文件夹的内容。

    【注意】: xml文件中很多标签内容不一定要一样,可以自己定义,比如作者什么的,我是根据VOC的xml内容来修改的,大家也可以自己修改。

  5. 制作Main中的四个txt文件

    txt内容即是图片名字,所以遍历一遍JPEGImages或者Annotations都行,我遍历了Annotations。

    • test.txt是测试集,大概是整个数据集的50%;
    • trainval是训练和验证数据集,也就是整个数据集的剩余的50%
    • train.txt是训练集,是trainval的50%
    • val.txt是验证集,trainval剩余的50%

    代码见文末

  6. 这样就完成VOC2007格式的数据集的制作。如果想要训练faster-RCNN,还需要进入faster-RCNN中修改网络的一些参数。请参考:

    Faster-RCNN训练自己的数据集python版本

  7. 因为标注过程中,可能存在标注的目标框太靠近边缘或者自己没注意,导致标注的数据在训练时产生了异常,通常是

    assert(boxes[:,2]>=boxes[:,0]).all()

    这行代码报错。(反正我中招了。。。)

    原因和解决办法看这里

    解决faster-rcnn中训练时assert(boxes[:,2]>=boxes[:,0]).all()的问题

    亲测前两步即可解决


以上即是简单的Faster-RCNN训练自己的数据集教程,整个教程涉及的代码(均为python)可以在github上下载,感谢参考的两篇博文!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值