coco2017数据集标注格式说明 您所在的位置:网站首页 文件地址格式是什么样的 coco2017数据集标注格式说明

coco2017数据集标注格式说明

2023-07-27 00:49| 来源: 网络整理| 查看: 265

今天准备看看coco数据集到底长啥样,还有其标注格式是什么样的,怀着好奇心,开始百度,于是来到知乎~ 感谢知乎给我释疑了~ 参考知乎:https://zhuanlan.zhihu.com/p/29393415 这里做个记录以免忘记~

一、下载coco2017数据集

官网下载实在是太慢了,而且打不开 链接:http://mscoco.org/

后来找到这哥们的镜像,很快哟~(想打赏,但是二维码扫不出来是什么鬼) 链接:https://blog.csdn.net/weixin_43599336/article/details/86533575

下载完之后,解压一下标注文件,可以看到以下内容: 在这里插入图片描述 虽然是6个文件,但是就是三种啦,因为对应train和val 这三种分别为:captions、instances 和 person_keypoints

如果你要打开看的话,建议是打开那个val2017结尾的,因为比较小一点,不然卡死~

我是把它复制到json在线格式验证的平台:http://www.bejson.com/ 看着舒服多了~

下面就一一来讲解标注文件吧~

二、标注文件说明

对标注文件进行说明之前,先讲下coco2017数据集的由来吧~

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

Flickr网址:http://blog.flickr.net/en Mechanical Turk(AMT) 网址:https://www.mturk.com/ (这是一个众包平台,我还注册了一个)

json数据结构

captions.json数据包含的键如下:

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

instances.json数据包含的键如下:

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

person_keypoints.json数据包含的键如下:

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

那我们就开始来说异同点吧~

object instances(目标实例)、object keypoints(目标上的关键点)、image captions(看图说话)这3种类型共享这些基本类型:info、image、license

{ "info": info, "licenses": [license], "images": [image] } 其中: "info":{ "description":"This is stable 1.0 version of the 2014 MS COCO dataset.", "url":"http:\/\/mscoco.org", "version":"1.0","year":2014, "contributor":"Microsoft COCO group", "date_created":"2015-01-27 09:11:52.357475" }, "license":[{ "url":"http:\/\/creativecommons.org\/licenses\/by-nc-sa\/2.0\/", "id":1, "name":"Attribution-NonCommercial-ShareAlike License" },...] "images":[{ "license":3, "file_name":"COCO_val2014_000000391895.jpg", "coco_url":"http:\/\/mscoco.org\/images\/391895", "height":360,"width":640,"date_captured":"2013-11-14 11:18:45", "flickr_url":"http:\/\/farm9.staticflickr.com\/8186\/8119368305_4e622c8349_z.jpg", "id":391895 },...]

那这个captions.json中的那个annotation键对应的是啥呢? 看:就是图片的描述

"annotations":[{ "image_id": 179765, "id": 38, "caption": "A black Honda motorcycle parked in front of a garage." },...]

好了,那 captions.json 就解决了~

再来看这个instance.json,这里面剩下的annotations 和 categories长啥样呢?

{ "annotations": [annotation], "categories": [category] } 其中: "annotation":[{ "id": int, "image_id": int, "category_id": int, "segmentation": RLE or [polygon], "area": float, "bbox": [x,y,width,height], "iscrowd": 0 or 1, },...] "categories":[{ "id": int, "name": str, "supercategory": str, },...]

下面给个实例,并解释参数:

实例1(polygon格式,iscrowd为0): "annotation":[{ "segmentation": [[510.66,423.01,511.72,420.03,510.45......]], //见下面 "area": 702.1057499999998, "iscrowd": 0, //见下面 "image_id": 289343, "bbox": [473.07,395.93,38.65,28.67], //矩形框左上角的坐标和矩形框的长宽 "category_id": 18, //类别id "id": 1768 },...] //segmentation:polygon格式比较简单,这些数按照相邻的顺序两两组成一个点的xy坐标,如果有n个数(必定是偶数),那么就是n/2个点坐标。 //iscrowd=0那么segmentation就是polygon格式;只要iscrowd=1那么segmentation就是RLE格式。 //另外,每个对象(不管是iscrowd=0还是iscrowd=1)都会有一个矩形框bbox 实例2(RLE格式,iscrowd为1): 如果iscrowd=1,那么segmentation就是RLE格式(segmentation字段会含有counts和size数组),如下所示: "segmentation": { 'counts': [272, 2, 4, 4, 4, 4, 2, 9, 1, 2, 16, 43, 143, 24......], 'size': [240, 320] } //就是这个segmentation键对应的东西变成那个样子~ //那这个counts和size又代表啥哇~ //size:size是这幅图片的宽高(240*320) //counts:好,来,整幅图片包含240*320个像素,我们认为有包含目标的像元赋值1,没有的话就0咯 //那整幅图从第一个像素到最后一个像素就可以这个样子来说明它:0011000111(无无有有无无无有有有) //这样表示下去太长了吧~那就编码,几个无几个有 //0011000111表示为[2,2,3,3]即[2个无,2个有,3个无,3个有] //我想应该明白了

categorys就很简单了:

"categories":[{ "supercategory": "person", "id": 1, "name": "person" }},...]

好了,剩最后一个了

这个person_keypoints.json的结构哇和那个instance.json结构一毛一样哇~

不一样在这~ person_keypoints.json中的annotation结构体包含了Object Instance中annotation结构体的所有字段,再加上2个额外的字段 keypoints 和 num_keypoints 这两个我们来解释解释~

keypoints 新增的keypoints是一个长度为3*k的数组,其中k(这边是17,在categories中的keypoints数组中,数一数就知道)是categories中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, },...] 实例: { "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...],//这兄弟固定3*17个坑 "image_id": 425226, "bbox": [73.35,206.02,300.58,372.5], "category_id": 1, "id": 183126 },

终于要写完了,好激动~ categories字段 最后,对于每一个category结构体,相比Object Instance中的category新增了2个额外的字段,keypoints是一个长度为k的数组,包含了每个关键点的名字;skeleton定义了各个关键点之间的连接性(比如人的左手腕和左肘就是连接的,但是左手腕和右手腕就不是)。目前,COCO的keypoints只标注了person category (分类为人)。 定义如下:

{ "id": int, "name": str, "supercategory": str, "keypoints": [str], "skeleton": [edge] } 实例: { "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]] }

写完啦~ 记得赞一个~



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有