Source code for aitlas.base.transforms
"""Base class for implementing configurable transformations"""
from torchvision import transforms
from ..utils import get_class
from .schemas import BaseTransformsSchema
TRANSFORMS_PARAMS = {
"torchvision.transforms.Resize": 256,
"torchvision.transforms.CenterCrop": 224,
}
[docs]def load_transforms(class_names, config):
"""Loads transformation classes and make a composition of them"""
lst_transforms = []
if not class_names:
return None
# check all transformation classes
for name in class_names:
cls = get_class(name) # get class
args = TRANSFORMS_PARAMS.get(name, None) # get params, if specified
if args:
transfrm = cls(args)
else:
if getattr(cls, "configurables", None):
kwargs = {}
for key in cls.configurables:
kwargs[key] = getattr(config, key)
transfrm = cls(**kwargs)
else:
transfrm = cls()
lst_transforms.append(transfrm)
# return as composition
return transforms.Compose(lst_transforms)
[docs]class BaseTransforms(object):
"""Base class for implementing configurable transformations"""
schema = BaseTransformsSchema
configurables = None
def __init__(self, *args, **kwargs):
pass
def __call__(self, sample):
raise NotImplementedError("Please implement the `__call__` method")