Shortcuts

弹性变换

class torchvision.transforms.v2.ElasticTransform(alpha: Union[float, Sequence[float]] = 50.0, sigma: Union[float, Sequence[float]] = 5.0, interpolation: Union[InterpolationMode, int] = InterpolationMode.BILINEAR, fill: Union[int, float, Sequence[int], Sequence[float], None, Dict[Union[Type, str], Optional[Union[int, float, Sequence[int], Sequence[float]]]]] = 0)[source]

使用弹性变换对输入进行转换。

如果输入是torch.TensorTVTensor(例如Image视频BoundingBoxes等), 它可以有任意数量的前导批次维度。例如, 图像可以有[..., C, H, W]形状。边界框可以有[..., 4]形状。

给定alpha和sigma,它将基于随机偏移为所有像素生成位移向量。Alpha控制强度,sigma控制位移的平滑度。位移被添加到单位网格中,并使用生成的网格来变换输入。

注意

实现边界框的变换是近似的(不精确的)。 我们构造了一个逆网格的近似值,即 inverse_grid = identity - displacement。 这并不是用于变换图像的网格的精确逆,即 grid = identity + displacement。 我们的假设是 displacement * displacement 很小,可以忽略不计。 大的位移会导致近似值中的大误差。

Applications:

随机变换图像中物体的形态,并产生一种类似透过水看的效果。

Parameters:
  • alpha (floatpython:floats 的序列, 可选) – 位移的大小。默认值为 50.0。

  • sigma (floatpython:floats 的序列, 可选) – 位移的平滑度。默认值为 5.0。

  • 插值 (InterpolationMode, 可选) – 由torchvision.transforms.InterpolationMode定义的所需插值枚举。默认值为InterpolationMode.BILINEAR。 如果输入是张量,则仅支持InterpolationMode.NEARESTInterpolationMode.BILINEAR。 也接受相应的Pillow整数常量,例如PIL.Image.BILINEAR

  • fill (numbertupledict, 可选) – 当 padding_mode 为 constant 时使用的像素填充值。 默认值为 0。如果是一个长度为 3 的元组,则分别用于填充 R、G、B 通道。 填充值也可以是一个将数据类型映射到填充值的字典,例如 fill={tv_tensors.Image: 127, tv_tensors.Mask: 0},其中 Image 将被填充为 127, Mask 将被填充为 0。

使用 ElasticTransform 的示例:

变换的图示

Illustration of transforms