CoCo2017数据集简介

1. coco2017数据下载及解压

下载参考: 主:https://blog.csdn.net/u014734886/article/details/78830713                         ###########

辅:https://blog.csdn.net/qq_41847324/article/details/86224628

实例:https://blog.csdn.net/m0_37644085/article/details/81948396                    ############

coco2017包含以下几个文件就好:

coco数据集一共有五种标注类型,分别:目标检测, 关键点检测,素材分割, 全景分割, 图像说明等5种类型;标注信息使用 JSON 格式存储( annotations ), 预处理通过COCO API用于访问和操作所有“标注”

reference: https://blog.csdn.net/u013832707/article/details/93710810

a. 对stuff任务:118282(118K)训练,5k验证

b. 对instance任务:118k训练,instances_minival2014.json(5k)测试

c. 全景分割任务:40890(40k)训练,5k测试

note: 常用2017 Train images [118K / 18G],2017 Val image [5K / 1G]

这些图片对应的标注信息应用: 2017 Train/Val annotations [241MB]

instances: 目标检测

captions: 图像描述

person_keypoints: 人关键点检测

2017 Stuff  Train/Val annotations [1.1GB]  :   素材分割( Stuff Segmentation )

2017 Panoptic Train / Val annotations [821MB] : 全景分割( Panoptic Segmentation )

还有测试集2017 Test images [ 41K/6GB ],这部分数据不知道annotations,分为test-dev集和test集,相当于A,B榜,前者可以提交到evaluation server去查看结果并得到反馈,后者用于评判最终的比赛结果。

2. 标注信息( annotations )数据格式---所有“标注”都具有一下相同的基本数据结构:

coco有5种类型标注,分别是:物体检测,关键点检测,实例分割,全景分割,图片标注,每一个标注都对应一个json文件;json是一个大字典,都包括如下关键字:

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

其中info对应的内容如下:

info{"year" : int,"version" : str,"description" : str,"contributor" : str,"url" : str,"date_created" : datetime,
}

其中images对应一个list,对应多张图片;list的每一元素是一个字典,对应一张图片,格式如下:

images[
{   "id" : int, # 图片id"width" : int, # 图片宽"height" : int, # 图片高"file_name" : str, # 图片名"license" : int, "flickr_url" : str, "coco_url" : str, # 图片链接"date_captured" : datetime,# 图片标注时间
},
{"id" : int, "width" : int, "height" : int, "file_name" : str, "license" : int, "flickr_url" : str, "coco_url" : str, "date_captured" : datetime,
},
...
]

其中 license的内容如下:

license{"id" : int,"name" : str,"url" : str,
}

虽然每个json文件都有"info", “images” , “annotations”, "licenses"关键字,但不同的任务对应的json文件中annotation的形式不同,分别如下:

对木目标检测而言:

每个对象实例的标注都包含一系列字段,包括对象的类别ID(category_id)和分段掩码(segmentation)。 分段格式取决于实例是表示单个对象(iscrowd = 0,在这种情况下使用多边形)还是对象集合(iscrowd = 1,在这种情况下使用RLE)。 请注意,单个对象(iscrowd = 0)可能需要多个多边形,例如,如果被遮挡。 人群注释(iscrowd = 1)用于标记大组对象(例如一群人)。 此外,为每个对象提供一个封闭的边界框(框坐标是从左上角的图像角测量的,并且是0索引的); 其中“bbox”属性为实例的边界框(bounding box)。这四个数字的含义为左上角横坐标左上角纵坐标宽度高度,这个框为大致画出; 最后,标注结构的 categories 字段存储 category id 到 category 和 supercategory 名称的映射。

其中, 
如果instance表示单个object,则iscrowd=0,segmentation=polygon; 单个object也可能需要多个polygons,比如occluded的情况下; 
如果instance表示多个objecs的集合,则iscrowd=1,segmentation=RLE. iscrowd=1用于标注较多的objects,比如人群.

