> 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.md).

# 데이터세트 버전

## 소개

버전은 데이터세트의 이미지와 레이블을 특정 시점에서 스냅샷으로 저장한 것입니다. 버전을 생성하면 데이터세트에 전처리 단계와 증강을 적용할 수 있습니다.

Roboflow에서 모델을 학습하려면 데이터세트 버전을 만들어야 합니다.

이 문서 섹션에서는 모델 학습을 준비하는 방법을 안내합니다. 다음이 필요합니다:

{% stepper %}
{% step %}
**버전 페이지를 열고 새 버전을 만듭니다**

가이드를 따라 [데이터세트 버전을 만들 수 있는 페이지로 이동하세요](/datasets/ko/versions/dataset-versions/create-a-dataset-version.md).
{% endstep %}

{% step %}
**전처리 단계 선택**

다음 [전처리 단계](/datasets/ko/versions/dataset-versions/image-preprocessing.md) 를 선택하세요. 모델을 학습하는 데 필요합니다.
{% endstep %}

{% step %}
**증강 적용**

[데이터세트에 원하는 증강을 적용하세요](/datasets/ko/versions/dataset-versions/image-augmentation.md). 다양한 사용 사례에 어떤 증강이 적절한지 안내하는 가이드가 있습니다.
{% endstep %}

{% step %}
**버전 확인**

버전이 생성되며 이제 모델 학습에 사용할 수 있습니다.
{% endstep %}

{% step %}
**모델 학습**

