目标检测数据集格式转换 : COCO、VOC、YOLO互相转换

当前目标检测领域常用的数据集格式非 COCO、VOC、YOLO莫属,但是很多算法的源码或者框架只支持一种数据格式,数据集格式不匹配的时候就需要自己手动进行转换。


因此我最近整理了一下这三种格式互相转化的代码,并且添加了标签可视化的代码,以后打比赛或者其他情况下能节省部分手动转换的时间。

太长不看直接使用

代码github地址:https://github.com/FireworksFallDown/TypeTotype.git
对于windows用户,我还提供了相应的exe程序,可以直接在图形界面进行操作。

如果github登不上去的话推荐在 码云gitee里创建仓库直接导入github地址,就能够轻松下载了

格式介绍

COCO
Annotations.json
--------------------------------------------------------------------------------------------------
{
    "images": [
        {
            "file_name": "***.jpg", # string
            "height": ***,          # int
            "width": ***,           # int
            "id": *                 # int
        },...]
    "annotations": [
        {
            "iscrowd": 0,           # 0 or 1
            "area": *,              # float or double
            "image_id": 0,          # int
            "bbox": [*, *, *, *],   # list[float], [x,y,w,h]
            "category_id": *,       # int
            "id": *                 # int
        },...]
    "categories": [
        {"id": *, "name": "***"},   # id start from 1
        ...
        ]
}
VOC
VOC type:
Annotations
    |—— ImgName_1.xml
    |—— ImgName_2.xml
    ...

--------------------------------------------------------------------------------------------------
ImgName_1.xml :
--------------------------------------------------------------------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<annotation>
    <folder>VOC2007</folder>
    <filename>***.jpeg</filename>
    <size>
        <width>***</width>
        <height>***</height>
        <depth>3</depth>
    </size>
    <object>
        <name>***</name>        # category name
        <bndbox>
            <xmin>*</xmin>
            <xmax>*</xmax>
            <ymin>*</ymin>
            <ymax>*</ymax>
        </bndbox>
        <truncated>0</truncated>
        <difficult>0</difficult>
    </object>
    ...
    <segmented>0</segmented>
</annotation>
YOLO
imgName_1.txt:
--------------------------------------------------------------------------------------------------
cateId  center_x  center_y  w  h  # normalization type, eg: 0 0.473667 0.397000 0.116000 0.337000
...
--------------------------------------------------------------------------------------------------
    

代码

其实挺简单的,就是各个格式的文件读取稍显麻烦,这里不做详细介绍,我直接放在github上了,可以直接使用

其中读取coco格式标注是使用json包,VOC是使用xml.etree.ElementTree的相关api
详情可以见源码

使用教程

代码目前支持VOC,COCO,YOLO这三种任意两种之间的转换(不包含分割信息,仅支持目标检测标注,同时也不包含困难样本等等信息的转换),以及这三种标签的可视化。

support mode:

  1. VOC to COCO
  2. VOC to YOLO
  3. COCO to VOC
  4. COCO to YOLO
  5. YOLO to COCO
  6. YOLO to VOC
  7. COCO label view
  8. VOC label view
  9. YOLO label view

使用

需要保证环境中已安装 opencv-python, numpy, xml, json等包

下载源码后,
① 需要在my_config.py中修改类别名称为你的数据集类别名称

② 在 Type2Type 目录下使用下面的命令行进行转换或者可视化

python main.py --img_path [your path] --mode [your mode] --label_path [your label path] --save_path [your save path]

注意事项
① 运行 python main.py --help 可以查看提示信息

② mode 选项必须是下面各模式中的一个
VOC2COCO, VOC2YOLO, YOLO2COCO, YOLO2VOC, COCO2YOLO, COCO2VOC,LabelView_COCO, LabelView_VOC, LabelView_YOLO

③ 如果只是标签可视化的话可以忽略 --save_path选项

④ 我还提供了windows下的exe程序,可以直接运行目录下的Type2Type.exe,然后直接在图形界面进行操作
在这里插入图片描述

文件目录最好保证为全英文路径,否则可能会无法读取导致运行失败

⑥ 可能会存在部分bug, 如果使用过程中发现还请反馈,我会尽快进行优化

  • 9
    点赞
  • 102
    收藏
    觉得还不错? 一键收藏
  • 20
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值