变换是常见的图像变换,其可以适应连接在一起的
C
o
m
p
o
s
e
Compose
Compose,
此外,还有
t
o
r
c
h
v
i
s
i
o
n
.
t
r
a
n
s
f
o
r
m
s
.
f
u
n
c
t
i
o
n
a
l
torchvision.transforms.functional
torchvision.transforms.functional模块,功能转换可以对转换进行细粒度控制,如果您必须构建更复杂的转换管道(例如,在分段任务情况下),这将非常有用类。
torchvision.transforms.Compose(transforms)
- transforms: (Transformes对象列表)要组成的变换列表。
transforms.Compose([
transforms.CenterCrop(10),
transforms.ToTensor(), ])
常见的图像变换
官方文档只将该方法陈列,没有归纳总结,顺序很乱,这里总结一共有四大类,方便大家索引。
-
裁剪(Crop):—中心裁剪:
- transforms.CenterCrop:中心裁剪
- transforms.RandomCrop:随机裁剪
- transforms.RandomResizedCrop:随机长宽比裁剪
- transforms.FiveCrop:上下左右中心裁剪
- transforms.TenCrop:上下左右中心裁剪后翻转
-
翻转和旋转——
- transforms.RandomHorizontalFlip(p=0.5):依概率 p p p水平翻转
- transforms.RandomVerticalFlip(p=0.5):依概率p垂直翻转
- transforms.RandomRotation:随机旋转。
-
图像变换(resize)
- transforms.Resize : 图像变换(resize)
- transforms.Normalize:标准化
- transforms.ToTensor: 转为tensor,并归一化为[0-1]
- transforms.Pad :。填充
- transforms.ColorJitter:修改亮度、对比度和饱和度
- transforms.Grayscale:转灰度图
- transforms.LinearTransformation():线性变换
- transforms.RandomAffine:放射变换
- transforms.RandomGrayscale:依概率 p p p转为灰度图
- transforms.ToPILImage:将数据转换为PILImage
- transforms.Lambda:Apply a user-defined lambda as a transform
-
对transforms操作,使数据增强更灵活,transforms.RandomChoice(transforms),从给定一系列的transform中选一个进行操作,transforms.RandomApply(transforms, p=0.5),
给一个transform加上概率,依概率进行操作:transforms.RandomOrder。将transform中的操作进行随机打乱。
裁剪——Crop
随机裁剪
transforms.RandomCrop
torchvision.transforms.RandomCrop(size,padding = None,pad_if_needed = False,fill = 0,padding_mode ='constant' )
中心裁剪transforms.CenterCrop
torchvision.transforms.CenterCrop(size)
依据给定的
s
i
z
e
size
size从中心裁剪参数,size-(sequence or int).
若为
s
e
q
u
e
n
c
e
sequence
sequence,则为
(
h
,
w
)
(h,w)
(h,w),若为
i
n
t
int
int,则为(size,size).
随机长宽比裁剪:transforms.RandomResizedCrop
torchvision.transforms.RandomResizedCrop(size, scale=(0.08, 1.0), ratio=(0.75, 1.3333333333333333), interpolation=2)
将给定的PIL图像裁剪为随机大小和宽高比。
将原始图像大小变成随机大小(默认值:是原始图像的0.08到1.0倍)和随机宽高比(默认值:3/4到4/3倍)。这种方法最终调整到适当的大小。这通常用于训练Inception网络。
- size:每条边预期输出大小。
- scale:裁剪的原始尺寸大小范围。
- ratio:裁剪的原始宽高比的宽高比范围。
- interpolation - 默认值:PIL.Image.BILINEAR
上下左右中心裁剪:transforms.FiveCrop
torchvision.transforms.FiveCrop(size)
将给定的PIL图像,裁剪为四个角和中央裁剪。
此转换返回图像元组,并且数据集返回的输入和目标数量可能不匹配。
- 对图片进行上下左右和中心裁剪,获得5张图片,返回一个 4 D − t e n s o r 4D-tensor 4D−tensor参数,size- (sequence or int),若为sequence,则为(h,w),若为int,则(size,size)。
上下左右中心裁剪后翻转
- transforms.TenCrop
torchvision.transforms.TenCrop(size, vertical_flip=False)
将给定的PIL图像裁剪为四个角,中央裁剪加上这些的翻转版本(默认使用水平翻转)。
此转换返回图像元组,并且数据集返回的输入和目标数量可能不匹配。
- size(sequence 或int) -作物的所需输出大小。如果size是int而不是像(h,w)这样的序列,则进行正方形裁剪(大小,大小)。
- vertical_flip(bool) - 使用垂直翻转而不是水平翻转
转化为tensor transforms.ToTensor
torchvision.transforms.ToTensor
功能:将PILImage或者
n
d
a
r
r
a
y
ndarray
ndarray,转换为
t
e
n
s
o
r
tensor
tensor,
并且归一化至
[
0
−
1
]
[0-1]
[0−1],
注意事项:归一化至[0-1]是直接除以255,若自己的ndarray数据尺度有变化,则需要自行修改。