プログラムを使用してモデルをエクスポートする

Custom Vision Web サイトで使用できるすべてのエクスポート オプションは、クライアント ライブラリを使用してプログラムで実行することもできます。 クライアント ライブラリを使用することで、ローカル デバイスで使用するモデルのイテレーションの再トレーニングと更新のプロセスを完全に自動化できます。

このガイドでは、Python SDK を使用して、モデルを ONNX ファイルにエクスポートする方法について説明します。

トレーニング クライアントを作成する

モデルのイテレーションをエクスポートするには、CustomVisionTrainingClient オブジェクトが必要です。 Custom Vision トレーニング リソースの Azure エンドポイントとキーの変数を作成し、それらを使用してクライアント オブジェクトを作成します。

ENDPOINT = "PASTE_YOUR_CUSTOM_VISION_TRAINING_ENDPOINT_HERE"
training_key = "PASTE_YOUR_CUSTOM_VISION_TRAINING_KEY_HERE"

credentials = ApiKeyCredentials(in_headers={"Training-key": training_key})
trainer = CustomVisionTrainingClient(ENDPOINT, credentials)

重要

完了したらコードからキーを削除し、それらを公開しないでください。 運用環境では、資格情報を安全に格納して利用するための方法を用いることを検討してください。 詳しくは、Azure AI サービスのセキュリティに関する記事を参照してください。

エクスポート メソッドの呼び出し

export_iteration メソッドを呼び出します。

  • エクスポートするモデルのプロジェクト ID、イテレーション ID を指定します。
  • platform パラメーターは、エクスポート先のプラットフォームを指定します。使用できる値は、CoreMLTensorFlowDockerFileONNXVAIDK、および OpenVino です。
  • flavor パラメーターは、エクスポートされるモデルの形式を指定します。使用できる値は、LinuxWindowsONNX10ONNX12ARMTensorFlowNormal、および TensorFlowLite です。
  • raw パラメーターにより、オブジェクト モデルの応答と共に、生の JSON 応答を取得するオプションが得られます。
project_id = "PASTE_YOUR_PROJECT_ID"
iteration_id = "PASTE_YOUR_ITERATION_ID"
platform = "ONNX"
flavor = "ONNX10"
export = trainer.export_iteration(project_id, iteration_id, platform, flavor, raw=False)

詳細については、 export_iteration メソッドを参照してください。

重要

特定のイテレーションを既にエクスポートしている場合、export_iteration メソッドを再度呼び出すことはできません。 代わりに、get_exports メソッド呼び出しにスキップして、既存のエクスポートされたモデルへのリンクを取得します。

エクスポートしたモデルのダウンロード

次に、get_exports メソッドを呼び出して、エクスポート操作の状態を確認します。 操作は非同期的に実行されるため、操作が完了するまでこのメソッドをポーリングする必要があります。 完了すると、モデルのイテレーションをデバイスにダウンロードできる URI を取得できます。

while (export.status == "Exporting"):
    print ("Waiting 10 seconds...")
    time.sleep(10)
    exports = trainer.get_exports(project_id, iteration_id)
    # Locate the export for this iteration and check its status  
    for e in exports:
        if e.platform == export.platform and e.flavor == export.flavor:
            export = e
            break
    print("Export status is: ", export.status)

詳細については、 get_exports メソッドを参照してください。

その後、プログラムによって、エクスポートされたモデルをデバイス上の場所にダウンロードできます。

if export.status == "Done":
    # Success, now we can download it
    export_file = requests.get(export.download_uri)
    with open("export.zip", "wb") as file:
        file.write(export_file.content)

次のステップ

以下のいずれかの記事またはサンプルを調べて、エクスポートしたモデルをアプリケーションに統合します。