Environment
- OS: macOS Mojave
- Python version: 3.7
- PyTorch version: 1.4.0
- IDE: PyCharm
0. 写在前面
对于计算机视觉深度学习任务,对数据的处理包括
- 划分数据集,将数据集划分为划分训练集、验证集、测试集;
- 预处理,对图像进行数据增强和标准化;
- 读取,读取一个 batch 的数据输入模型。
PyTorch 读取数据进行训练时,要求数据按照特定的目录结构放好,所以划分数据集就是要将数据整理为特定的目录格式。
1. 将图像按标签分类放入不同子目录
到手的训练图像数据集有时候并未是方便 PyTorch 读取的目录格式。以 TinyMind人民币面值识别 任务的训练集为例,共有 39620 张图片,train_face_value_label.csv 中为每张图片对应的标签信息
├── train
│ ├── 39620 images.jpeg
└── train_face_value_label.csv
编写一个 categorise.py 按类别存放到不同目录中,形成以下目录结构
├── categorise.py
├── train
│ ├── 0.1
│ │ └── 4233 images.jpg
│ ├── 0.2
│ │ └── 4373 images.jpg
│ ├── 0.5
│ │ └── 4407 images.jpg
│ ├── 1.0
│ │ └── 4424 images.jpg
│ ├── 2.0
│ │ └── 4411 images.jpg
│ ├── 5.0
│ │ └── 4413 images.jpg
│ ├── 10.0
│ │ └── 4283 images.jpg
│ ├── 50.0
│ │ └── 4408 images.jpg
│ ├── 100.0
│ │ └── 4668 images.jpg
└── train_face_value_label.csv
import os
import time
import shutil
import pandas as pd
label_path = os.path.join(os.curdir, 'train_face_value_label.csv')
labels = pd.read_csv(label_path)
# move each image to the specified-class dir
since = time.time()
data_dir = os.path.join(os.curdir