> 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/ja/shiteappurdo/upload-a-dataset.md).

# データセットをアップロードする

このページでは、既存のラベル付きデータセット（画像とそのアノテーション）を Python SDK、REST zip エンドポイント、または CLI を使って一括インポートする方法を説明します。API を使って個々の画像をアップロード・管理する方法については、 [画像を管理](/datasets/ja/guan-li/manage-images.md).

## Python SDK

`Workspace.upload_dataset()` 構造化されたデータセット（画像 + 対応するアノテーション）を Roboflow プロジェクトにアップロードします。プロジェクトが存在しない場合は作成され、存在する場合は新しい画像が既存のプロジェクトに追加されます。

```python
import roboflow

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

workspace.upload_dataset(
    "./dataset/",                  # 構造化データセット ディレクトリへのパス
    "my-detector",                 # プロジェクト ID（存在しない場合は作成されます）
    num_workers=10,
    project_license="MIT",
    project_type="object-detection",
    batch_name=None,
    num_retries=0,
    is_prediction=False,           # レビュー待ちのモデル生成アノテーションの場合は True
)
```

### パラメータ

* `dataset_path` (str) - データセットルートへのパス。
* `project_name` (str) - 送信先プロジェクトの ID。存在しない場合は作成されます。
* `num_workers` (int, default `10`) - 同時アップロード。25 を超えないことを推奨します。
* `project_license` (str, default `"MIT"`) - 新規作成されるプロジェクトのライセンス。次に設定します： `"Private"` プライベートプロジェクト用（有料プランのみ）。
* `project_type` (str, default `"object-detection"`) - 新規作成されるプロジェクトの種類。プロジェクトが既に存在する場合は無視されます。
* `batch_name` (str, optional) - これらのアップロードをこの名前のバッチにまとめます。ラベリングラウンドのソース追跡に便利です。
* `num_retries` (int, default `0`) - 一時的なアップロード失敗を再試行します。
* `is_prediction` (bool、デフォルト `False`) - 次のように設定します `True` と、正解データではなくレビュー待ちのモデル予測としてアノテーションをアップロードします。

### 予測の保存先

画像がまだアップロードバッチ内にあるときにその画像に予測を保存すると、Roboflow はその画像をそのバッチのレビュージョブへ移動します。ジョブを開いて、ラベルを承認または修正してから正解データになります。

画像がすでにアノテーションジョブに割り当てられている場合は、そのジョブに留まります。

### 想定されるディレクトリ構成

COCO データセットの場合：

```
my_dataset/
├── train/
│   ├── image1.jpg
│   └── _annotations.coco.json
├── valid/
│   ├── image2.jpg
│   └── _annotations.coco.json
└── test/
    ├── image3.jpg
    └── _annotations.coco.json
```

VOC では、対応する `.xml` ファイルを各画像の横に置きます。YOLO では、対応する `.txt` ファイルと `data.yaml` を配置し、クラス一覧を記述します。

### SHA-256 重複排除に関する注意（v1.3.6+）

roboflow `1.3.6 以降、SDK は Pillow 経由で再エンコードするのではなく、元の画像バイト列をアップロードします。これにより Web アップローダーとの整合性が取れ、Roboflow サーバーは SHA-256 によってアップロードを重複排除できます。同じ画像を再アップロードしても（たとえば別のバッチに）追加のストレージクレジットを消費せずに成功します。` データセット ZIP をアップロード

## REST API

### データセットを単一の zip アーカイブとして（最大 2 GB、10,000 ファイル）非同期タスクでアップロードします。標準の画像アップロード エンドポイントとは異なり、zip の処理中も HTTP 接続を開いたままにしておく必要はありません。API は、zip を PUT するための署名付き URL を返し、

ステータスをポーリングします。 `taskId` このエンドポイントは、Roboflow のデータセットアップロードツールでサポートされる任意の形式（COCO、YOLO、Pascal VOC など）で画像とアノテーションを含む zip を受け付けます。分類データセットでは、フォルダー名がクラスラベルとして使用されます。

フロー

#### POST /:workspace/:project/upload/zip

1. `署名付き URL と` 署名付き URL と `taskId`.
2. `PUT` zip を署名付き URL に直接 PUT します。
3. `GET /:workspace/upload/zip/:taskId` タスクが完了するまでポーリングします。

