计算机视觉:主流数据集整理

news2025/2/23 17:18:30

第一章:计算机视觉中图像的基础认知
第二章:计算机视觉:卷积神经网络(CNN)基本概念(一)
第三章:计算机视觉:卷积神经网络(CNN)基本概念(二)
第四章:搭建一个经典的LeNet5神经网络(附代码)
第五章:计算机视觉:神经网络实战之手势识别(附代码)
第六章:计算机视觉:目标检测从简单到容易(附代码)
第七章:MTCNN 人脸检测技术揭秘:原理、实现与实战(附代码)
第八章:探索YOLO技术:目标检测的高效解决方案
第九章:计算机视觉:主流数据集整理
第十章:生成对抗网络(GAN):从概念到代码实践(附代码)

在计算机视觉(CV)领域,数据集的质量和多样性对于推动算法创新和技术进步至关重要。本文整理当前最流行且最具影响力的数据集,涵盖目标检测、图像分类、语义分割、姿态估计等多个关键方向。

一、数据集格式

在计算机视觉领域,数据集的格式对于模型的训练和评估至关重要。不同的任务需要不同的数据集格式,本文介绍分类问题和目标检测问题的数据集格式。

1.1 分类任务数据集格式

分类问题是计算机视觉中最基本的任务之一,旨在识别图像中的主要对象或场景。下面以一个手势分类的例子来展示如何组织分类数据集。

gesture/
├── train/
│   ├── zero/
│   │   ├── 1.jpg
│   │   ├── 2.jpg
│   │   └── ...
│   ├── one/
│   │   ├── 1.jpg
│   │   ├── 2.jpg
│   │   └── ...
│   └── ...
├── test/
│   ├── zero/
│   │   ├── 1.jpg
│   │   ├── 2.jpg
│   │   └── ...
│   ├── one/
│   │   ├── 1.jpg
│   │   ├── 2.jpg
│   │   └── ...
│   └── ...
└── ...

在这个结构中

  • gesture: 数据集根目录。
  • train & test: 训练集与测试集文件夹,用于划分数据集以便于模型训练和评估。
  • zero, one: 类别文件夹,每个类别有自己的文件夹,里面包含该类别的所有图片。

1.2 检测任务数据集格式

目标检测不仅需要识别图像中的对象,还需要精确定位这些对象的位置。这通常涉及到边界框的标注。

数据集名字/
├── images/
│   ├── train/
│   │   ├── 1.jpg
│   │   ├── 2.jpg
│   │   └── ...
│   ├── test/
│   │   ├── 1.jpg
│   │   ├── 2.jpg
│   │   └── ...
│   └── ...
├── labels/
│   ├── train/
│   │   ├── 1.txt
│   │   ├── 2.txt
│   │   └── ...
│   ├── test/
│   │   ├── 1.txt
│   │   ├── 2.txt
│   │   └── ...
│   └── ...
└── ...
  • images: 包含原始图像的文件夹,分为训练集和测试集。
  • labels: 包含对应图像中对象位置信息(如边界框坐标)的文本文件。labels 文件夹包含对应的标签文件。每一行表示一个目标的边界框和类别信息。比如:
    在这里插入图片描述

1.3 标注工具

LabelImg 是一个常用的标注工具,用于创建目标检测的标签文件,从网络上找了一张LabelImg的使用界面图。
在这里插入图片描述

LabelImg标签文件格式
标签文件的每一行表示一个目标的边界框和类别信息,格式如下:

<class_id> <x_center> <y_center> <width> <height>

其中:

  • <class_id>:目标的类别 ID,从 0 开始。
  • <x_center><y_center>:边界框中心点的坐标,相对于图像宽度和高度的比例,范围为 0 到 1。
  • <width> <height>:边界框的宽度和高度,相对于图像宽度和高度的比例,范围为 0 到 1。

在这里插入图片描述

二、MNIST数据集

