Detectron:训练自己的数据集——将自己的数据格式转换成COCO格式

2021/7/6更新:Detectron已经升级为Detectron2,还是windows上面用起来比较舒服!如果不习惯linux的话,可以在Windows上面安装Detectron2:

WIN10安装基于Pytorch1.8.1、Cuda11.1.1的Detectron2(0.1或0.4.1)

以下为原文:


Detectron系列:

  1. Detectron:assert len(cfg_list) % 2 == 0 AssertionError

  2. Detectron:用自己训练好的模型进行测试

目录

1.前情提要   

2.COCO数据集格式 

3.转化自己的数据集

  3.1数据放置方式

  3.2转换自己的数据

附:完整程序获取


1.前情提要   

    Fackbook的开源检测框架Detectron已开源了一段时间:

    https://github.com/facebookresearch/Detectron

    但苦于之前都是用Keras和Tensorflow,没接触过caffe2,所以一直没有尝试,~~~并且之前没用过linux系统,对于命令基本不懂~~,好在会用浏览器,遇到问题就查查,也算是把坑都给踩遍了,最后总算有惊无险,用上了强大的Detectron啦。

    关于安装caffe2和Detectron等有空了在写~!   这篇文章主要说一下如何制作该框架所需的标注格式!但是呢~~~由于自定义自己的数据集比较繁琐,推荐使用Detectron自带的COCO数据集名称,并将自己的数据集转化为COCO数据集的格式,当然如果你是大佬,忽略这个~~现在,没错,就是现在~~~来分享一下如何生成这种COCO格式~~~

2.COCO数据集格式 

    首先,通过COCO - Common Objects in Context(COCO官网)了解了coco数据集的格式如下:

    对于目标检测的话,还需要关注BBOX格式如下:

    那么,我们只要将我们的数据格式转换为以上即可~

3.转化自己的数据集

  3.1数据放置方式

    我们需要创建一个文件夹,用于存放图片以及标注数据,具体的放置方式如下:

    ├── annos.txt
    ├── annotations
    ├── classes.txt
    └── images

    其中,annos放置数据集的原始标注文件,可能是txt,或者csv格式;classes.txt放置你标注的类别名称,每行一个类别,不含背景;images放置数据集的原始图像文件。annotations预备放置与COCO数据集格式的标注文件。下面需要将我们自己的标注文件生成COCO格式的标注文件。

  3.2转换自己的数据

    我自己的数据如下所示:

    每行对应一条BBOX标记:filename,label, x_min, y_min, x_max, y_max ,下面开始转换:

    我们使用os提取images文件夹中的图片名称,并且将BBox都读进去:

import json
import os
import cv2

# 根路径,里面包含images(图片文件夹),annos.txt(bbox标注),classes.txt(类别标签),以及annotations文件夹(如果没有则会自动创建,用于保存最后的json)
root_path = 'E:\dogcat\\f_train\data\\get_json\\'
# 用于创建训练集或验证集
phase = 'val'
# 训练集和验证集划分的界线
split = 8000

# 打开类别标签
with open(os.path.join(root_path, 'classes.txt')) as f:
  classes = f.read().strip().split()

# 建立类别标签和数字id的对应关系
for i, cls in enumerate(classes, 1):
  dataset['categories'].append({'id': i, 'name': cls, 'supercategory': 'mark'})

# 读取images文件夹的图片名称
indexes = [f for f in os.listdir(os.path.join(root_path, 'images'))]

# 判断是建立训练集还是验证集
if phase == 'train':
  indexes = [line for i, line in enumerate(_indexes) if i <= split]
elif phase == 'val':
  indexes = [line for i, line in enumerate(_indexes) if i > split]

# 读取Bbox信息
with open(os.path.join(root_path, 'annos.txt')) as tr:
    annos = tr.readlines()

接着将,按照COCO格式将以上数据转换为COCO所需要的,并对一个图有着多个框的情况判断一下,接着将结果保存:

# 保存结果的文件夹
folder = os.path.join(root_path, 'annotations')
if not os.path.exists(folder):
  os.makedirs(folder)
json_name = os.path.join(root_path, 'annotations/{}.json'.format(phase))
with open(json_name, 'w') as f:
  json.dump(dataset, f)

查看结果:

附:完整程序获取

        1.百度网盘下载我提供的工具:Detectron转COCO数据格式

        链接:https://pan.baidu.com/s/1P1OmBTmdm6m_UNjX7kz9qQ?pwd=afz6 提取码:afz6

注意:不要直接点击,右键复制后打开!!!

下载后打开“微信支付.png”使用微信扫码支付:

       获取压缩包密码:

               付款后微信留言购买的资源名称(上方橙色文字),博主会微信回复你解压密码(推荐,不需要加好友):

                         →  → 

               

都看到这里了,还不赶紧点赞评论收藏走一波?

  • 28
    点赞
  • 167
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 28
    评论
### 回答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是一个非常优秀的框架,它提供了许多现代化的算法和工具包,使得我们可以轻松地进行计算机视觉任务的训练和测试,是一个非常值得使用的工具。
评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

任博啥时候能毕业?

有用的话,请博主喝杯咖啡吧!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值