3a2c66702c
Tests on CPU (scheduled) / check-skip (push) Has been cancelled
Tests on CPU (scheduled) / pre-tests (push) Has been cancelled
Tests on CPU (scheduled) / tests-cpu-ubuntu (float32) (push) Has been cancelled
Tests on CPU (scheduled) / tests-cpu-ubuntu (float64) (push) Has been cancelled
Tests on CPU (scheduled) / tests-cpu-windows (3.11, float32, 2.5.1) (push) Has been cancelled
Tests on CPU (scheduled) / tests-cpu-windows (3.11, float32, 2.9.1) (push) Has been cancelled
Tests on CPU (scheduled) / tests-cpu-windows (3.11, float64, 2.5.1) (push) Has been cancelled
Tests on CPU (scheduled) / tests-cpu-windows (3.11, float64, 2.9.1) (push) Has been cancelled
Tests on CPU (scheduled) / tests-cpu-windows (3.12, float32, 2.5.1) (push) Has been cancelled
Tests on CPU (scheduled) / tests-cpu-windows (3.12, float32, 2.9.1) (push) Has been cancelled
Tests on CPU (scheduled) / tests-cpu-windows (3.12, float64, 2.5.1) (push) Has been cancelled
Tests on CPU (scheduled) / tests-cpu-windows (3.12, float64, 2.9.1) (push) Has been cancelled
Tests on CPU (scheduled) / tests-cpu-windows (3.13, float32, 2.9.1) (push) Has been cancelled
Tests on CPU (scheduled) / tests-cpu-windows (3.13, float64, 2.9.1) (push) Has been cancelled
Tests on CPU (scheduled) / tests-cpu-mac (3.11, float32, 2.5.1) (push) Has been cancelled
Tests on CPU (scheduled) / tests-cpu-mac (3.11, float32, 2.9.1) (push) Has been cancelled
Tests on CPU (scheduled) / tests-cpu-mac (3.12, float32, 2.5.1) (push) Has been cancelled
Tests on CPU (scheduled) / tests-cpu-mac (3.12, float32, 2.9.1) (push) Has been cancelled
Tests on CPU (scheduled) / tests-cpu-mac (3.13, float32, 2.9.1) (push) Has been cancelled
Tests on CPU (scheduled) / coverage (push) Has been cancelled
Tests on CPU (scheduled) / typing (push) Has been cancelled
Tests on CPU (scheduled) / tutorials (push) Has been cancelled
Tests on CPU (scheduled) / docs (push) Has been cancelled
Lint / TOML Format (push) Has been cancelled
205 lines
5.9 KiB
Python
205 lines
5.9 KiB
Python
# LICENSE HEADER MANAGED BY add-license-header
|
|
#
|
|
# Copyright 2018 Kornia Team
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
#
|
|
|
|
import torch
|
|
|
|
from kornia.augmentation import (
|
|
CenterCrop,
|
|
PadTo,
|
|
RandomAffine,
|
|
RandomCrop,
|
|
RandomElasticTransform,
|
|
RandomErasing,
|
|
RandomFisheye,
|
|
RandomHorizontalFlip,
|
|
RandomPerspective,
|
|
RandomResizedCrop,
|
|
RandomRotation,
|
|
RandomShear,
|
|
RandomThinPlateSpline,
|
|
RandomTranslate,
|
|
RandomVerticalFlip,
|
|
Resize,
|
|
)
|
|
|
|
|
|
def test_aug_2d_centercrop(benchmark, device, dtype, torch_optimizer, shape):
|
|
w_target = h_target = 64
|
|
data = torch.rand(*shape, device=device, dtype=dtype)
|
|
aug = CenterCrop((h_target, w_target), p=1.0)
|
|
op = torch_optimizer(aug)
|
|
|
|
actual = benchmark(op, input=data)
|
|
|
|
assert actual.shape == (*shape[:-2], h_target, w_target)
|
|
|
|
|
|
def test_aug_2d_padto(benchmark, device, dtype, torch_optimizer, shape):
|
|
w_target = h_target = 256
|
|
data = torch.rand(*shape, device=device, dtype=dtype)
|
|
aug = PadTo((h_target, w_target))
|
|
op = torch_optimizer(aug)
|
|
|
|
actual = benchmark(op, input=data)
|
|
|
|
assert actual.shape == (*shape[:-2], h_target, w_target)
|
|
|
|
|
|
def test_aug_2d_affine(benchmark, device, dtype, torch_optimizer, shape):
|
|
data = torch.rand(*shape, device=device, dtype=dtype)
|
|
aug = RandomAffine(degrees=45, translate=0.25, scale=(0.9, 1.1), shear=1.25, p=1.0)
|
|
op = torch_optimizer(aug)
|
|
|
|
actual = benchmark(op, input=data)
|
|
|
|
assert actual.shape == shape
|
|
|
|
|
|
def test_aug_2d_crop(benchmark, device, dtype, torch_optimizer, shape):
|
|
w_target = h_target = 64
|
|
data = torch.rand(*shape, device=device, dtype=dtype)
|
|
aug = RandomCrop((h_target, w_target), pad_if_needed=True, p=1.0)
|
|
op = torch_optimizer(aug)
|
|
|
|
actual = benchmark(op, input=data)
|
|
|
|
assert actual.shape == (*shape[:-2], h_target, w_target)
|
|
|
|
|
|
def test_aug_2d_elastic_transform(benchmark, device, dtype, torch_optimizer, shape):
|
|
data = torch.rand(*shape, device=device, dtype=dtype)
|
|
aug = RandomElasticTransform(p=1.0)
|
|
op = torch_optimizer(aug)
|
|
|
|
actual = benchmark(op, input=data)
|
|
|
|
assert actual.shape == shape
|
|
|
|
|
|
def test_aug_2d_erasing(benchmark, device, dtype, torch_optimizer, shape):
|
|
data = torch.rand(*shape, device=device, dtype=dtype)
|
|
aug = RandomErasing(p=1.0)
|
|
op = torch_optimizer(aug)
|
|
|
|
actual = benchmark(op, input=data)
|
|
|
|
assert actual.shape == shape
|
|
|
|
|
|
def test_aug_2d_fisheye(benchmark, device, dtype, torch_optimizer, shape):
|
|
data = torch.rand(*shape, device=device, dtype=dtype)
|
|
center_x = center_y = torch.tensor([-0.3, 0.3], device=device, dtype=dtype)
|
|
gamma = torch.tensor([0.9, 1.0], device=device, dtype=dtype)
|
|
aug = RandomFisheye(center_x, center_y, gamma, p=1.0)
|
|
op = torch_optimizer(aug)
|
|
|
|
actual = benchmark(op, input=data)
|
|
|
|
assert actual.shape == shape
|
|
|
|
|
|
def test_aug_2d_horizontal_flip(benchmark, device, dtype, torch_optimizer, shape):
|
|
data = torch.rand(*shape, device=device, dtype=dtype)
|
|
aug = RandomHorizontalFlip(p=1.0)
|
|
op = torch_optimizer(aug)
|
|
|
|
actual = benchmark(op, input=data)
|
|
|
|
assert actual.shape == shape
|
|
|
|
|
|
def test_aug_2d_perspective(benchmark, device, dtype, torch_optimizer, shape):
|
|
data = torch.rand(*shape, device=device, dtype=dtype)
|
|
aug = RandomPerspective(0.5, p=1.0)
|
|
op = torch_optimizer(aug)
|
|
|
|
actual = benchmark(op, input=data)
|
|
|
|
assert actual.shape == shape
|
|
|
|
|
|
def test_aug_2d_resized_crop(benchmark, device, dtype, torch_optimizer, shape):
|
|
w_target = h_target = 64
|
|
data = torch.rand(*shape, device=device, dtype=dtype)
|
|
aug = RandomResizedCrop((h_target, w_target), p=1.0)
|
|
op = torch_optimizer(aug)
|
|
|
|
actual = benchmark(op, input=data)
|
|
|
|
assert actual.shape == (*shape[:-2], h_target, w_target)
|
|
|
|
|
|
def test_aug_2d_rotation(benchmark, device, dtype, torch_optimizer, shape):
|
|
data = torch.rand(*shape, device=device, dtype=dtype)
|
|
aug = RandomRotation(45, p=1.0)
|
|
op = torch_optimizer(aug)
|
|
|
|
actual = benchmark(op, input=data)
|
|
|
|
assert actual.shape == shape
|
|
|
|
|
|
def test_aug_2d_shear(benchmark, device, dtype, torch_optimizer, shape):
|
|
data = torch.rand(*shape, device=device, dtype=dtype)
|
|
aug = RandomShear((-5.0, 2.0, 5.0, 10.0), p=1.0)
|
|
op = torch_optimizer(aug)
|
|
|
|
actual = benchmark(op, input=data)
|
|
|
|
assert actual.shape == shape
|
|
|
|
|
|
def test_aug_2d_thin_plate_spline(benchmark, device, dtype, torch_optimizer, shape):
|
|
data = torch.rand(*shape, device=device, dtype=dtype)
|
|
aug = RandomThinPlateSpline(p=1.0)
|
|
op = torch_optimizer(aug)
|
|
|
|
actual = benchmark(op, input=data)
|
|
|
|
assert actual.shape == shape
|
|
|
|
|
|
def test_aug_2d_translate(benchmark, device, dtype, torch_optimizer, shape):
|
|
data = torch.rand(*shape, device=device, dtype=dtype)
|
|
aug = RandomTranslate((-0.2, 0.2), (-0.1, 0.1), p=1.0)
|
|
op = torch_optimizer(aug)
|
|
|
|
actual = benchmark(op, input=data)
|
|
|
|
assert actual.shape == shape
|
|
|
|
|
|
def test_aug_2d_vertical_flip(benchmark, device, dtype, torch_optimizer, shape):
|
|
data = torch.rand(*shape, device=device, dtype=dtype)
|
|
aug = RandomVerticalFlip(p=1.0)
|
|
op = torch_optimizer(aug)
|
|
|
|
actual = benchmark(op, input=data)
|
|
|
|
assert actual.shape == shape
|
|
|
|
|
|
def test_aug_2d_resize(benchmark, device, dtype, torch_optimizer, shape):
|
|
w_target = h_target = 64
|
|
data = torch.rand(*shape, device=device, dtype=dtype)
|
|
aug = Resize((h_target, w_target), p=1.0)
|
|
op = torch_optimizer(aug)
|
|
|
|
actual = benchmark(op, input=data)
|
|
|
|
assert actual.shape == (*shape[:-2], h_target, w_target)
|