PyTorch框架中有一个很常用的包:torchvision
torchvision主要由3个子包构成:torchvision.datasets
、torchvision.models
、torchvision.transforms
基本上PyTorch中的resize、crop、normalize等常见的数据预处理及数据增强(data augmentation)操作都可以通过该接口实现。
torchvision.transformas主要涉及两个文件:transformas.py和functional.py,在transformas.py中定义了各种data augmentation的类,在每个类中通过调用functional.py中对应的函数完成data augmentation操作
torchvision.transforms是pytorch中的图像预处理包
一般用Compose把多个步骤整合到一起:
比如说
transforms.Compose([
transforms.CenterCrop(10),
transforms.ToTensor(),
])
这样就把两个步骤整合到一起
接下来介绍transforms中的函数
(1)transforms.Compose就是将transforms组合在一起;
(2)transforms.Normalize使用如下公式进行归一化:
channel=(channel-mean)/std(因为transforms.ToTensor()已经把数据处理成[0,1],那么(x-0.5)/0.5就是[-1.0, 1.0])
这样一来,我们的数据中的每个值就变成了[-1,1]的数了。
Compose()
用来管理各个transform,其中__call__
方法就是对输入img遍历所有的transform操作。
ToTensor()
Convert a PIL Image
or numpy.ndarray
to tensor.
在做数据归一化之前必须要把PIL Image
转成Tensor