1. 数据集目录结构
数据集按类别放在不同的子文件夹中。
示例结构:
/path/to/hotdog/
train/
hotdog/
img1.jpg
img2.jpg
...
not-hotdog/
img1.jpg
img2.jpg
...
test/
hotdog/
img1.jpg
img2.jpg
...
not-hotdog/
img1.jpg
img2.jpg
...
2. 加载数据集
使用 torchvision.datasets.ImageFolder
类加载数据集。
示例代码:
import os
from torchvision import datasets
data_dir = '/path/to/hotdog'
train_imgs = datasets.ImageFolder(os.path.join(data_dir, 'train'))
3. ImageFolder
如何工作
- 递归遍历指定目录中的所有图像文件。
- 子文件夹名称作为类别标签,按字母顺序自动分配标签。
-hotdog
文件夹中的图像标签为0
。
-not-hotdog
文件夹中的图像标签为1
。 - 每个样本以
(image, label)
的形式存储:
-train_imgs[i][0]
是图像数据。
-train_imgs[i][1]
是类别标签。
4. 展示图像示例
从前8个和后8个样本中分别取出图像部分并显示。
示例代码:
from d2l import torch as d2l
hotdogs = [train_imgs[i][0] for i in range(8)]
not_hotdogs = [train_imgs[-i-1][0] for i in range(8)]
d2l.show_images(hotdogs + not_hotdogs, 2, 8, scale=1.4)
核心要点
- 目录结构:按类别组织文件夹。
- 加载数据:使用
ImageFolder
类加载数据集。 - 标签分配:子文件夹名称按字母顺序自动分配标签。
- 访问数据:
-train_imgs[i][0]
获取图像。
-train_imgs[i][1]
获取标签。
这样,你可以很方便地将这个总结保存为 Markdown 文件或笔记。