| 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 |
|
|