常见用于联邦学习的数据集【FL】【Datasets】

数据集

在联邦学习中,模型训练的数据集通常分布在多个客户端设备上。以下是一些常用于联邦学习模型训练的数据集:

CIFAR-10/CIFAR-100:

CIFAR-10CIFAR-100 是两个广泛使用的图像数据集,常用于图像分类和计算机视觉任务。它们由加拿大多伦多大学的Alex Krizhevsky等人创建,旨在提供一个相对简单但具有挑战性的图像分类任务基准。

CIFAR-10

  • 内容:CIFAR-10包含60,000张32x32像素的彩色图像,分为10个类别,每个类别有6,000张图像。

  • 数据分布

    • 训练集:50,000张图像(每个类别5,000张)
    • 测试集:10,000张图像(每个类别1,000张)

CIFAR-100

  • 内容:CIFAR-100与CIFAR-10类似,也包含60,000张32x32像素的彩色图像,但它分为100个类别,每个类别有600张图像。
  • 数据分布
    • 训练集:50,000张图像(每个类别500张)
    • 测试集:10,000张图像(每个类别100张)

特点

  1. 图像尺寸:两者的数据集都包含32x32像素的图像。这种较小的尺寸使得数据集适合快速实验和基准测试。
  2. 类别数量:CIFAR-10只有10个类别,适用于较简单的分类任务;而CIFAR-100有100个类别,提供了更高的挑战性。
  3. 用途:CIFAR-10和CIFAR-100常用于训练和评估图像分类模型,特别是在深度学习和计算机视觉领域。它们也是许多算法的基准数据集,用于比较不同模型的性能。
    你可以从以下链接下载 CIFAR-10 和 CIFAR-100 数据集:

CIFAR-10 :

下载好解压后显示如下:
在这里插入图片描述
在 CIFAR 数据集中,解压后的 batches.meta 文件用于存储数据集中类别的信息。具体来说,batches.meta 文件包含以下内容:

  1. 标签名称:文件中包含了数据集中所有类别的名称。这些名称对应于图像数据中的标签,帮助将模型预测的数字标签与实际类别名称进行匹配。

  2. 类别索引:文件还包含了每个类别的索引,这些索引与训练数据和测试数据中的标签值相对应。每个图像的标签是一个整数值,表示该图像的类别,batches.meta 文件帮助将这些整数标签转换为易于理解的类别名称。

在 CIFAR-10 中,batches.meta 文件包含10个类别名称,例如“飞机”、“汽车”等;而在 CIFAR-100 中,它包含100个类别的名称。

示例内容

batches.meta

batches.meta 文件的内容通常是一个 Python 的 pickle 格式文件,你可以用 Python 读取它,代码示例如下:

import pickle

# 读取 batches.meta 文件
with open('batches.meta', 'rb') as f:
    meta = pickle.load(f, encoding='latin1')

# 输出类别名称
print(meta['label_names'])

在 CIFAR-10 中,meta['label_names'] 将输出:

['airplane', 'automobile', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck']

在这里插入图片描述

在 CIFAR-100 中,meta['label_names'] 将输出100个类别名称,如:

['apple', 'aquarium_fish', 'baby', 'banana', 'beetle', ...]
data_batch_1data_batch_5
  • 内容:这些文件包含训练集的数据。每个文件存储了一部分训练数据,共5个批次(batches),每个批次包含了 10,000 张 32x32 像素的彩色图像。每张图像都有一个对应的标签,表示它属于哪个类别。在这里插入图片描述

  • 结构

    • 数据:这些文件的每个记录包括图像数据和标签。图像数据存储为 32x32 的像素数组,每个像素有三个值(RGB)。
    • 标签:每张图像都有一个整数标签,指示它的类别。标签范围是 0 到 9,对于 CIFAR-10 数据集。
test_batch
  • 内容test_batch 文件包含了测试集的数据。这些数据与训练集的数据类似,但用于模型的评估。测试集包含 10,000 张图像,每张图像也有一个标签。
    在这里插入图片描述

  • 结构:和训练集的数据批次文件类似,test_batch 文件存储图像数据和标签。数据的存储格式与 data_batch_1data_batch_5 是相同的。

  • 文件格式:你可以用类似的方式读取 test_batch 文件,代码示例如下:

图片转换Python脚本:

下面我将教大家如何将图片转换为.jpg格式:

from PIL import Image
import numpy as np
import pickle
import os

# 解压缩,返回解压后的字典
def unpickle(file):
    with open(file, 'rb') as fo:
        data_dict = pickle.load(fo, encoding='latin1')
    return data_dict

# 保存图像
def save_image(img_array, filename):
    img = Image.fromarray(img_array)
    img.save(filename)

# 确保输出目录存在
if not os.path.exists('train'):
    os.makedirs('train')
if not os.path.exists('test'):
    os.makedirs('test')

# 生成训练集图片
for j in range(1, 6):
    dataName = f"data_batch_{
     j}"  # 读取当前目录下的data_batch文件
    Xtr = unpickle(dataName)
    print(dataName + " is loading...")

    for i in range(0, 10000):
        img = np.reshape(Xtr['data'][i], (3, 32, 32))
        img = img.transpose(1, 2, 0).astype(np.uint8)  # 转换为uint8类型
        picName = f'train/{
     Xtr["labels"][i]}_{
     i + (j - 1) * 10000}.jpg'
        save_image(img, picName)
    print(dataName + " loaded.")

print("test_batch is loading...")

# 生成测试集图片
testXtr = unpickle("test_batch")
for i in range(0, 10000):
    img = np.reshape(testXtr['data']
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Eternity_GQM

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

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

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

打赏作者

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

抵扣说明:

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

余额充值