在这里插入图片描述

MNIST数据集是计算机视觉领域中用于手写数字识别任务的一个经典数据集。它由来自美国国家标准与技术研究所(NIST)的大量手写数字扫描图像组成,经过处理后被广泛应用于机器学习算法尤其是图像分类模型的基准测试。

主要特点

  1. 规模

    • 包含70,000张28x28像素的灰度手写数字图片。
    • 这些图片被划分为60,000张训练图像和10,000张测试图像。
  2. 内容

    • 图像内容为0到9的手写数字,每个数字都有大量的样本。
    • 每个图像都是灰度图,背景为黑色,前景(即手写数字)为白色,并且已经被归一化和平移缩放,以适应28x28像素的框架内。
  3. 标签

    • 每张图像都有一个对应的标签,表示该图像中的手写数字是什么(从0到9)。
  4. 用途

    • MNIST常被用来作为初学者入门机器学习的起点,特别是对于那些想要了解或实现图像分类算法的人。
    • 它也被用作比较不同算法性能的标准基准之一。
  5. 格式

    • 数据集通常以二进制格式提供,但也有许多工具可以方便地将其转换为其他格式(如CSV、NumPy数组等),以便于在各种编程环境中使用。
    • 在Python中,可以通过tensorflowkeras等库轻松加载MNIST数据集。

使用示例

在Python中使用Keras加载MNIST数据集的例子如下:

from tensorflow.keras.datasets import mnist

# 加载MNIST数据集
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()

# 查看数据集的基本信息
print("训练集尺寸:", train_images.shape)
print("训练集标签数量:", len(train_labels))
print("测试集尺寸:", test_images.shape)
print("测试集标签数量:", len(test_labels))

这段代码首先导入了必要的库,然后加载了MNIST数据集,并打印出了训练集和测试集的一些基本信息。这有助于快速上手并开始探索如何构建和训练模型来解决手写数字识别问题。

MNIST数据集由于其相对简单但又具有代表性的特性,成为了机器学习社区中最受欢迎的数据集之一。尽管近年来随着更复杂的数据集如CIFAR-10、ImageNet等的出现,MNIST的重要性有所下降,但它仍然是教育和研究中的一个重要资源,特别适合用于教学目的以及快速原型设计和算法验证。

三、CIFAR-10数据集

在这里插入图片描述
CIFAR-10 是计算机视觉领域中一个非常流行的数据集,主要用于图像分类任务。它由Alex Krizhevsky、Vinod Nair和Geoffrey Hinton收集,并被广泛用于训练机器学习算法,尤其是深度学习模型。CIFAR-10 是其系列数据集中的一部分,该系列还包括了如 CIFAR-100 等其他变体。

主要特点

  1. 规模

    • 包含 60,000 张 32x32 像素的彩色图像。
    • 这些图像被划分为 50,000 张训练图像和 10,000 张测试图像。
  2. 类别

    • 数据集包含 10 个不同的类别:飞机(airplane)、汽车(automobile)、鸟(bird)、猫(cat)、鹿(deer)、狗(dog)、青蛙(frog)、马(horse)、船(ship)和卡车(truck)。
    • 每个类别有 6,000 张图像,确保了类别之间的平衡。
  3. 图像格式

    • 所有图像均为 RGB 彩色图像,尺寸为 32x32 像素,每个像素点由红、绿、蓝三个 8 位颜色通道组成,因此每个图像大小为 32x32x3 = 3,072 字节。
  4. 用途

    • CIFAR-10 数据集常被用来作为开发、训练和评估图像分类算法的基础,尤其是在卷积神经网络(CNNs)的研究中。
    • 它是许多初学者进入深度学习领域的第一步,也是研究人员比较不同模型性能的重要基准之一。
  5. 挑战性

    • 尽管图像尺寸较小,但由于类间差异有时不明显,以及存在光照变化、遮挡等现实世界中的问题,使得 CIFAR-10 对于机器学习算法来说具有一定的挑战性。

