【计算机视觉 | 图像分类】图像分类常用数据集及其介绍(一)

文章概述了多个用于机器学习和计算机视觉任务的经典数据集,如CIFAR-10(10类)、ImageNet(大规模视觉识别)、MNIST(手写数字)等,强调它们的类别、特点和在训练模型中的重要性。
摘要由CSDN通过智能技术生成

一、CIFAR-10

CIFAR-10 数据集(加拿大高级研究所,10 个类别)是 Tiny Images 数据集的子集,由 60000 张 32x32 彩色图像组成。 这些图像标有 10 个相互排斥的类别之一:飞机、汽车(但不是卡车或皮卡车)、鸟、猫、鹿、狗、青蛙、马、船和卡车(但不是皮卡车)。 每类有 6000 张图像,每类有 5000 张训练图像和 1000 张测试图像。

判断图像是否属于某个类的标准如下:

类名应该位于“这张图片中是什么?”这个问题的可能答案列表中的前列。
图像应该逼真。 贴标机被指示拒绝线条图。
该图像应仅包含该类所引用的对象的一个突出实例。 只要贴标签者仍然清楚该物体的身份,该物体可能会被部分遮挡或从不寻常的角度看到。

在这里插入图片描述

二、ImageNet

ImageNet 数据集包含根据 WordNet 层次结构的 14,197,122 个带注释的图像。 自 2010 年以来,该数据集被用于 ImageNet 大规模视觉识别挑战赛 (ILSVRC),这是图像分类和对象检测的基准。 公开发布的数据集包含一组手动注释的训练图像。 还发布了一组测试图像,但保留了手动注释。 ILSVRC 注释分为两类之一:(1)图像级注释,用于表示图像中是否存在对象类的二进制标签,例如“该图像中有汽车”但“没有老虎, ” 和 (2) 图像中对象实例周围的紧密边界框和类标签的对象级注释,例如,“有一把螺丝刀,其中心位置为 (20,25),宽度为 50 像素,高度为 30 像素 ”。 ImageNet 项目不拥有图像的版权,因此仅提供图像的缩略图和 URL。

非空 WordNet 同义词集总数:21841
图片总数:14197122
带边界框注释的图像数量:1,034,908
具有 SIFT 特征的同义词集数量:1000
具有SIFT特征的图像数量:120万张

在这里插入图片描述

三、MNIST

MNIST 数据库(修改后的国家标准与技术研究所数据库)是大量手写数字的集合。 它有一个包含 60,000 个示例的训练集和一个包含 10,000 个示例的测试集。 它是更大的 NIST 特别数据库 3(由美国人口普查局员工书写的数字)和特别数据库 1(由高中生书写的数字)的子集,其中包含手写数字的单色图像。 这些数字已经过尺寸标准化并位于固定尺寸图像的中心。 来自 NIST 的原始黑白(双层)图像经过尺寸标准化以适合 20x20 像素框,同时保留其纵横比。 由于归一化算法使用的抗锯齿技术,生成的图像包含灰度级。 通过计算像素的质心并平移图像以将该点定位在 28x28 场的中心,图像在 28x28 图像中居中。

在这里插入图片描述

四、CIFAR-100

CIFAR-100 数据集(加拿大高级研究所,100 个类别)是 Tiny Images 数据集的子集,由 60000 张 32x32 彩色图像组成。 CIFAR-100 中的 100 个类分为 20 个超类。 每类有 600 张图像。 每个图像都带有一个“精细”标签(它所属的类)和一个“粗略”标签(它所属的超类)。 每类有 500 张训练图像和 100 张测试图像。

判断图像是否属于某个类的标准如下:

类名应该位于“这张图片中是什么?”这个问题的可能答案列表中的前列。
图像应该逼真。 贴标机被指示拒绝线条图。
该图像应仅包含该类所引用的对象的一个突出实例。
只要贴标签者仍然清楚该物体的身份,该物体可能会被部分遮挡或从不寻常的角度看到。

在这里插入图片描述

五、SVHN (Street View House Numbers)

街景门牌号 (SVHN) 是一个数字分类基准数据集,其中包含从门牌照图片中裁剪出的 600,000 个 32×32 RGB 印刷数字(从 0 到 9)图像。 裁剪后的图像以感兴趣的数字为中心,但附近的数字和其他干扰因素保留在图像中。 SVHN 具有三组:训练集、测试集和包含 530,000 张图像的额外集,这些图像难度较低,可用于帮助训练过程。

在这里插入图片描述

六、CelebA (CelebFaces Attributes Dataset)

