以COCO标注格式是JSON,主要由image、categories和annotations 三个字段表示。COCO格式文件的好处是可以用一个文件表示所有的标注数据。程序接收一个COCO.json文件可以处理整个数据集。
{
#“info”:info, #一般用不上,可以置空
#"licenses":[license], #一般用不上,可以置空
images:[image],
annotations:[annotation],
categories:[category]
}
info,image和license共享的字段信息;annotation和category不共享字段信息。
{
"file_name":"文件名或文件路径",#最终目标是让训练时候,程序找到这个文件
"height":360, "width":640,
"data_captured":"数据获取时间",
"id":391185 #文件ID
},
#上面代码展示了标注的核心内容,只要把上述标注清楚,程序就可以正常运行。上述代码表示一幅图片img1。img2、img3......等很多实例也是类似img1.下面代码展示了images
images{
img1,
img2,
img3,
img4,
......
}
{
"id":int,#类别ID
"name":string,#类别名
"supercategory":string#类别父类,例如vehicle(bicycle),选填。填了也没啥用处,不填还可能报错
}
coco一共有80类,即id会递增到80。一个实际例子如下:
{
"id":int,#标注ID
"image_id":int,#这个标注属于哪张图片
"category_id":int,#这个标注属于某个类别
"segmentation":RLE or [polygons],#segmentation格式取决于这个实例是一个单个的对象。iscrowd=0时,使用polygons格式;iscrowd=1时,使用RLE格式
"area":float,#标注区域面积
"bbox":[x,y,width,height],#标注框,x,y为标注框的左上角坐标。
"iscrod":0 or 1 #决定是RLE格式还是polygon格式。单个对象:iscrowd=0;多个对象iscrowd=1
}
reference1
reference2