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

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

Python SDK を使って、画像と注釈からなる構造化データセットを Roboflow プロジェクトにアップロードします。

このページでは、既存のラベル付きデータセット（画像とそのアノテーション）の一括インポートについて、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、デフォルト `10`) - 同時アップロード数。25 を超えないことを推奨します。
* `project_license` (str、デフォルト `"MIT"`) - 新しく作成されるプロジェクトのライセンス。次に設定: `"Private"` 非公開プロジェクト用。
* `project_type` (str、デフォルト `"object-detection"`) - 新しく作成されるプロジェクトの種類。プロジェクトがすでに存在する場合は無視されます。
* `batch_name` (str、任意) - これらのアップロードを名前付きバッチにまとめます。ラベル付け作業の出所を追跡するのに便利です。
* `num_retries` (int、デフォルト `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
```

各画像が含まれるフォルダーが、その split を設定します。次の正確なフォルダー名のみが有効です: `train`, `training`, `valid`, `validation`, `val`, `test`、および `testing`。大文字小文字は区別されず、ファイル名は無視されるため、次のような名前の画像でも `test_image.jpg` test split には入りません。また、次のような名前のフォルダーでは `train2017` では split は設定されません。どのフォルダーにも一致しない場合、画像はアップロードのデフォルト split にフォールバックします。zip アップロードでは、それは `split` リクエスト内の値で、デフォルトは `train`.

VOC では、対応する `.xml` ファイルを各画像と同じ場所に置きます。YOLO では、対応する `.txt` ファイルに加えて `data.yaml` クラス一覧を記述したものです。

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

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

## REST API

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

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

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

#### フロー

1. `POST /:workspace/:project/upload/zip` 署名付き URL と `taskId`.
2. `PUT` ZIP を署名付き URL に直接送信します。
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) - アップロードした画像をこの名前のバッチにまとめます。
- annotationOverwrite (boolean, optional) - すでにプロジェクトにある画像のアノテーションを置き換えます。デフォルトは false。
```

デフォルトでは、すでにプロジェクトにある画像は既存のアノテーションを保持し、ZIP 内のその画像に対するアノテーションはスキップされます。 `annotationOverwrite` へ `true` で置き換えます。分類プロジェクトは常にラベルを置き換えるため、デフォルトは無視され、 `annotationOverwrite: false` 400 を返して拒否します。

アノテーションを含む ZIP は、次の名前の 1 つのアノテーション ジョブに入ります: `batchName`、または指定しない場合は "Uploaded via API" になります。名前を再利用しても、アップロードごとに個別のジョブが作成されます。ワークスペースで [レビュー モード](/datasets/ja/zhu-shi/zhu-shi/team-collaboration.md#review-mode) が有効な場合、画像はレビューで待機し、レビュー担当者が承認するとデータセットに追加されます。

**レスポンス**

```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 件、警告も最大 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 ファイルをアップロード

より大きなデータセットや、データセットがすでに 1 つの `.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`   | 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 にあるクラス名マッピングとして、リスト形式とキーと値のペア形式の両方をサポートします: `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 には画像のみが含まれるため、ラベルは 2 段階目で保存されます。

<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/zhu-shi/zhu-shi/annotation-tools.md).
* 画像を学習可能なスナップショットに変換します。参照: [データセット バージョンを作成](/datasets/ja/bjon/dataset-versions/create-a-dataset-version.md).