使用示例

在Python中使用Keras加载CIFAR-10数据集的例子如下:

from tensorflow.keras.datasets import cifar10

# 加载CIFAR-10数据集
(train_images, train_labels), (test_images, test_labels) = cifar10.load_data()

# 查看数据集的基本信息
print("训练集尺寸:", train_images.shape)
print("训练集标签数量:", len(train_labels))
print("测试集尺寸:", test_images.shape)
print("测试集标签数量:", len(test_labels))

这段代码首先导入了必要的库,然后加载了CIFAR-10数据集,并打印出了训练集和测试集的一些基本信息。这有助于快速上手并开始探索如何构建和训练模型来解决图像分类问题。

四、ImageNet数据集

在这里插入图片描述

ImageNet是一个大规模的图像数据库,主要用于训练和评估机器学习模型,特别是那些用于图像分类任务的模型。以下是关于ImageNet数据集的一些关键点:

  • 起源与发展:ImageNet项目始于2007年,由李飞飞等人发起,旨在构建一个大规模的、高质量的图像数据集,并通过众包的方式为每个类别标注大量的图片。“众包的方式”意味着项目团队通过在线平台邀请广大网络用户参与图像的分类与标注工作。每个参与者会被分配一定数量的图片,并要求根据指示为这些图片打上相应的标签,即识别出图片中的主要物体属于哪个或哪些类别。

  • 规模与内容:截至2010年代中期,ImageNet包含了超过1400万张手工标注的图像,这些图像被分配到了大约21,000个类别中。这些类别覆盖了从动物、植物到人造物品等各种对象。

  • ILSVRC竞赛:ImageNet最著名的应用之一是其关联的年度竞赛——ImageNet大规模视觉识别挑战赛(ILSVRC)。该竞赛自2010年开始举办,吸引了全球的研究人员参与,促进了深度学习技术的发展,尤其是卷积神经网络(CNNs)的进步。

  • 对AI领域的影响:由于其庞大的规模和多样性,ImageNet成为了开发和测试新的计算机视觉算法的重要资源。许多现代深度学习模型,包括AlexNet、VGG、ResNet等,在它们的研究初期都是在ImageNet数据集上进行训练和验证的,这大大推动了图像识别技术的发展。

“Classify”模型在ImageNet数据集上预先训练意味着该模型已经在一个广泛且多样化的图像集合上进行了学习,从而获得了强大的泛化能力,这对于解决各种实际问题非常有帮助。ImageNet数据集的配置文件ImageNet.yaml

五、COCO数据集

COCO数据集是一个广泛用于计算机视觉任务,特别是目标检测、分割、关键点检测和图像字幕生成等领域的大型数据集。它由微软资助并由一群研究人员共同创建。以下是样例图片:
在这里插入图片描述

主要特点

  1. 规模

    • COCO 数据集包含超过 33 万张图像。
    • 其中有超过 20 万张标注了对象边界框,适用于目标检测任务。
    • 约 16 万张图像标注了实例分割,适合于更精细的对象识别任务。
    • 还有大约 25 万张图像标注了人物的关键点,可用于人体姿态估计。
  2. 类别

    • 数据集覆盖了 80 个不同的对象类别,从常见的“人”、“车”到较为具体的“叉子”、“飞盘”等。
    • 每个类别都包含了大量实例,确保了模型学习的多样性和鲁棒性。
  3. 上下文信息

    • 与许多其他数据集不同的是,COCO 强调对象在具体场景中的位置和相互关系,这使得它非常适合研究如何理解和处理复杂的视觉场景。
    • 提供了丰富的语义信息,如每张图片的描述性文字(caption),有助于进行图像理解的研究。
  4. 数据格式

    • 图像通常以高分辨率JPEG格式提供。
    • 标注文件采用 JSON 格式,包含了详细的对象边界框、分割掩码、类别标签以及关键点坐标等信息。
  5. 子集划分

    • 数据集被划分为训练集(train)、验证集(val)和测试集(test)。
    • 常用的版本包括 train2017, val2017, 和 test2017,这些版本的数据量和用途各有侧重,方便研究人员根据需要选择合适的子集进行实验。
  6. 应用场景

    • 目标检测:识别图像中所有对象的位置和类型。
    • 实例分割:精确地描绘出每个对象的轮廓。
    • 关键点检测:定位人体上的特定部位,如眼睛、肩膀等。
    • 图像字幕生成:为图像自动生成描述性的文本。

