Skip to content

Replace deprecated v2.ToTensor() in Matrix-Game-2/inference.py with v2.ToImage() + v2.ToDtype(scale=True) #82

Description

@xyf5432

Summary

Matrix-Game-2/inference.py:43 instantiates torchvision.transforms.v2.ToTensor(), which is a deprecated alias: constructing it emits a UserWarning on every instantiation:

self.frame_process = v2.Compose([
    v2.Resize(size=(352, 640), antialias=True),
    v2.ToTensor(),          # ← emits UserWarning on construction
    v2.Normalize(mean=[0.5, 0.5, 0.5], std=[0.5, 0.5, 0.5]),
])

Warning text (verified on torchvision 0.26.0):

The transform ToTensor() is deprecated and will be removed in a future release. Instead, please use v2.Compose([v2.ToImage(), v2.ToDtype(torch.float32, scale=True)]).

This warning has been present since torchvision 0.15 (when the v2 namespace was introduced) — torchvision/transforms/v2/_deprecated.py has called warnings.warn in ToTensor.__init__ since the first release.

Proposed fix

Replace v2.ToTensor() with the officially recommended equivalent inside the same v2.Compose:

self.frame_process = v2.Compose([
    v2.Resize(size=(352, 640), antialias=True),
    v2.ToImage(),
    v2.ToDtype(torch.float32, scale=True),
    v2.Normalize(mean=[0.5, 0.5, 0.5], std=[0.5, 0.5, 0.5]),
])

Validation (torchvision 0.26.0+cpu)

  • v2.ToTensor()(img) and v2.Compose([v2.ToImage(), v2.ToDtype(torch.float32, scale=True)])(img) produce identical output up to float precision: max abs diff = 5.96e-8 (a single last-bit rounding difference on uint8→float32 scaling; the official deprecation message itself states "Output is equivalent up to float precision").
  • With warnings.simplefilter("error", UserWarning): the current code raises the deprecation UserWarning; the proposed pipeline constructs and runs cleanly.

Impact

  • No deprecation UserWarning during inference; no behavior change to frame preprocessing.

References

  • torchvision docs: v2.ToTensor (deprecated) — "[DEPRECATED] Use v2.Compose([v2.ToImage(), v2.ToDtype(torch.float32, scale=True)]) instead."
  • torchvision source torchvision/transforms/v2/_deprecated.pywarnings.warn in ToTensor.__init__, present since 0.15.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions