在深度学习任务中,通常读入数据后,我们都需要对数据做transform操作,最后才将transform后的数据送入模型进行训练测试。
一个完整数据流pipeline可以定义为如下:
读取数据 -> transform -> 模型
本文学习pipeline中的transform部分(torchvision.transforms)。
torchvision.transforms是torchvision中的一个用于数据增强的包,包含了很多transform操作。
torchvision.transforms.Compose(transforms)
作用:将多个transform组合起来使用。
其源码如下:
class Compose(object):
"""Composes several transforms together.
Args:
transforms (list of ``Transform`` objects): list of transforms to compose.
Example:
>>> transforms.Compose([
>>> transforms.CenterCrop(10),
>>> transforms.ToTensor(),
>>> ])
"""
def __init__(self, transforms):
self.transforms = transforms
def __call__(self, img):
for t in self.transforms:
img = t(img)
return img
def __repr__(self):
format_string = self.__class__.__name__ + '('
for t in self.transforms:
format_string += '\n'
format_string += ' {0}'.format(t)
format_string += '\n)'
return format_string
可以看到主要的__call__方法就是对输入图像img循环所有的transform操作。
使用例子:
train_transform = transforms.Compose([
# transforms.RandomGrayscale(),
transforms.Resize((512, 512)),
transforms.RandomAffine(5),

本文详细介绍torchvision.transforms模块,包括各种图像预处理操作如Resize、RandomAffine、RandomHorizontalFlip等,以及如何组合这些操作实现数据增强,提升模型泛化能力。
最低0.47元/天 解锁文章
2073

被折叠的 条评论
为什么被折叠?



