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

编程入门 行业动态 更新时间:2024-10-25 21:19:22

目标检测数据集<a href=https://www.elefans.com/category/jswz/34/1760691.html style=格式转换 : COCO、VOC、YOLO互相转换"/>

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

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


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

目录

      • 太长不看直接使用
      • 格式介绍
        • COCO
        • VOC
        • YOLO
      • 代码
      • 使用教程

太长不看直接使用

代码github地址:.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, 如果使用过程中发现还请反馈,我会尽快进行优化

更多推荐

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

本文发布于:2024-03-09 10:43:11,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1724757.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:格式转换   目标   数据   YOLO   COCO

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!