ubyte 数据集的制作【2月更文挑战第07天】

简介: 【2月更文挑战第07天】

image.png
t10k-images-idx3-ubyte
将文件夹中的图片处理成二进制数据集(如 MNIST 数据集的格式)是一个常见的需求,特别是在需要将数据集用于某些特定的框架或工具时。以下是一个详细的步骤指南,展示如何将文件夹中的图片和对应的标签转换为二进制格式。
步骤 1:准备数据
假设你的数据集结构如下:
复制
dataset/
├── train/
│ ├── 0/
│ ├── 1/
│ ├── 2/
│ └── ...
└── val/
├── 0/
├── 1/
├── 2/
└── ...
每个文件夹中的图片对应一个类别。
步骤 2:读取图片和标签
使用 Python 的 PIL 或 OpenCV 库读取图片,并将图片和标签存储到内存中。
Python复制
import os
from PIL import Image
import numpy as np

def load_images_and_labels(data_dir, target_size=(28, 28)):
images = []
labels = []
for label, folder in enumerate(sorted(os.listdir(data_dir))):
folder_path = os.path.join(data_dir, folder)
if not os.path.isdir(folder_path):
continue
for filename in os.listdir(folder_path):
if filename.endswith('.png') or filename.endswith('.jpg'):
image_path = os.path.join(folder_path, filename)
image = Image.open(image_path).convert('L') # 转换为灰度图
image = image.resize(target_size) # 调整大小
images.append(np.array(image, dtype=np.uint8))
labels.append(label)
return np.array(images), np.array(labels)

示例

train_images, train_labels = load_images_and_labels('dataset/train')
val_images, val_labels = load_images_and_labels('dataset/val')
步骤 3:保存为二进制文件
将图片和标签保存为二进制文件,格式类似于 MNIST 数据集。
Python复制
import struct

def save_mnist(images, labels, image_file_path, label_file_path):
with open(image_file_path, 'wb') as image_file, open(label_file_path, 'wb') as label_file:

    # 写入图片文件头
    image_file.write(struct.pack('>IIII', 2051, len(images), images.shape[1], images.shape[2]))
    # 写入标签文件头
    label_file.write(struct.pack('>II', 2049, len(labels)))
    # 写入图片数据
    for image in images:
        image_file.write(image.tobytes())
    # 写入标签数据
    label_file.write(labels.tobytes())
AI 代码解读

示例

save_mnist(train_images, train_labels, 'train-images-idx3-ubyte', 'train-labels-idx1-ubyte')
save_mnist(val_images, val_labels, 't10k-images-idx3-ubyte', 't10k-labels-idx1-ubyte')
步骤 4:验证保存的文件
你可以使用之前提到的读取 MNIST 数据集的代码来验证保存的文件是否正确。
Python复制
def read_mnist_images(file_path):
with open(file_path, 'rb') as f:
magic, num, rows, cols = struct.unpack(">IIII", f.read(16))
images = np.frombuffer(f.read(), dtype=np.uint8).reshape(num, rows, cols)
return images

def read_mnist_labels(file_path):
with open(file_path, 'rb') as f:
magic, num = struct.unpack(">II", f.read(8))
labels = np.frombuffer(f.read(), dtype=np.uint8)
return labels

示例

train_images = read_mnist_images('train-images-idx3-ubyte')
train_labels = read_mnist_labels('train-labels-idx1-ubyte')
val_images = read_mnist_images('t10k-images-idx3-ubyte')
val_labels = read_mnist_labels('t10k-labels-idx1-ubyte')

print(train_images.shape, train_labels.shape)
print(val_images.shape, val_labels.shape)

6个月前
t10k-labels-idx1-ubyte

6个月前
train-images-idx3-ubyte

6个月前
train-labels-idx1-ubyte

6个月前
t10k-images.idx3-ubyte

7.84MB
6个月前
下载
t10k-labels.idx1-ubyte

10.01KB
6个月前
下载
train-images.idx3-ubyte

目录
打赏
0
16
16
0
1190
分享
相关文章
48小时封镜!这是一部完全由AI制作的科幻电影
在伦敦科幻电影节的“48小时电影挑战”,导演Oscar Sharp和AI研究员Ross Goodwin带来一部全部制作过程由AI导演的实验性影片《Zone Out》。影片采用“换脸”技术,使用神经网络生成的对话和配音等,整个制作过程都由被称为Benjamin的AI进行处理。
2415 0
从源码学习Java动态代理|8月更文挑战
从源码学习Java动态代理|8月更文挑战
AIGC生产游戏宝宝图片
有一个叫做"龙族"的种族。这个种族拥有着强大的力量和独特的技能,其中最引人注目的就是龙族的龙宝宝。
202 0
|
11月前
|
Sora对电影制作的影响
【2月更文挑战第9天】Sora对电影制作的影响
98 2
Sora对电影制作的影响
宣传技能培训2——《图片后期处理与制作》光影魔术师:一小时速成Lightroom图片后期软件 + 案例分析
宣传技能培训2——《图片后期处理与制作》光影魔术师:一小时速成Lightroom图片后期软件 + 案例分析
174 0
如何用ChatGPT做品牌联名方案策划?
该场景对应的关键词库(15个): 品牌、个人IP、社交话题、联名策划方案、调研分析、市场影响力、资源互补性、产品体验、传播话题、视觉形象设计、合作职权分配、销售转化、曝光目标、宣发渠道、品牌形象
基于 PPDiffusers 训练 AIGC 趣味模型【中国美食与花】
基于 PPDiffusers 训练 AIGC 趣味模型【中国美食与花】
142 0
【3D游戏建模全流程】使用Maya制作赛车模型
本文分享了使用Maya制作越野赛车模型的过程,并展示如何制作橡胶轮胎。
271 0
【3D游戏建模全流程】使用Maya制作赛车模型

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等