弹性变换¶
- 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.Tensor或TVTensor(例如Image,视频,BoundingBoxes等), 它可以有任意数量的前导批次维度。例如, 图像可以有[..., C, H, W]形状。边界框可以有[..., 4]形状。给定alpha和sigma,它将基于随机偏移为所有像素生成位移向量。Alpha控制强度,sigma控制位移的平滑度。位移被添加到单位网格中,并使用生成的网格来变换输入。
注意
实现边界框的变换是近似的(不精确的)。 我们构造了一个逆网格的近似值,即
inverse_grid = identity - displacement。 这并不是用于变换图像的网格的精确逆,即grid = identity + displacement。 我们的假设是displacement * displacement很小,可以忽略不计。 大的位移会导致近似值中的大误差。- Applications:
随机变换图像中物体的形态,并产生一种类似透过水看的效果。
- Parameters:
alpha (float 或 python:floats 的序列, 可选) – 位移的大小。默认值为 50.0。
sigma (float 或 python:floats 的序列, 可选) – 位移的平滑度。默认值为 5.0。
插值 (InterpolationMode, 可选) – 由
torchvision.transforms.InterpolationMode定义的所需插值枚举。默认值为InterpolationMode.BILINEAR。 如果输入是张量,则仅支持InterpolationMode.NEAREST,InterpolationMode.BILINEAR。 也接受相应的Pillow整数常量,例如PIL.Image.BILINEAR。fill (number 或 tuple 或 dict, 可选) – 当
padding_mode为 constant 时使用的像素填充值。 默认值为 0。如果是一个长度为 3 的元组,则分别用于填充 R、G、B 通道。 填充值也可以是一个将数据类型映射到填充值的字典,例如fill={tv_tensors.Image: 127, tv_tensors.Mask: 0},其中Image将被填充为 127,Mask将被填充为 0。
使用
ElasticTransform的示例: