深度学习入门数据集大全:CIFAR、ImageNet 和 MNIST

news2024/11/15 23:48:08

在开始深度学习和计算机视觉的旅程中,选择合适的数据集至关重要。本文将详细介绍三个常用的数据集:CIFAR、ImageNet 和 MNIST。这些数据集不仅为研究人员提供了丰富的训练资源,也为学习者提供了宝贵的实践机会。

CIFAR 数据集

简介

CIFAR(Canadian Institute For Advanced Research)数据集是由多伦多大学的Alex Krizhevsky和Geoffrey Hinton等人创建的。CIFAR数据集主要用于图像分类任务,广泛用于机器学习和计算机视觉研究。

主要特征

CIFAR数据集有两个主要版本:

  • CIFAR-10:包含10个类别,每个类别有6000张32x32彩色图像,总共60000张图像。
  • CIFAR-100:包含100个类别,每个类别有600张32x32彩色图像,总共60000张图像。

每个数据集分为50000张训练图像和10000张测试图像。

类别

  • CIFAR-10的类别:飞机、汽车、鸟、猫、鹿、狗、青蛙、马、船、卡车。
  • CIFAR-100的类别:包含20个超级类(如“哺乳动物”、“鱼类”等),每个超级类下有5个子类,总共100个细分类。

下载与使用

  1. 下载

    • 你可以从CIFAR数据集的官方网站下载:CIFAR-10 和 CIFAR-100 数据集。
    • 也可以通过Python中的torchvisiontensorflow_datasets等库下载。
  2. 使用

    • 在PyTorch中使用CIFAR-10:
      import torchvision
      import torchvision.transforms as transforms
      
      transform = transforms.Compose(
          [transforms.ToTensor(),
           transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])
      
      trainset = torchvision.datasets.CIFAR10(root='./data', train=True,
                                              download=True, transform=transform)
      trainloader = torch.utils.data.DataLoader(trainset, batch_size=4,
                                                shuffle=True, num_workers=2)
      
      testset = torchvision.datasets.CIFAR10(root='./data', train=False,
                                             download=True, transform=transform)
      testloader = torch.utils.data.DataLoader(testset, batch_size=4,
                                               shuffle=False, num_workers=2)
      
    • 在TensorFlow中使用CIFAR-10:
      import tensorflow as tf
      
      (train_images, train_labels), (test_images, test_labels) = tf.keras.datasets.cifar10.load_data()
      
      train_images, test_images = train_images / 255.0, test_images / 255.0
      

示例图像

在这里插入图片描述

CIFAR 详细实验设置

CIFAR 10 和 CIFAR100 数据集 (Krizhevsky et al.) 包含 5 万张训练图像和 1 万张验证图像。设置 4 的填充,并随机裁剪训练图像到 32×32。其他数据增强包括

(1) 随机水平翻转 (Random Horizontal Flip),

(2) 剪切 (Cutout) (DeVries & Taylor, 2017),

(3) 自动增强 (AutoAugment) (Cubuk et al., 2019)。

测试效果

以下是使用简单卷积神经网络(CNN)在CIFAR-10上的测试效果:

import torch
import torch.nn as nn
import torch.optim as optim

class SimpleCNN(nn.Module):
    def __init__(self):
        super(SimpleCNN, self).__init__()
        self.conv1 = nn.Conv2d(3, 16, 3, padding=1)
        self.conv2 = nn.Conv2d(16, 32, 3, padding=1)
        self.pool = nn.MaxPool2d(2, 2)
        self.fc1 = nn.Linear(32 * 8 * 8, 512)
        self.fc2 = nn.Linear(512, 10)

    def forward(self, x):
        x = self.pool(F.relu(self.conv1(x)))
        x = self.pool(F.relu(self.conv2(x)))
        x = x.view(-1, 32 * 8 * 8)
        x = F.relu(self.fc1(x))
        x = self.fc2(x)
        return x

net = SimpleCNN()
criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(net.parameters(), lr=0.001, momentum=0.9)

for epoch in range(10):
    for inputs, labels in trainloader:
        optimizer.zero_grad()
        outputs = net(inputs)
        loss = criterion(outputs, labels)
        loss.backward()
        optimizer.step()

