COCO image caption数据集格式

邢高爽
2023-12-01

最近在做image caption的任务,因为有自己的数据集,因此需要自己创建字典、annotation等信息。而COCO官方针对coco image caption任务的数据集写了一个API接口(pycocotools包),因此如果想偷懒就老老实实按照coco image caption数据集的格式准备数据。否则自己写pycocotools接口,可能会出现各种各样的bug。因此我们应该首先看一下imgae  caption的数据格式。



{
"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,
}

annotation{
"image_id":int ,"id":int ,"caption":"giraffe eating food from the top of the tree"
}
 
license{
"id" : int, "name" : str, "url" : str,

}

注:其中images、lincense和annotations是包含多个实例以dict形式存储的多个实例数组。

annotation其中的“image_id”字段与image中的“id”字段相对应,为图片的id。

虽然在annotations中是一条描述的存储,但是pycocotools工具会把具有相同"image_id"的图片组成一个,所以才会有常说的一张图像对应5句描述。

licenses和info字段对于caption任务没起作用,自己制作数据集的时候可以忽略,或者随便填充指定格式的值。


举个例子 image={}


image={"license": 5, 
"file_name": "COCO_train2014_000000057870.jpg", 
"coco_url": "http://mscoco.org/images/57870", 
"height": 480, 
"width": 640, 
"date_captured": "2013-11-14 16:28:13", 
"flickr_url": "http://farm4.staticflickr.com/3153/2970773875_164f0c0b83_z.jpg",
"id": 57870}
}

annotation={}


annotation={'image_id': 318556, 
'id': 48, 
'caption': 'giraffe eating food from the top of the tree'
}

按照这个格式只需要准备相应的数据即可,几十行代码足以。比起改写pycocotools,还是这个效率高!!!

 类似资料: