diff --git a/.github/workflows/build-cmake.yml b/.github/workflows/build-cmake.yml index 8da613cf194..107583235ed 100644 --- a/.github/workflows/build-cmake.yml +++ b/.github/workflows/build-cmake.yml @@ -41,7 +41,7 @@ jobs: matrix: include: - runner: macos-12 - - runner: macos-m1-12 + - runner: macos-m1-stable fail-fast: false uses: pytorch/test-infra/.github/workflows/macos_job.yml@main with: diff --git a/.github/workflows/build-conda-m1.yml b/.github/workflows/build-conda-m1.yml index 159a3c79a0d..bd10e4e4634 100644 --- a/.github/workflows/build-conda-m1.yml +++ b/.github/workflows/build-conda-m1.yml @@ -46,7 +46,7 @@ jobs: post-script: ${{ matrix.post-script }} package-name: ${{ matrix.package-name }} smoke-test-script: ${{ matrix.smoke-test-script }} - runner-type: macos-m1-12 + runner-type: macos-m1-stable trigger-event: ${{ github.event_name }} secrets: CONDA_PYTORCHBOT_TOKEN: ${{ secrets.CONDA_PYTORCHBOT_TOKEN }} diff --git a/.github/workflows/build-wheels-m1.yml b/.github/workflows/build-wheels-m1.yml index adffb4ce9f2..76709b755e8 100644 --- a/.github/workflows/build-wheels-m1.yml +++ b/.github/workflows/build-wheels-m1.yml @@ -47,6 +47,6 @@ jobs: pre-script: ${{ matrix.pre-script }} post-script: ${{ matrix.post-script }} package-name: ${{ matrix.package-name }} - runner-type: macos-m1-12 + runner-type: macos-m1-stable smoke-test-script: ${{ matrix.smoke-test-script }} trigger-event: ${{ github.event_name }} diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index bd483db6e4b..f5b7d6b5c8f 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -54,7 +54,7 @@ jobs: runner: ["macos-12"] include: - python-version: "3.8" - runner: macos-m1-12 + runner: macos-m1-stable fail-fast: false uses: pytorch/test-infra/.github/workflows/macos_job.yml@main with: diff --git a/test/test_transforms_v2.py b/test/test_transforms_v2.py index b40d04fffdd..458f83f01c3 100644 --- a/test/test_transforms_v2.py +++ b/test/test_transforms_v2.py @@ -5182,6 +5182,11 @@ def test_functional_and_transform(self, make_input, fn): if isinstance(input, torch.Tensor): assert output.data_ptr() == input.data_ptr() + def test_2d_np_array(self): + # Non-regression test for https://github.com/pytorch/vision/issues/8255 + input = np.random.rand(10, 10) + assert F.to_image(input).shape == (1, 10, 10) + def test_functional_error(self): with pytest.raises(TypeError, match="Input can either be a pure Tensor, a numpy array, or a PIL image"): F.to_image(object()) diff --git a/torchvision/transforms/v2/functional/_type_conversion.py b/torchvision/transforms/v2/functional/_type_conversion.py index 9ac357315b2..c5a731fe143 100644 --- a/torchvision/transforms/v2/functional/_type_conversion.py +++ b/torchvision/transforms/v2/functional/_type_conversion.py @@ -11,7 +11,7 @@ def to_image(inpt: Union[torch.Tensor, PIL.Image.Image, np.ndarray]) -> tv_tensors.Image: """See :class:`~torchvision.transforms.v2.ToImage` for details.""" if isinstance(inpt, np.ndarray): - output = torch.from_numpy(inpt).permute((2, 0, 1)).contiguous() + output = torch.from_numpy(np.atleast_3d(inpt)).permute((2, 0, 1)).contiguous() elif isinstance(inpt, PIL.Image.Image): output = pil_to_tensor(inpt) elif isinstance(inpt, torch.Tensor):