> For the complete documentation index, see [llms.txt](https://docs.roboflow.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.roboflow.com/datasets/ko/versions/dataset-versions/create-a-dataset-version.md).

# 데이터셋 버전 생성

## 소개

버전은 데이터셋의 특정 시점 스냅샷입니다. 우리는 모델의 각 반복에서 정확히 어떤 이미지, 전처리, 증강 단계가 사용되었는지 추적함으로써 결과를 재현할 수 있는 능력을 유지할 수 있으므로 이러한 버전을 보관합니다. 이를 통해 데이터 파이프라인의 버그/변경 때문이 아니라 모델 변경에 결과를 귀속시킬 수 있다는 확신을 유지한 채, 다양한 모델과 프레임워크 전반에서 과학적으로 테스트할 수 있습니다.

<a href="https://docs.roboflow.com/platform/workspaces/key-concepts" class="button primary">핵심 개념: 워크스페이스와 프로젝트란 무엇인가요?</a>

{% hint style="info" %}
버전이 생성되면 시간이 멈춘 듯 고정되므로, 이미지, 주석 또는 기타 데이터를 추가/삭제하는 등 프로젝트에 대한 변경 사항은 그 이전에 생성된 버전에 영향을 주지 않습니다.
{% endhint %}

## 웹 앱

### 데이터셋 버전을 만드는 방법

데이터셋 버전을 만들려면 Roboflow 프로젝트와 연결된 사이드바에서 "버전"을 클릭한 다음, "새 버전 생성"을 클릭하세요.

이 페이지에서 train/test/valid 분할을 설정하고 새 데이터셋 버전에 대한 전처리 단계와 증강을 지정할 수 있습니다.

<figure><img src="/files/ecd9232ab203107468b10299ef456b563dd44f9a" alt="" width="375"><figcaption></figcaption></figure>

데이터에 적용할 전처리 단계와 증강을 지정한 다음, "생성"을 클릭하세요. 그러면 새 데이터셋 버전이 생성됩니다. 그런 다음 이 데이터셋 버전을 사용해 Roboflow에서 모델을 학습할 수 있습니다. 또한 [데이터셋을 내보낼 수 있으며](/datasets/ko/versions/dataset-versions/exporting-data.md) 수동으로 모델을 학습할 때 사용할 수 있습니다.

### 학습/검증/테스트 분할 다시 조정하기

버전 생성 과정에서 학습, 검증, 테스트 세트의 분할 비율도 다시 조정할 수 있습니다. 이렇게 하려면 "2단계: 학습/테스트 분할"로 이동한 뒤 "재균형" 버튼을 클릭하세요.

<figure><img src="/files/254e8d2d9c948915a5e3702fbb6027dea0cde4c2" alt="" width="375"><figcaption></figcaption></figure>

권장 분할 비율은 70/20/10(train/valid/test)이며, 대부분의 데이터셋에 좋은 출발점입니다. 언제든지 "초기화"를 클릭하여 복원할 수 있습니다.

학습, 검증, 테스트 비율을 설정한 다음 이미지 재할당 방식을 선택하세요:

* "가능한 한 적게 이동"은 이미지를 현재 분할에 유지하고, 목표 비율에 도달하는 데 필요한 만큼만 이동합니다.
* "무작위 섞기"는 모든 이미지를 분할 전반에 걸쳐 무작위로 재할당합니다.
* "업로드 배치 또는 주석 작업별 무작위 섞기"는 각 업로드 배치나 완료된 주석 작업을 별도로 섞어, 모든 배치와 작업이 목표 비율과 일치하도록 합니다.

대상 클래스를 지정하여 재균형 범위를 제한할 수도 있습니다. 클래스를 선택하면 해당 클래스만 포함하는 이미지로 이동이 제한되며, 방법이 "가능한 한 적게 이동"으로 전환됩니다.

대용량 데이터셋의 경우 재균형은 단계별 진행률이 표시되는 백그라운드 작업으로 실행됩니다. 진행 중에는 대화상자를 닫아도 계속 진행되며, Activity Center에서 추적할 수 있습니다.

## Python SDK

버전은 선택한 전처리 및 증강 단계가 적용된 프로젝트의 라벨링된 데이터 스냅샷을 고정합니다. 프로젝트가 아니라 버전을 대상으로 학습하세요.

`Project.generate_version()` 는 새 버전 번호를 반환하며, 이를 `project.version(...)` 에 전달하여 `버전` 핸들을 얻을 수 있습니다.

```python
import roboflow

rf = roboflow.Roboflow(api_key="YOUR_API_KEY")
project = rf.workspace().project("my-detector")

new_version = project.generate_version(settings={
    "preprocessing": {
        "auto-orient": True,
        "resize": {"width": 640, "height": 640, "format": "늘이기"},
    },
    "augmentation": {},
})
version = project.version(new_version)
```

다음은 설정의 전체 예시입니다. 아래에서 각 속성에 대한 자세한 설명을 확인할 수 있습니다.

```json
{
    "versionName": "너구리들",
    "augmentation": {
        "bbblur": { "pixels": 1.5 },
        "bbbrightness": { "brighten": true, "darken": false, "percent": 91 },
        "bbcrop": { "min": 12, "max": 71 },
        "bbexposure": { "percent": 30 },
        "bbflip": { "horizontal": true, "vertical": false },
        "bbnoise": { "percent": 50 },
        "bbninety": { "clockwise": true, "counter-clockwise": false, "upside-down": false },
        "bbrotate": { "degrees": 45 },
        "bbshear": { "horizontal": 45, "vertical": 45 },
        "blur": { "pixels": 1.5 },
        "brightness": { "brighten": true, "darken": false, "percent": 91 },
        "crop": { "min": 12, "max": 71 },
        "cutout": { "count": 26, "percent": 71 },
        "exposure": { "percent": 30 },
        "flip": { "horizontal": true, "vertical": false },
        "hue": { "degrees": 180 },
        "image": { "versions": 32 },
        "mosaic": true,
        "ninety": { "clockwise": true, "counter-clockwise": false, "upside-down": false },
        "noise": { "percent": 50 },
        "rgrayscale": { "percent": 50 },
        "rotate": { "degrees": 45 },
        "saturation": { "percent": 50 },
        "shear": { "horizontal": 45, "vertical": 45 }
    },
    "preprocessing": {
        "auto-orient": true,
        "contrast": { "type": "대비 확장" },
        "filter-null": { "percent": 50 },
        "filter-tags": { "tag_name": true, "other_tag": false },
        "grayscale": true,
        "isolate": true,
        "remap": { "original_class_name": "새_클래스_이름" },
        "resize": { "width": 200, "height": 200, "format": "늘이기" },
        "static-crop": { "x_min": 10, "x_max": 90, "y_min": 10, "y_max": 90 },
        "tile": { "rows": 2, "columns": 2 }
    }
}
```
