无论是采用迁移学习的方法来精调网络模型还是从头开始训练网络模型,首先要解决的就是图像数据的读入,Pytorch使用DataLoader来实现图像数据读入,Pytorch的数据读入主有两种方式:
1.根据文件夹来实现图像与标签数据的读入,定义两个文件夹train、val,分别用来存储训练数据和测试数据,每类图像分别存储在单独的文件夹下,文件目录结构如下所示:
实现代码如下所示:load_data_by_folder.py
from __future__ import print_function, division
import torch
from torchvision import datasets, models, transforms
import os
# 定义数据预处理步骤
data_transforms = {
'train': transforms.Compose([
# 随机在图像上裁剪出224*224大小的图像
transforms.RandomResizedCrop(224),
# 将图像随机翻转
transforms.RandomHorizontalFlip(),
# 将图像数据,转换为网络训练所需的tensor向量
transforms.ToTensor(),
# 图像归一化处理
# 个人理解,前面是3个通道的均值,后面是3个通道的方差
transforms.N