今天准备看看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个额外的字段
keypointsnum_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]]
}

写完啦~ 记得赞一个~

coco2017数据集标注格式说明相关推荐

  1. VOC和COCO数据集标注格式的介绍

    COCO数据集标注格式的介绍: https://blog.csdn.net/m0_37970224/article/details/89211122 VOC数据集标注格式的介绍: https://bl ...

  2. YOLO,VOC数据集标注格式解析

    YOLO数据集txt标注格式: 0  0.160938  0.541667  0.120312  0.386111 分别指所标注内容的类别.归一化后的中心点x坐标,归一化后的中心点y坐标,归一化后的目 ...

  3. COCO数据集标注格式

    原文链接:<https://zhuanlan.zhihu.com/p/29393415> COCO的 全称是Common Objects in COntext,是微软团队提供的一个可以用来 ...

  4. COCO数据集标注格式详解----object instances

    coco数据集 类别:80类 3种标注类型,使用json文件存储,每种类型包含了训练和验证 object instances (目标实例): 也就是目标检测object detection objec ...

  5. 如何将自己的数据转换为Pascal voc2017数据集标注格式

    首先我自己的数据集格式为filename lable xmin ymin xmax ymax,如果一张图片有两个bbox,是另起一行的,按前面这个格式,不是接着写在同一行的. 方法1 通过别的模板转换 ...

  6. MS COCO数据集标注格式解析

    COCO是微软提供的一个图像识别的数据集.其中包括3个tasks,分别是object instances, object keypoints, 和image captions,存储格式为JSON. 基 ...

  7. 如何利用python将NWPU VHR-10目标检测遥感数据集的格式转换成VOC目标检测数据集的格式

    VOC目标检测数据集的格式 其中图片存放在JPEGImages文件夹中,标注是xml文件,存储在Annotations文件中 关于train集和val集的txt划分存放在ImageSets文件夹下面的 ...

  8. 彻底搞懂VOC/YOLO标注格式《补充》

    引言:在深度学习中,标注格式占据了半壁江山,没有这些标注,深度学习就是盲人摸象(只针对有监督学习哦!!!),就像是深度学习网络的先验知识,或者说是'考试时,老师画的重点'.在很长一段时间处于迷茫状态, ...

  9. yolo数据集txt标注转voc数据集xml标注格式

    yolo数据集txt标注格式为: 0 0.159375 0.552083 0.121875 0.381944 0 0.776953 0.747222 0.099219 0.361111 代码如下: i ...

最新文章

  1. .NET 4.5 基类库中的新增功能
  2. typescript 方法后面加感叹号_使用 TypeScript 模板字面类型
  3. JS操作DOM元素属性和方法
  4. caffe学习(一):开发环境搭建,编译caffe(win10)
  5. CodeSign error: code signing is required for product type Application in SDK iOS
  6. 在C#代码中应用Log4Net 中配置文件的解释
  7. 安装 MongoDB PHP 驱动 在CentOS 6.x和遇到的问题
  8. python从2.6升到2.7后 桌面输入法图标不见
  9. 微软Power BI技术文章与资源目录
  10. 被冻结的钱,银行可以私自处理吗?
  11. Android学习(二十)Notification通知栏
  12. java socket调用接口_java调用websocket接口
  13. 【Es】Elasticsearch 7.x 新的集群协调层
  14. 18个最常用的Win8快捷键
  15. 今天来谈谈面试官最喜欢问JS中的闭包问题吧
  16. php函数总结,php函数
  17. 利用POI将PPT转换为图片
  18. LOJ#10064. 「一本通 3.1 例 1」黑暗城堡
  19. 应用程序无法正常启动(0xc000007b)的解决办法
  20. 如何利用微信生态为教育行业提高招生率?

热门文章

  1. NB-IoT和LoRa在电力无线专网中的应用
  2. U盘无法格式化怎么办?!
  3. 这些符号怎么读? 当然是用英语(键...
  4. Spark 系列教程(1)Word Count
  5. 车流量与人流量AI检测算法在智慧城市中的应用
  6. QQ密码输入框(防键盘钩子)原理分析
  7. 虚拟货币的专制,要保持惯性思维
  8. 求职秘籍-简历制作?
  9. 鼠标连点器烦人弹窗?我直接爆破
  10. 杭电计算机学院研究生院,杭电计算机考研经验