# 测试准确率
correct = 0
total = 0
with torch.no_grad():
    for inputs, labels in testloader:
        outputs = net(inputs)
        _, predicted = torch.max(outputs.data, 1)
        total += labels.size(0)
        correct += (predicted == labels).sum().item()

print(f'Accuracy: {100 * correct / total} %')

ImageNet 数据集

简介

ImageNet是由斯坦福大学的Fei-Fei Li教授领导的团队创建的。ImageNet是一个大规模的图像数据库,旨在推动计算机视觉和深度学习的发展。ImageNet中最著名的子集是用于ImageNet大规模视觉识别挑战赛(ILSVRC)的数据集。

主要特征

  • ImageNet数据集中包含超过1400万张图像,其中超过1000万张有标签。
  • ILSVRC数据集包含1000个类别,每个类别有约1300张训练图像和50张验证图像。

类别

ImageNet的类别非常丰富,涵盖了广泛的现实世界中的物体,如动物、植物、工具、日常用品等。

下载与使用

  1. 下载

    • 你可以从ImageNet官方网站申请下载:ImageNet 数据集,但需要注册账号并申请下载权限。
    • 下载过程较为复杂,因为数据集非常大。
  2. 使用

    • 在PyTorch中使用预训练的ResNet模型:
      import torchvision.models as models
      import torchvision.transforms as transforms
      from PIL import Image
      
      # 加载预训练模型
      model = models.resnet50(pretrained=True)
      model.eval()
      
      # 预处理图像
      preprocess = transforms.Compose([
          transforms.Resize(256),
          transforms.CenterCrop(224),
          transforms.ToTensor(),
          transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
      ])
      
      img = Image.open("your_image.jpg")
      img_t = preprocess(img)
      batch_t = torch.unsqueeze(img_t, 0)
      
      # 推理
      out = model(batch_t)
      

示例图像

在这里插入图片描述

ImageNet 详细实验设置

对于 ImageNet 数据集 (Deng et al., 2009) ,包含 1.2 亿张训练图像和 5 万张验证图像。在训练前的预处理阶段,随机裁剪并将训练图像调整为 224×224 的大小。

此外,我们还应用了颜色抖动 (CollorJitter),参数设置为亮度=0.2,对比度=0.2,饱和度=0.2,色调=0.1。对于测试图像,将它们中心裁剪到相同的大小。

测试效果

以下是使用预训练ResNet50模型在ImageNet上的测试效果:

import torch
import torchvision.models as models
import torchvision.transforms as transforms
from PIL import Image

# 加载预训练模型
model = models.resnet50(pretrained=True)
model.eval()

# 预处理图像
preprocess = transforms.Compose([
    transforms.Resize(256),
    transforms.CenterCrop(224),
    transforms.ToTensor(),
    transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
])

img = Image.open("your_image.jpg")
img_t = preprocess(img)
batch_t = torch.unsqueeze(img_t, 0)

# 推理
out = model(batch_t)
_, index = torch.max(out, 1)

# 打印分类结果
print(f"Predicted class index: {index.item()}")

MNIST 数据集

简介

MNIST(Modified National Institute of Standards and Technology)数据集是由美国国家标准与技术研究院(NIST)提供的手写数字数据集。它是机器学习和图像识别领域最常用的数据集之一。

主要特征

  • MNIST包含60000张训练图像和10000张测试图像,每张图像是28x28的灰度图像,代表数字0到9。

类别

MNIST包含10个类别,分别代表手写数字0到9。

下载与使用

  1. 下载

    • MNIST数据集可以从多种资源下载,比如通过TensorFlow或PyTorch直接下载。
  2. 使用

    • 在PyTorch中使用MNIST:
      import torchvision.datasets as datasets
      import torchvision.transforms as transforms
      
      transform = transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.5,), (0.5,))])
      trainset = datasets.MNIST(root='./data', train=True, download=True, transform=transform)
      trainloader = torch.utils.data.DataLoader(trainset, batch_size=32, shuffle=True)
      testset = datasets.MNIST(root='./data', train=False, download=True, transform=transform)
      
      
      testloader = torch.utils.data.DataLoader(testset, batch_size=32, shuffle=False)
      
    • 在TensorFlow中使用MNIST:
      import tensorflow as tf
      
      (train_images, train_labels), (test_images, test_labels) = tf.keras.datasets.mnist.load_data()
      
      train_images, test_images = train_images / 255.0, test_images / 255.0
      

