# カスタムModel Weightsをアップロードする

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

### モデルのサポート

を参照してください [対応モデルの表](https://docs.roboflow.com/roboflow/roboflow-jp/deploy/supported-models) 重みのアップロード互換性の詳細については。

{% 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 Deployments**
  * workspaceレベルに紐づく
  * 複数のプロジェクトに同時にデプロイできる
  * 同じworkspace内の異なるプロジェクト間でモデルを共有するのに最適
* **Versioned Deployments**
  * 特定のプロジェクトバージョンに紐づく
  * データセットの各バージョンにつき1つのモデル
  * データセットのバージョンとあわせてモデルの進化を追跡するのに最適
  * Label Assistでモデルを使用するのに最適
  * 他のモデルをトレーニングするためのチェックポイントとしてモデルを使用するのに最適

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

まず、最新の `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"],  # project IDのリスト
    model_name="my-model",  # モデル名（少なくとも1文字を含み、数字とハイフンを使用可能）
    filename="weights/best.pt"  # 重みファイルへのパス（デフォルト）
)
```

**パラメータ**

* model\_type (str): デプロイするモデルの種類（例: "yolov8", "yolov11"）
* model\_path (str): モデルの重みを含むディレクトリへのファイルパス
* project\_ids (list\[str]): モデルをデプロイするproject 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" %}
1つのVersionedモデルは、対応する1つのデータセットバージョンにのみリンクできます。データセットに生成済みのバージョンがない場合は、 [アプリ内で](https://docs.roboflow.com/roboflow/roboflow-jp/datasets/dataset-versions/create-a-dataset-version) または [API](https://app.gitbook.com/s/e5GEiPeDoFksvZv1vH3A/python-sdk/create-a-dataset-version).

を使って作成できます [API経由でバージョンを読み込む方法についてはドキュメントを参照してください](https://app.gitbook.com/s/e5GEiPeDoFksvZv1vH3A/rest-api/versions/view-a-version) または以下の例を参照してください。
{% endhint %}

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

**Usage**

```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 model deployには必須）

**例**

<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. [モデルをデプロイ](https://docs.roboflow.com/roboflow/roboflow-jp/deploy/deployment-overview)
