from torchvision import transforms from PIL import Image class MaxResize(object): def __init__(self, max_size=800): self.max_size = max_size def __call__(self, image): width, height = image.size current_max_size = max(width, height) scale = self.max_size / current_max_size resized_image = image.resize((int(round(scale*width)), int(round(scale*height)))) return resized_image detection_transform = transforms.Compose([ MaxResize(800), transforms.ToTensor(), transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]) ]) structure_transform = transforms.Compose([ MaxResize(1000), transforms.ToTensor(), transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]) ]) def prepare_image(image, device): pixel_values = detection_transform(image).unsqueeze(0) pixel_values = pixel_values.to(device) return pixel_values def prepare_cropped_image(cropped_image, device): pixel_values = structure_transform(cropped_image).unsqueeze(0) pixel_values = pixel_values.to(device) return pixel_values