格式转换 : 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:
- VOC to COCO
- VOC to YOLO
- COCO to VOC
- COCO to YOLO
- YOLO to COCO
- YOLO to VOC
- COCO label view
- VOC label view
- 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互相转换
发布评论