annotation{"id" : int,"image_id" : int,"category_id" : int,"segmentation" : RLE or [polygon],"area" : float,"bbox" : [x,y,width,height],# bbox含义:左上角横坐标 左上角纵坐标,宽,高,单位:像素"iscrowd" : 0 or 1,
}categories[{"id" : int,"name" : str,"supercategory" : str,
}]

对象检测JSON结构总览, 其中,info、licenses、images、annotations 和 categories 均为数组。

包含5个字段信息:info, licenses, images, annotations,categories。上面3种标注类型共享的字段信息有:info、image、license。不共享的是annotation和category这两种字段,他们在不同类型的JSON文件中是不一样的。

下面以目标检测为例,概述一下其中每个字段的结构与包含的信息:
(1)images字段列表元素的长度等同于划入训练集(或者测试集)的图片的数量;
(2)annotations字段列表元素的数量等同于训练集(或者测试集)中bounding box的数量;
(3)categories字段列表元素的数量等同于类别的数量,coco为80(2017年);
reference: https://blog.csdn.net/u012609509/article/details/88680841

2014年版本的数据为例,一共有20G左右的图片和500M左右的标签文件。标签文件标记了每个segmentation+bounding box的精确坐标,其精度均为小数点后两位。

一个目标的标签示意如下: 
{"segmentation":[[392.87, 275.77, 402.24, 284.2, 382.54, 342.36, 375.99, 356.43, 372.23, 357.37, 372.23, 397.7, 383.48, 419.27,407.87, 439.91, 427.57, 389.25, 447.26, 346.11, 447.26, 328.29, 468.84, 290.77,472.59, 266.38], [429.44,465.23, 453.83, 473.67, 636.73, 474.61, 636.73, 392.07, 571.07, 364.88, 546.69,363.0]], "area": 28458.996150000003, "iscrowd": 0,"image_id": 503837, "bbox": [372.23, 266.38, 264.5,208.23], "category_id": 4, "id": 151109},

annotations字段是包含多个annotation实例的一个列表,annotation类型本身又包含了一系列的字段,如这个目标的category id和segmentation mask。segmentation格式取决于这个实例是一个单个的对象(即iscrowd=0,将使用polygons格式)还是一组对象(即iscrowd=1,将使用RLE格式)。如下所示:

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

reference: https://blog.csdn.net/u012609509/article/details/88680841

以下内容参考: https://blog.csdn.net/gqixf/article/details/79280224

人体的keypoint也是类似的数据结构, 保存在.json文件中:

新增的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,100.67,496.54,84.85,469.21,73.35,450.52,104.99,342.65,168.27,290.88,179.78,288,189.84,286.56,191.28,260.67,202.79,240.54,221.48,237.66,248.81,243.42,257.44,256.36,253.12,262.11,253.12,275.06,299.15,233.35,329.35,207.46,355.24,206.02,363.87,206.02,365.3,210.34,373.93,221.84,363.87,226.16,363.87,237.66,350.92,237.66,332.22,234.79,314.97,249.17,271.82,313.89,253.12,326.83,227.24,352.72,214.29,357.03,212.85,372.85,208.54,395.87,228.67,414.56,245.93,421.75,266.07,424.63,276.13,437.57,266.07,450.52,284.76,464.9,286.2,479.28,291.96,489.35,310.65,512.36,284.76,549.75,244.49,522.43,215.73,546.88,199.91,558.38,204.22,565.57,189.84,568.45,184.09,575.64,172.58,578.52,145.26,567.01,117.93,551.19,133.75,532.49]],"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,2,237,317,2,233,426,2,306,233,2,92,452,2,123,468,2,0,0,0,251,469,2,0,0,0,162,551,2],"image_id": 425226,"bbox": [73.35,206.02,300.58,372.5],"category_id": 1,"id": 183126
},

“keypoints”是长度为3K的数组,K是对某类定义的关键点总数,这里人体的keypoint就是17个.位置为[x,y],关键点可见性v. 
如果关键点没有标注信息,则关键点位置[x=y=0],可见性v=1; 
如果关键点有标注信息,但不可见,则v=2. 
如果关键点在物体segment内,则认为可见.

