Detectron:用自己的数据集(VOC格式)训练RetinaNet

一、数据集(VOC)Detectron天然支持COCO格式的数据集,但是可能我们手中的数据集是VOC格式的,这就需要我们手动的对VOC数据集进行相应的转换(xml→json),下面就以我自己的一个数据集为例,逐步说明一下数据集的配置过程。1. 检查数据集(如果确定自己的数据集没有问题,可以跳过这一步)首先,我们应当先检查自己的数据集是否完整,这一步也很重要,因为我就是在这一步中浪费了...
摘要由CSDN通过智能技术生成

一、 数据集(VOC)

Detectron天然支持COCO格式的数据集,但是可能我们手中的数据集是VOC格式的,这就需要我们手动的对VOC数据集进行相应的转换(xml→json),下面就以我自己的一个数据集为例,逐步说明一下数据集的配置过程。

1. 检查数据集(如果确定自己的数据集没有问题,可以跳过这一步)

首先,我们应当先检查自己的数据集是否完整,这一步也很重要,因为我就是在这一步中浪费了很长的时间。每一次应用新的数据集之前先检查一下数据集的完整性和准确性是一个很好的习惯,这会为我们省去很多解决莫名bug的时间。

由于我的数据集是从多个小数据集整合成的,所以我遇到了几个问题:

①确保每个xml标注文件都有一个相应的图像文件,即标注和图像有一一对应关系。

②xml文件中的文件名必须要有后缀(.jpg等),在训练过程中会依据这个文件名来从图像文件夹中寻找对应的图像文件。

③其他数据集问题。

2. 制作VOC文件夹(以VOC2007为例)

在 ./Detectron/detectron/datasets/data 文件夹下,创建一个文件夹,命名为 VOC2007 ,然后在 VOC2007 文件夹下,创建三个文件夹,分别命名为:annotationsJPEGImagesVOCdevkit2007。下面分别来讲这三个文件夹的配置过程。

annotations:

该文件夹下存放我们训练集和验证集的标注信息,需要是json格式,而不是之前的多个xml文件。首先,将训练集(train)和验证集(val)的标注文件(xml)放入两个不同的文件夹,如下图所示。【此处的验证集相当于一个有标注测试集,不参与训练,用来评判模型的好坏】

