常用数据集整理(持续更新ing)

常用数据集整理(持续更新ing)

    在做实验过程中经常用到的数据集整理一下,按照学习过程中遇到的数据集的先后顺序进行整理,希望能对科研有所帮助。本博文将随着学习过程持续性更新,有其他常用数据集的,可以在下方留言,持续整理和补充。分享一个拥有较多数据集的网站:paper with code

目录

  • 常用数据集整理(持续更新ing)
  • 1. ImageNet
    • 1.1 ImageNet简介
    • 1.2 ImageNet下载方式
    • 1.3 ImageNet数据集样例
    • 1.4 ImageNet数据集应用举例
  • 2. CIFAR-10
    • 2.1 CIFAR-10简介
    • 2.2 CIFAR-10下载方式
    • 2.3 CIFAR-10数据集样例
    • 2.4 CIFAR-10数据集应用举例

1. ImageNet

1.1 ImageNet简介

    ImageNet在2009年计算机视觉与模式识别(CVPR)会议上发布。目前,ImageNet整个数据集包含14,197,122 张图片, 21841 类(截至2021.6.22),其中常用的子集包含1000类,120万张图片。
    ImageNet就像一个网络一样,拥有多个Node(节点)。每一个node相当于一个item或者subcategory。据官网消息,一个node含有至少500个对应物体的可供训练的图片/图像。它实际上就是一个巨大的可供图像/视觉训练的图片库。
    ImageNet的结构基本上是金字塔型:目录->子目录->图片集。
    Imagenet数据集是目前深度学习图像领域应用得非常多的一个领域,关于图像分类、定位、检测等研究工作大多基于此数据集展开。

1.2 ImageNet下载方式

    ImageNet数据下载地址:ImageNet数据下载

1.3 ImageNet数据集样例

    ImageNet数据图像如下所示:
常用数据集整理(持续更新ing)_第1张图片

1.4 ImageNet数据集应用举例

    ImageNet数据集可以用来进行图像分类实验,具体论文包括:
[1]Mark Chen, Alec Radford, Rewon Child, Jeff Wu, and Heewoo Jun. Generative pretraining from pixels. In ICML, 2020.
[2]J. Deng, W. Dong, R. Socher, L.J. Li, Kai Li, and Li Fei-Fei (2009): ImageNet: A large-scale hierarchical image database. In IEEE Conference on Computer Vision and Pattern Recognition, 2009. CVPR 2009. 248 – 255.

2. CIFAR-10

2.1 CIFAR-10简介

    CIFAR-10 是由 Hinton 的学生 Alex Krizhevsky 和 Ilya Sutskever 整理的一个用于识别普适物体的小型数据集。一共包含 10 个类别的 RGB 彩色图 片:飞机( airplane )、汽车( automobile )、鸟类( bird )、猫( cat )、鹿( deer )、狗( dog )、蛙类( frog )、马( horse )、船( ship )和卡车( truck )。图片的尺寸为 32×32 ,数据集中一共有 50000 张训练图片和 10000 张测试图片。
    该数据集共有60000张彩色图像,这些图像是32*32,分为10个类,每类6000张图。这里面有50000张用于训练,构成了5个训练批,每一批10000张图;另外10000用于测试,单独构成一批。测试批的数据里,取自10类中的每一类,每一类随机取1000张。抽剩下的就随机排列组成了训练批。注意一个训练批中的各类图像并不一定数量相同,总的来看训练批,每一类都有5000张图。

2.2 CIFAR-10下载方式

    CIFAR-10数据集一共有3种版本,(python,matlab,binary version 适用于C语言)
    http://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz
    http://www.cs.toronto.edu/~kriz/cifar-10-matlab.tar.gz
    http://www.cs.toronto.edu/~kriz/cifar-10-binary.tar.gz

2.3 CIFAR-10数据集样例

    CIFAR-10数据集图像如下所示:
常用数据集整理(持续更新ing)_第2张图片

2.4 CIFAR-10数据集应用举例

    下载python版本的数据之后的文件如下所示:
常用数据集整理(持续更新ing)_第3张图片
    读取图像数据至direction中的代码:

def unpickle(file):
    import pickle
    with open(file, 'rb') as fo:
        dict = pickle.load(fo, encoding='bytes')
    return dict

这样的话,每个batch文件包含一个字典,每个字典包含有:
Data
  一个10000×3072的numpy数组,数据类型是无符号整形uint8。这个数组的每一行存储了32×32大小的彩色图像(32×32×3通道=3072)。前1024个数是red通道,然后分别是green,blue。另外,图像是以行的顺序存储的,也就是说前32个数就是这幅图的像素矩阵的第一行。
Labels
  一个范围在0-9的含有10000个数的列表(一维的数组)。第i个数就是第i个图像的类标。
batches.meta
    数据集除了6个batch之外,还有一个文件batches.meta。它包含一个python字典对象,内容有:一个包含10个元素的列表,每一个描述了labels array中每个数字对应类标的名字。比如:label_names[0] == “airplane”, label_names[1] == “automobile”。
    通过上述代码段,以读取‘data_batch_1’文件为例,阐述读到的数据的格式。通过代码读取的数据存储在一个dictionary类型的变量dict中,将dict的内容进行输出,得到的结果格式如下(下图纯原创!):
常用数据集整理(持续更新ing)_第4张图片
    接下来需要思考的是:如何将图的数据文件还原为原图像。分别生成训练数据集和测试数据集,代码如下:

# coding :UTF-8
# 文件功能: 代码实现CIFAR-10数据文件转换为原图像的功能
# 开发人员: dpp
# 开发时间: 2021/6/23 11:19 下午
# 文件名称: CIFAR-10-transform.py
# 开发工具: PyCharm

import imageio  # 引入imageio包
import numpy as np


# 解压 返回解压后的字典
def unpickle(file):
    import pickle as pk
    fo = open(file, 'rb')
    dict = pk.load(fo, encoding='iso-8859-1')
    fo.close()
    return dict


# 生成训练集图片
for j in range(1, 6):
    dataName = "CIFAR-10-datafile/data_batch_" + str(j)  # 读取CIFAR-10-datafile文件夹目录下的data_batch1~data_batch5文件。
    Xtr = unpickle(dataName)
    print(dataName + " is loading...")

    for i in range(0, 10000):
        img = np.reshape(Xtr['data'][i], (3, 32, 32))  # Xtr['data']为图片二进制数据
        img = img.transpose(1, 2, 0)  # 读取image
        picName = 'CIFAR-10-train/' + str(Xtr['labels'][i]) + '_' + str(i + (j - 1) * 10000) + '.jpg'
        # Xtr['labels']为图片的标签,值范围0-9,本文中,train文件夹需要存在,并与脚本文件在同一目录下。
        imageio.imsave(picName, img)
    print(dataName + " loaded.")

print("test_batch is loading...")

# 生成测试集图片
testXtr = unpickle("CIFAR-10-datafile/test_batch")
for i in range(0, 10000):
    img = np.reshape(testXtr['data'][i], (3, 32, 32))
    img = img.transpose(1, 2, 0)
    picName = 'CIFAR-10-test/' + str(testXtr['labels'][i]) + '_' + str(i) + '.jpg'
    imageio.imsave(picName, img)
print("test_batch loaded.")

    实验文件结构如下所示:
常用数据集整理(持续更新ing)_第5张图片
    转换成原始图片之后的训练数据集train为:
常用数据集整理(持续更新ing)_第6张图片

    转换成原始图片之后的测试数据集test为:
常用数据集整理(持续更新ing)_第7张图片
     (待更新。。。)

你可能感兴趣的:(深度学习入门基础,计算机视觉,深度学习)