(1-‘nose’ 2-‘left_eye’ 3-‘right_eye’ 4-‘left_ear’ 5-‘right_ear’ 6-‘left_shoulder’ 7-‘right_shoulder’ 8-‘left_elbow’ -‘right_elbow’ 10-‘left_wrist’ 11-‘right_wrist’ 12-‘left_hip’ 13-‘right_hip’ 14-‘left_knee’ 15-‘right_knee’ 16-‘left_ankle’ 17-‘right_ankle’ )
OpenPose的姿态识别用了COCO数据库,coco有17个keypoint,OpenPose增加了一个,就是编号为1的人体中心点.

对于每个类别,categories结构体数据有两种属性:”keypoints” 和 “skeleton”. 
“keypoints” 是长度为k的关键点名字符串; 
“skeleton” 定义了关键点的连通性,主要是通过一组关键点边缘队列表的形式表示,用于可视化.

最后,对于每一个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]]
}

另一种说明:

reference:  http://www.pianshen.com/article/663915805/

object instance类型的annotations注释格式:

info

"info": { # 数据集信息描述"description": "COCO 2017 Dataset", # 数据集描述"url": "http://cocodataset.org", # 下载地址"version": "1.0", # 版本"year": 2017, # 年份"contributor": "COCO Consortium", # 提供者"date_created": "2017/09/01" # 数据创建日期},

licenses

"licenses": [{"url": "http://creativecommons.org/licenses/by-nc-sa/2.0/","id": 1,"name": "Attribution-NonCommercial-ShareAlike License"},…………],

images---每一个image的实例是一个dict。其中有一个id字段,代表的是图片的id,每一张图片具有唯一的一个独特的id

"images": [{"license": 4,"file_name": "000000397133.jpg", # 图片名"coco_url":  "http://images.cocodataset.org/val2017/000000397133.jpg",# 网路地址路径"height": 427, # 高"width": 640, # 宽"date_captured": "2013-11-14 17:02:52", # 数据获取日期"flickr_url": "http://farm7.staticflickr.com/6116/6255196340_da26cf2c9e_z.jpg",# flickr网路地址"id": 397133 # 图片的ID编号(每张图片ID是唯一的)},…………],

categories

"categories": [ # 类别描述{"supercategory": "person", # 主类别"id": 1, # 类对应的id (0 默认为背景)"name": "person" # 子类别},{"supercategory": "vehicle", "id": 2,"name": "bicycle"},{"supercategory": "vehicle","id": 3,"name": "car"},…………],

超类和具体类别的关系supercategory 和 category

注: bicycle 与car都属于vehicle,但两者又属于不同的类别。例如:羊(主类别)分为山羊、绵羊、藏羚羊(子类别)等

annotations

"annotation": [{"segmentation": [ # 对象的边界点(边界多边形)[224.24,297.18,# 第一个点 x,y坐标228.29,297.18, # 第二个点 x,y坐标234.91,298.29,…………225.34,297.55]],"area": 1481.3806499999994, # 区域面积"iscrowd": 0, # "image_id": 397133, # 对应的图片ID(与images中的ID对应)"bbox": [217.62,240.54,38.99,57.75], # 定位边框 [x,y,w,h]"category_id": 44, # 类别ID(与categories中的ID对应)"id": 82445 # 对象ID,因为每一个图像有不止一个对象,所以要对每一个对象编号(每个对象的ID是唯一的)},…………]

注意,单个的对象(iscrowd=0)可能需要多个polygon来表示,比如这个对象在图像中被挡住了。而iscrowd=1时(将标注一组对象,比如一群人)的segmentation使用的就是RLE格式。另外,每个对象(不管是iscrowd=0还是iscrowd=1)都会有一个矩形框bbox ,矩形框左上角的坐标和矩形框的长宽会以数组的形式提供,数组第一个元素就是左上角的横坐标值。area是area of encoded masks,是标注区域的面积。如果是矩形框,那就是高乘宽;如果是polygon或者RLE,那就复杂点。

一言以蔽之, API 的作用是提取标注文件中的信息, 使其分别用于各自的场景, 比如图像检测使用的边界框参数, 图像分割使用的 mask 参数, 人体姿态检测使用的关节点参数等.

为了更好的使用数据集, COCO 对数据集的标注信息做了统一管理. 其中, 图像检测数据集的标注信息保存在 .json 文件中, 例如 2017_val 的标注数据就保存在 instances_val2017.json 文件中. 其内容如下:


{"info": {"description": "This is stable 1.0 version of the 2017 MS COCO dataset.", "url": "http://mscoco.org",  "version": "1.0", "year": 2017, "contributor": "Microsoft COCO group", "date_created": "2017-11-11 02:11:36.777541"}, "images": [{"license": 2,"file_name": "000000289343.jpg","coco_url": "http://images.cocodataset.org/val2017/000000289343.jpg","height": 640,"width": 529,"date_captured": "2013-11-15 00:35:14","flickr_url": "http://farm5.staticflickr.com/4029/4669549715_7db3735de0_z.jpg","id": 289343}, ...{"license": 1,"file_name": "000000329219.jpg","coco_url": "http://images.cocodataset.org/val2017/000000329219.jpg","height": 427,"width": 640,"date_captured": "2013-11-14 19:21:56","flickr_url": "http://farm9.staticflickr.com/8104/8505307842_465524a6a6_z.jpg","id": 329219},...],"annotations": [{"segmentation": [[510.66,423.01,511.72,420.03,510.45,416.0,510...,423.01]],"area": 702.1057499999998,"iscrowd": 0,"image_id": 289343,"bbox": [473.07,395.93,38.65,28.67], "category_id": 18, "id": 1768},...{"segmentation": [[304.09,266.18,308.95,263.56,313.06,262.81,...,266.55]],"area": 4290.290900000001,"iscrowd": 0,"image_id": 329219,"bbox": [297.73,252.34,60.21,108.45],"category_id": 18,"id": 8032}],"licenses": [{"url": "http://creativecommons.org/licenses/by-nc-sa/2.0/", "id": 1, "name": "Attribution-NonCommercial-ShareAlike License"}, ...{"url": "http://www.usa.gov/copyright.shtml", "id": 8, "name": "United States Government Work"}],"categories": [{"supercategory": "person", "id": 1, "name": "person"}, ...{"supercategory": "indoor", "id": 90, "name": "toothbrush"}]
}

为了清楚地显示数据格式的层次性, 同时为了不至于列出全部条目, 在保留内容的完整性的基础上删除了相似的条目.

可以看到, 标注文件中我们最关心的 image 和 annotations 域, annotations 中保存的就是标注信息. 根据不同的应用场景, 标注信息又可分为: 目标的边界框 bbox 和图像分割区域 segmentation.

扩展:anns cats imgs = {} {} {} # 标注 图像 对象类别总数相同

主要是实例化一个cocco对象,利用json文件初始化各种对应关系:其中图像,标注,类别id都唯一建立映射;图像id->标注,类别id->图像,存在一对多映射;

reference:  https://www.cnblogs.com/ranjiewen/p/10025023.html

{"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,
}license{"id" : int,"name" : str,"url" : str,
}

辅助1 https://blog.csdn.net/zhuoyuezai/article/details/84962388

coco检测 val2017的图片和对应标注分析------coco val2017 图片5000张,annotations中标注了4952张

因此标注用的的图片为 4952 张  (意味着一些图片没有标注)

推荐: coco标注文件( annotations )      https://blog.csdn.net/gqixf/article/details/79280224

coco2017简介相关推荐

  1. 图像处理基本库的学习笔记5--公共数据集,PASCAL VOC数据集,NYUD V2数据集的简介与提取,COCO2017,医学影像数据集汇总

    目录 公共数据集 计算机视觉标准数据集整理-PASCAL VOC数据集 数据集文件结构 Annotation JPEGImages SegmentationClass SegmentationObje ...

  2. 机器学习笔记 - YOLO家族简介

    一.背景概述 目标检测是计算机视觉中最重要的课题之一.大多数计算机视觉问题都涉及检测视觉对象类别,如行人.汽车.公共汽车.人脸等.这一领域不仅限于学术界,而且在视频监控.医疗保健.车载传感和自动驾驶. ...

  3. PaddleDetection目标检测任务简介和概述

    本篇博客不计入作业 目标检测任务简介 目标检测的主要目的是让计算机可以自动识别图片或者视频帧中所有目标的类别,并在该目标周围绘制边界框,标示出每个目标的位置,如下图所示. 图(a)是图像分类任务,只需 ...

  4. etcd 笔记(01)— etcd 简介、特点、应用场景、常用术语、分布式 CAP 理论、分布式原理

    1. etcd 简介 etcd 官网定义: A highly-available key value store for shared configuration and service discov ...

  5. Docker学习(一)-----Docker简介与安装

    一.Docker介绍 1.1什么是docker Docker是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源 Docker可以让开发者打包他们的应用以及依赖包到一个轻量级,可移植 ...

  6. 【Spring】框架简介

    [Spring]框架简介 Spring是什么 Spring是分层的Java SE/EE应用full-stack轻量级开源框架,以IOC(Inverse Of Control:反转控制)和AOP(Asp ...

  7. TensorRT简介

    TensorRT 介绍 引用:https://arleyzhang.github.io/articles/7f4b25ce/ 1 简介 TensorRT是一个高性能的深度学习推理(Inference) ...

  8. 谷粒商城学习笔记——第一期:项目简介

    一.项目简介 1. 项目背景 市面上有5种常见的电商模式 B2B.B2C.C2B.C2C.O2O B2B 模式(Business to Business),是指商家和商家建立的商业关系.如阿里巴巴 B ...

  9. 通俗易懂的Go协程的引入及GMP模型简介

    本文根据Golang深入理解GPM模型加之自己的理解整理而来 Go协程的引入及GMP模型 一.协程的由来 1. 单进程操作系统 2. 多线程/多进程操作系统 3. 引入协程 二.golang对协程的处 ...

最新文章

  1. 怎么将vue模板转换为html,vue中自定义html文件的模板
  2. 轻量级RGB-D显著目标检测的中层融合
  3. 多线程间通信之AutoResetEvent和ManualResetEvent的原理分析
  4. 随机密码php,PHP会生成随机密码
  5. JTA(java telnet/ssh client)不能telnet/ssh远程机器问题与解决
  6. 5月16日亮相!华硕ZenFone 6新旗舰曝光:无刘海全面屏加持
  7. linux weblogic java_options_使用Linux脚本更新Weblogic部署的应用程序
  8. app开发团队人员构成怎么分配?国内著名的app开发团队有哪些
  9. matlab加热模型,基于MATLAB钢丝感应加热模型及其温度场特性的研究
  10. win8.1 uefi引导
  11. 开机时无法进入系统,提示windows system32/winload.exe 无法加载
  12. 盗窟手机小我私人撤军华强北:市场一年不如一年
  13. 如何搜索英文文献综述?
  14. cso(布谷鸟)算法优化神经网络参数
  15. 经济可行性分析的目的
  16. Windows命令提示符窗口操作命令
  17. 新浪短连接(t.cn)在线生成工具
  18. Padavan挂载SMB共享及编译ffmpeg
  19. 【VUE项目实战】42、添加商品分类功能(三)
  20. dlclose隐藏的秘密!

热门文章

  1. 《红色警戒II》全攻略苏军篇
  2. 用80%的工时拿100%的薪水,英国正式开启“四天工作制”试验!
  3. C++ 100款开源界面库——内容细节(现在有变动)不必深究,普及就好
  4. win7系统证书错误问题,证书无效,不受信任的网站问题
  5. opencv视频分析与对象追踪之CAMSHIFT对象跟踪
  6. java poi对excel xls和xlsx格式文件导入导出
  7. ScrollBar(滚动条)的实现尝试
  8. 我用iPad / iTouch来做什么
  9. 大数据就业方向有哪些,大数据人才贵在哪里
  10. idlemystic区块链卡牌游戏|附教程和收益