使用示例

在使用COCO数据集进行模型训练或评估时,通常会参考其官方提供的配置文件(如 .yaml 文件),这些文件定义了数据集的位置、类别映射以及其他相关信息。例如,在YOLO框架中,可以这样加载COCO数据集:

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.yaml")  # 或者加载预训练模型

# Train the model on COCO dataset
results = model.train(data="coco.yaml", epochs=100, imgsz=640)

这里的 "coco.yaml" 是一个配置文件,指定了COCO数据集的具体路径和其他必要的参数。

COCO数据集由于其广泛的覆盖面、详细的标注以及丰富的应用场景支持,成为了计算机视觉领域内最为重要的基准之一。

六、COCO8数据集

COCO8 是一个小型但功能齐全的数据集,专门设计用于测试和调试目的。它是从更大的 COCO(Common Objects in Context)数据集中提取出来的子集,包含来自 COCO train 2017 数据集的前 8 张图像,并分为训练集和验证集。以下是样例图片
在这里插入图片描述
主要特点

  • 规模:COCO8 包含总共 8 张图像,其中 4 张用于训练,另外 4 张用于验证。
  • 用途:这个数据集非常适合用来快速测试新的检测方法、实验不同的模型配置或进行代码调试,因为它足够小,可以迅速处理,同时又足够多样化以揭示潜在的问题。
  • 类别:尽管是小规模的数据集,COCO8 保留了原始 COCO 数据集中的丰富类别信息。具体来说,它包含了从 ‘person’ 到 ‘toothbrush’ 的 80 个类别。
  • 格式:遵循 YOLO 所需的标准格式,包括图像文件以及相应的标注文件(通常为 .txt 文件),每个标注文件对应一张图像,并列出所有对象的位置(边界框坐标)和类别标签。
  • 下载与使用:可以通过提供的 YAML 文件 (coco8.yaml) 轻松地将其集成到 Ultralytics YOLO 框架中。该 YAML 文件定义了数据集路径、类别名称以及其他相关信息。

示例 YAML 配置 (coco8-seg.yaml)

# Ultralytics YOLO , AGPL-3.0 license
# COCO8-seg dataset (first 8 images from COCO train2017) by Ultralytics
path: ../datasets/coco8-seg # dataset root dir
train: images/train # train images (relative to 'path') 4 images
val: images/val # val images (relative to 'path') 4 images
test: # test images (optional)
# Classes
names:
0: person
1: bicycle
...
79: toothbrush
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8-seg.zip

使用场景

由于其小巧的体积,COCO8 特别适合以下情况:

  • 快速迭代开发过程中对新想法进行初步验证。
  • 在大规模训练之前检查管道是否存在基本错误。
  • 教育和学习目的,帮助新手理解如何准备和使用目标检测数据集。

虽然 COCO8 对于最终的产品级模型评估并不适用,但它是一个非常有用的工具,可以帮助研究人员和开发者在投入更多资源之前确保他们的算法和实现是正确的。对于更全面的评估,则需要转向更大规模的数据集,如完整的 COCO 数据集或其他类似的大型数据集合。

