目录

变换和增强图像

注意

在 0.15 中,我们在 namespace 中发布了一组新的转换,它们增加了对转换的支持 不仅是图像,还包括边界框、蒙版或视频。这些转换 与当前 API 完全向后兼容,您将看到它们 下面记录的 v2. 前缀。要开始使用这些新的 转换,您可以查看转换 v2:端到端对象检测示例。 请注意,这些转换仍处于 BETA 阶段,虽然我们预计 main 重大变化,部分 API 可能仍会根据用户情况而变化 反馈。请在此处提交您可能有的任何反馈,您也可以检查 走出本期了解 有关我们怀疑可能涉及未来更改的 API 的更多信息。torchvision.transforms.v2

转换是模块中提供的常见图像转换。可以使用 . 大多数转换类都有一个等效的函数:functional 转换可以对 转换。 如果您必须构建更复杂的转换管道,这将非常有用 (例如,在分段任务的情况下)。torchvision.transforms

大多数转换都接受 PIL 图像 和张量图像,尽管有些转换是仅限 PIL 的,有些是 Tensor Only 的 Tensor 中。Conversion 可用于与 Convert 进行相互转换 PIL 图像,或用于转换 dtype 和 range。

接受张量图像的转换也接受批量张量 图像。张量图像是具有形状的张量,其中 是 通道数,分别是图像高度和宽度。一批 Tensor Images 是形状的张量,其中 是一个数字 批次中的图像。(C, H, W)CHW(B, C, H, W)B

张量图像值的预期范围由 张量 dtype 。具有 float dtype 的 Tensor 图像应具有 中的 值。具有整数 dtype 的张量图像应为 在其中 是最大值 可以用该 DTYPE 表示。[0, 1)[0, MAX_DTYPE]MAX_DTYPE

随机转换会将相同的转换应用于所有 图像,但它们将产生不同的转换 跨呼叫。对于跨调用的可重现转换,您可以使用函数转换

以下示例说明了可用转换的用法:

警告

从 v0.8.0 开始,所有的随机变换都使用 torch 默认的随机生成器来采样随机参数。 这是一个向后兼容性的破坏性变化,用户应该按如下方式设置 random 状态:

# Previous versions
# import random
# random.seed(12)

# Now
import torch
torch.manual_seed(17)

请记住,torch 随机生成器和 Python 随机生成器的相同种子不会 产生相同的结果。

转换可脚本性

为了编写转换脚本,请使用 而不是 .torch.nn.Sequential

transforms = torch.nn.Sequential(
    transforms.CenterCrop(10),
    transforms.Normalize((0.485, 0.456, 0.406), (0.229, 0.224, 0.225)),
)
scripted_transforms = torch.jit.script(transforms)

确保仅使用可编写脚本的转换,即使用 lambda 函数且不需要 lambda 函数或 .torch.TensorPIL.Image

对于要与 一起使用的任何自定义转换,它们应派生自 。torch.jit.scripttorch.nn.Module

几何学

(大小[, 插值, max_size, ...])

将输入图像的大小调整为给定的大小。

(大小[, 插值, max_size, ...])

[测试版]将输入的大小调整为给定的大小。

(target_size[, scale_range, ...])

[测试版]根据“Simple Copy-Paste is a Strong Data Augmentation Method for Instance Segmentation”对输入执行大规模抖动。

(min_size[, max_size, ...])

[测试版]随机调整输入的大小。

(min_size, max_size[, ...])

[测试版]随机调整输入的大小。

(大小[, 内边距, pad_if_needed, ...])

在随机位置裁剪给定的图像。

(大小[, 内边距, ...])

[测试版]在随机位置裁剪输入。

(大小[、比例、比例、...])

裁剪图像的随机部分并将其调整为给定大小。

(大小[、比例、比例、...])

[测试版]裁剪输入的随机部分并将其大小调整为给定大小。

([min_scale, max_scale, ...])

[测试版]来自“SSD:Single Shot MultiBox Detector”的随机 IoU 裁剪转换。

(尺寸)

在中心裁剪给定的图像。

(尺寸)

[测试版]裁剪中心的输入。

(尺寸)

将给定的图像裁剪为四个角,并进行中央裁剪。

(尺寸)

[测试版]将图像或视频裁剪为四个角并进行中央裁剪。

