# Image Augmentation

이미지 증강은 데이터셋에서 "Train"으로 표시된 기존 이미지에 증강을 적용하는 단계입니다. 이 과정은 모델의 일반화 능력을 향상시켜 보지 못한 이미지에서도 더 효과적으로 성능을 발휘하도록 도울 수 있습니다.

{% hint style="success" %}
프로젝트는 증강 없이 시작하는 것을 권장합니다. 이렇게 하면 원시 데이터셋의 품질을 평가할 수 있습니다. 증강을 추가한 후 데이터셋이 예상만큼 성능을 내지 못하면 모델 성능과 비교할 기준선이 없어집니다.

증강 없이 모델 성능이 좋지 않다면 클래스 균형, 데이터 표현 및 데이터셋 크기를 조사해야 할 수 있습니다. 증강 없이 모델을 성공적으로 학습시킨 데이터셋이 있다면, 이후에 증강을 추가하여 모델 성능을 더 향상시킬 수 있습니다.
{% endhint %}

증강은 학습 시점이 아니라 데이터셋 버전(“오프라인 증강”)을 통해 적용되는 데에는 몇 가지 주요 이유가 있습니다:

1. **모델 재현성이 향상됩니다**. Roboflow를 사용하면 각 이미지가 어떻게 증강되었는지 복사본을 보관할 수 있습니다. 예를 들어 모델이 어두운 이미지보다 밝은 이미지에서 더 잘 작동한다는 것을 알게 된다면, 저조도 학습 데이터를 더 수집해야 합니다.
2. **학습 시간이 단축됩니다**. 증강은 CPU에 제약을 받는 작업입니다. GPU에서 학습하는 동안 증강을 실시간으로 수행하면 GPU가 각 에포크마다 CPU가 증강된 데이터를 제공하기를 기다리는 경우가 많습니다. 그럴 수록 시간이 많이 소요됩니다!
3. **학습 비용이 절감됩니다**. 증강은 CPU에 제약을 받는 작업이기 때문에 비용이 많이 드는 대여 GPU가 학습용 이미지를 공급받기 위해 종종 대기 상태가 됩니다.

## 증강이 적용되는 방식

