|
|
|
import logging |
|
import numpy as np |
|
import pycocotools.mask as mask_util |
|
import torch |
|
from fvcore.common.file_io import PathManager |
|
from PIL import Image |
|
|
|
|
|
from detectron2.data import transforms as T |
|
from .transforms.custom_augmentation_impl import EfficientDetResizeCrop |
|
|
|
def build_custom_augmentation(cfg, is_train, scale=None, size=None, \ |
|
min_size=None, max_size=None): |
|
""" |
|
Create a list of default :class:`Augmentation` from config. |
|
Now it includes resizing and flipping. |
|
|
|
Returns: |
|
list[Augmentation] |
|
""" |
|
if cfg.INPUT.CUSTOM_AUG == 'ResizeShortestEdge': |
|
if is_train: |
|
min_size = cfg.INPUT.MIN_SIZE_TRAIN if min_size is None else min_size |
|
max_size = cfg.INPUT.MAX_SIZE_TRAIN if max_size is None else max_size |
|
sample_style = cfg.INPUT.MIN_SIZE_TRAIN_SAMPLING |
|
else: |
|
min_size = cfg.INPUT.MIN_SIZE_TEST |
|
max_size = cfg.INPUT.MAX_SIZE_TEST |
|
sample_style = "choice" |
|
augmentation = [T.ResizeShortestEdge(min_size, max_size, sample_style)] |
|
elif cfg.INPUT.CUSTOM_AUG == 'EfficientDetResizeCrop': |
|
if is_train: |
|
scale = cfg.INPUT.SCALE_RANGE if scale is None else scale |
|
size = cfg.INPUT.TRAIN_SIZE if size is None else size |
|
else: |
|
scale = (1, 1) |
|
size = cfg.INPUT.TEST_SIZE |
|
augmentation = [EfficientDetResizeCrop(size, scale)] |
|
else: |
|
assert 0, cfg.INPUT.CUSTOM_AUG |
|
|
|
if is_train: |
|
augmentation.append(T.RandomFlip()) |
|
return augmentation |
|
|
|
|
|
build_custom_transform_gen = build_custom_augmentation |
|
""" |
|
Alias for backward-compatibility. |
|
""" |