然后修改以下代码中的相应为自己的路径,执行两次,来将这两个文件夹中的标注文件转换到两个 json 文件中,(NOTE:在生成voc_2007_train.json的时候,将第127和183行注释掉,这两句代码是为了生成val.txt

最后生成三个文件:

voc_2007_train.jsonvoc_2007_val.jsonval.txt

#coding=utf-8
#fork from https://github.com/CivilNet/Gemfield/blob/master/src/python/pascal_voc_xml2json/pascal_voc_xml2json.py
import xml.etree.ElementTree as ET
import os
import json

coco = dict()
coco['images'] = []
coco['type'] = 'instances'
coco['annotations'] = []
coco['categories'] = []

category_set = dict()
image_set = set()

category_item_id = 0
image_id = 20180000000
annotation_id = 0


def addCatItem(name):
    global category_item_id
    category_item = dict()
    category_item['supercategory'] = 'none'
    category_item_id += 1
    category_item['id'] = category_item_id
    category_item['name'] = name
    coco['categories'].append(category_item)
    category_set[name] = category_item_id
    return category_item_id


def addImgItem(file_name, size):
    global image_id
    if file_name is None:
        raise Exception('Could not find filename tag in xml file.'
  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: Detectron2是Facebook AI Research开发的目标检测框架,可以用来训练COCO数据集。 要训练COCO数据集,需要先下载COCO数据集并解压,然后使用Detectron2提供的训练脚本进行训练。 以下是一个简单的训练命令: ``` python -m detectron2.tools.train_net --config-file configs/COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml --num-gpus 8 --train-subdir detectron2_train_coco --eval-subdir detectron2_eval_coco --data-dir path/to/coco/dataset ``` 这个命令是训练用mask_rcnn_R_50_FPN_3x模型进行coco的实例分割任务,需要注意的是,在这个命令中,需要指定coco数据集的路径,还要根据实际情况调整参数。 ### 回答2: detectron2是Facebook AI Research推出的一款基于PyTorch的目标检测框架,其具有高效、灵活、易用等优点。其支持多种主流数据集训练,其中包括常用的coco数据集。 coco数据集是一个广泛应用于目标检测、实例分割和人体关键点检测等领域的经典数据集,其包含超过330,000张图像和2.5万个类别,是目前公认的最具挑战性的目标检测数据集之一。 那么,如何使用detectron2训练coco数据集呢?以下是详细步骤: 1. 数据准备 在开始训练前,需要确保已经下载了标注好的coco数据集,并将其转换成detectron2可处理的格式,包括分别生成训练集、测试集以及验证集。这部分具体操作可以参考detectron2官方文档或者在GitHub上搜索相关教程。 2. 模型选择 detectron2内置了多种主流目标检测模型,包括Faster R-CNN、Mask R-CNN等,用户可以根据实际需求选择不同的模型进行训练。 3. 模型配置 在配置文件中,需要指定数据、模型、训练和测试参数等相关设置,比如coco数据集的路径、评估指标、优化器等等。需要注意的是,detectron2支持通过命令行参数进行配置调整。 4. 训练 在配置完成后,可以启动detectron2进行模型训练。在训练过程中,用户可以观察模型的训练指标、损失函数、验证结果等指标,以评估模型的性能。 5. 模型评估 在训练完成后,需要对模型进行评估,以了解其在测试集上的表现。用户可以通过运行detectron2的评估脚本,获取AP、AR等评价指标,进一步优化模型性能。 总的来说,detectron2训练coco数据集并不是一项简单的任务,需要对数据集、模型、参数等都进行深入的分析和优化。而通过细致的配置和训练,可以在coco数据集上获得非常好的性能表现。 ### 回答3: Detectron2是Facebook开源的用于计算机视觉模型训练和推理的框架,提供了许多现代化的算法和工具包,支持多种数据集训练和测试。其中,COCO数据集是目前计算机视觉领域中最常用的基准数据集之一,它包含了超过300k个标注的图像,共有80类物体,是一个相对完备的数据集Detectron2支持使用COCO数据集训练模型,下面我们来介绍如何训练COCO数据集。 1. 数据集准备:首先需要从COCO官网下载相应的数据集,在Detectron2中需要将数据集转换成特定的格式,即使用COCO API将原始数据集转换为json格式,然后再将其转换为Detectron2所需的pkl格式。 2. 配置模型和训练参数:Detectron2提供了许多现代化的模型,如Mask R-CNN、RetinaNet、Faster R-CNN等,我们需要根据需要选择合适的模型,然后设定一些超参数,如学习率、批量大小、训练轮数等。 3. 开始训练:在安装好Detectron2后,我们可以使用命令行工具来启动训练,例如:python tools/train_net.py --config-file configs/COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_1x.yaml。在训练过程中,Detectron2会不断地更新模型参数,直至训练完成。 4. 评估模型:Detectron2提供了一个方便的工具用于模型的评估,使用命令行工具即可完成,例如:python tools/train_net.py --config-file configs/COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_1x.yaml --eval-only MODEL.WEIGHTS /path/to/checkpoint_file。在评估过程中,Detectron2会将模型应用于测试集中的图像,然后计算相应的指标,如平均精度等。 5. 使用模型:完成训练和评估后,我们可以使用训练好的模型来进行预测任务。Detectron2提供了许多现代化的工具和方法,使得我们可以轻松地加载模型并进行预测,例如:python demo/demo.py --config-file configs/COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_1x.yaml --input /path/to/image.jpg MODEL.WEIGHTS /path/to/checkpoint_file。 以上就是Detectron2训练COCO数据集的主要步骤,当然具体细节还需要根据实际情况进行调整。总的来说,Detectron2是一个非常优秀的框架,它提供了许多现代化的算法和工具包,使得我们可以轻松地进行计算机视觉任务的训练和测试,是一个非常值得使用的工具。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值