持续整理中…

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2304002.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2025软件测试面试常问的题(详细解析)

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 测试技术面试题 1、什么是兼容性测试&#xff1f;兼容性测试侧重哪些方面&#xff1f; 参考答案&#xff1a; 兼容测试主要是检查软件在不同的硬件平台、软件平…

项目POC的作用是什么

在项目管理和开发中&#xff0c;POC&#xff08;Proof of Concept&#xff0c;概念验证&#xff09;作为一个关键的步骤&#xff0c;扮演着非常重要的角色。POC的作用主要是验证某个概念、技术或方案的可行性&#xff0c;通过小规模实验或原型验证项目的关键假设&#xff0c;帮…

集合 数据结构 泛型

文章目录 1.Collection集合1.1数组和集合的区别【理解】1.2集合类体系结构【理解】1.3Collection 集合概述和使用【应用】内部类匿名内部类Lambda表达式 1.4Collection集合的遍历【应用】1.5增强for循环【应用】 2.List集合2.1List集合的概述和特点【记忆】2.2List集合的特有方…

vue-treeselect显示unknown的问题及解决

问题 解决办法 去node-modules包里面找到这个组件的源码&#xff0c;在它dist文件里面找到这个文件&#xff0c;然后搜索unknown&#xff0c;把它删掉就可以解决了。

代码随想录-训练营-day35

309. 买卖股票的最佳时机含冷冻期 - 力扣&#xff08;LeetCode&#xff09; 这个题比起我们的买卖股票二来说多了一个冷冻期的说法&#xff0c;也就是我们卖出股票的第二天无法买入股票。 这样对我们而言&#xff0c;dp数组的含义&#xff0c;或者说dp数组中的状态显然就不能是…

【Blender】二、建模篇--06,曲线建模/父子级和蒙皮修改器

00:00:03,620 --> 00:00:09,500 前几节可能我们已经做了很多种类型的模型了 但是有一种类型 我们一直避开就是这种管道 1 00:00:10,050 --> 00:00:19,370 藤条头发啊 衣服架子啊这种弯弯绕绕的 需要一定柔软度的模型 那么这节课呢我们都来集中看一下曲线的模型 我们应该…

【服务器与本地互传文件】远端服务器的Linux系统 和 本地Windows系统 互传文件

rz 命令&#xff1a;本地上传到远端 rz 命令&#xff1a;用于从本地主机上传文件到远程服务器 rz 是一个用于在 Linux 系统中通过 串口 或 SSH 上传文件的命令&#xff0c;它实际上是 lrzsz 工具包中的一个命令。rz 命令可以调用一个图形化的上传窗口&#xff0c;方便用户从本…

被裁20240927 --- WSL-Ubuntu20.04安装cuda、cuDNN、tensorRT

cuda、cuDNN、tensorRT的使用场景 1. CUDA&#xff08;Compute Unified Device Architecture&#xff09; 作用&#xff1a; GPU 通用计算&#xff1a;CUDA 是 NVIDIA 的并行计算平台和编程模型&#xff0c;允许开发者直接利用 GPU 的并行计算能力&#xff0c;加速通用计算任…

【架构】微内核架构(Microkernel Architecture)

微内核架构(Microkernel Architecture) 核心思想 微内核架构(又称插件式架构)通过最小化核心系统,将可扩展功能以插件模块形式动态加载,实现高内聚低耦合。其核心设计原则: 核心最小化:仅封装基础通用能力(如插件管理、通信机制、安全校验)功能插件化:所有业务功能…

动静态链接与加载

目录 静态链接 ELF加载与进程地址空间&#xff08;静态链接&#xff09; 动态链接与动态库加载 GOT表 静态链接 对于多个.o文件在没有链接之前互相是不知到对方存在的&#xff0c;也就是说这个.o文件中调用函数的的跳转地址都会被设定为0&#xff08;当然这个函数是在其他.…

83_CentOS7通过yum无法安装软件问题解决方案

大家好,我是袁庭新。很多小伙伴在CentOS 7中使用yum命令安装软件时,出现无法安装成功的问题,今天给大家分享一套解决方案~ 在CentOS 7中,yum是一个常用的包管理工具,它基于RPM包管理系统。如果你发现yum无法使用,可能是由于多种原因造成的。以下是一些解决步骤,可以帮…

数据包在客户端和服务端,以及网络设备间如何传输的?

声明&#xff1a;文章中图片来自于网络收集&#xff0c;整体流程自己梳理。 目录 问题&#xff1a;如下socket客户端请求数据包如何传输的&#xff1f; 拓扑环境 数据包在分层间传输 网络分层L2/L3/L4 数据包收发-在各分层间变化 各层头部中-核心信息 数据包在不同设备…

用Python实现Excel数据同步到飞书文档

目录 一、整体目标 二、代码结构拆解 三、核心逻辑讲解&#xff08;重点&#xff09; 1. 建立安全连接&#xff08;获取access_token&#xff09; 2. 定位文档位置 3. 数据包装与投递 四、异常处理机制 五、函数讲解 get_access_token() 关键概念解释 1. 飞书API访问…

25林业研究生复试面试问题汇总 林业专业知识问题很全! 林业复试全流程攻略 林业考研复试真题汇总

25 林业考研复试&#xff0c;专业面试咋准备&#xff1f;学姐来支招&#xff01; 宝子们&#xff0c;一提到林业考研复试面试&#xff0c;是不是就慌得不行&#xff0c;感觉老师会扔出一堆超难的问题&#xff1f;别怕别怕&#xff0c;其实林业考研复试就那么些套路&#xff0c;…

vxe-table实现动态列

vxe-table实现动态列 1.动态列解释2.解决步骤2.1将后端返回的动态列表头&#xff0c;按照格式拼接在固定列表头上2.2将后端返回的列表数据按照键值对格式组装 1.动态列解释 正常列表是有固定的列&#xff1b;我的需求是&#xff0c;最初只知道表格的固定两列&#xff0c;查询数…

尚硅谷爬虫note009

一、jsonpath 1.安装 pip install jsonpath 2.使用 只能解析本地文件 .json文件 {"store": {"book": [{"category": "reference","author": "Nigel Rees","title": "Sayings of the Century&qu…

verilog笔记

Verilog学习笔记&#xff08;一&#xff09;入门和基础语法BY电棍233 由于某些不可抗拒的因素和各种的特殊原因&#xff0c;主要是因为我是微电子专业的&#xff0c;我需要去学习一门名为verilog的硬件解释语言&#xff0c;由于我是在某西部地区的神秘大学上学&#xff0c;这所…

Java+SpringBoot+Vue+数据可视化的综合健身管理平台(程序+论文+讲解+安装+调试+售后)

感兴趣的可以先收藏起来&#xff0c;还有大家在毕设选题&#xff0c;项目以及论文编写等相关问题都可以给我留言咨询&#xff0c;我会一一回复&#xff0c;希望帮助更多的人。 系统介绍 在当今社会&#xff0c;随着人们生活水平的不断提高和健康意识的日益增强&#xff0c;健…

python绘制年平均海表温度、盐度、ph分布图

python绘制年平均海表温度、盐度、ph图 文章目录 python绘制年平均海表温度、盐度、ph分布图前言一、数据准备二、代码编写2.1. python绘制年平均海表温度&#xff08;主要&#xff09;2.2. python绘制年平均海表盐度&#xff08;选看&#xff09;2.3. python绘制年平均海表ph&…

网络空间安全(2)应用程序安全

前言 应用程序安全&#xff08;Application Security&#xff0c;简称AppSec&#xff09;是一个综合性的概念&#xff0c;它涵盖了应用程序从开发到部署&#xff0c;再到后续维护的整个过程中的安全措施。 一、定义与重要性 定义&#xff1a;应用程序安全是指识别和修复应用程序…