Pascal VOC 和 Microsoft COCO(MS COCO)(COCO2017COCO2014) 数据集

article/2025/9/10 0:36:35

Pascal VOC(Pascal Visual Object Classes)数据集

VOC数据集是目标检测/分割经常用的一个数据集,从05年到12年都会举办比赛

VOC数据集的格式

用于分割

 

Paslcal VOC 2012 用于分隔的数据集是由20个类+1个背景类

训练集1464张

val集 1449张

Microsoft COCO(Common Objects in Context)数据集

COCO是微软团队2014年发布的一个可以用来进行图像识别的数据集

在MS COCO数据集上可以做多种任务

coco2017数据集共80个类,类别id号不连续,最大为90。 8w张图

COCO通过在Flickr上搜索80个对象类别和各种场景类型来收集图像,其使用了亚马逊的Mechanical Turk(AMT)

Image Captioning也是用的这个数据集


2014版本的coco dataset包括82,783 个训练图像、40,504个验证图像以及40,775个测试图像,270k的分割出来的人以及886k的分割出来的物体。

数据集有20G左右的图片和500M左右的标签文件。标签文件标记了每个segmentation+bounding box(即分割物+分割物的边界)的精确坐标,其精度均为小数点后两位。

MS COCO种类数要远比 PASCAL VOC多(VOC有的种类他都有),每个类别标注的目标个数,COCO数据集也明显比VOC多。所以很多文章都会使用COCO数据集进行预训练,再用迁移学习方法在VOC上进行再训练。而且如果想训练自己的数据集的话,一般也会基于COCO数据集预训练好的权重去做迁移学习

test集是不放出来的 

标注格式

coco的segmentation格式

iscrowd=0的时候,表示这是一个单独的物体,轮廓用Polygon(多边形的点)表示,iscrowd=1的时候表示两个没有分开的物体,轮廓用RLE编码表示,比如说一张图片里面有三个人,一个人单独站一边,另外两个搂在一起(标注的时候距离太近分不开了),这个时候,单独的那个人的注释里面的iscrowing=0,segmentation用Polygon表示,而另外两个用放在同一个anatation的数组里面用一个segmention的RLE编码形式表示

[poly]的形式是这样的[x1,y1,x2,y3,x3,y3,...,xn,yn]

mask不论是polygon还是rle都会被转换成rle再做iou

COCO相关数据格式可视化

Mask_RCNN/inspect_data.ipynb at master · matterport/Mask_RCNN (github.com)

COCO的格式示例

可以看到它这里是images和annotations是分开的

即annotations里面可能好几项都是同一个图片的框

{# "info": 'coco',			#optional# "license": ['none'],	#optional"images": [{"height": 224,    #int"width": 224,    #int"id": 0,    #int 必须"file_name": 'figure1.jpg'    #str},{"height": 224,"width": 224,"id": 1,"file_name": 'figure2.jpg'}]"annotations":[{"id": 0,    #int   必须"image_id": 0,    #int    必须"category_id": 10,    #int"segmentation": [[1, 1, 1, 1, 1, 1, 1, 1],],    #值是double类型的"bbox": [0, 0, 1, 1], #格式[x,y,w,h], 4值都是double类型,xy指左上角的点      "iscrowd": 0,    #0/1"area": 1    #area是area of encoded masks,是标注区域的面积,可以int可以double#如果是矩形框,那area就是高乘宽;如果是polygon或者RLE,那就复杂点。},]"categories": [{"id": 0,    #int"name": "1",    #str"supercategory": "name"    #str},]
}

最主要是有images, annotations, categories这三类就行,info和license也可以没有

images, annotations, categories这三类的元素个数不是相同的

像publaynet的example

len(images)就是图片个数

len(annotations)会远大于len(images),因为一张图多个标注

它们会通过id对应起来

len(categories)就是class种类数

categories也会和annotations同过id对应起来

COCO做图像标注任务

COCO数据集现在有3种标注类型:object instances(目标实例,用于目标检测), object keypoints(目标上的关键点,用于姿态估计), and image captions(看图说话),每种标注类型都有相应的json标注文件


http://chatgpt.dhexx.cn/article/SwDMbq9t.shtml

相关文章

COCO数据集解析

1 简介 官方网站:http://cocodataset.org/ 全称:Microsoft Common Objects in Context (MS COCO) 支持任务:Detection、Keypoints、Stuff、Panoptic、Captions 说明:COCO数据集目前有三个版本,…

COCO数据集介绍

COCO数据集详细介绍 前言一、什么是COCO数据集?COCO数据集可以应用到的Task:一个简单的数据集实例展示:附录80个类别 二、COCO数据集的格式介绍基础的数据格式介绍不同Task下的annotationObject Detection annotationother task: …

COCO数据集的介绍和使用

这篇文章是我研究生阶段入学期间学习所记,主要供自己使用,结合了论文原作和源码,中间借鉴的一些b站的视频以及他人博客的解释,会在文章末尾贴出链接。 目录 COCO数据集的介绍 COCO数据集标注格式 pycocotools的安装和coco api…

数据结构与算法之基础概述