测试效果

以下是使用简单神经网络在MNIST上的测试效果:

import tensorflow as tf
from tensorflow.keras import layers, models

# 加载数据集
(train_images, train_labels), (test_images, test_labels) = tf.keras.datasets.mnist.load_data()
train_images, test_images = train_images / 255.0, test_images / 255.0

# 构建模型
model = models.Sequential([
    layers.Flatten(input_shape=(28, 28)),
    layers.Dense(128, activation='relu'),
    layers.Dense(10, activation='softmax')
])

# 编译模型
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

# 训练模型
model.fit(train_images, train_labels, epochs=5)

# 测试模型
test_loss, test_acc = model.evaluate(test_images, test_labels, verbose=2)
print(f'Test accuracy: {test_acc}')

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

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

相关文章

Stable Diffusion AI绘画|无用师真的无用么?中外老幼男女通吃?高清直出!无用师-亚洲融合终结版!

前言 老铁留言推荐无用师,那么今天它来了~ 今天试玩的是无用师大佬称作的终结版,正如大佬所言,都SD3了,再加上Pony系、Kolors 、混元等众多大模型系列。但老徐觉得在1.5的大模型中很多依然是很能打。虽然在艺术性,镜头…

Tomcat中间件监控指标解读

监控易是一款功能全面的监控软件,它能够实时监控IT系统的各项性能指标,包括服务器、网络设备、数据库、中间件等,帮助管理员及时发现并解决潜在的性能问题。在本次解读中,我们将重点关注Tomcat中间件的监控指标。 Tomcat是一个广泛…

NVIDIA Triton系列06-安装用户端软件

NVIDIA Triton系列06-安装用户端软件 B站:肆十二-的个人空间-肆十二-个人主页-哔哩哔哩视频 (bilibili.com) 博客:肆十二-CSDN博客 问答:(10 封私信 / 72 条消息) 肆十二 - 知乎 (zhihu.com) 在前面的文章中,已经带着读者创建好 T…

解决idea debug/run 启动项目一闪而过的问题

由于没有具体报错日志,难以排查,所以记录一下; 1、保证项目依赖正确,能build成功: 可能原因:maven配置文件不对,检查账号密码(可能运维会换),检查仓库地址&…

The Llama 3 Herd of Models 第7部分视觉实验部分全文

第1,2,3部分,介绍、概览和预训练 第4部分,后训练 第5部分,结果 第6部分,推理 7 Vision Experiments 我们进行了一系列的实验,在这些实验中,我们通过一种由两个主要阶段组成的合成方法将视觉识别能力整合到Llama 3中。首先,我们通过在大量图像-文本对上引入和训练两种…

PHP海报在线制作系统小程序源码

创意无限,设计零门槛! 🎨 一键解锁设计大师潜能 你还在为找不到合适的设计师制作海报而烦恼吗?告别繁琐沟通,拥抱“海报在线制作系统”!这个神奇的平台,让你无需任何设计基础,也能…

数据结构: 单向链表

目录 一、链表的概念及结构 二、单链表的实现 2.1 头文件 2.2 各个功能的实现 2.2.1 内存申请 2.2.2 头插,尾插,头删,尾删 头插 尾插 头删 尾删 2.2.3 查找数据 2.2.4 指定位置前中后的数据增删 指定位置之前插入数据 指定位置之后插…

完整版 [vue 配置electron]

vue 配置electron,使用make 进行打包 1. 安装依赖 yarn install 2. 在根目录新建文件夹 electron 3. package.json 文件里添加 "name": "my-electron-app","version": "1.0.0","description": "Hello W…

c++三大特性 封装、继承、多态 (一)

c中的继承 一. 封装封装的定义 二.继承的概念及定义2.1继承的概念2.2继承的定义2.2.1 定义格式2.2.2 继承关系和访问限定符2.2.3 继承基类成员访问方式的变化 三.基类和派生类对象赋值转换四.继承中的类作用域 一. 封装 封装的定义 数据和方法放到一起,把像访问定义…

【Canvas与艺术】八个等腰三角形拼成的八角楼

