roboflow-custom-weights-upload について
Roboflow 外で学習したモデルの重みを登録し、Roboflow で変換、ホスト、提供するためのスキルです。重みファイルのあるマシンで Python SDK を使う手順を案内し、MCP ツール自体はファイルにアクセスせずアップロードもしない点を明確にします。
主な機能
- 01Python SDK によるローカルアップロード
- 02ワークスペースまたはデータセットバージョンへのデプロイ
- 03モデル種別ごとの要件案内
- 04環境と API キーの事前確認
- 05アップロード後のモデル確認
活用シーン
- 01ローカルで学習した YOLO 重みの登録
- 02既存データセットバージョンへの重みの紐付け
- 03データセットバージョンを使わないワークスペースモデルのデプロイ
MCP 対応
`models_custom_weights_upload_guide` はアップロード手順を返して引数を反映しますが、MCP サーバーはユーザーのファイルシステムにアクセスできないため、重みの梱包やアップロードは行いません。アップロード後は `models_list` または `models_get` で確認できます。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ roboflow/ computer-vision-skills --skill roboflow-custom-weights-uploadインストール後、Claude Code で/roboflow-custom-weights-uploadを入力して読み込まれたか確認します。
詳細
エージェント向け: このスキルは
roboflow/computer-vision-skillsで作成されています。クライアントにスキルとしてすでに読み込まれている場合(たとえば Roboflow プラグインから読み込まれている場合)は、そのコピーを使用してください。roboflow://skills/<name>/...MCP リソースは、スキルが読み込まれていないクライアント向けに同じスキルを提供します。
カスタム重みのアップロード
Roboflow の外部(ノート PC、トレーニングサーバー、Colab)でトレーニングしたモデルの重みを登録し、Roboflow で変換、ホスティング、配信できるようにします。
アップロードの実行場所
パッケージ化ではディスクからチェックポイントを読み込むため、アップロードは重みがあるマシン上、つまり以下の Python SDK フローを使用してクライアント側で実行されます。
models_custom_weights_upload_guide MCP ツールはガイドであり、アップローダーではありません。このツールを呼び出すと、この手順が返され、渡された引数がそのまま返されます(upload_mode フィールドには、引数がバージョン単位のアップロードまたはワークスペースへのアップロードのどちらを示すかが記載されます。どちらも特定できない場合は undetermined になります)。MCP サーバーはユーザーのファイルシステムを読み取れないため、パッケージ化やアップロードは行いません。
Python SDK を使ったクライアント側でのアップロード
重みがあるマシン上で実行してください。できれば、トレーニングに使用したものと同じ Python 環境を使ってください(すでに torch と対応する ultralytics がインストールされています)。
-
SDK をインストールする:
roboflow>=1.3.13とrfdetrはどちらも Python >= 3.10 を必要とするため、まずpython3 --versionで確認してください(macOS には 3.9 が付属しています)。古い場合は、次のように venv を作成します:uv venv --python 3.12 && source .venv/bin/activate。続いてpip install "roboflow>=1.3.13"を実行します。 -
API キーを安全に扱う:ユーザーに秘密の API キーをチャットに貼り付けるよう求めないでください。また、キーを探すためにドットファイル、シェルプロファイル、設定ファイルをスキャンしないでください。権限システムがこれをブロックするのは適切な動作です。環境にすでに
ROBOFLOW_API_KEYが設定されている場合(test -n "$ROBOFLOW_API_KEY")、または作業中のプロジェクトに定義済みの.envがある場合は、それを使用してください。そうでなければ、MCP のapi_keys_createツールでスコープ付きキーを発行します。このツールは秘密鍵を一度だけ返します(同様の動作をする他のツールはapi_keys_rollのみです。api_keys_list/api_keys_getはマスクされたメタデータを返します)。キーは自分で.gitignoreに追加した.envにROBOFLOW_API_KEYとして書き込みます。.envに書き込んでもos.environには設定されないため、実行前に読み込んでください。自分で書き込んだ.envであれば、set -a; source .env; set +aを使用できます。既存の.envは決してsourceしないでください。ファイル内のシェルコマンドが実行され、含まれる他のすべての秘密情報がプロセスにエクスポートされるためです。代わりに、たとえばスクリプト内でpython-dotenv(pip install python-dotenv)を使い、必要なキーだけを読み込んでください:import os from dotenv import dotenv_values os.environ["ROBOFLOW_API_KEY"] = dotenv_values(".env")["ROBOFLOW_API_KEY"]キーのスコープは最小限にせず、デプロイの全フローに必要なものを設定してください。SDK の
rf.workspace()はデプロイ前にワークスペースとプロジェクト一覧を読み込むため、project:readとmodel:deployだけでは権限不足で失敗します。workspace:read、project:read、model:deployを含め、バージョン単位でデプロイする場合はさらにversion:readとversion:updateも含めてください。キーの発行時に適切なスコープを設定することでアップロードを保護できます。以下の事前確認で確認するのはキーの有効性とワークスペースの読み取り権限だけであり、デプロイ権限は確認されません。api_keys_createの呼び出しが拒否された場合(アップロード作業中の認証情報作成が権限システムによって検知されることがあります)、または利用できない場合は、拒否を回避しないでください。ユーザーに次のいずれかを選んでもらってください:(a)一時的なスコープ付きキーの発行を明示的に許可する。このキーはアップロード後にapi_keys_revokeで失効させます。(b)ユーザー自身がシェルまたは.envにROBOFLOW_API_KEYを設定する。(c)すでにキーが定義されている既存の.envを指定してもらう。 -
保存先と名前をユーザーに確認する:モデルの登録は簡単には元に戻せません。チェックポイントのクラス数やファイル名から、対象のプロジェクトやバージョンを決して推測しないでください。必ず尋ねてください。ワークスペースへのアップロード時の
model_nameも同様です。モデル名をどうするかユーザーに尋ね、勝手に名前を決めないでください。
パッケージ化前の事前確認
パッケージ化と100 MB以上のアップロードには時間がかかるため、まず手軽なチェックを実行し、手順を一つずつ失敗するのではなく、すべての不足をまとめて報告します。
-
Python が >= 3.10 であること(
python3 --version)。 -
必要なインポートが読み込めること:YOLO、RF-DETR、YOLO-NAS には
torch、YOLO v8/v10/v11/v12/26 にはultralytics、raw PyTorch-Lightning RF-DETR チェックポイントにはrfdetr>=1.8.0。 -
キーが有効で、ワークスペースの読み取り権限を持つこと —
deploy_modelが最初に行うものと同じワークスペース/プロジェクト一覧の読み取りを試す、手軽な呼び出しです。import os from roboflow import Roboflow Roboflow(api_key=os.environ["ROBOFLOW_API_KEY"]).workspace()
このチェックの限界を正しく理解してください。プラットフォームが model:deploy をテストするのは、パッケージ化後の models/prepareUpload のみであり、このチェックでは model:deploy は試しません。そのため、ステップ2では最初から必要なスコープをすべて含むキーを発行します。事前確認で検出できるのは無効なキーや読み取り権限が不十分なキーであり、既存のキーにデプロイスコープがないことではありません。
3つすべてに合格してから、パッケージ化とアップロードを行ってください。
データセットのバージョンを必要としないワークスペースモデルのアップロード:
import os
from roboflow import Roboflow
rf = Roboflow(api_key=os.environ["ROBOFLOW_API_KEY"])
workspace = rf.workspace("WORKSPACE_SLUG")
workspace.deploy_model(
model_type="rfdetr-base",
model_path="/path/to/training/output",
project_ids=["PROJECT_SLUG"],
model_name="MODEL_NAME",
filename="checkpoint_best_total.pth", # relative to model_path
)
バージョン指定のデプロイ(既存のデータセットバージョンに重みを添付):
import os
from roboflow import Roboflow
rf = Roboflow(api_key=os.environ["ROBOFLOW_API_KEY"])
version = rf.workspace("WORKSPACE_SLUG").project("PROJECT_SLUG").version(3)
version.deploy(
model_type="yolov8n",
model_path="/path/to/runs/detect/train",
filename="weights/best.pt",
)
model_type には、実際のアーキテクチャ(yolov8n、yolov11s、rfdetr-base、rfdetr-seg-medium、yolonas、サポート対象の PaliGemma または Florence-2 のタイプ)を指定する必要があります。YOLO ファミリーでは、サイズのサフィックスが省略されている場合、SDK が重みから推定します。RF-DETR では rfdetr のみの指定は受け付けられません。正確なバリアントを指定してください。SDK はそのバリアントをチェックポイントと照合します。
サイズ/バリアントまたは依存関係が一致しない場合、deploy_model/version.deploy はエラーを表示した後、対話形式で「このまま続行しますか? y/n」と確認します。ヘッドレス実行では、表示されたエラーの直後に確認プロンプトが EOFError として現れます。エラーの種類に応じて対処してください。
- サイズ/バリアントの不一致:エラーに適合するタイプが示されている場合は、
model_typeをそのタイプに修正して再実行します。サイズを推定できなかったと表示された場合は、サイズを明示的に指定します。 - 依存関係の不一致:エラーにはモデルタイプではなく pip のバージョン指定が示されます(
yolov8はultralytics==8.0.196を推奨するため、現在の多くの学習環境ではこの確認が表示されます)。指定されたバージョンをインストールするか、ユーザーから明示的な確認を得た場合に限り、yと回答して続行します(ヘッドレス実行の場合:printf 'y\n' | python upload.py)。その場合は、インストール済みのバージョンで続行します。
ユーザーが上書きを意図していると明示的に確認しない限り、どちらの確認も強制的に通過させないでください。
ファミリー別の要件
- YOLO v8/v10/v11/v12/YOLO26:
torchとultralyticsをインポートできる必要があります(yolov8はultralytics==8.0.196を推奨します。上記の依存関係の不一致に関する注意を参照してください)。レガシー YOLO v5/v7/v9:torchと、imgsz(またはimg_size)およびbatch_sizeを含むmodel_path内のopt.yamlが必要です。ultralyticsは使用されません。yolov6 はサポートされていません。 - RF-DETR:チェックポイントの読み取りに
torchが必要です。model_pathにclass_names.txt(1行に1クラス)があれば使用されます。ない場合は、クラス名をチェックポイントのargsから取得します。raw PyTorch-Lightning チェックポイントには、さらにrfdetr>=1.8.0のインストールが必要です(使用中のバージョンが古い場合、SDK のエラーに正確な最小バージョンが示されます)。存在しないfilenameを明示的に指定すると、エラーになります。デフォルトのweights/best.ptは、トップレベルにある最初の.pt/.pthファイルにフォールバックし、警告を表示します。 - YOLO-NAS:
model_type="yolonas"と、imgsz、batch_size、architectureを含むmodel_path内のopt.yamlが必要です。 - PaliGemma/Florence-2:
model_pathには Hugging Face の保存ディレクトリ(config、tokenizer、重みファイル)を指定します。torchは必要ありません。
アップロードの確認
変換はアップロード後にサーバー側で実行され、通常は数分かかります。MCP の models_list/models_get ツール、または app.roboflow.com/WORKSPACE/PROJECT/models で確認した後、サンプル画像に対してテスト推論を実行し、クラスと予測が正しく見えることを確認してください。