#### アップロードを開始

送信します `POST` を `/:workspace/:project/upload/zip`。レスポンスには GCS 署名付き URL と `taskId`.

```bash
curl -X POST "https://api.roboflow.com/my-workspace/my-project/upload/zip?api_key=$ROBOFLOW_API_KEY" \\
  -H "Content-Type: application/json" \\
  -d '{"split": "train", "batchName": "my-batch"}'
```

**ボディパラメータ**

```
- split (string, optional) - train、valid、test のいずれか。デフォルトは train。
- batchName (string, optional) - アップロードした画像をこの名前のバッチにまとめます。
```

アノテーションを含む zip は、次にちなんで名付けられた 1 つのアノテーションジョブに配置されます： `batchName`、または省略した場合は「Uploaded via API」になります。名前を再利用しても、各アップロードには個別のジョブが作成されます。ワークスペースで [Review Mode](/datasets/ja/anotshon/anotshon/team-collaboration.md#review-mode) Review がオンの場合、画像は Review で待機し、レビュアーが承認するとデータセットに追加されます。

**レスポンス**

```json
{
    "taskId": "abc123",
    "signedUrl": "https://storage.googleapis.com/...",
    "url": "https://api.roboflow.com/my-workspace/upload/zip/abc123"
}
```

#### ZIP をアップロード

`PUT` zip ファイルを返された `signedUrl`。Content-Type は `application/zip`.

```bash
curl -X PUT "$SIGNED_URL" \\
  -H "Content-Type: application/zip" \\
  --upload-file ./my-dataset.zip
```

アップロードが完了すると、処理は自動的に開始されます。

#### タスクのステータスをポーリング

送信します `GET` を `/:workspace/upload/zip/:taskId`.

```bash
curl "https://api.roboflow.com/my-workspace/upload/zip/abc123?api_key=$ROBOFLOW_API_KEY"
```

レスポンスは標準の [非同期タスク](https://docs.roboflow.com/reference/platform/rest-api/async-tasks) 形式に従います。タスクが完了すると、 `result` には、各画像の要約と、解析中に発生した警告やエラーが含まれます。

```json
{
    "taskId": "abc123",
    "status": "completed",
    "progress": { "current": 250, "total": 250 },
    "result": {
        "uploaded": 248,
        "failed": 2,
        "warnings": [],
        "errors": []
    }
}
```

画像ごとのエラーと警告は、それぞれ最大 100 件まで報告されます。zip 内の動画や PDF は未対応フォーマットの警告として表示され、スキップされます。

#### 制限

* 最大 zip サイズ: 2 GB
* zip あたりの最大ファイル数: 10,000

#### エラー

```
- 400 - zip が不正な形式であるか、サイズまたはファイル数の制限を超えています。
- 401 - API キーが不足しているか無効です。
- 404 - ワークスペース、プロジェクト、またはタスクが存在しないか、別のワークスペースに属しています。
```

## CLI

Roboflow CLI を使用して、画像や/またはアノテーションを含むデータセットをアップロードできます。

データセットをアップロードする方法を説明する動画を用意しました：

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

### ディレクトリをアップロード

を使用 `roboflow image upload` ディレクトリのパスを指定して、画像ごとの並列アップロードでデータセットを一括アップロードします：

```bash
roboflow image upload /path/to/dataset/folder -p PROJECT_ID
```

または省略形のエイリアスを使用します：

```bash
roboflow upload /path/to/dataset/folder -p PROJECT_ID
```

CLI は、そのパスがファイル、ディレクトリ、または `.zip` ファイルかどうかを自動判別します。ディレクトリの場合は、 `--zip-upload`.

#### オプション

| フラグ                   | 説明                              |
| --------------------- | ------------------------------- |
| `-p`, `--project`     | プロジェクト ID（必須）                   |
| `-c`, `--concurrency` | 並列アップロード数（デフォルト: 10）            |
| `-b`, `--batch`       | アップロードをまとめるバッチ名                 |
| `-r`, `--retries`     | 失敗したアップロードを N 回再試行します（デフォルト: 0） |
| `-s`, `--split`       | アップロードされたすべての画像の split を上書きします  |

オプション付きの例：

```bash
roboflow upload ./my-dataset -p my-project -c 20 -b "april-batch" -r 3
```

### Zip ファイルをアップロードする

大きなデータセットや、データセットがすでに `.zip` ファイルです。zip アップロードでは Roboflow の非同期 zip アップロードフローを使用します。デフォルトでは、CLI は zip ファイルをアップロードし、処理が完了するまで待機します。

これは、次で説明しているのと同じフローです： [REST API](#rest-api) 上記；CLI が署名付き URL へのアップロードとタスクのポーリングを代行します。

既存の zip ファイルをアップロードするには：

```bash
roboflow image upload /path/to/dataset.zip -p PROJECT_ID
```

ローカルディレクトリをクライアント側で zip 化し、非同期 zip フローでアップロードするには、 `--zip-upload` メインコマンドに次を付けて使用します：

```bash
roboflow image upload /path/to/dataset/folder -p PROJECT_ID --zip-upload
```

#### ZIP アップロードのオプション

| フラグ               | 説明                                                 |
| ----------------- | -------------------------------------------------- |
| `-p`, `--project` | プロジェクト ID（必須）                                      |
| `--zip-upload`    | ディレクトリをクライアント側で zip 化し、非同期 zip アップロードフローでアップロードします |
| `--no-wait`       | zip のアップロード後、処理が完了するのを待たずにすぐに返します                  |
| `-b`, `--batch`   | アップロードをまとめるバッチ名                                    |
| `-s`, `--split`   | 分割セット: train、valid、または test                        |
| `-t`, `--tag`     | カンマ区切りのタグ名                                         |

zip アップロードオプション付きの例：

```bash
roboflow image upload ./my-dataset.zip -p my-project -s train -t "outdoor,daytime" -b "april-batch"
```

処理を開始し、すぐにタスク ID を返すには：

```bash
roboflow image upload ./my-dataset.zip -p my-project --no-wait --json
```

JSON レスポンスには非同期タスク ID が含まれます：

```json
{
  "status": "pending",
  "task_id": "task-123",
  "path": "./my-dataset.zip",
  "project": "my-project",
  "result": {
    "task_id": "task-123",
    "status": "pending"
  }
}
```

zip アップロードでは次をサポートしていません： `--is-prediction`。予測アップロードには通常の画像ごとのアップロードフローを使用してください。

### サポートされているプロジェクトタイプ

次のプロジェクトタイプにデータをアップロードできます：

* オブジェクト検出
* 単一ラベル分類
* マルチラベル分類
* インスタンスセグメンテーション
* セマンティックセグメンテーション
* キーポイント検出

### サポートされている data.yaml 形式

CLI は、次の中でリスト形式とキーと値のペア形式の両方のクラス名マッピングをサポートします： `data.yaml` データセットのアップロード中のファイル：

```yaml
nc: 3
names: ['Paper', 'Rock', 'Scissors']
```

または

```yaml
nc: 3
names:
  0: Paper
  1: Rock
  2: Scissors
```

### JSON 出力

自動化には次を使用します： `--json`:

```bash
roboflow upload ./my-dataset -p my-project --json
```

```json
{"status": "uploaded", "path": "./my-dataset", "project": "my-project"}
```

## MCPサーバー

AIエージェントを [MCPサーバー](https://docs.roboflow.com/agents/mcp-server) そして次のツールを使ってデータセットをアップロードできます：zip には画像のみが含まれるため、ラベルは次の手順で保存されます。

<table data-search="false"><thead><tr><th width="290">ツール</th><th>説明</th></tr></thead><tbody><tr><td><code>image_upload</code></td><td>zip を介してローカル画像ファイルをプロジェクトにアップロードします。画像のみで、アノテーションファイルはありません。</td></tr><tr><td><code>image_upload_status</code></td><td>画像 zip アップロードタスクの状態を確認します。</td></tr><tr><td><code>annotations_save</code></td><td>すでにアップロード済みの画像のアノテーションを保存します。</td></tr></tbody></table>

## 次のステップ

* トレーニングに使用できるよう、アノテーションされていない画像にラベルを付けてください。詳しくは [Roboflow Annotate の概要](/datasets/ja/anotshon/anotshon/annotation-tools.md).
* 画像をトレーニング可能なスナップショットに変換します。詳しくは [データセットバージョンを作成](/datasets/ja/bjon/dataset-versions/create-a-dataset-version.md).