目录 数据结构和算法的重要性数据结构概述逻辑结构存储结构 算法概述如何理解“大O记法”时间复杂度空间复杂度 数据结构和算法的重要性 算法是程序的灵魂,优秀的程序可以在海量数据计算时,依然保持高速计算 数据结构和算法的关系: 程序 数…

1.0 JAVA数据结构与算法

学习总结 利用计算机来解决显示世界中的各种实际问题时,首先要将实际问题中的操作对象抽象为能够用计算机表示的数据,为这些数据建立一个数学模型(数据的逻辑结构),再面对数据以某种组织形式进行存储(数据…

数据结构和算法的区别

1.数据结构 数据结构是相互之间存在一种或多种特定关系的数据元素的集合。 数据结构包括三方面的内容:逻辑结构、存储结构和数据的运算。 1.数据的逻辑结构 数据的逻辑结构分类图如下: 2.数据的存储结构 存储结构是指数据结构在计算机中的表示&#xf…

肝完了,一天掌握数据结构和算法面试题,吊打面试官,一起学习吧

最近有小伙伴面试,对数据结构和算法比较头疼,我整理了一波资料,帮助大家快速掌握数据结构和算法的面试,感觉有用的小伙伴,点赞支持哦! 不叨叨,直接上干货。 目录 Q1:数据结构和算…

大一新生先学C语言编程还是先学C语言的数据结构和算法?

大家好,我是辣条。 这是一位粉丝朋友给我的私信,今天就他这个问题好好聊聊。 先学C语言在学数据结构和算法 先说答案建议先学C语言,掌握基本的语法基础后,再学数据结构与算法,C语言编程与数据结构和算法这两个完全是…

【数据结构和算法】如何学习数据结构与算法 ?过来人的建议(一)【方法篇】

🎈 作者:Linux猿 🎈 简介:CSDN博客专家🏆,华为云享专家🏆,Linux、C/C、云计算、物联网、面试、刷题、算法尽管咨询我,关注我,有问题私聊! &…

数据结构与算法简介

0. 内容说明 最近在自己编写一些小的算法的时候,深感自己的算法过于臃肿。碰巧Datawhale在新的一期组队学习中组织了数据结构与算法的课程学习。于是就参加了,再次感谢Datawhale~~ 首先跟大家分享一下两个自己感觉比较好的学习资料,一个是 …

数据结构和算法知识点整理

Q1:数据结构和算法的知识点整理: 数据结构和算法的需要掌握的知识点,我的好朋友启舰整理的: Q2:链表,队列和栈的区别 链表是一种物理存储单元上非连续的一种数据结构,看名字我们就知道他是一种…

如何学习数据结构和算法

首先掌握常用的、基础的。然后在此基础上往进行扩展学习。 常用的、基础的数据结构和算法有20个。 数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie树 算法:递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法…

Java的数据结构和算法

今天我们来简单介绍一下Java的数据结构和算法。 一、数据结构 1、数据结构的分类 2、数据结构的基本功能 二、算法 1、算法是什么 2、算法的特点 一、1、数据结构是计算机组织、存储数据的方式。简单来说就是,数据按指定的规则进行存储,从而得到一个有固定存储格式的数据集…

数据结构与算法——绪论

前言:数据结构与算法是计算机科学与工程的基础,它们的相互关系和作用是程序的本质。凭借一句话获得图灵奖的Pascal之父Nicklaus Wirth把它们表示为 算法数据结构程序 目录: 1、算法与数据结构的重要性①相关定义②为什么要学习算法③数据结构…

【建议收藏】数据结构和算法面试题

数据结构 数据结构分为两大类,线性结构和非线性结构。 线性结构:数组、队列、链表、栈非线性结构:多维数组、树结构、图结构 1.数组 数组是最常用的数据结构,用于存储相同类型的数据,数组的长度也是固定的。 数组…

数据结构和算法:什么是数据结构,什么是算法

文章目录 前言数据结构和算法1.数据结构1.1数据结构的类型2.算法2.1推导大O阶方法常数阶O(1)和线性阶O(n)为什么算法1时间复杂度为O(n)而不是O(1)呢?对数阶O( logn):平方阶O( n2): 前言 这几天复习数据结构,在看《大话数据结构》&…

python数据结构和算法

前面系统地学习了python相关的基础知识,接下来,我们将继续学习python的数据结构和算法。 我们知道,程序数据结构算法,那么,什么是数据结构,有什么是算法呢?如何系统的学习数据结构和算法呢&am…

【数据结构和算法】入门初识篇

目录 一、前言 二、数据结构的理解 物理结构和逻辑结构 1.逻辑结构 2. 物理结构 一、前言 我们前面我学了Java的内部类,现在来学习一下数据结构和算法,多科齐下不仅可以 学科交插学习互相帮助,还可以锻炼跳跃性思维。 二、数据结构的…

什么是数据结构和算法

从远古的汇编语言到现代编程语言,计算机编程已经变得更加强大、高效和先进。然而,计算机编程中的数据结构和算法的核心概念和使用并没有改变。从一开始,DSA就一直是计算机编程的核心。 备注: 下文统一使用DSA表示数据结构和算法。 你可能听说…

数据结构与算法——算法

😊数据结构与算法——算法 🚀什么是算法?🚢算法的特征(特性) 🚀算法的设计(要点)🚀算法效率的度量🚢事后统计法🚢事前分析估算法&…