数据转换实在是个烦人的工作,被折磨了很久决定抽出时间整理一下,仅供参考。
在一个项目中,我需要将已有的VOC的xml标注文件转化成COCO的数据格式,为了方便理解,文章按如下顺序介绍:
XML文件内容长什么样
COCO的数据格式长什么样
XML如何转化成COCO格式
VOC XML长什么样?
下面我只把重要信息题练出来,如下所示:
folder: 文件夹
filename:文件名
path:路径
source:我项目里没有用到
size:图片大小
segmented:图像分割会用到,本文仅以目标检测(bounding box为例进行介绍)
object:一个xml文件可以有多个object,每个object表示一个box,每个box有如下信息组成:
name:改box框出来的object属于哪一类,例如Apple
bndbox:给出左上角和右下角的坐标
truncated:略
difficult:略
COCO长什么样?
COCO目录啥样?
不同于VOC,一张图片对应一个xml文件,coco是直接将所有图片以及对应的box信息写在了一个json文件里。通常整个coco目录长这样:
python coco |______annotations # 存放标注信息 | |__train.json | |__val.json | |__test.json |______trainset # 存放训练集图像 |______valset # 存放验证集图像 |______testset # 存放测试集图像
COCO的json文件啥样?
一个标准的json文件包含如下信息:
{
“info”: info,
“images”: [image],
“annotations”: [annotation],
“licenses”: [license],
}
info{
“year”: int,
“version”: str,
“description”: str,
“contributor”: str,
“url”: str,
“date_created”: datetime,
}
image{
“id”: int,
“width”: int,
“height”: int,
“file_name”: str,
“license”: int,
“flickr_url”: str,
“coco_url”: str,
“date_captured”: datetime,
}
license{
“id”: int,
“name”: