pytorch 图像预处理transforms
from torchvision.transforms import transforms
transforms.Compose()
作用:将一系列的transforms有序组合,实现时按照这些方法依次对图像操作。
①transforms.RandomResizedCrop(int size) 随机裁剪
②transforms.Resize((int width, int height)) 等比例缩放
注意参数为元组
③transforms.CenterCrop(224) 中心裁剪
④transforms.Normalize([.485, .456, .406], [.229, .224, .225]) 数据标准化
作用:将三个图像通道的数据分别标准化为均值为第一个列表,方差为第二个列表得到数据
⑤transforms.ToTensor() 将图像转换为Tensor类型
步骤五要在四前
举例:
data_transform = {
'train': transforms.Compose([transforms.RandomResizedCrop(224),
transforms.RandomHorizontalFlip(),
transforms.ToTensor(),
transforms.Normalize([.485, .456, .406], [.229, .224, .225])]),
'val': transforms.Compose([transforms.Resize(256),
transforms.CenterCrop(224),
transforms.ToTensor(),
transforms.Normalize([.485, .456, .406], [.229, .224, .225])])
}
图像的显示与转换
显示Image类型的图像
import matplotlib.pyplot as plt
plt.imshow(image)
plt.show()
Tensor类型转换为Image <class 'PIL.Image.Image'>
toPIL = transforms.ToPILImage()
image = toPIL(image)
图像数据集的读取
datasets.ImageFolder 数据集读入
from torchvision import datasets
train_dataset = datasets.ImageFolder(root=image_path + r"\train",
transform=data_transform['train'])
train_dataset.getitem(int index)获取图像(Tensor)和标签
image,label = train_dataset.__getitem__(1)