转载自安全验证 - 知乎
这次给大家介绍的 STL10数据集,是图片分类任务早期常用的基准数据集之一,虽然只有10种样本,图片尺寸也偏小,但是标注类型比较平衡,各种种类都有各500张(train)/800张(test),用于模型训练可以达到比较好的准确度。一起来看看。
下载地址:STL-10 dataset
一、数据集简介
发布方:Adam Coates
发布时间:2011
背景:
STL-10数据集是一个用于开发无监督特征学习、深度学习、自监督学习算法的图像识别数据集。
其灵感来自CIFAR-10数据集,每个类别的标注图像数量相比CIFAR-10中的要少,但提供了大量的无标注图像来做无监督预训练,其主要的挑战是利用无标签图像来构建先验知识。
简介:
STL-10的图像来自ImageNet,共有113000张96 x 96分辨率的RGB图像,其中训练集为5000张,测试集为8000张,其余100000张均为无标签图像。
二、数据集详细信息
1. 标注类别
id | name |
1 | airplane |
2 | bird |
3 | car |
4 | cat |
5 | deer |
6 | dog |
7 | horse |
8 | monkey |
9 | ship |
10 | truck |
2. 数据量
训练集包含5000张有标注的图像,每个类别500张,图像来自ImageNet。
测试集包含8000张有标注的图像,每个类别800张,图像来自ImageNet。
无标签集包含100000张无标注的图像,除包含以上10个类别外,还包括其他类别的动物以及车辆,图像来自ImageNet。
3. 训练流程
官方将训练集分为了10个fold,每个fold包含1000张图片。训练时应在每个fold上均训练一次,然后在测试集上评测模型性能。
4. 可视化
三、数据集文件结构解读
1. 目录结构
STL-10 Dataset/
├── train_X.bin #训练集图像数据
├── train_y.bin #训练集图像标注
├── test_X.bin #测试集图像数据
├── test_y.bin #测试集图像数据
├── unlabeled_X.bin #无标签图像数据
├── class_names.txt #数据集类别名称
└── fold_indices.txt #训练集的fold划分信息STL-10 Dataset/
2. 元信息格式
class_names.txt中存储了类别名称信息,每一行对应一个类别,具体内容如下:
airplane
bird
car
cat
deer
dog
horse
monkey
ship
truck
fold_indices.txt中存储了训练集的fold划分信息,每一行对应一个fold所包含的1000张图像的index。index从0开始,对应train_X.bin中的图像顺序。其前三行的部分内容如下:
3629 980 2693 3595 2169 817 2970 3494 1904 4503 3204 4305 1261 1199 ...
2633 4392 2850 4016 2255 3160 4632 891 3531 2671 1340 1651 3493 4439 ...
1355 3916 3348 3417 2726 3245 41 3239 313 1053 4002 3881 3328 3494 ...
...
3. 标注格式
训练集、测试集以及无标签图像的数据均存储在后缀为"_X.bin"的二进制文件中,存储格式为列优先,一次一个通道 (前96x96的值是R通道,接下来的96X96是G通道,最后是B通道),值在0-255之间。
训练集和测试集的标注存储在后缀为"_y.bin"的二进制文件中,值在1-10之间。
#读取数据脚本
import numpy as np
image_path = 'train_X.bin' #test_X.bin/unlabeled_X.bin
label_path = 'train_y.bin' #test_y.bin
with open(image_path, 'rb') as f:
images = np.fromfile(f, dtype=np.uint8)
images = images.reshape(-1, 3, 96, 96).transpose(0, 3, 2, 1)
with open(label_path , 'rb') as f:
labels = np.fromfile(f, dtype=np.uint8)