다음을 따라 [모델 학습 문서](https://docs.roboflow.com/models) 를 참고하여 학습 작업을 구성하세요.

또한 [데이터세트 버전을 내보낼 수 있습니다](/datasets/ko/versions/dataset-versions/exporting-data.md).
{% endstep %}
{% endstepper %}

## HTTP API

### 버전 보기

Python SDK, REST API, CLI를 사용하여 Roboflow 버전에 대한 정보를 가져올 수 있습니다.

#### 버전 ID

Roboflow에서 생성된 각 버전에는 순차적인 숫자 ID가 연결되어 있습니다. 버전 페이지의 앱에서 확인하거나 API에서 프로젝트 버전을 나열하여 볼 수 있습니다.

이미 어떤 프로젝트와 버전에 대한 정보를 가져올지 알고 있다면, `/:workspace/:project/:version` 엔드포인트를 사용할 수 있습니다. 이 엔드포인트는 프로젝트 엔드포인트와 유사한 정보를 반환하지만, 프로젝트의 다른 모든 버전을 열거하지는 않습니다.

프로젝트에 대한 정보를 가져오려면 다음 엔드포인트로 GET 요청을 보내세요:

```url
https://api.roboflow.com/roboflow/chess-sample-4ckfl/1?api_key=$ROBOFLOW_API_KEY
```

이 엔드포인트는 다음 응답을 반환합니다:

```bash
{
    "workspace": {
        "name": "Roboflow",
        "url": "roboflow",
        "members": 7
    },
    "project": {
        "id": "roboflow/chess-sample-4ckfl",
        "type": "객체 탐지",
        "name": "체스 샘플",
        "created": 1630335544.592,
        "updated": 1630335741.988,
        "images": 12,
        "unannotated": 3,
        "annotation": "기물",
        "public": false,
        "splits": {
            "test": 1,
            "valid": 2,
            "train": 9
        },
        "classes": {
            "검은 나이트": 11,
            "검은 퀸": 4,
            "검은 킹": 8,
            "흰색 킹": 8,
            "흰색 폰": 34,
            "검은 비숍": 8,
            "흰색 룩": 10,
            "검은 폰": 37,
            "흰색 나이트": 10,
            "흰색 비숍": 11,
            "검은 룩": 10,
            "흰색 퀸": 7
        }
    },
    "version": {
        "id": "roboflow/chess-sample-4ckfl/1",
        "name": "증강",
        "created": 1630335698.746,
        "images": 30,
        "splits": {
            "valid": 2,
            "test": 1,
            "train": 27
        },
        "model": {
            "id": "chess-sample-4ckfl/1",
            "endpoint": "https://serverless.roboflow.com/infer/chess-sample-4ckfl/1",
            "start": 1630335799.682,
            "end": 1630337523.889,
            "fromScratch": false,
            "tfjs": true,
            "oak": true,
            "map": "62.87",
            "recall": "85.29",
            "precision": "23.44"
        },
        "preprocessing": {
            "resize": {
                "height": 416,
                "width": 416,
                "format": "늘이기",
                "enabled": true
            },
            "auto-orient": {
                "enabled": true
            },
            "grayscale": {
                "enabled": true
            }
        },
        "augmentation": {
            "rotate": {
                "degrees": "5",
                "enabled": true
            },
            "brightness": {
                "darken": true,
                "enabled": true,
                "brighten": true,
                "percent": "25"
            },
            "noise": {
                "percent": "2",
                "enabled": true
            },
            "crop": {
                "enabled": true,
                "min": 0,
                "percent": 30
            },
            "flip": {
                "horizontal": true,
                "vertical": false,
                "enabled": true
            },
            "image": {
                "versions": "3",
                "enabled": true
            },
            "exposure": {
                "enabled": true,
                "percent": "25"
            }
        },
        "exports": [
            "yolov5pytorch"
        ],
        "train": {
            "status": "완료됨",
            "results": {
                "class_map": {
                    "valid": [
                        {
                            "images": "20",
                            "map95": "0.29",
                            "precision": "0.795",
                            "recall": "0.48",
                            "map50": "0.547",
                            "class": "전체",
                            "targets": "82"
                        },
                        ...
                    ],
                    "test": [
                        {
                            "images": "10",
                            "map95": "0.478",
                            "precision": "0.846",
                            "recall": "0.759",
                            "map50": "0.844",
                            "class": "전체",
                            "targets": "29"
                        },
                        ...
                    ]
                }
            }
        },
        "models": {
            "roboflow-train": {
                "epochs": [
                    {
                        "mAP": "0.5624740875589795",
                        "epoch": "0",
                        "precision": "0.848007354583702",
                        "recall": "0.4796292117720689",
                        "box_loss": "0.04430354",
                        "obj_loss": "0.023823218",
                        "class_loss": "0.012277425",
                        "mAP_50_95": "0.3004394102727502"
                    },
                    {
                        "mAP": "0.5576528999996365",
                        "epoch": "1",
                        "precision": "0.8477760345230224",
                        "recall": "0.47967238365789094",
                        "box_loss": "0.041422606",
                        "obj_loss": "0.020020777",
                        "class_loss": "0.010422977",
                        "mAP_50_95": "0.2943194093111112"
                    },
                    ...
                ]
            }
        },
        "classes": [
            "검은 나이트",
            "검은 퀸",
            "검은 킹",
            "흰색 킹",
            "흰색 폰",
            "검은 비숍",
            "흰색 룩",
            "검은 폰",
            "흰색 나이트",
            "흰색 비숍",
            "검은 룩",
            "흰색 퀸"
        ]
    }
}
```

#### 키포인트 탐지 스켈레톤

키포인트 탐지 프로젝트 버전에는 `스켈레톤` 필드가 포함되며, 여기에는 각 클래스에 대한 버전 스켈레톤이 들어 있습니다. 예를 들어, 클래스가 `사람` 다음과 같은 스켈레톤이 있을 수 있습니다:

```json
{
...
"skeletons": {
    "사람": {
        "vertices": [
            {
                "color": "#FF8000",
                "id": 0,
                "name": "코",
                "x": 0.4546,
                "y": 0.18859999999999996
            },
            {
                "color": "#FF00FF",
                "id": 1,
                "name": "왼쪽 눈"
                "x": 0.478,
                "y": 0.1606
            },
            ...
        ],
        "edges": [
            {
                "color": "#00FFCE",
                "from": 13,
                "to": 15
            },
            ...
        ],
        "symmetries": [
            {
                "direction": "수평",
                "points": [1, 2]
            },
            ...
        ]
    }
}
```

참고: 추론 예측에서는 vertices에 인덱스로 접근해야 합니다 `class_id`. 그런 다음 vertex `id` 를 사용하여 edge(from/to)와 symmetries(points)를 참조할 수 있습니다.

## Python SDK

### 버전 보기

버전 정보를 가져오려면 프로젝트를 가져온 다음 원하는 버전을 요청하세요:

```python
import roboflow

rf = roboflow.Roboflow(api_key="YOUR_API_KEY")

# 프로젝트를 가져오기
project = rf.workspace().project("PROJECT_ID")

model = project.version("1").model
```

다음 `model` 변수에는 다음 JSON 값이 들어 있습니다:

```json
{
  "id": "mug-detector-eocwp/12",
  "name": "머그 감지기",
  "version": "12",
  "classes": null,
  "overlap": 30,
  "confidence": 40,
  "stroke": 1,
  "labels": false,
  "format": "json",
  "base_url": "https://serverless.roboflow.com/infer/"
}
```

버전을 나열하고 반복 처리하려면 [워크스페이스 및 프로젝트 목록](https://docs.roboflow.com/platform/workspaces/list-workspaces-and-projects#list-projects-and-versions)을 참조하세요. 버전을 내보내려면 [데이터세트 버전 내보내기](/datasets/ko/versions/dataset-versions/exporting-data.md#python-sdk).

## CLI

명령줄에서 데이터세트 버전을 나열, 검사, 내보낼 수 있습니다.

### 버전 목록

```bash
roboflow version list -p <project>
```

예시:

```bash
roboflow version list -p my-detector
```

```
ID                              이름              이미지 수  생성일
my-workspace/my-detector/1      원본               100     2024-01-15
my-workspace/my-detector/2      증강-640     300     2024-01-20
my-workspace/my-detector/3      증강-416     250     2024-02-01
```

### 버전 세부 정보 가져오기

```bash
roboflow version get -p <project> <version-number>
```

또는 리소스 축약형을 사용하세요:

```bash
roboflow version get my-detector/3
roboflow version get my-workspace/my-detector/3
```

### 버전 내보내기

특정 형식으로 버전의 비동기 내보내기를 시작합니다:

```bash
roboflow version export -p <project> <version-number> -f <format>
```

예시:

```bash
roboflow version export -p my-detector 3 -f yolov8
```

### JSON 출력

모든 버전 명령은 `--json`:

```bash
을 지원합니다.
```

```json
[
  {
    "id": "my-workspace/my-detector/1",
    "name": "원본",
    "images": 100,
    "created": "2024-01-15T00:00:00"
  }
]
```

## 다음 단계

* 버전을 사용하여 모델을 학습하세요. 다음을 참고하세요: [모델 학습](https://docs.roboflow.com/models).
* 학습 준비가 된 형식으로 버전을 내보내세요. 다음을 참고하세요: [데이터세트 버전 내보내기](/datasets/ko/versions/dataset-versions/exporting-data.md).
