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年训练集中的标注档案:
可以看到其中有上面所述的三种类型,每种型别又包含了训练和验证,所以共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