快捷方式

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.TensorTVTensor(例如 ImageVideoBoundingBoxes 等),它可以具有任意數量的前導批處理維度。例如,影像的形狀可以是 [..., C, H, W]。邊界框的形狀可以是 [..., 4]

給定 alpha 和 sigma,它將基於隨機偏移量為所有畫素生成位移向量。Alpha 控制位移的強度,sigma 控制位移的平滑度。位移被加到恆等網格上,並使用生成的網格來變換輸入。

注意

變換邊界框的實現是近似的(非精確)。我們構建了一個反向網格的近似值,即 inverse_grid = identity - displacement。這不是用於變換影像的網格的精確反向,即 grid = identity + displacement。我們的假設是 displacement * displacement 很小,可以忽略。較大的位移會導致近似誤差增大。

應用

隨機變換影像中物體的形態,產生一種“水下”的效果。

引數:
  • alpha (floatsequence of python:floats, optional) – 位移的幅度。預設為 50.0。

  • sigma (floatsequence of python:floats, optional) – 位移的平滑度。預設為 5.0。

  • interpolation (InterpolationMode, optional) – 由 torchvision.transforms.InterpolationMode 定義的所需插值列舉。預設為 InterpolationMode.BILINEAR。如果輸入是 Tensor,則僅支援 InterpolationMode.NEARESTInterpolationMode.BILINEAR。也接受相應的 Pillow 整數常量,例如 PIL.Image.BILINEAR

  • fill (numbertupledict, optional) – 當 padding_mode 為 constant 時使用的畫素填充值。預設為 0。如果為長度為 3 的元組,則分別用於填充 R、G、B 通道。填充值也可以是對映資料型別到填充值的字典,例如 fill={tv_tensors.Image: 127, tv_tensors.Mask: 0},其中 Image 將填充為 127,Mask 將填充為 0。

使用 ElasticTransform 的示例

轉換圖示

轉換圖示
make_params(flat_inputs: list[Any]) dict[str, Any][原始碼]

用於覆蓋自定義變換的方法。

請參閱 如何編寫自己的 v2 變換

transform(inpt: Any, params: dict[str, Any]) Any[原始碼]

用於覆蓋自定義變換的方法。

請參閱 如何編寫自己的 v2 變換

文件

訪問全面的 PyTorch 開發者文件

檢視文件

教程

為初學者和高階開發者提供深入的教程

檢視教程

資源

查詢開發資源並讓您的問題得到解答

檢視資源