json file类型_数据集标注文件JSON格式简析

json file类型_数据集标注文件JSON格式简析_第1张图片

Hey,最近在处理数据集的标注问题,今天来简要介绍一下数据集标注文件的json格式。

主要简介一下主流数据集COCO:COCO的全称是Common Objects in Context,是微软团队提供的一个可以用来进行影象识别的资料集。MS COCO资料集中的影象分为训练、验证和测试集。COCO通过在Flickr上搜索80个物件类别和各种场景型别来收集影象,其使用了亚马逊的Mechanical Turk(AMT)。

COCO通过大量使用Amazon Mechanical Turk来收集资料。COCO资料集现在有3种标注型别:object instances(目标例项), object keypoints(目标上的关键点),和image captions(看图说话),使用JSON档案储存。比如下面就是从COCO官网下载的COCO 2017年训练集中的标注档案:

json file类型_数据集标注文件JSON格式简析_第2张图片

可以看到其中有上面所述的三种类型,每种型别又包含了训练和验证,所以共6个JSON文件。

基本的JSON结构为:

object instances(目标例项)、

object keypoints(目标上的关键点)、

image captions(看图说话)

以上3种类型共享这些基本型别:info、image、license。

{

"info": info,

"licenses": [license],

"images": [image],

"annotations": [annotation],

}

info{

"year": int,

"version": str,

"description": str,

"contributor": str,

"url": str,

"date_created": datetime,

}

license{

"id": int,

"name": str,

"url": str,

}

image{

"id": int,

"width": int,

"height": int,

"file_name": str,

"license": int,

"flickr_url": str,

"coco_url": str,

"date_captured": datetime,

}

1,info型别,比如一个info型别的例项:

"info":{

"description":"This is stable 1.0 version of the 2014 MS COCO dataset.",

"url":"http://http://mscoco.org",

"version":"1.0","year":2014,

"contributor":"Microsoft COCO group",

"date_created":"2015-01-27 09:11:52.357475"

},

2,Images是包含多个image例项的阵列,对于一个image型别的例项:

{

"license":3,

"file_name":"COCO_val2014_000000391895.jpg",

"coco_url":"http://http://mscoco.org/images/391895",

"height":360,"width":640,"date_captured":"2013-11-14 11:18:45",

"flickr_url":"http://http://farm9.staticflickr.com/8186/8119368305_4e622c8349_z.jpg",

"id":391895

},

3,licenses是包含多个license例项的阵列,对于一个license型别的例项:

{

"url":"http://http://creativecommons.org/licenses/by-nc-sa/2.0/",

"id":1,

"name":"Attribution-NonCommercial-ShareAlike License"

},

Object Keypoint 型别的标注格式

1,整体JSON档案格式

比如上图中的person_keypoints_train2017.json、person_keypoints_val2017.json这两个档案就是这种格式。

Object Keypoint这种格式的档案从头至尾按照顺序分为以下段落,看起来和Object Instance一样:

{
    "info": info,
    "licenses": [license],
    "images": [image],
    "annotations": [annotation],
    "categories": [category]
}

开启这两个档案,虽然内容很多,但从档案开始到结尾按照顺序就是这5段。其中,info、licenses、images这三个结构体/型别在第一节中已经说了,在不同的JSON档案中这三个型别是一样的,定义是共享的。不共享的是annotation和category这两种结构体,他们在不同型别的JSON档案中是不一样的。

images阵列元素数量是划入训练集(测试集)的图片的数量;

annotations是bounding box的数量,在这里只有人这个类别的bounding box;

categories阵列元素的数量为1,只有一个:person(2017年);

2,annotations栏位

这个型别中的annotation结构体包含了Object Instance中annotation结构体的所有栏位,再加上2个额外的栏位。

新增的keypoints是一个长度为3*k的阵列,其中k是category中keypoints的总数量。每一个keypoint是一个长度为3的阵列,第一和第二个元素分别是x和y座标值,第三个元素是个标志位v,v为0时表示这个关键点没有标注(这种情况下x=y=v=0),v为1时表示这个关键点标注了但是不可见(被遮挡了),v为2时表示这个关键点标注了同时也可见。

num_keypoints表示这个目标上被标注的关键点的数量(v>0),比较小的目标上可能就无法标注关键点。

annotation{
    "keypoints": [x1,y1,v1,...],
    "num_keypoints": int,
    "id": int,
    "image_id": int,
    "category_id": int,
    "segmentation": RLE or [polygon],
    "area": float,
    "bbox": [x,y,width,height],
    "iscrowd": 0 or 1,
}

从person_keypoints_val2017.json档案中摘出一个annotation的例项如下:

{
    "segmentation": [[125.12,539.69,140.94,522.43...]],
    "num_keypoints": 10,
    "area": 47803.27955,
    "iscrowd": 0,
    "keypoints": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,309,1,177,320,2,191,398...],
    "image_id": 425226,"bbox": [73.35,206.02,300.58,372.5],"category_id": 1,
    "id": 183126
},

3,categories栏位

最后,对于每一个category结构体,相比Object Instance中的category新增了2个额外的栏位,keypoints是一个长度为k的阵列,包含了每个关键点的名字;skeleton定义了各个关键点之间的连线性(比如人的左手腕和左肘就是连线的,但是左手腕和右手腕就不是)。目前,COCO的keypoints只标注了person category (分类为人)。

定义如下:

{
    "id": int,
    "name": str,
    "supercategory": str,
    "keypoints": [str],
    "skeleton": [edge]
}

从person_keypoints_val2017.json档案中摘出一个category的例项如下:

    "supercategory": "person",
    "id": 1,
    "name": "person",
    "keypoints": ["nose","left_eye","right_eye","left_ear","right_ear","left_shoulder","right_shoulder","left_elbow","right_elbow","left_wrist","right_wrist","left_hip","right_hip","left_knee","right_knee","left_ankle","right_ankle"],
    "skeleton": [[16,14],[14,12],[17,15],[15,13],[12,13],[6,12],[7,13],[6,7],[6,8],[7,9],[8,10],[9,11],[2,3],[1,2],[1,3],[2,4],[3,5],[4,6],[5,7]]
}

标注文件在CV领域是非常重要的,也是最为难以处理的。我还没把数据集的标注文件搞定,今天先把我最近关注的json标注文件的格式做个介绍,等我把标注文件处理好,我再单独写一篇关于如何处理标注文件的文章。最后我还是在租用远程服务器,不管是跑实验还是运行python脚本,都很快,它们的环境都是配置好的,解决了我们配置实验环境的麻烦。让我们可以用跟多的时间去看论文,学习代码。

有需要的朋友可以通过以下方式了解:智星云官网: http://www.ai-galaxy.cn/,淘宝店:https://shop36573300.taobao.com/公众号: 智星AI,

今天是六一儿童节,在这里祝天下所有的小朋友和所有拥有童心的朋友节日快乐,天天开心。

参考资料

http://www.ai-galaxy.cn/,

https://shop36573300.taobao.com/

公众号: 智星AI

https://www.itread01.com/content/1540990693.html

http://cocodataset.org/#download

你可能感兴趣的:(json,file类型,json文件,json格式,js修改json文件中的数据,mscoco数据集)