【成图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>八个等腰三角形拼成的八角楼</title><style type"text…

【C语言】编译和链接(细节的king)

文章目录 前言1. 翻译环境和运行环境1.1 翻译环境1.1.1 预处理&#xff08;预编译&#xff09;1.1.2 编译词法分析语法分析语义分析及优化 1.1.3 汇编1.1.4 链接 1.2 运行环境 前言 相信大家在学完C语言的全部基础知识&#xff0c;肯定会经常动手敲代码。以VS为例&#xff0c;…

【C++】—— 类与对象(三)

【C】—— 类与对象&#xff08;三&#xff09; 4、拷贝构造函数4.1、初识拷贝构造4.1.1、为什么要传引用4.1.2、引用尽量加上 const 4.2、深入拷贝构造4.2.1、为什么要自己实现拷贝构造4.2.2、传值返回先调用拷贝构造的原因4.2.3、躺赢的 MyQueue4.2.4、传值返回与引用返回 4.…

云HIS,云HIS源码

医学领域的信息系统平台种类繁多。在很大程度上&#xff0c;对于一些在医疗机构的区域一体化信息平台&#xff0c;在微观层面上&#xff0c;传统的医疗信息系统已经建立了许多医院(HIS)或数字医院系统&#xff0c;包括子系统提供了一个单一的功能&#xff0c;如注册和形象&…

【H3C(HCL)网络模拟器网络桥接】进入网络设备Web页面

H3C模拟器网络桥接 1.模拟器选择Host&#xff0c;添加 2.选中Host主机的网卡&#xff0c;这里我选的是华三的Virtual Box的网卡 选中后连线至防火墙对应接口&#xff0c;建议连接到G1/0/1&#xff0c;这个接口是默认配置的接口&#xff0c;拥有默认地址 3.修改防火墙配置 [F…

Windows 中 PIN 和密码的区别是什么?各有各的优点

PIN PIN 即个人识别号码&#xff08;Personal Identification Number&#xff09;&#xff0c;在 Windows 系统中通常由 4 到 6 位数字组成。它是 Windows Hello 的一部分&#xff0c;设计用于提供快速、安全的身份验证。 密码 密码是一种更为传统的身份验证方法&#xff0c;…

提升生产效率:APS高级计划排程系统在车间工序级排程的革命性应用

在制造业的数字化转型浪潮中&#xff0c;APS高级计划排程系统以凭借自身卓越的排程运算能力和应用灵活性&#xff0c;已经成为中大型制造业提升生产效率的关键工具。APS系统的介入&#xff0c;打通了传统ERP和MES等各类业务系统运营平台&#xff0c;并且通过产能均衡规划&#…

聚观早报 | 搜狐2024年Q2财报;一加Open推出深红色版本

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 8月6日消息 搜狐2024年Q2财报 一加Open推出深红色版本 smart精灵#5将在澳洲首秀 OpenAI为ChatGPT测试文本水印 …

手动部署内网穿透

关于内网穿透&#xff0c;主要针对什么是公网和内网&#xff1f;NAT转化技术等引出内网穿透方法。 本文主要技术是利用frp部署内网穿透、以及nagix部署web服务。 测试环境&#xff1a; 服务器&#xff1a;Linux云服务内网&#xff1a;用本地WM充当内网云服务器Linux&#xf…

伯克利Linux系统管理: 脚本编写学习 课堂与实验(系统简洁保姆级学习)

Linux系列文章目录 补充内容 Windows通过SSH连接Linux 第一章 Linux基本命令的学习与Linux历史 第二章(上) Vim课堂与实验 文章目录 Linux系列文章目录一、前言二、学习内容&#xff1a;2.1 上课内容2.1.1 为什么要学习脚本编写&#xff1f;2.1.2 Bash编程语言2.1.3 SheBang2.…

半导体PEEK纳米级钻孔,用德国高精密主轴

在半导体行业&#xff0c;对精度、效率与稳定性的要求近乎苛刻。其中&#xff0c;PEEK&#xff08;聚醚醚酮&#xff09;材料因其优异的耐热性、耐化学性和机械性能&#xff0c;在高端半导体封装、微流控芯片等领域得到了广泛应用。然而&#xff0c;PEEK材料的硬度与韧性并存&a…