> 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/roboflow/roboflow-ko/datasets/adding-data.md).

# 이미지, 비디오, 주석 업로드

Roboflow로 모델을 학습하고 배포하는 첫 단계는 데이터를 Project에 업로드하는 것입니다.

먼저, 다음이 필요합니다 [Project를 생성해야 합니다](/roboflow/roboflow-ko/datasets/create-a-project.md).

그러면 데이터를 업로드할 수 있는 웹 페이지로 이동합니다. 이 페이지는 프로젝트 사이드바에서 사용할 수 있는 "Upload Data" 버튼에서도 접근할 수 있습니다.

## 데이터 추가 방법

Roboflow 계정에 데이터를 추가하는 방법은 다음과 같습니다:

* 웹 애플리케이션 사용: 1,000장 미만의 이미지로 구성된 데이터셋에 권장됩니다.
* 명령줄 사용: 1,000장 초과의 이미지로 구성된 데이터셋에 권장됩니다.
* Dataset Upload Workflow Block 사용: 이미 프로덕션에 배포된 모델이 있는 Workflows에서 데이터를 수집할 때 권장됩니다.

웹 애플리케이션과 명령줄에서는 다음을 업로드할 수 있습니다:

* JPG, PNG, WEBP, AVIF, BMP, HEIC/HEIF 이미지.\*
* MOV 및 MP4 비디오.
* PDF 파일.
* [지원되는 모든 형식의 주석.](https://roboflow.com/formats)

\**최대 크기 20MB, 16,400 x 10,900픽셀.*

주석은 연결된 이미지와 함께만 업로드할 수 있습니다. 이미 데이터셋에 가져온 이미지에 대한 주석은 업로드할 수 없습니다.

## 웹 애플리케이션으로 데이터 업로드

Project를 생성할 때나 Upload Data 페이지에서 이미지, 비디오, 주석을 드래그 앤 드롭할 수 있는 상자가 표시됩니다:

<figure><img src="/files/964fb8567a517bf7857ac7b41e35020a9676dec0" alt="" width="563"><figcaption></figcaption></figure>

[40개 이상의 주석 형식이 지원됩니다.](https://roboflow.com/formats) 지원되는 형식은 Project 유형에 따라 다릅니다.

<details>

<summary>파일 이름 처리 방식</summary>

이미지 파일 이름을 표준화할 수 있도록 업로드/가져오기와 내보내기 시 class names를 정리합니다. 업로드 및 데이터셋 내보내기 시 다음을 수행합니다:

* 앞뒤 공백 제거
* 모든 공백(줄바꿈 및 탭 포함)은 공백 하나로 변환됩니다
* 연속된 공백 두 개는 제거됩니다
* `/.[]#~*` 문자는 대시(-)로 대체됩니다`-`)
* `|'"` 문자는 제거됩니다

</details>

### Zip 파일 업로드

다음을 드래그 앤 드롭하거나 선택할 수 있습니다 `.zip` 이미지와 주석의 아카이브입니다. 더 작은 아카이브(최대 300개 파일)는 브라우저에서 압축이 풀리고, 폴더를 드롭했을 때와 동일한 업로드 흐름을 거치므로 미리보기 썸네일, 주석 매칭, 배치 이름 지정이 모두 동일하게 작동합니다. 아카이브 내부에 중첩된 폴더는 그대로 유지됩니다.

더 큰 아카이브(300개 초과, 최대 8GB)는 대신 원본 zip을 Roboflow 서버에 업로드합니다. 확인하면 진행률 표시줄이 업로드를 추적하고, 이후에는 브라우저가 작업을 넘기며 서버 측에서 처리가 계속됩니다. Activity Center에서 진행 상황을 확인할 수 있으므로, 작업을 계속하다가 편한 때 다시 확인하면 됩니다. 추출된 이미지는 Annotate 페이지의 배치에 표시됩니다.

8GB를 초과하는 아카이브의 경우, 대신 [명령줄로 zip을 업로드하세요](#upload-datasets-with-the-command-line) .

### 비디오 업로드

업로드된 비디오는 주석을 달 수 있는 개별 프레임으로 분할됩니다. 비디오를 업로드하면 내장 비디오 플레이어, 샘플링 슬라이더, 선택적 수동 프레임 선택 기능이 있는 추출 대화상자가 열립니다.

#### 샘플링 간격

슬라이더를 사용해 프레임을 얼마나 자주 샘플링할지 설정합니다. 슬라이더 아래 입력란에 간격을 초 단위로 직접 입력하거나 원하는 프레임 수도 직접 입력할 수 있습니다. 샘플링 범위는 초당 60프레임부터 60초에 1프레임까지입니다.

#### 수동 프레임 선택

"Manual selection"을 클릭해 프레임 선택 패널을 확장합니다. "Add current frame"을 사용하거나 `M` 를 눌러 현재 재생헤드 위치의 프레임을 선택합니다. 다음을 사용해 개별 프레임을 이동할 수 있습니다. `,` 및 `.`, 또는 다음을 사용해 선택된 프레임 사이를 이동할 수 있습니다. `Shift+Left` 및 `Shift+Right`.

샘플링된 프레임과 수동으로 선택한 프레임은 병합되고 중복이 제거되며, 대화상자에는 추출할 총 프레임 수가 실시간으로 표시됩니다.

#### 자르기

필름스트립의 자르기 핸들을 드래그해 시작점과 끝점을 설정합니다. 잘린 범위 밖의 프레임은 제외됩니다.

"Extract N frames"를 클릭해 비디오를 프레임으로 분할하고 데이터셋에 업로드합니다.

여러 비디오가 대기열에 있을 경우, 동일한 간격 설정을 모두에 적용할 수 있습니다. 선택된 프레임은 비디오별로 적용되므로, 선택된 프레임이 있는 각 비디오는 각각의 대화상자를 엽니다.

<details>

<summary>지원되는 비디오 파일 형식</summary>

Roboflow는 브라우저에 내장된 비디오 파일 지원 기능을 사용해 비디오를 모델 학습에 사용할 수 있는 프레임 이미지로 파싱합니다. 즉, 사용 중인 브라우저에 따라 MOV 및 MP4 파일을 포함한 다양한 비디오 형식을 사용할 수 있습니다.

다음을 [브라우저에서 지원하는 비디오 형식을 확인할 수 있습니다](https://caniuse.com/?search=video%20format).

비디오가 브라우저에서 디코딩할 수 없는 형식이면, Roboflow는 "Scanning files"에서 멈추는 대신 "unsupported video" 오류를 표시하고 파일 변환을 안내합니다. HEVC/H.265는 흔한 원인으로(예: DJI 드론, GoPro, 최신 휴대폰의 영상) Safari에서만 디코딩할 수 있습니다. 비디오를 더 널리 지원되는 MP4(H.264)로 다시 내보내거나 변환한 뒤 다시 업로드하세요.

Roboflow에 비디오 파일을 불러오는 데 문제가 있다면, 저희 [forum](https://discuss.roboflow.com/) 에 게시하거나 계정 담당자에게 문의할 수 있습니다.

</details>

## 명령줄로 데이터셋 업로드

Roboflow Python 명령줄 인터페이스를 사용해 더 큰 데이터셋을 업로드할 수 있습니다.

명령줄 인터페이스로는 이미지만 업로드할 수 있습니다. 비디오가 있다면 먼저 [파일로 저장된 프레임으로 분할해야 합니다](https://superuser.com/questions/1044444/how-do-i-use-ffmpeg-to-split-a-video-into-images-and-then-reassemble-exactly-the). 그런 다음 이 파일들을 Roboflow에 업로드할 수 있습니다.

시작하려면 먼저 다음을 설치하세요 `roboflow-python`:

```
pip install roboflow
```

다음으로, [Workspace ID를 가져옵니다](https://docs.roboflow.com/developer/rest-api/workspace-and-project-ids).

마지막으로, 다음 형식의 명령을 준비하세요:

```
roboflow import -w testupload -p project-1-8zgld /path/to/dataset/folder
```

지정해야 하는 인수는 다음과 같습니다:

* `-w testupload`: 이것은 workspace 이름입니다.
* `-p <project-id>`: 이것은 project ID입니다.

명령을 실행하면 업로드 프로세스가 시작되었음을 알리는 메시지가 표시됩니다. 그런 다음 이미지가 업로드되는 동안 로그가 표시됩니다:

<figure><img src="/files/3f5a30c64887bedf0aa994727d955e364b1f45f7" alt=""><figcaption><p>명령줄을 사용한 데이터셋 업로드</p></figcaption></figure>

명령줄에서 데이터를 업로드하는 방법을 보여 주는 비디오 안내가 있습니다:

{% embed url="<https://www.loom.com/share/19637984033a466b831af56f9404fa89>" %}

### Zip 파일 업로드

대용량 데이터셋의 경우, 개별 파일 대신 이미지와 주석이 담긴 단일 `.zip` 아카이브를 업로드할 수 있습니다. 아카이브는 한 번 업로드되어 Roboflow 서버에서 비동기적으로 처리되므로, 파일별로 업로드하는 것보다 더 빠르고 안정적입니다.

{% tabs %}
{% tab title="CLI" %}
다음을 `.zip` 직접 업로드하세요:

```bash
roboflow image upload dataset.zip --workspace <workspace> -p <project>
```

또는 업로드 전에 CLI가 폴더를 zip으로 압축하도록 하세요:

```bash
roboflow image upload ./dataset/folder --zip-upload --workspace <workspace> -p <project>
```

기본적으로 명령은 처리가 끝날 때까지 기다린 후 요약을 출력합니다. `--no-wait` 를 전달하면 즉시 반환되며, CLI는 업로드 상태를 폴링하는 데 사용할 수 있는 작업 ID를 출력합니다.
{% endtab %}

{% tab title="Python SDK" %}

```python
import roboflow

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

# .zip 경로는 자동으로 감지되어 아카이브로 업로드됩니다
workspace.upload_dataset("dataset.zip", project_name="your-project")

# 폴더의 경우 use_zip_upload를 사용해 zip으로 압축한 뒤 하나의 아카이브로 업로드하도록 선택할 수 있습니다
workspace.upload_dataset("./dataset/folder", project_name="your-project", use_zip_upload=True)
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
Zip 업로드는 최대 8GB 및 100,000개 파일까지의 아카이브를 지원합니다. 예측(`is_prediction=True`)은 zip 경로에서 지원되지 않습니다. 해당 경우에는 이미지별 업로드를 사용하세요.
{% endhint %}

## 업로드한 데이터 보기

Roboflow에 업로드된 모든 데이터는 "batch"로 업로드됩니다. 이 batch는 Project Annotate 페이지에서 볼 수 있습니다:

<figure><img src="/files/dc3d1e929c98cc2a1c993c3318d54bf389c2f213" alt=""><figcaption></figcaption></figure>

## 이미지 크기 제한

이미지의 최대 크기는 20MB입니다

최대 픽셀 크기는 16,400 × 10,900픽셀입니다.

## 중복 이미지

이미지가 이미 Project에 있는 경우, 해당 이미지의 업로드는 건너뜁니다.

{% hint style="info" %}
두 데이터셋을 [병합하면](https://docs.roboflow.com/merge-datasets), 병합된 데이터셋과 두 원본 데이터셋이 계정에 모두 존재합니다. 따라서 이미지는 중복되므로 병합에 대한 요금은 부과되지 않습니다.
{% endhint %}

## 데이터 소유권

Roboflow에 업로드하는 모든 이미지와 비디오의 소유권은 계속 귀하에게 있습니다. 이는 다음에 정의되어 있습니다 [서비스 약관의 섹션 23B](https://roboflow.com/terms):

> 귀하는 게시, 제출, 공개, 표시 또는 전송하는 모든 콘텐츠, 정보 또는 자료에 대한 모든 소유권을 유지합니다

## 데이터 개인정보 보호

**Public 플랜:** Public 플랜을 사용 중인 경우, Roboflow가 명시적으로 달리 지정하고 조정하지 않는 한, 데이터셋은 Roboflow Universe에서 공개됩니다.

**유료 플랜(Enterprise 포함):** 달리 명시되지 않는 한, 데이터는 계정에 비공개로 유지됩니다.
