Augmentation
Classification 학습 시 사용 가능한 augmentation 종류는 다음과 같습니다 (총 11종류)
[
"vertical_flip",
"horizontal_flip",
"rotate",
"adjust_brightness",
"adjust_contrast",
"adjust_hue",
"adjust_saturation",
"adjust_gamma",
"blur",
"ratio_jitter",
]
이를 위한 image augmentation API는 Preview API와 Trainer Config의 2가지로 구성됩니다.
- Preview API: 유저가 세팅한 파라미터에 대해 이미지 미리보기 제공
- Trainer Config: 유저가 세팅한 파라미터를 학습에 사용하기 위해
Trainer.build()에 넣어주는 config
classification.ImageProcessor
Bases: _APIDecorator
Image Augmentation Preview를 위한 API 입니다. 각 augmentation들이 특정 파라미터 값에 대해 이미지를 어떻게 변형 시키는지 확인할 수 있습니다.
Note
일반적으로 학습 시에는 파라미터를 특정 값이 아닌 범위로 설정하여 해당 범위에서 매번 랜덤한 값을 선택해 이미지에 적용합니다.
따라서 preview API의 입력 파라미터와 학습 시 넘겨주는 파라미터는 대부분 값 vs 범위의 차이를 가지게 됩니다.
예를 들어 preview API에서 rotate의 경우 angle (float) 값을 받지만, 학습 config에서는 angle_limit (List[float]) 범위를 받게됩니다.
각 augmentation을 학습에 사용시 필요한 config는 각 함수 설명의 Trainer Config 섹션을 참고하세요.
Usage
rotate augmentation preview 예제입니다. 상세 설명은 각 함수 설명 참고.
vertical_flip(image)
image를 상하로 뒤집습니다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
image |
np.ndarray
|
augmentation을 적용할 image 입니다. |
required |
Returns:
| Type | Description |
|---|---|
np.ndarray
|
np.ndarray: augmentation이 적용된 image 입니다. |
horizontal_flip(image)
image를 좌우로 뒤집습니다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
image |
np.ndarray
|
augmentation을 적용할 image 입니다. |
required |
Returns:
| Type | Description |
|---|---|
np.ndarray
|
np.ndarray: augmentation이 적용된 image 입니다. |
rotate(image, angle=0.0)
image를 angle만큼 회전시킵니다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
image |
np.ndarray
|
augmentation을 적용할 image 입니다. |
required |
angle |
float
|
회전하는 각도 입니다. 유효 범위는 다음과 같습니다. [-360.0, 360.0]. Defaults to 0.0. |
0.0
|
Returns:
| Type | Description |
|---|---|
np.ndarray
|
np.ndarray: augmentation이 적용된 image 입니다. |
adjust_brightness(image, brightness=0.0)
image의 밝기 (brightness)를 변경합니다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
image |
np.ndarray
|
augmentation을 적용할 image 입니다. |
required |
brightness |
float
|
밝기를 변화 강도입니다. 유효 범위는 다음과 같습니다. [-1.00, 1.00]. Defaults to 0.0. |
0.0
|
Returns:
| Type | Description |
|---|---|
np.ndarray
|
np.ndarray: augmentation이 적용된 image 입니다. |
adjust_contrast(image, contrast=0.0)
image의 대비 (contrast)를 변경합니다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
image |
np.ndarray
|
augmentation을 적용할 image 입니다. |
required |
contrast |
float
|
대비 변화 강도입니다. 유효 범위는 다음과 같습니다. [-1.00, 1.00]. Defaults to 0.0. |
0.0
|
Returns:
| Type | Description |
|---|---|
np.ndarray
|
np.ndarray: augmentation이 적용된 image 입니다. |
adjust_hue(image, hue=0.0)
image의 색조 (hue)를 변경합니다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
image |
np.ndarray
|
augmentation을 적용할 image 입니다. |
required |
hue |
float
|
색조 변화 강도입니다. 유효 범위는 다음과 같습니다. [-1.00, 1.00]. Defaults to 0.0. |
0.0
|
Returns:
| Type | Description |
|---|---|
np.ndarray
|
np.ndarray: augmentation이 적용된 image 입니다. |
adjust_saturation(image, saturation=0.0)
image의 채도 (saturation)를 변경합니다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
image |
np.ndarray
|
augmentation을 적용할 image 입니다. |
required |
saturation |
float
|
채도 변화 강도입니다. 유효 범위는 다음과 같습니다. [-1.00, 1.00]. Defaults to 0.0. |
0.0
|
Returns:
| Type | Description |
|---|---|
np.ndarray
|
np.ndarray: augmentation이 적용된 image 입니다. |
adjust_gamma(image, gamma=0.0)
image의 gamma를 조절하여 밝기를 변화시킵니다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
image |
np.ndarray
|
augmentation을 적용할 image 입니다. |
required |
gamma |
float
|
조절할 gamma value 입니다. 유효 범위는 다음과 같습니다. [-1.0, 1.0]. Defaults to 0.0. |
0.0
|
Returns:
| Type | Description |
|---|---|
np.ndarray
|
np.ndarray: augmentation이 적용된 image 입니다. |
blur(image, ksize=1)
image에 averaging blur를 적용합니다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
image |
np.ndarray
|
augmentation을 적용할 image 입니다. |
required |
ksize |
int
|
blur kernel의 크기 입니다. 유효 범위는 다음과 같습니다. [1, 100]. Defaults to 1. |
1
|
Returns:
| Type | Description |
|---|---|
np.ndarray
|
np.ndarray: augmentation이 적용된 image 입니다. |
ratio_jitter(image, proportion=0)
image에 random하게 padding과 crop을 한 뒤, 원래 size로 resize 하는 과정을 통해 image의 가로 세로 비율을 변경합니다. NOTE: 프리뷰에서는 네변에 각각 [0, proportion] 범위에서 crop 혹은 padding한 예시를 보여줍니다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
image |
np.ndarray
|
augmentation을 적용할 image 입니다. |
required |
proportion |
int
|
padding 혹은 crop을 할 비율(단위: 백분율)입니다. 유효 범위는 다음과 같습니다. [0, 50]. Defaults to 0. |
0
|
Returns:
| Type | Description |
|---|---|
np.ndarray
|
np.ndarray: augmentation이 적용된 image 입니다. |
Trainer Config
Trainer에 넘겨주는 augmentation config는 List[Dict] 형태이며, 적용할 augmentation들의 파라미터(Dict)를 리스트로 모은 것입니다. 해당 리스트를 Trainer.build() config의 augmentation 섹션에 넣어주면 학습 시 augmentation이 적용됩니다.
-
Augmentation config 예시 (10가지 augmentation 모두 사용하는 경우, 파라미터는 유저가 선택한 값)
augmentation_config = [ { "_target_": "vertical_flip", }, { "_target_": "horizontal_flip", }, { "_target_": "rotate", "angle_limit": [-30, 30], }, { "_target_": "adjust_brightness", "brightness_limit": [-0.2, 0.2], }, { "_target_": "adjust_contrast", "contrast_limit": [-0.2, 0.2], }, { "_target_": "adjust_hue", "hue_limit": [-0.2, 0.2], }, { "_target_": "adjust_saturation", "saturation_limit": [-0.2, 0.2], }, { "_target_": "adjust_gamma", "gamma_limit": [-0.2, 0.2], }, { "_target_": "blur", "ksize_limit": [3, 7], }, { "_target_": "ratio_jitter", "proportion_limit": 2, }, ] -
Augmentation config 예시2 ("vertical_flip"만 사용하는 경우)
-
Trainer build config 예시