# Custom Model Weights をアップロード

関連ページ:

* Roboflowでモデルをトレーニングするには、こちらを参照してください [Model を学習](/roboflow/roboflow-jp/train/train.md)
* モデルの重みをダウンロードするには、こちらを参照してください [Model Weights をダウンロード](/roboflow/roboflow-jp/deploy/download-roboflow-model-weights.md)

## Roboflow以外でトレーニングした重みのアップロード

カスタムモデルのトレーニングが完了したら、モデルの重みをRoboflowのプロジェクトにアップロードして、以下の利点を活用してください [Roboflow Inference](https://inference.roboflow.com/).

### Model Support

こちらを参照してください [Supported Models table](/roboflow/roboflow-jp/deploy/supported-models.md) 重みのアップロード互換性の詳細について。

{% hint style="warning" %}

* YOLOv8モデルは以下でトレーニングする必要があります `ultralytics==8.0.196`
* YOLOv9モデルは以下を使用してトレーニングおよびアップロードする必要があります `ultralytics` から <https://github.com/WongKinYiu/yolov9>
* YOLOv10モデルは以下を使用してトレーニングおよびアップロードする必要があります `ultralytics` から

  <https://github.com/THU-MIG/yolov10>
* YOLOv11モデルは以下でトレーニングする必要があります `ultralytics<=8.3.40`
* YOLOv12モデルは以下を使用してトレーニングおよびアップロードする必要があります `ultralytics` から <https://github.com/sunsmarterjie/yolov12>
  {% endhint %}

{% hint style="info" %}
モデルサイズが大きいほど、トレーニング結果は向上します。ただし、モデルサイズが大きいほど、トレーニング時間と推論（モデル予測）速度は遅くなります。高速で動く物体や動画フィードに対してリアルタイム推論を行いたいのか（小さいモデルの使用が望ましい）、それともデータ収集後に処理し、より高い予測精度を重視するのか（大きいモデルを選択）を検討してください。
{% endhint %}

### Versioned と Versionless のモデルアップロード

Roboflowは、プロジェクトにモデルをデプロイするための2つの異なるアプローチを提供しています。それぞれが異なるユースケースと組織のニーズに対応します。Versioned と Versionless のどちらを選ぶかは、データセットのバージョンと併せてモデルの進化を追跡する必要があるか、あるいはworkspace内の複数のプロジェクト間でモデルを共有したいかによって決まります。

* **Versionless デプロイ**
  * workspaceレベルに紐づく
  * 複数のプロジェクトに同時にデプロイできる
  * 同じworkspace内の異なるプロジェクト間でモデルを共有するのに最適
* **Versioned デプロイ**
  * 特定のプロジェクトバージョンに紐づく
  * データセットのバージョンごとに1つのモデル
  * データセットのバージョンと併せてモデルの進化を追跡するのに最適
  * Label Assistでモデルを使用するのに最適
  * 他のモデルをトレーニングするためのcheckpointとしてモデルを使用するのに最適

### カスタム重みのアップロード

まず、最新の `roboflow` Pythonパッケージがインストールされていることを確認してください:

```bash
pip install --update roboflow
```

{% tabs %}
{% tab title="Python SDK（Versionless）" %}
Versionlessのカスタム重みをアップロードするには、 `workspace.deploy_model()` メソッドを使用します:

```python
workspace.deploy_model(
    model_type="yolov8",  # モデルの種類
    model_path="path/to/model",  # モデルディレクトリへのパス
    project_ids=["project1", "project2"],  # プロジェクトIDのリスト
    model_name="my-model",  # モデル名（少なくとも1文字を含み、数字とハイフンを使用可能）
    filename="weights/best.pt"  # 重みファイルのパス（デフォルト）
)
```

**パラメータ**

* model\_type (str): デプロイするモデルの種類（例: "yolov8", "yolov11"）
* model\_path (str): モデルの重みを含むディレクトリへのファイルパス
* project\_ids (list\[str]): モデルをデプロイするプロジェクトIDのリスト
* model\_name (str): モデルを識別するための名前（少なくとも1文字を含み、数字とハイフンを使用可能）
* filename (str, optional): 重みファイルの名前（デフォルトは "weights/best.pt"）

**例**

```python
from roboflow import Roboflow

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

workspace.deploy_model(
  model_type="yolov8",
  model_path="./runs/train/weights",
  project_ids=["project-1", "project-2", "project-3"],
  model_name="my-custom-model"
)
```

{% endtab %}

{% tab title="Python SDK（Versioned）" %}
{% hint style="info" %}
Versionedモデルは、対応するデータセットバージョン1つにのみリンクできます。データセットに生成されたバージョンがない場合は、 [アプリ内で](/roboflow/roboflow-jp/datasets/dataset-versions/create-a-dataset-version.md) または [API](/developer/python-sdk/create-a-dataset-version.md).

API経由でバージョンを読み込む方法のドキュメントを参照するか、 [API経由でバージョンを読み込む方法](/developer/rest-api/versions/view-a-version.md) または以下の例を参照してください。
{% endhint %}

カスタム重みをアップロードするには、 `version.deploy()` Python SDKのメソッドを使用します。

**使用方法**

```python
version.deploy(
    model_type="yolov8",  # モデルの種類
    model_path="path/to/model",  # モデルディレクトリへのパス
    filename="weights/best.pt"  # 重みファイルのパス（デフォルト）
)
```

**パラメータ**

* model\_type (str): デプロイするモデルの種類（例: "yolov8", "yolov11"）
* model\_path (str): モデルの重みを含むディレクトリへのファイルパス
* filename (str, optional): 重みファイルの名前（デフォルトは "weights/best.pt"）

**例**

```python
from roboflow import Roboflow

rf = Roboflow(api_key="YOUR_API_KEY")
project = rf.workspace().project("PROJECT_ID")

#weights_filenameを指定可能。デフォルトは "weights/best.pt"
version = project.version(VERSION_ID)

#例1 - ディレクトリのパスが yolov8モデルの "training1/model1.pt" の場合
version.deploy("yolov8", "training1", "model1.pt")

#例2 - ディレクトリのパスが yolov8モデルの "training1/weights/best.pt" の場合
version.deploy("yolov8", "training1")
```

**重要な注意事項**

1. 1つのversionには、同時に1つのトレーニング済みモデルしか持てません
2. すでにモデルがあるversionにアップロードしようとすると、429エラーになります
   {% endtab %}

{% tab title="CLI（VersionlessおよびVersioned）" %}
**認証**

CLIコマンドを使用する前に、Roboflowで認証する必要があります:

1. 認証コマンドを実行します: `roboflow login`
2. ターミナルに表示されるURLにアクセスしてください: <https://app.roboflow.com/auth-cli>
3. Webサイトから認証トークンを取得してください
4. トークンをターミナルに貼り付けてください

認証情報は自動的に以下に保存されます `~/.config/roboflow/config.json`

**モデルの重みのアップロード**

Roboflow CLIには、トレーニング済みモデルの重みをRoboflowのプロジェクトにアップロードするコマンドがあります。これは、カスタムトレーニングしたモデルをRoboflowにデプロイしたいときに便利です。

**基本的な使用方法**

{% code overflow="wrap" %}

```bash
roboflow upload_model -w <workspace> -p <project> -t <model_type> -m <model_path> [-v <version>] [-f <filename>] [-n <model_name>]
```

{% endcode %}

**パラメータ**

* `-w, --workspace`: workspace IDまたはURL（省略可。指定しない場合はデフォルトのworkspaceが使用されます）
* `-p, --project`: モデルをアップロードするproject ID（versionlessアップロードでは、複数のprojectに対して複数回指定できます）
* `-t, --model_type`: モデルの種類（例: yolov8, paligemma2）
* `-m, --model_path`: トレーニング済みモデルファイルを含むディレクトリへのパス
* `-v, --version_number`: モデルをアップロードするversion番号（省略可）
* `-f, --filename`: モデルファイルの名前（デフォルト: "weights/best.pt"）
* `-n, --model_name`: モデル名（versionlessモデルのデプロイでは必須）

**例**

<pre class="language-bash" data-overflow="wrap"><code class="lang-bash"># 1. 特定のversionにモデルをアップロードする: 
<strong>roboflow upload_model -w my-workspace -p my-project -v 1 -t yolov8 -m ./weights
</strong>
# 2. versionlessモデルを複数のprojectにアップロードする:
roboflow upload_model -w my-workspace -p project1 -p project2 -t yolov11 -n my-model-v1 -m ./weights
# 3. versionlessのRF-DETR mediumモデルを1つのprojectにアップロードする: 
roboflow upload_model -w my-workspace -p my-project -t rfdetr-medium -n my-model-name -m ./ -f weights.pt
</code></pre>

{% endtab %}
{% endtabs %}

## 次のステップ

1. Roboflowの「Models」タブでモデルを確認してください
2. 以下を使用してローカルでモデルを実行してください [Roboflow Inference Server](https://inference.roboflow.com/).
3. [モデルをデプロイする](/roboflow/roboflow-jp/deploy/deployment-overview.md)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.roboflow.com/roboflow/roboflow-jp/deploy/upload-custom-weights.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
