Content:
- 1. DataLoader
- 2. Dataset
- 3. 图像预处理——transforms
- (1) transforms.CenterCrop 从图像中心裁剪尺寸为size的图片
- (2) transforms.RandomCrop 从图像中随机裁剪出尺寸为size的图片
- (3) transforms.RandomResizedCrop 随机大小、长宽比裁剪图片
- (4) transforms.FiveCrop/TenCrop 在图像的上下左右及中心裁剪出尺寸为size的5/10张图片
- (5) transforms.RandomHorizontalFlip/RandomVerticalFlip 依概率水平或垂直翻转图片
- (6) transforms.RandomRotation
- (7) transforms.Pad
- (8) transforms.ColorJitter 调整亮度、对比度、饱和度和色相
- (9) transforms.RandomAffine 对图像进行仿射变换
- (10) transforms.RandomErasing 对图像进行随机遮挡
- (11) transforms.Lambda 用户自定义的lambda方法
- (12) transforms.Resize
- (13) transforms.ToTensor 转换成tensor
- (14) transforms.Normalize(mean, std) 数据标准化,即转换成标准正态分布,使更容易收敛
- (15) 自定义图像增强方法
- (16) 自定义transforms Compose([...]) 要素
1. DataLoader
torch.utils.data.DataLoader
(dataset,
batch_size=1,
shuffle=False,
sampler=None,
batch_sampler=None,
num_workers=0,
collate_fn=None,
pin_memory=False,
drop_last=False,
timeout=0,
worker_init_fn=None,
multiprocessing_context=None)
2. Dataset
torch.utils.data.Dataset
eg:
class Dataset(object):
def __getitem__(self, index):
raise NotImplementedError
def __add__(self, other):
return ConcatDataset([self, other])
3. 图像预处理——transforms
torchvision.transforms
(1) transforms.CenterCrop 从图像中心裁剪尺寸为size的图片
(2) transforms.RandomCrop 从图像中随机裁剪出尺寸为size的图片
(3) transforms.RandomResizedCrop 随机大小、长宽比裁剪图片
(4) transforms.FiveCrop/TenCrop 在图像的上下左右及中心裁剪出尺寸为size的5/10张图片
(5) transforms.RandomHorizontalFlip/RandomVerticalFlip 依概率水平或垂直翻转图片
(6) transforms.RandomRotation
(degress, # 旋转角度
resample=False, # 重采样方法
expand=False, # 是否扩大图片
center=None) 随机旋转图片
(7) transforms.Pad
(padding, # 设置填充大小
fill=0,
padding_mode='constant' # 填充模式[constant, edge, reflect, symmetric]
) 对图像边缘进行填充
(8) transforms.ColorJitter 调整亮度、对比度、饱和度和色相
(9) transforms.RandomAffine 对图像进行仿射变换
(一种二维的线性变换,由五种【旋转、平移、缩放、错切、翻转】基本原子变换构成)
(10) transforms.RandomErasing 对图像进行随机遮挡
(11) transforms.Lambda 用户自定义的lambda方法
(12) transforms.Resize
(size, # size:[h,w]
interpolation=2) # interpolation 默认 PIL.Image.BILINEAR