# Image Augmentation

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

{% hint style="success" %}
증강 없이 프로젝트를 시작하는 것을 권장합니다. 이렇게 하면 원본 데이터셋의 품질을 평가할 수 있습니다. 증강을 추가했는데 데이터셋 성능이 기대만큼 나오지 않으면, 모델 성능을 비교할 기준선이 없게 됩니다.

증강 없이도 모델이 잘 동작하지 않는다면, 클래스 균형, 데이터 표현, 데이터셋 크기를 검토해야 할 수 있습니다. 증강 없이 모델을 성공적으로 학습한 데이터셋이 있다면, 증강을 추가해 모델 성능을 더욱 향상시킬 수 있습니다.
{% endhint %}

증강은 몇 가지 핵심적인 이유로 학습 시점이 아니라 dataset version("offline augmentation")을 통해 적용됩니다:

1. **모델 재현성이 높아집니다**. Roboflow에서는 각 이미지가 어떻게 증강되었는지에 대한 복사본을 보관합니다. 예를 들어, 어두운 이미지보다 밝은 이미지에서 모델 성능이 더 좋다는 것을 발견할 수 있으므로, 더 많은 저조도 학습 데이터를 수집해야 합니다.
2. **학습 시간이 줄어듭니다**. 증강은 CPU에 제약을 받는 작업입니다. GPU로 학습하면서 실시간으로 증강을 수행하면, GPU는 각 epoch마다 CPU가 증강된 데이터를 제공해주기를 기다리는 경우가 많습니다. 그 시간이 누적됩니다!
3. **학습 비용이 줄어듭니다**. 증강은 CPU에 제약을 받는 작업이므로, 비용이 많이 드는 임대 GPU는 종종 학습에 사용할 이미지를 받기 위해 기다리게 됩니다.

## 증강 적용 방식

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

예를 들어, “가로로 뒤집기”와 “salt and pepper noise” 증강을 선택하면, 특정 이미지는 무작위로 가로 반전되고 무작위 salt and pepper noise가 추가됩니다.

### 증강 제한하기

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

예를 들어 3x를 선택하면, 최종 dataset version에는 각 학습 원본 이미지에 [전처리 단계](/roboflow/roboflow-ko/datasets/dataset-versions/image-preprocessing.md) 가 적용되고, 선택한 설정에 따라 각 이미지마다 2개의 무작위 증강이 추가됩니다.

데이터셋에 100개의 이미지가 있고 train/valid/test 분할이 70/20/10이며 3x 증강을 선택했다면, 최종 데이터셋은 대략 210/20/10 분할이 됩니다.

<figure><img src="/files/9b720f8ff34e1ea3bdcb6a3400b086a44883ce49" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
이미지 중복 제거를 수행하고 "Filter Null" 같은 특정 옵션이 출력에서 이미지를 제거할 수 있으므로, version의 최종 이미지 수는 이 추정치보다 적을 수 있습니다.
{% endhint %}

## 증강 옵션

Roboflow의 증강은 "Basic" 또는 "Enhanced"일 수 있으며, 두 가지 다른 수준에서 적용할 수 있습니다.

### 이미지 수준 증강

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

### Bounding Box 수준 증강

Bounding box 수준 증강은 소스 이미지의 bounding box 내용만 변경하여 새로운 학습 데이터를 만듭니다. 이를 통해 개발자는 문제의 조건에 더 적합한 학습 데이터를 만들 때 더 큰 제어권을 가질 수 있습니다.

