前言
对于著名的数据集比如mnist,像Tensorflow、pytorch这样的流行框架已把它们集成到相关模块中,使用时一至几行简单的代码就能调用。但往往我们需要在自己的数据集上完成一些操作,这篇博客就旨在以单标签图像分类为例,浅谈一下如何使用pytorch准备自己的数据,如有错误,敬请斧正。
我所做的是一个室外图像的天气分类任务,类别只有sunny和cloudy两类。在这个例子中我们不需要提供额外的txt或其他形式的文件来将图片和标签对应起来,但需要将数据集按以下结构组织起来。
训练集和验证集(当然还可以有测试集)需要分开,每个split下面各个类别的图片也要分开,并且文件夹的名字最好就是类别名称。(关于使用pytorch进行回归或多标签分类任务本人还未研究过,这里就暂时不作介绍了)
下面就开始讲代码了,首先把全部代码贴出来,然后再细致解释一下。
import torch
import torchvision
from torchvision import datasets, transforms
import matplotlib.pyplot as plt
import numpy as np
import os
# Data augmentation and normalization for training
# Just normalization for validation
data_transforms = {
'train': transforms.Compose([
transforms.RandomSizedCrop(224),
transforms.RandomHorizontalFlip(),
transforms.ToTensor(),
transforms.Normalize([0.485, 0.456, 0.406], [0.229,