(大小[, vertical_flip])

将给定的图像裁剪为四个角,并将中心裁剪加上这些角的翻转版本(默认使用水平翻转)。

(大小[, vertical_flip])

[测试版]将图像或视频裁剪为四个角,并将中心裁剪加上这些的翻转版本(默认使用水平翻转)。

(填充 [, 填充, padding_mode])

用给定的 “pad” 值在给定的图像的所有侧面填充。

(填充 [, 填充, padding_mode])

[测试版]用给定的 “pad” 值填充 input 的所有侧面。

([填充, side_range, p])

[测试版]从“SSD:Single Shot MultiBox Detector”的“缩小”转换。

(度[, 插值, ...])

按角度旋转图像。

(度[, 插值, ...])

[测试版]按角度旋转输入。

(度[, 平移, 刻度, ...])

图像的随机仿射变换保持中心不变。

(度[, 平移, 刻度, ...])

[测试版]随机仿射变换,输入保持中心不变。

([distortion_scale, p, ...])

以给定的概率对给定图像执行随机透视变换。

([distortion_scale, p, ...])

[测试版]以给定的概率对输入执行随机透视变换。

([alpha, sigma, ...])

使用弹性变换变换张量图像。

([alpha, sigma, ...])

[测试版]使用弹性转换转换输入。

([p])

以给定的概率随机水平翻转给定的图像。

([p])

[测试版]以给定的概率水平翻转输入。

([p])

以给定的概率随机垂直翻转给定的图像。

([p])

[测试版]以给定的概率垂直翻转输入。

颜色

([亮度、对比度、...])

随机更改图像的亮度、对比度、饱和度和色相。

([亮度、对比度、...])

[测试版]随机更改图像或视频的亮度、对比度、饱和度和色相。

([亮度, ...])

[测试版]随机扭曲 SSD:Single Shot MultiBox Detector 中使用的图像或视频。

([num_output_channels])

将图像转换为灰度。

([num_output_channels])

[测试版]将图像或视频转换为灰度。

([p])

将图像随机转换为灰度,概率为 p(默认为 0.1)。

([p])

[测试版]将图像或视频随机转换为灰度,概率为 p(默认为 0.1)。

(kernel_size[, 西格玛])

使用随机选择的高斯模糊来模糊图像。

(kernel_size[, 西格玛])

[测试版]使用随机选择的高斯模糊来模糊图像。

([p])

以给定的概率随机反转给定图像的颜色。

([p])

[测试版]以给定的概率反转给定图像或视频的颜色。

(位 [, p])

通过减少每个颜色通道的位数,以给定的概率随机色调分离图像。

(位 [, p])

[测试版]通过减少每个颜色通道的位数,以给定的概率色调分离图像或视频。

(阈值 [, p])

通过反转高于阈值的所有像素值,以给定的概率随机曝光图像。

(阈值 [, p])

[测试版]通过反转高于阈值的所有像素值,以给定的概率对图像或视频进行曝光。

(sharpness_factor[, p])

以给定的概率随机调整图像的清晰度。

(sharpness_factor[, p])

[测试版]以给定的概率调整图像或视频的清晰度。

([p])

以给定的概率随机自动对比给定图像的像素。

([p])

[测试版]以给定的概率自动对比给定图像或视频的像素。

([p])

以给定的概率随机均衡给定图像的直方图。

([p])

[测试版]以给定的概率均衡给定图像或视频的直方图。

组成

(变换)

将多个转换组合在一起。

(变换)

[测试版]将多个转换组合在一起。

(转换 [, p])

随机应用具有给定概率的转换列表。

(转换 [, p])

[测试版]随机应用具有给定概率的转换列表。

(转换 [, p])

应用从列表中随机选取的单个转换。

(转换 [, p])

[测试版]应用从列表中随机选取的单个转换。

(变换)

以随机顺序应用转换列表。

(变换)

[测试版]以随机顺序应用转换列表。

杂项