A [2019년 논문](https://arxiv.org/pdf/1906.11172.pdf) 은 Google 연구원들이 모델에 최적의 데이터를 만들기 위해 bounding box만 사용하는 증강 아이디어를 소개합니다. 이 논문에서 연구원들은 bounding box만 수정하는 것이 특히 작은 데이터셋으로 학습된 모델에서 체계적인 개선을 만든다는 것을 보여주었습니다.

{% 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">Bounding Box 증강</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="/pages/825a3c584a9518e963c19461c53985e7896a536a">Flip 증강</a></td><td>true</td><td>true</td><td><span data-option="sdEDfdaf9Z03">Basic</span></td></tr><tr><td><a href="/pages/a096b99c2c1fcd55439fda91e12a823898d611cb">90° Rotate 증강</a></td><td>true</td><td>true</td><td><span data-option="sdEDfdaf9Z03">Basic</span></td></tr><tr><td><a href="/pages/bb2af926ab71c429111128956af4b01b55fbe3ef">Crop 증강</a></td><td>true</td><td>true</td><td><span data-option="sdEDfdaf9Z03">Basic</span></td></tr><tr><td><a href="/pages/bb55104dd340a95c0dbbaea842713298e312e027">Rotation 증강</a></td><td>true</td><td>true</td><td><span data-option="sdEDfdaf9Z03">Basic</span></td></tr><tr><td><a href="/pages/d297149de62b22540cbfc1a8a28ba6d3e2e93e55">Shear 증강</a></td><td>true</td><td>true</td><td><span data-option="sdEDfdaf9Z03">Basic</span></td></tr><tr><td><a href="/pages/b3622ef85e8bcc7d5f5769c625c7365afa695515">Grayscale 증강</a></td><td>true</td><td>false</td><td><span data-option="sdEDfdaf9Z03">Basic</span></td></tr><tr><td><a href="/pages/6c5aecfc70b14a641bc2056dade3fe51c6252469">Hue 증강</a></td><td>true</td><td>false</td><td><span data-option="sdEDfdaf9Z03">Basic</span></td></tr><tr><td><a href="/pages/0617286c0e6b69fd15e6e550d7f841678e9bbe19">Saturation 증강</a></td><td>true</td><td>false</td><td><span data-option="sdEDfdaf9Z03">Basic</span></td></tr><tr><td><a href="/pages/0944bc07577e2833970ad5ab44c7fb03c0815e15">Brightness 증강</a></td><td>true</td><td>true</td><td><span data-option="sdEDfdaf9Z03">Basic</span></td></tr><tr><td><a href="/pages/838c83b3e57ad18d51b745c23fcdd57fbbc2f6f0">Exposure 증강</a></td><td>true</td><td>true</td><td><span data-option="sdEDfdaf9Z03">Basic</span></td></tr><tr><td><a href="/pages/b0ef1217927d12d2f00271341e994a40d18c1bd6">Blur 증강</a></td><td>true</td><td>true</td><td><span data-option="sdEDfdaf9Z03">Basic</span></td></tr><tr><td><a href="/pages/8581d25745b86b905faad6e214952b62bfbce050">Noise 증강</a></td><td>true</td><td>true</td><td><span data-option="sdEDfdaf9Z03">Basic</span></td></tr><tr><td><a href="/pages/d6c7c286ffe0943b5e8701a35b359371d63adf80">Camera Gain 증강</a></td><td>true</td><td>true</td><td><span data-option="sdEDfdaf9Z03">Basic</span></td></tr><tr><td><a href="/pages/2634404b41fde7b8418c0e7f511fca0fe231925c">Motion Blur 증강</a></td><td>true</td><td>true</td><td><span data-option="sdEDfdaf9Z03">Basic</span></td></tr><tr><td><a href="/pages/376947144cf3d9234a6c54d756b9ef16ce45692f">Cutout 증강</a></td><td>true</td><td>false</td><td><span data-option="Z8F06MhppTfn">Enhanced</span></td></tr><tr><td><a href="/pages/3f502554abe8d8344905d718629d1d9b43416941">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/)
* [Object Detection을 위한 이미지 증강 방법](https://blog.roboflow.com/object-detection-augmentation/)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.roboflow.com/roboflow/roboflow-ko/datasets/dataset-versions/image-augmentation.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
