ElasticTransform¶
- 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], Union[int, float, collections.abc.Sequence[int], collections.abc.Sequence[float], NoneType]] = 0)[原始碼]¶
使用彈性變換來轉換輸入。
如果輸入是
torch.Tensor或TVTensor(例如Image、Video、BoundingBoxes等),它可以具有任意數量的前導批處理維度。例如,影像的形狀可以是[..., C, H, W]。邊界框的形狀可以是[..., 4]。給定 alpha 和 sigma,它將基於隨機偏移量為所有畫素生成位移向量。Alpha 控制位移的強度,sigma 控制位移的平滑度。位移被加到恆等網格上,並使用生成的網格來變換輸入。
注意
變換邊界框的實現是近似的(非精確)。我們構建了一個反向網格的近似值,即
inverse_grid = identity - displacement。這不是用於變換影像的網格的精確反向,即grid = identity + displacement。我們的假設是displacement * displacement很小,可以忽略。較大的位移會導致近似誤差增大。- 應用
隨機變換影像中物體的形態,產生一種“水下”的效果。
- 引數:
alpha (float 或 sequence of python:floats, optional) – 位移的幅度。預設為 50.0。
sigma (float 或 sequence of python:floats, optional) – 位移的平滑度。預設為 5.0。
interpolation (InterpolationMode, optional) – 由
torchvision.transforms.InterpolationMode定義的所需插值列舉。預設為InterpolationMode.BILINEAR。如果輸入是 Tensor,則僅支援InterpolationMode.NEAREST和InterpolationMode.BILINEAR。也接受相應的 Pillow 整數常量,例如PIL.Image.BILINEAR。fill (number 或 tuple 或 dict, optional) – 當
padding_mode為 constant 時使用的畫素填充值。預設為 0。如果為長度為 3 的元組,則分別用於填充 R、G、B 通道。填充值也可以是對映資料型別到填充值的字典,例如fill={tv_tensors.Image: 127, tv_tensors.Mask: 0},其中Image將填充為 127,Mask將填充為 0。
使用
ElasticTransform的示例