(transformation_matrix,......

使用方变换矩阵和离线计算的mean_vector变换张量图像。

(......

[测试版]使用方形变换矩阵和离线计算的 mean_vector 变换张量图像或视频。

(平均值, std[, 原位])

使用平均值和标准差对张量图像进行归一化。

(平均值, std[, 原位])

[测试版]使用平均值和标准差对张量图像或视频进行标准化。

([p, scale, ratio, value, inplace])

在Torch中随机选择一个矩形区域。Tensor 图像并擦除其像素。

([p, 比例, 比率, 值, ...])

[测试版]在输入图像或视频中随机选择一个矩形区域并擦除其像素。

(lambd)

将用户定义的 lambda 应用为转换。

(lambd、*types)

[测试版]将用户定义的函数应用为转换。

([min_size, labels_getter])

[测试版]删除退化/无效的边界框及其相应的标签和掩码。

v2 的ClampBoundingBox(限制边界框)()

[测试版]将边界框固定到其相应的图像尺寸。

(num_samples)

[测试版]从视频的时间维度对索引进行统一子采样。num_samples

转换

注意

请注意,下面的一些转换转换将缩放值 在执行转换时,虽然有些可能不会进行任何缩放。由 缩放,我们的意思是,例如 -> 会将 [0, 255] 范围转换为 [0, 1](反之亦然)。uint8float32

([模式])

将张量或 ndarray 转换为 PIL 图像 - 这不会缩放值。

v2 的ToPILImage

别名为

([模式])

[测试版]将张量或 ndarray 转换为 PIL 图像 - 这不会缩放值。

ToTensor()

将 PIL Image 或 ndarray 转换为 tensor 并相应地缩放值。

v2 的ToTensor()

[测试版]将 PIL Image 或 ndarray 转换为 tensor 并相应地缩放值。

PILToTensor()

将 PIL 图像转换为相同类型的张量 - 这不会缩放值。

v2 的PILToTensor()

[测试版]将 PIL 图像转换为相同类型的张量 - 这不会缩放值。

v2 的ToImageTensor()

[测试版]将 tensor、ndarray 或 PIL 图像转换为 ;这不会缩放值。

(dtype)

将张量图像转换为给定的值并相应地缩放值。dtype

([dtype])

[测试版]将输入图像或视频转换为给定的值并相应地缩放值。dtype

v2 的ConvertImageD类型

别名为

(dtype)

[测试版]将输入转换为特定的 dtype - 这不会缩放值。

(格式)

[测试版]将边界框坐标转换为给定的坐标,例如从 “CXCYWH” 到 “XYXY”。format

自动增强

AutoAugment 是一种常见的数据增强技术,可以提高图像分类模型的准确性。 尽管数据增强策略与他们训练的数据集直接相关,但实证研究表明, ImageNet 策略在应用于其他数据集时提供了显著的改进。 在 TorchVision 中,我们实施了在以下数据集上学习的 3 个策略: ImageNet 、 CIFAR10 和 SVHN 。 新转换可以独立使用,也可以与现有转换混合使用:

(值)

AutoAugment 策略在不同的数据集上学习。

([策略、插值、填充])

基于 “AutoAugment: Learning Augmentation Strategies from Data” 的 AutoAugment 数据增强方法。

([策略、插值、填充])

[测试版]基于 “AutoAugment: Learning Augmentation Strategies from Data” 的 AutoAugment 数据增强方法。

([num_ops, 星等, ...])

基于 “RandAugment: Practical automated data augmentation with a reduced search space” 的 RandAugmentment 数据增强方法。

([num_ops, 星等, ...])

[测试版]基于 “RandAugment: Practical automated data augmentation with a reduced search space” 的 RandAugmentment 数据增强方法。

([num_magnitude_bins, ...])

使用 TrivialAugment Wide 进行独立于数据集的数据增强,如 “TrivialAugment: Tuning-free Yet State-of-the-Art Data Augmentation” 中所述。

([num_magnitude_bins, ...])

[测试版]使用 TrivialAugment Wide 进行独立于数据集的数据增强,如 “TrivialAugment: Tuning-free Yet State-of-the-Art Data Augmentation” 中所述。

([严重性, mixture_width, ...])

基于“AugMix:一种提高稳健性和不确定性的简单数据处理方法”的 AugMix 数据增强方法。

([严重性, mixture_width, ...])

[测试版]基于“AugMix:一种提高稳健性和不确定性的简单数据处理方法”的 AugMix 数据增强方法。

函数转换

注意

您可以在下方找到现有命名空间的文档。命名空间也存在,并且可以是 使用!存在相同的函数,因此您只需更改 import 来依赖命名空间。torchvision.transforms.functionaltorchvision.transforms.v2.functionalv2

函数转换可让您对转换管道进行精细控制。 与上述转换相反,函数转换不包含随机数 generator 的参数。 这意味着您必须指定/生成所有参数,但函数式转换将为您提供 跨调用的可重现结果。

例: 您可以将具有相同参数的函数转换应用于多个图像,如下所示:

import torchvision.transforms.functional as TF
import random

def my_segmentation_transforms(image, segmentation):
    if random.random() > 0.5:
        angle = random.randint(-30, 30)
        image = TF.rotate(image, angle)
        segmentation = TF.rotate(segmentation, angle)
    # more transforms ...
    return image, segmentation

例: 您可以使用 Functional transform 来构建具有自定义行为的 transform 类:

import torchvision.transforms.functional as TF
import random

class MyRotationTransform:
    """Rotate by one of the given angles."""

    def __init__(self, angles):
        self.angles = angles

    def __call__(self, x):
        angle = random.choice(self.angles)
        return TF.rotate(x, angle)

rotation_transform = MyRotationTransform(angles=[-30, -15, 0, 15, 30])

(img, brightness_factor)

调整图像的亮度。

(img, contrast_factor)

调整图像的对比度。

(img, gamma[, 增益])

对图像执行 Gamma 校正。

(img, hue_factor)

调整图像的色相。

(img, saturation_factor)

调整图像的颜色饱和度。

(img, sharpness_factor)

调整图像的清晰度。

(图像、角度、平移、缩放、剪切)

对图像应用仿射变换,保持图像中心不变。

(图片)

通过重新映射每个通道的像素来最大化图像的对比度,使最低的像素变为黑色,最亮的像素变为白色。

(img, output_size)

在中心裁剪给定的图像。

(image[, dtype])

将张量图像转换为给定的图像并相应地缩放值此函数不支持 PIL 图像。dtype

(img、上、左、高、宽)

在指定位置和输出大小裁剪给定图像。

(图片)

通过对输入应用非线性映射来均衡图像的直方图,以便在输出中创建灰度值的均匀分布。

(img, i, j, h, w, v[, 原位])

擦除具有给定值的输入 Tensor Image。

(img, 大小)

将给定的图像裁剪为四个角,并进行中央裁剪。

(img, kernel_size[, sigma])

按给定内核对图像执行高斯模糊处理。

(图片)

将图像的尺寸返回为 [channels, height, width]。

(图片)

返回图像的通道数。

(图片)

将图像的大小返回为 [width, height]。

(图片)

水平翻转给定的图像。

(图片)

反转 RGB/灰度图像的颜色。

(张量、平均值、std[、原位])

使用平均值和标准差对浮点张量图像进行归一化。

(img, padding[, fill, padding_mode])

用给定的 “pad” 值在给定的图像的所有侧面填充。

(img, startpoints, endpoints[, ...])

执行给定图像的透视变换。

(图片)

将 a 转换为相同类型的张量。PIL Image

(img,比特)

通过减少每个颜色通道的位数来色调分离图像。

(img, size[, 插值, max_size, ...])

将输入图像的大小调整为给定的大小。

(img、top、left、height、width、size)

裁剪给定的图像并将其调整为所需的大小。

(img[, num_output_channels])

将 RGB 图像转换为图像的灰度版本。

(img, angle[, 插值, 扩展, ...])

按角度旋转图像。

(img, 阈值)

通过反转高于阈值的所有像素值来使 RGB/灰度图像曝光。

(img, 大小[, vertical_flip])

从给定图像生成 10 张裁剪图像。

(img[, num_output_channels])

将任何模式(RGB、HSV、LAB 等)的 PIL 图像转换为图像的灰度版本。

(pic[, 模式])

将 tensor 或 ndarray 转换为 PIL 图像。

(图片)

将 or 转换为 tensor。PIL Imagenumpy.ndarray

(图片)

垂直翻转给定的图像。

文档

访问 PyTorch 的全面开发人员文档

查看文档

教程

获取面向初学者和高级开发人员的深入教程

查看教程

资源

查找开发资源并解答您的问题

查看资源