Data augmentation을 위한 기본 Transform의 interface를 정의합니다.
ParamsType = Dict[str, Any]
BaseTransform(prob: float = 0.5)
Transform의 기본 interface를 정의합니다.
Source code in SaigeToolkit/data/transform/augmentation/base_transform.py
| def __init__(self, prob: float = 0.5) -> None:
self.prob = prob
self._additional_targets = {}
|
data_for_params: List[str]
targets: Dict[str, Callable]
__call__(*args, force_apply: bool = False, **data) -> Any
Source code in SaigeToolkit/data/transform/augmentation/base_transform.py
| def __call__(self, *args, force_apply: bool = False, **data) -> Any:
if args:
raise KeyError("Data must be passed as named arguments, for example: aug(image=image)")
if (random.random() < self.prob) or force_apply:
params = {}
if self.data_for_params:
data_for_params = {k: data[k] for k in self.data_for_params}
params_from_data = self.get_params_from_data(data_for_params)
params.update(params_from_data)
apply_param = self.get_apply_params()
params.update(apply_param)
data = self.apply_with_params(params, **data)
return data
|
Source code in SaigeToolkit/data/transform/augmentation/base_transform.py
| def get_apply_params(self) -> ParamsType:
return {}
|
이 함수는 input으로부터 parameter들을 뽑을 때 사용됩니다.
Parameters:
-
data_for_params
(ParamsType)
–
params을 추출할 데이터를 입력으로 갖습니다.
Returns:
Source code in SaigeToolkit/data/transform/augmentation/base_transform.py
| def get_params_from_data(self, data_for_params: ParamsType) -> ParamsType:
"""이 함수는 input으로부터 parameter들을 뽑을 때 사용됩니다.
Args:
data_for_params (ParamsType): params을 추출할 데이터를 입력으로 갖습니다.
Returns:
ParamsType: params로 쓰일 데이터를 반환합니다.
"""
return {}
|
Source code in SaigeToolkit/data/transform/augmentation/base_transform.py
| def apply_with_params(self, params: ParamsType, **data) -> ParamsType:
def _apply_with_params(method: callable, target: str, data: Dict, params: ParamsType):
output = []
if isinstance(data, List) and target == "image":
is_multipage = True
else:
is_multipage = False
data = [data]
for d in data:
output.append(method(d, **params))
if not is_multipage:
output = output[0]
return output
for target, target_method in self.targets.items():
if target in data:
data[target] = _apply_with_params(target_method, target, data[target], params)
for additional_target, target in self._additional_targets.items():
if additional_target in data:
target_method = self.targets[target]
data[additional_target] = _apply_with_params(
target_method, target, data[additional_target], params
)
return data
|
add_targets(additional_targets: Dict[str, str]) -> None
Source code in SaigeToolkit/data/transform/augmentation/base_transform.py
| def add_targets(self, additional_targets: Dict[str, str]) -> None:
self._additional_targets = additional_targets
|