Как повернуть тензор изображения PyTorch вокруг его центра таким образом, чтобы поддерживать автоград?Python

Программы на Python
Anonymous
Как повернуть тензор изображения PyTorch вокруг его центра таким образом, чтобы поддерживать автоград?

Сообщение Anonymous »

Я хотел бы случайным образом повернуть тензор изображения (B, C, H, W) вокруг его центра (я думаю, 2D-вращение?). Я бы хотел избежать использования NumPy и Kornia, так что мне в основном нужно будет импортировать только из модуля torch. Я также не использую torchvision.transforms, потому что мне нужно, чтобы он был совместим с Autograd. По сути, я пытаюсь создать версию torchvision.transforms.RandomRotation(), совместимую с автоградом, для таких методов визуализации, как DeepDream (поэтому мне нужно максимально избегать артефактов).

Код: Выделить всё

import torch
import math
import random
import torchvision.transforms as transforms
from PIL import Image

# Load image
def preprocess_simple(image_name, image_size):
Loader = transforms.Compose([transforms.Resize(image_size), transforms.ToTensor()])
image = Image.open(image_name).convert('RGB')
return Loader(image).unsqueeze(0)

# Save image
def deprocess_simple(output_tensor, output_name):
output_tensor.clamp_(0, 1)
Image2PIL = transforms.ToPILImage()
image = Image2PIL(output_tensor.squeeze(0))
image.save(output_name)

# Somehow rotate tensor around it's center
def rotate_tensor(tensor, radians):
...
return rotated_tensor

# Get a random angle within a specified range
r_degrees = 5
angle_range = list(range(-r_degrees, r_degrees))
n = random.randint(angle_range[0], angle_range[len(angle_range)-1])

# Convert angle from degrees to radians
ang_rad = angle * math.pi / 180

# test_tensor = preprocess_simple('path/to/file', (512,512))
test_tensor = torch.randn(1,3,512,512)

# Rotate input tensor somehow
output_tensor = rotate_tensor(test_tensor, ang_rad)

# Optionally use this to check rotated image
# deprocess_simple(output_tensor, 'rotated_image.jpg')
Некоторые примеры того, чего я пытаюсь достичь:
[img]https: //i.sstatic.net/hiZv7s.jpg[/img]

Изображение


Подробнее здесь: https://stackoverflow.com/questions/641 ... t-supports

Вернуться в «Python»