MMDetection学习笔记-04自定义COCO数据集

以COCO标注格式是JSON,主要由image、categories和annotations 三个字段表示。COCO格式文件的好处是可以用一个文件表示所有的标注数据。程序接收一个COCO.json文件可以处理整个数据集。

  • 整体结构:
{
	#“info”:info, #一般用不上,可以置空
	#"licenses":[license], #一般用不上,可以置空
	images:[image], 
	annotations:[annotation],
	categories:[category]
}
info,image和license共享的字段信息;annotation和category不共享字段信息。
  • images
    images包含多个image实例的数组。
    对于一个image类型的实例为:
{
	"file_name":"文件名或文件路径",#最终目标是让训练时候,程序找到这个文件
	"height":360, "width":640,
	"data_captured":"数据获取时间",
	"id":391185 #文件ID
},
#上面代码展示了标注的核心内容,只要把上述标注清楚,程序就可以正常运行。上述代码表示一幅图片img1。img2、img3......等很多实例也是类似img1.下面代码展示了images
images{
	img1,
	img2,
	img3,
	img4,
	......
}
  • categories
    categories包含多个category实例的数组。category结构体描述如下:
{
	"id":int,#类别ID
	"name":string,#类别名
	"supercategory":string#类别父类,例如vehicle(bicycle),选填。填了也没啥用处,不填还可能报错
}

coco一共有80类,即id会递增到80。一个实际例子如下:
MMDetection学习笔记-04自定义COCO数据集_第1张图片

  • annotations
    annotations是一个包含多个annotation实例的列表。annotation类型本身又包含了一系列的字段。
{
	"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
}

下图是一个annotations的示例:
MMDetection学习笔记-04自定义COCO数据集_第2张图片

  • 检测标注文件是否正确
    可以使用pycoctools工具或MMDetection可视化工具来检验得到的标注文件是否正确。
    MMDetection学习笔记-04自定义COCO数据集_第3张图片
    执行类似于下面图片中的命令可以查看COCO数据集是否标注清楚:
    在这里插入图片描述

reference1
reference2

你可能感兴趣的:(MMDetection,python,计算机视觉)