증강은 항상 학습 이미지에 [전처리 단계](https://docs.roboflow.com/roboflow/roboflow-ko/datasets/dataset-versions/image-preprocessing)이후에 적용됩니다. 선택된 증강은 함께 쌓이며 증강 설정과 각 설정의 값은 무작위화되어 각 증강된 이미지에 적용됩니다. 이 과정에서 중복으로 나타나는 이미지는 생성된 버전에서 필터링됩니다.

예를 들어 “수평 반전”과 “소금과 후추 노이즈” 증강을 선택하면 주어진 이미지는 무작위로 수평 반전되거나 무작위 소금과 후추 노이즈가 적용될 수 있습니다.

### 증강 제한하기

증강이 포함된 데이터셋 버전을 만들 때 "Maximum Version Size" 옵션을 통해 포함할 최대 증강 이미지 수를 선택할 수 있습니다.

예를 들어 3x를 선택하면 최종 데이터셋 버전에는 각 학습 소스 이미지가 [전처리 단계](https://docs.roboflow.com/roboflow/roboflow-ko/datasets/dataset-versions/image-preprocessing) 적용되고 선택한 설정을 기반으로 각 이미지의 2가지 무작위 증강이 포함됩니다.

데이터셋에 학습/검증/테스트 분할이 70/20/10이고 100장의 이미지가 있으며 3x 증강을 선택하면 최종 데이터셋은 대략 210/20/10 분할을 가지게 됩니다.

<figure><img src="https://3958014485-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M6S9nPJhEX9FYH6clfW%2Fuploads%2Fgit-blob-6e1eab9e86e8e1271b32261c1f214c503ed7afc7%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
버전의 최종 이미지 수는 이미지 중복 제거 및 "Filter Null"과 같은 특정 옵션이 출력에서 이미지를 제거할 수 있기 때문에 이 추정보다 작을 수 있습니다.
{% endhint %}

## 증강 옵션

Roboflow의 증강은 "Basic" 또는 "Enhanced"로 구분되며 두 가지 다른 수준에서 적용될 수 있습니다.

### 이미지 수준 증강

이미지 수준 증강은 개별 객체나 영역이 아니라 전체 이미지에 변환을 적용하여 새로운 학습 데이터를 생성합니다. 전체 이미지를 수정함으로써 개발자는 더 넓은 시각적 조건을 시뮬레이션할 수 있어 모델이 새 데이터에 대해 더 잘 일반화하도록 학습시킬 수 있습니다.

### 바운딩 박스 수준 증강

바운딩 박스 수준 증강은 소스 이미지의 바운딩 박스 내용만 변경하여 새로운 학습 데이터를 생성합니다. 이를 통해 개발자는 문제 조건에 더 적합한 학습 데이터를 생성하는 데 대해 더 큰 제어권을 가집니다.

A [2019 논문](https://arxiv.org/pdf/1906.11172.pdf) Google 연구원들의 2019년 논문은 바운딩 박스만 증강을 사용하여 모델에 최적의 데이터를 생성하는 아이디어를 소개합니다. 이 논문에서 연구원들은 바운딩 박스만 수정하는 것이 특히 작은 데이터셋에 적합한 모델에서 체계적인 개선을 만든다는 것을 보여주었습니다.

{% hint style="info" %}
Enhanced Augmentations 및 Bounding Box Augmentations는 **프리미엄** 기능입니다.

플랜 및 관련 기능에 대한 최신 정보는 [가격 페이지](https://roboflow.com/pricing).
{% endhint %}

<table><thead><tr><th></th><th data-type="checkbox">이미지 수준 증강</th><th data-type="checkbox">바운딩 박스 증강</th><th>증강 유형<select><option value="Z8F06MhppTfn" label="Enhanced" color="blue"></option><option value="sdEDfdaf9Z03" label="Basic" color="blue"></option></select></th></tr></thead><tbody><tr><td><a href="image-augmentation/augmentation-types/flip-augmentation">뒤집기 증강</a></td><td>true</td><td>true</td><td><span data-option="sdEDfdaf9Z03">Basic</span></td></tr><tr><td><a href="image-augmentation/augmentation-types/90o-rotate-augmentation">90º 회전 증강</a></td><td>true</td><td>true</td><td><span data-option="sdEDfdaf9Z03">Basic</span></td></tr><tr><td><a href="image-augmentation/augmentation-types/crop-augmentation">자르기 증강</a></td><td>true</td><td>true</td><td><span data-option="sdEDfdaf9Z03">Basic</span></td></tr><tr><td><a href="image-augmentation/augmentation-types/rotation-augmentation">회전 증강</a></td><td>true</td><td>true</td><td><span data-option="sdEDfdaf9Z03">Basic</span></td></tr><tr><td><a href="image-augmentation/augmentation-types/shear-augmentation">전단(Shear) 증강</a></td><td>true</td><td>true</td><td><span data-option="sdEDfdaf9Z03">Basic</span></td></tr><tr><td><a href="image-augmentation/augmentation-types/grayscale-augmentation">그레이스케일 증강</a></td><td>true</td><td>false</td><td><span data-option="sdEDfdaf9Z03">Basic</span></td></tr><tr><td><a href="image-augmentation/augmentation-types/hue-augmentation">색조(Hue) 증강</a></td><td>true</td><td>false</td><td><span data-option="sdEDfdaf9Z03">Basic</span></td></tr><tr><td><a href="image-augmentation/augmentation-types/saturation-augmentation">채도(Saturation) 증강</a></td><td>true</td><td>false</td><td><span data-option="sdEDfdaf9Z03">Basic</span></td></tr><tr><td><a href="image-augmentation/augmentation-types/brightness-augmentation">밝기(Brightness) 증강</a></td><td>true</td><td>true</td><td><span data-option="sdEDfdaf9Z03">Basic</span></td></tr><tr><td><a href="image-augmentation/augmentation-types/exposure-augmentation">노출(Exposure) 증강</a></td><td>true</td><td>true</td><td><span data-option="sdEDfdaf9Z03">Basic</span></td></tr><tr><td><a href="image-augmentation/augmentation-types/blur-augmentation">블러(Blur) 증강</a></td><td>true</td><td>true</td><td><span data-option="sdEDfdaf9Z03">Basic</span></td></tr><tr><td><a href="image-augmentation/augmentation-types/noise-augmentation">노이즈(Noise) 증강</a></td><td>true</td><td>true</td><td><span data-option="sdEDfdaf9Z03">Basic</span></td></tr><tr><td><a href="image-augmentation/augmentation-types/camera-gain-augmentation">카메라 게인(Camera Gain) 증강</a></td><td>true</td><td>true</td><td><span data-option="sdEDfdaf9Z03">Basic</span></td></tr><tr><td><a href="image-augmentation/augmentation-types/motion-blur-augmentation">모션 블러(Motion Blur) 증강</a></td><td>true</td><td>true</td><td><span data-option="sdEDfdaf9Z03">Basic</span></td></tr><tr><td><a href="image-augmentation/augmentation-types/cutout-augmentation">컷아웃(Cutout) 증강</a></td><td>true</td><td>false</td><td><span data-option="Z8F06MhppTfn">Enhanced</span></td></tr><tr><td><a href="image-augmentation/augmentation-types/mosaic-augmentation">모자이크(Mosaic) 증강</a></td><td>true</td><td>false</td><td><span data-option="Z8F06MhppTfn">Enhanced</span></td></tr></tbody></table>

## 자세히 알아보기

* [데이터 증강을 위한 궁극적인 가이드](https://blog.roboflow.com/data-augmentation/)
* [객체 탐지를 위한 이미지 증강 방법](https://blog.roboflow.com/object-detection-augmentation/)