CelebFaces Attributes 数据集包含来自 10,177 位名人的 202,599 张尺寸为 178×218 的脸部图像,每个图像都用 40 个二进制标签进行注释,指示头发颜色、性别和年龄等面部属性。

在这里插入图片描述

七、Fashion-MNIST

Fashion-MNIST 是一个数据集,由 10 个类别的 70,000 个时尚产品的 28×28 灰度图像组成,每个类别有 7,000 张图像。 训练集有 60,000 张图像,测试集有 10,000 张图像。 Fashion-MNIST 与原始 MNIST 共享相同的图像大小、数据格式以及训练和测试分割的结构。

在这里插入图片描述

八、CUB-200-2011 (Caltech-UCSD Birds-200-2011)

Caltech-UCSD Birds-200-2011 (CUB-200-2011) 数据集是细粒度视觉分类任务中使用最广泛的数据集。 它包含属于鸟类的 200 个子类别的 11,788 张图像,其中 5,994 张用于训练,5,794 张用于测试。 每张图像都有详细的注释:1 个子类别标签、15 个零件位置、312 个二进制属性和 1 个边界框。 文本信息来自 Reed 等人。他们通过收集细粒度的自然语言描述来扩展 CUB-200-2011 数据集。 每幅图像收集十个单句描述。 自然语言描述是通过Amazon Mechanical Turk(AMT)平台收集的,要求至少10个单词,不包含任何子类别和操作信息。

在这里插入图片描述

九、Places

Places 数据集旨在用于场景识别,包含超过 250 万张图像,涵盖超过 205 个场景类别,每个类别超过 5,000 张图像。

在这里插入图片描述

十、STL-10 (Self-Taught Learning 10)

STL-10 是源自 ImageNet 的图像数据集,广泛用于评估无监督特征学习或自学学习的算法。 除了 100,000 张未标记图像外,它还包含来自 10 个对象类(例如鸟、猫、卡车)的 13,000 张标记图像,其中 5,000 张图像被划分用于训练,其余 8,000 张图像用于测试。 所有图像均为96×96像素大小的彩色图像。

在这里插入图片描述

以下是一个简单的计算机视觉图像分类代码,使用了PyTorch框架和CIFAR-10数据集: ```python import torch 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) classes = ('plane', 'car', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck') # 定义神经网络 import torch.nn as nn import torch.nn.functional as F class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.conv1 = nn.Conv2d(3, 6, 5) self.pool = nn.MaxPool2d(2, 2) self.conv2 = nn.Conv2d(6, 16, 5) self.fc1 = nn.Linear(16 * 5 * 5, 120) self.fc2 = nn.Linear(120, 84) self.fc3 = nn.Linear(84, 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, 16 * 5 * 5) x = F.relu(self.fc1(x)) x = F.relu(self.fc2(x)) x = self.fc3(x) return x net = Net() # 定义损失函数和优化器 import torch.optim as optim criterion = nn.CrossEntropyLoss() optimizer = optim.SGD(net.parameters(), lr=0.001, momentum=0.9) # 训练网络 for epoch in range(2): # 多次循环遍历数据集 running_loss = 0.0 for i, data in enumerate(trainloader, 0): # 获取输入 inputs, labels = data # 梯度清零 optimizer.zero_grad() # 正向传播,反向传播,优化 outputs = net(inputs) loss = criterion(outputs, labels) loss.backward() optimizer.step() # 打印统计信息 running_loss += loss.item() if i % 2000 == 1999: # 每2000个小批量数据打印一次 print('[%d, %5d] loss: %.3f' % (epoch + 1, i + 1, running_loss / 2000)) running_loss = 0.0 print('Finished Training') # 测试网络 correct = 0 total = 0 with torch.no_grad(): for data in testloader: images, labels = data outputs = net(images) _, predicted = torch.max(outputs.data, 1) total += labels.size(0) correct += (predicted == labels).sum().item() print('Accuracy of the network on the 10000 test images: %d %%' % ( 100 * correct / total)) # 输出每个类别的准确率 class_correct = list(0. for i in range(10)) class_total = list(0. for i in range(10)) with torch.no_grad(): for data in testloader: images, labels = data outputs = net(images) _, predicted = torch.max(outputs, 1) c = (predicted == labels).squeeze() for i in range(4): label = labels[i] class_correct[label] += c[i].item() class_total[label] += 1 for i in range(10): print('Accuracy of %5s : %2d %%' % ( classes[i], 100 * class_correct[i] / class_total[i])) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旅途中的宽~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值