Spaces:
Runtime error
Runtime error
| from PIL import Image | |
| from detectron2.data import transforms as T | |
| class Resize(T.Augmentation): | |
| """Resize image to a fixed target size""" | |
| def __init__(self, shape, interp=Image.BICUBIC): | |
| """ | |
| Args: | |
| shape: (h, w) tuple or a int | |
| interp: PIL interpolation method | |
| """ | |
| if isinstance(shape, int): | |
| shape = (shape, shape) | |
| shape = tuple(shape) | |
| self._init(locals()) | |
| def get_transform(self, image): | |
| return T.ResizeTransform(image.shape[0], image.shape[1], self.shape[0], self.shape[1], self.interp) | |
| # Custom transform that resizes and then pads to fixed size | |
| class ResizeAndPad(T.Augmentation): | |
| def __init__(self, target_size, pad_value=0, interp=Image.BICUBIC): | |
| super().__init__() | |
| self.target_size = target_size # (height, width) | |
| self.interp = interp | |
| self.pad_value = pad_value | |
| def get_transform(self, img): | |
| h, w = img.shape[:2] | |
| scale = min(self.target_size[0] / h, self.target_size[1] / w) | |
| new_h, new_w = int(h * scale), int(w * scale) | |
| # First resize preserving aspect ratio | |
| resize_t = T.ResizeTransform(h, w, new_h, new_w, self.interp) | |
| # Then pad to target size | |
| pad_h, pad_w = self.target_size[0] - new_h, self.target_size[1] - new_w | |
| top = pad_h // 2 | |
| left = pad_w // 2 | |
| pad_t = T.PadTransform(left, top, pad_w - left, pad_h - top, new_h, new_w, pad_value=self.pad_value) | |
| return T.TransformList([resize_t, pad_t]) | |