transforms的二十二个方法(transforms用法非常详细)
创始人
2024-03-25 17:27:13
0

变换是常见的图像变换,其可以适应连接在一起的ComposeComposeCompose,
此外,还有torchvision.transforms.functionaltorchvision.transforms.functionaltorchvision.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):依概率ppp水平翻转
    • 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:依概率ppp转为灰度图
    • 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) 

依据给定的sizesizesize从中心裁剪参数,size-(sequence or int).
若为sequencesequencesequence,则为(h,w)(h,w)(h,w),若为intintint,则为(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张图片,返回一个4D−tensor4D-tensor4D−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或者ndarrayndarrayndarray,转换为tensortensortensor,
并且归一化至[0−1][0-1][0−1],
注意事项:归一化至[0-1]是直接除以255,若自己的ndarray数据尺度有变化,则需要自行修改。

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...