.NET用の Custom Vision クライアント ライブラリの使用を開始します。 次の手順に従ってパッケージをインストールし、画像分類モデルを構築するためのコード例を試してください。 プロジェクトの作成、タグの追加、プロジェクトのトレーニング、プロジェクトの予測エンドポイント URL を使用してプログラムでテストできます。 この例は、独自の画像認識アプリを構築するためのテンプレートとして使用します。
メモ
コードを記述 せずに 分類モデルを構築してトレーニングする場合は、 ブラウザーベースのガイダンスを参照してください。
リファレンス ドキュメント |トレーニング および 予測 のライブラリ ソース コード |トレーニング及び予測用パッケージ (NuGet)サンプル
前提 条件
- Azure サブスクリプション。 無料で 作成できます。
- Visual Studio IDE または現在のバージョンの .NET Core。
- Azure サブスクリプションを作成したら、Azure ポータルで Custom Vision リソースを作成して、トレーニング リソースと予測リソースを作成します。
- Free 価格レベル (
F0) を使用してサービスを試し、後で運用環境用の有料レベルにアップグレードできます。
- Free 価格レベル (
環境変数を作成する
この例では、アプリケーションを実行しているローカル コンピューター上の環境変数に資格情報を書き込みます。
Azure ポータルに移動します。 [前提条件] セクションで作成した Custom Vision リソースが正常にデプロイされた場合は、[次の手順] の [リソースに移動] ボタンを選択します。 キーとエンドポイントは、リソースの [ キー] ページと [エンドポイント] ページの [ リソース管理] にあります。 API エンドポイントと共に、トレーニング リソースと予測リソースの両方のキーを取得する必要があります。
予測リソースの Properties タブには、Azure ポータルで Resource ID として一覧表示されています。
ヒント
また、 https://www.customvision.ai を使用してこれらの値を取得します。 サインインしたら、右上にある [設定] アイコンを選択します。 [設定] ページでは、すべてのキー、リソース ID、エンドポイントを表示できます。
環境変数を設定するには、コンソール ウィンドウを開き、オペレーティング システムと開発環境の指示に従います。
-
VISION_TRAINING KEY環境変数を設定するには、<your-training-key>をトレーニング リソースのキーのいずれかに置き換えます。 -
VISION_TRAINING_ENDPOINT環境変数を設定するには、<your-training-endpoint>をトレーニング リソースのエンドポイントに置き換えます。 -
VISION_PREDICTION_KEY環境変数を設定するには、<your-prediction-key>を予測リソースのキーのいずれかに置き換えます。 -
VISION_PREDICTION_ENDPOINT環境変数を設定するには、<your-prediction-endpoint>を予測リソースのエンドポイントに置き換えます。 -
VISION_PREDICTION_RESOURCE_ID環境変数を設定するには、<your-resource-id>を予測リソースのリソース ID に置き換えます。
重要
クラウドで実行されるアプリケーションに資格情報を格納しないように、 Azure リソースの管理された ID を使用して認証をMicrosoft Entra IDすることをお勧めします。
API キーは慎重に使用してください。 API キーをコードに直接含めず、パブリックに投稿しないでください。 API キーを使用する場合は、Azure Key Vaultに安全に格納し、キーを定期的にローテーションし、ロールベースのアクセス制御とネットワーク アクセス制限を使用してAzure Key Vaultへのアクセスを制限します。 アプリで API キーを安全に使用する方法の詳細については、「Azure Key Vault を使用した
AI サービスのセキュリティの詳細については、「Authenticate requests to Azure AI サービス」を参照してください。
setx VISION_TRAINING_KEY <your-training-key>
setx VISION_TRAINING_ENDPOINT <your-training-endpoint>
setx VISION_PREDICTION_KEY <your-prediction-key>
setx VISION_PREDICTION_ENDPOINT <your-prediction-endpoint>
setx VISION_PREDICTION_RESOURCE_ID <your-resource-id>
環境変数を追加した後、コンソール ウィンドウを含め、環境変数を読み取る実行中のプログラムを再起動することが必要になる場合があります。
セットアップ
新しい C# アプリケーションを作成する
Visual Studioを使用して、新しい .NET Core アプリケーションを作成します。
クライアント ライブラリをインストールする
新しいプロジェクトを作成した後、Microsoft.Azure.CognitiveServices.Vision.CustomVision.Training と Microsoft.Azure.CognitiveServices.Vision.CustomVision.Prediction を検索します。 最新バージョンを選択し、[ インストール] を選択します。
ヒント
クイック スタート コード ファイル全体を一度に表示しますか? このクイック スタートのコード例を含む GitHub で確認できます。
プロジェクト ディレクトリから 、program.cs ファイルを開き、次の using ディレクティブを追加します。
using Microsoft.Azure.CognitiveServices.Vision.CustomVision.Prediction;
using Microsoft.Azure.CognitiveServices.Vision.CustomVision.Training;
using Microsoft.Azure.CognitiveServices.Vision.CustomVision.Training.Models;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading;
アプリケーションの main メソッドで、環境変数からリソースのキーとエンドポイントを取得する変数を作成します。 また、後で使用する基本的なオブジェクトも宣言します。
// Retrieve the environment variables for your credentials:
private static string trainingEndpoint = Environment.GetEnvironmentVariable("VISION_TRAINING_ENDPOINT");
private static string trainingKey = Environment.GetEnvironmentVariable("VISION_TRAINING_KEY");
private static string predictionEndpoint = Environment.GetEnvironmentVariable("VISION_PREDICTION_ENDPOINT");
private static string predictionKey = Environment.GetEnvironmentVariable("VISION_PREDICTION_KEY");
private static string predictionResourceId = Environment.GetEnvironmentVariable("VISION_PREDICTION_RESOURCE_ID");
private static List<string> hemlockImages;
private static List<string> japaneseCherryImages;
private static Tag hemlockTag;
private static Tag japaneseCherryTag;
private static Iteration iteration;
private static string publishedModelName = "treeClassModel";
private static MemoryStream testImage;
アプリケーションの main メソッドで、このクイック スタートで使用するメソッドの呼び出しを追加します。 これらは後で実装します。
CustomVisionTrainingClient trainingApi = AuthenticateTraining(trainingEndpoint, trainingKey);
CustomVisionPredictionClient predictionApi = AuthenticatePrediction(predictionEndpoint, predictionKey);
Project project = CreateProject(trainingApi);
AddTags(trainingApi, project);
UploadImages(trainingApi, project);
TrainProject(trainingApi, project);
PublishIteration(trainingApi, project);
TestIteration(predictionApi, project);
DeleteProject(trainingApi, project);
クライアントを認証する
新しいメソッドでは、エンドポイントとキーを使用してトレーニング クライアントと予測クライアントをインスタンス化します。
private static CustomVisionTrainingClient AuthenticateTraining(string endpoint, string trainingKey)
{
// Create the Api, passing in the training key
CustomVisionTrainingClient trainingApi = new CustomVisionTrainingClient(new Microsoft.Azure.CognitiveServices.Vision.CustomVision.Training.ApiKeyServiceClientCredentials(trainingKey))
{
Endpoint = endpoint
};
return trainingApi;
}
private static CustomVisionPredictionClient AuthenticatePrediction(string endpoint, string predictionKey)
{
// Create a prediction endpoint, passing in the obtained prediction key
CustomVisionPredictionClient predictionApi = new CustomVisionPredictionClient(new Microsoft.Azure.CognitiveServices.Vision.CustomVision.Prediction.ApiKeyServiceClientCredentials(predictionKey))
{
Endpoint = endpoint
};
return predictionApi;
}
新しい Custom Vision プロジェクトを作成する
この次のコードでは、画像分類プロジェクトが作成されます。 作成されたプロジェクトが Custom Vision Web サイトに表示されます。 プロジェクトの作成時に他のオプションを指定するには、 CreateProject メソッドを参照してください ( 分類子の作成 Web ポータル ガイドで説明)。
private static Project CreateProject(CustomVisionTrainingClient trainingApi)
{
// Create a new project
Console.WriteLine("Creating new project:");
return trainingApi.CreateProject("My New Project");
}
プロジェクトにタグを追加する
このメソッドは、モデルをトレーニングするタグを定義します。
private static void AddTags(CustomVisionTrainingClient trainingApi, Project project)
{
// Make two tags in the new project
hemlockTag = trainingApi.CreateTag(project.Id, "Hemlock");
japaneseCherryTag = trainingApi.CreateTag(project.Id, "Japanese Cherry");
}
画像をアップロードしてタグ付けする
まず、このプロジェクトのサンプル イメージをダウンロードします。 サンプル イメージ フォルダーの内容をローカル デバイスに保存します。
次に、このディレクトリに画像をアップロードするヘルパー メソッドを定義します。
GetFiles引数を編集して、画像が保存されている場所を指す必要がある場合があります。
private static void LoadImagesFromDisk()
{
// this loads the images to be uploaded from disk into memory
hemlockImages = Directory.GetFiles(Path.Combine("Images", "Hemlock")).ToList();
japaneseCherryImages = Directory.GetFiles(Path.Combine("Images", "Japanese_Cherry")).ToList();
testImage = new MemoryStream(File.ReadAllBytes(Path.Combine("Images", "Test", "test_image.jpg")));
}
次に、フォルダーの場所に従ってタグを適用して、画像をアップロードする方法を定義します。 画像は既に並べ替えられています。 画像のアップロードとタグ付けは、繰り返し、またはバッチで行うことができます (バッチあたり最大 64 個)。 このコード スニペットには、両方の例が含まれています。
private static void UploadImages(CustomVisionTrainingClient trainingApi, Project project)
{
// Add some images to the tags
Console.WriteLine("\tUploading images");
LoadImagesFromDisk();
// Images can be uploaded one at a time
foreach (var image in hemlockImages)
{
using (var stream = new MemoryStream(File.ReadAllBytes(image)))
{
trainingApi.CreateImagesFromData(project.Id, stream, new List<Guid>() { hemlockTag.Id });
}
}
// Or uploaded in a single batch
var imageFiles = japaneseCherryImages.Select(img => new ImageFileCreateEntry(Path.GetFileName(img), File.ReadAllBytes(img))).ToList();
trainingApi.CreateImagesFromFiles(project.Id, new ImageFileCreateBatch(imageFiles, new List<Guid>() { japaneseCherryTag.Id }));
}
プロジェクトをトレーニングする
このメソッドは、プロジェクトで最初のトレーニング イテレーションを作成します。 トレーニングが完了するまでサービスに対してクエリを実行します。
private static void TrainProject(CustomVisionTrainingClient trainingApi, Project project)
{
// Now there are images with tags start training the project
Console.WriteLine("\tTraining");
iteration = trainingApi.TrainProject(project.Id);
// The returned iteration will be in progress, and can be queried periodically to see when it has completed
while (iteration.Status == "Training")
{
Console.WriteLine("Waiting 10 seconds for training to complete...");
Thread.Sleep(10000);
// Re-query the iteration to get it's updated status
iteration = trainingApi.GetIteration(project.Id, iteration.Id);
}
}
ヒント
選択したタグを使用してトレーニングする
必要に応じて、適用されたタグのサブセットのみをトレーニングできます。 特定のタグをまだ十分に適用していないが、他のタグが十分にある場合は、これを行うことができます。
TrainProject 呼び出しで、trainingParameters パラメーターを使用します。
TrainingParameters を構築し、その SelectedTags プロパティを使用するタグの ID の一覧に設定します。 モデルは、そのリストのタグのみを認識するようにトレーニングします。
現在のイテレーションを発行する
このメソッドを使用すると、モデルの現在のイテレーションをクエリに使用できるようになります。 モデル名を参照として使用して、予測要求を送信できます。
predictionResourceIdには独自の値を入力する必要があります。 予測リソース ID は、Azure ポータルのリソースの Properties タブで、Resource ID として表示されます。
private static void PublishIteration(CustomVisionTrainingClient trainingApi, Project project)
{
trainingApi.PublishIteration(project.Id, iteration.Id, publishedModelName, predictionResourceId);
Console.WriteLine("Done!\n");
// Now there is a trained endpoint, it can be used to make a prediction
}
予測エンドポイントをテストする
スクリプトのこの部分では、テスト イメージを読み込み、モデル エンドポイントに対してクエリを実行し、予測データをコンソールに出力します。
private static void TestIteration(CustomVisionPredictionClient predictionApi, Project project)
{
// Make a prediction against the new project
Console.WriteLine("Making a prediction:");
var result = predictionApi.ClassifyImage(project.Id, publishedModelName, testImage);
// Loop over each prediction and write out the results
foreach (var c in result.Predictions)
{
Console.WriteLine($"\t{c.TagName}: {c.Probability:P1}");
}
}
アプリケーションを実行する
IDE ウィンドウの上部にある [デバッグ ] ボタンをクリックして、アプリケーションを実行します。
アプリケーションを実行すると、コンソール ウィンドウが開き、次の出力が書き込まれます。
Creating new project:
Uploading images
Training
Done!
Making a prediction:
Hemlock: 95.0%
Japanese Cherry: 0.0%
その後、( Images/Test/で見つかった) テスト イメージが適切にタグ付けされていることを確認できます。 任意のキーを押してアプリケーションを終了します。 Custom Vision Web サイトに戻り、新しく作成したプロジェクトの現在の状態を確認することもできます。
リソースのクリーンアップ
独自の画像分類プロジェクトを実装する (または オブジェクト検出 プロジェクトを試す) 場合は、この例からツリー識別プロジェクトを削除できます。 無料サブスクリプションでは、2 つの Custom Vision プロジェクトを利用できます。
Custom Vision Web サイトで、Projects に移動し、[マイ ニュー Project] の下にあるごみ箱を選択します。
関連コンテンツ
これで、オブジェクト検出プロセスのすべてのステップをコードで実行する方法を確認しました。 このサンプルでは 1 回のトレーニング イテレーションを実行しますが、多くの場合、モデルをより正確にするために、モデルを複数回トレーニングしてテストする必要があります。
- Custom Vision とは
- このサンプルのソース コードは、
GitHub - SDK リファレンス ドキュメント
このガイドでは、Go 用 Custom Vision クライアント ライブラリを使用して画像分類モデルを構築する際に役立つ手順とサンプル コードについて説明します。 プロジェクトを作成し、タグを追加し、プロジェクトをトレーニングし、プロジェクトの予測エンドポイント URL を使用してプログラムでテストします。 この例は、独自の画像認識アプリを構築するためのテンプレートとして使用します。
メモ
コードを記述 せずに 分類モデルを構築してトレーニングする場合は、 ブラウザーベースのガイダンスを参照してください。
Go to に Custom Vision クライアント ライブラリを使用します。
- 新しい Custom Vision プロジェクトを作成する
- プロジェクトにタグを追加する
- 画像をアップロードしてタグ付けする
- プロジェクトをトレーニングする
- 現在のイテレーションを発行する
- 予測エンドポイントをテストする
前提 条件
- Azure サブスクリプション。 無料で 作成できます。
- 1.8 以降に進む。
- Azure サブスクリプションを作成したら、Azure ポータルで Custom Vision リソースを作成して、トレーニングリソースと予測リソースを作成します。
- Free 価格レベル (
F0) を使用してサービスを試し、後で運用環境用の有料レベルにアップグレードできます。
- Free 価格レベル (
環境変数を作成する
この例では、アプリケーションを実行しているローカル コンピューター上の環境変数に資格情報を書き込みます。
Azure ポータルに移動します。 [前提条件] セクションで作成した Custom Vision リソースが正常にデプロイされた場合は、[次の手順] の [リソースに移動] ボタンを選択します。 キーとエンドポイントは、リソースの [ キー] ページと [エンドポイント] ページの [ リソース管理] にあります。 API エンドポイントと共に、トレーニング リソースと予測リソースの両方のキーを取得する必要があります。
予測リソースの Properties タブには、Azure ポータルで Resource ID として一覧表示されています。
ヒント
また、 https://www.customvision.ai を使用してこれらの値を取得します。 サインインしたら、右上にある [設定] アイコンを選択します。 [設定] ページでは、すべてのキー、リソース ID、エンドポイントを表示できます。
環境変数を設定するには、コンソール ウィンドウを開き、オペレーティング システムと開発環境の指示に従います。
-
VISION_TRAINING KEY環境変数を設定するには、<your-training-key>をトレーニング リソースのキーのいずれかに置き換えます。 -
VISION_TRAINING_ENDPOINT環境変数を設定するには、<your-training-endpoint>をトレーニング リソースのエンドポイントに置き換えます。 -
VISION_PREDICTION_KEY環境変数を設定するには、<your-prediction-key>を予測リソースのキーのいずれかに置き換えます。 -
VISION_PREDICTION_ENDPOINT環境変数を設定するには、<your-prediction-endpoint>を予測リソースのエンドポイントに置き換えます。 -
VISION_PREDICTION_RESOURCE_ID環境変数を設定するには、<your-resource-id>を予測リソースのリソース ID に置き換えます。
重要
クラウドで実行されるアプリケーションに資格情報を格納しないように、 Azure リソースの管理された ID を使用して認証をMicrosoft Entra IDすることをお勧めします。
API キーは慎重に使用してください。 API キーをコードに直接含めず、パブリックに投稿しないでください。 API キーを使用する場合は、Azure Key Vaultに安全に格納し、キーを定期的にローテーションし、ロールベースのアクセス制御とネットワーク アクセス制限を使用してAzure Key Vaultへのアクセスを制限します。 アプリで API キーを安全に使用する方法の詳細については、「Azure Key Vault を使用した
AI サービスのセキュリティの詳細については、「Authenticate requests to Azure AI サービス」を参照してください。
setx VISION_TRAINING_KEY <your-training-key>
setx VISION_TRAINING_ENDPOINT <your-training-endpoint>
setx VISION_PREDICTION_KEY <your-prediction-key>
setx VISION_PREDICTION_ENDPOINT <your-prediction-endpoint>
setx VISION_PREDICTION_RESOURCE_ID <your-resource-id>
環境変数を追加した後、コンソール ウィンドウを含め、環境変数を読み取る実行中のプログラムを再起動することが必要になる場合があります。
セットアップ
Custom Vision クライアント ライブラリをインストールする
Custom Vision for Go を使用して画像分析アプリを作成するには、Custom Vision サービス クライアント ライブラリが必要です。 PowerShell で次のコマンドを実行します。
go get -u github.com/Azure/azure-sdk-for-go/...
または、 depを使用する場合は、リポジトリ内で次を実行します。
dep ensure -add github.com/Azure/azure-sdk-for-go
サンプル イメージを取得する
この例では、GitHub の Foundry Tools Python SDK Samples リポジトリのイメージを使用します。 このリポジトリを開発環境に複製またはダウンロードします。 後の手順では、フォルダーの場所を覚えておいてください。
Custom Vision プロジェクトを作成する
好みのプロジェクト ディレクトリに sample.go という名前の新しいファイルを作成し、任意のコード エディターで開きます。
スクリプトに次のコードを追加して、新しい Custom Vision サービス プロジェクトを作成します。
プロジェクトの作成時に他のオプションを指定するには、 CreateProject メソッドを参照してください ( 分類子の作成 Web ポータル ガイドで説明)。
import(
"context"
"bytes"
"fmt"
"io/ioutil"
"path"
"log"
"time"
"github.com/Azure/azure-sdk-for-go/services/cognitiveservices/v3.0/customvision/training"
"github.com/Azure/azure-sdk-for-go/services/cognitiveservices/v3.0/customvision/prediction"
)
var (
training_key string = os.Getenv("VISION_TRAINING_KEY")
prediction_key string = os.Getenv("VISION_PREDICTION_KEY")
prediction_resource_id = os.Getenv("VISION_PREDICTION_RESOURCE_ID")
endpoint string = os.Getenv("VISION_ENDPOINT")
project_name string = "Go Sample Project"
iteration_publish_name = "classifyModel"
sampleDataDirectory = "<path to sample images>"
)
func main() {
fmt.Println("Creating project...")
ctx = context.Background()
trainer := training.New(training_key, endpoint)
project, err := trainer.CreateProject(ctx, project_name, "sample project", nil, string(training.Multilabel))
if (err != nil) {
log.Fatal(err)
}
プロジェクトでタグを作成する
プロジェクトに分類タグを作成するには、 sample.go の末尾に次のコードを追加します。
// Make two tags in the new project
hemlockTag, _ := trainer.CreateTag(ctx, *project.ID, "Hemlock", "Hemlock tree tag", string(training.Regular))
cherryTag, _ := trainer.CreateTag(ctx, *project.ID, "Japanese Cherry", "Japanese cherry tree tag", string(training.Regular))
画像をアップロードしてタグ付けする
サンプル イメージをプロジェクトに追加するには、タグの作成後に次のコードを挿入します。 このコードは、対応するタグを持つ各画像をアップロードします。 1 回のバッチで最大 64 個の画像をアップロードできます。
メモ
先ほど Foundry Tools Go SDK Samples プロジェクトをダウンロードした場所に基づいて、イメージへのパスを変更する必要があります。
fmt.Println("Adding images...")
japaneseCherryImages, err := ioutil.ReadDir(path.Join(sampleDataDirectory, "Japanese Cherry"))
if err != nil {
fmt.Println("Error finding Sample images")
}
hemLockImages, err := ioutil.ReadDir(path.Join(sampleDataDirectory, "Hemlock"))
if err != nil {
fmt.Println("Error finding Sample images")
}
for _, file := range hemLockImages {
imageFile, _ := ioutil.ReadFile(path.Join(sampleDataDirectory, "Hemlock", file.Name()))
imageData := ioutil.NopCloser(bytes.NewReader(imageFile))
trainer.CreateImagesFromData(ctx, *project.ID, imageData, []string{ hemlockTag.ID.String() })
}
for _, file := range japaneseCherryImages {
imageFile, _ := ioutil.ReadFile(path.Join(sampleDataDirectory, "Japanese Cherry", file.Name()))
imageData := ioutil.NopCloser(bytes.NewReader(imageFile))
trainer.CreateImagesFromData(ctx, *project.ID, imageData, []string{ cherryTag.ID.String() })
}
プロジェクトを学習させて公開する
このコードは、予測モデルの最初のイテレーションを作成し、そのイテレーションを予測エンドポイントに発行します。 発行されたイテレーションに指定された名前を使用して、予測要求を送信できます。 イテレーションは、公開されるまで予測エンドポイントで利用できません。
fmt.Println("Training...")
iteration, _ := trainer.TrainProject(ctx, *project.ID)
for {
if *iteration.Status != "Training" {
break
}
fmt.Println("Training status: " + *iteration.Status)
time.Sleep(1 * time.Second)
iteration, _ = trainer.GetIteration(ctx, *project.ID, *iteration.ID)
}
fmt.Println("Training status: " + *iteration.Status)
trainer.PublishIteration(ctx, *project.ID, *iteration.ID, iteration_publish_name, prediction_resource_id))
予測エンドポイントを使用する
画像を予測エンドポイントに送信して予測を取得するには、ファイルの末尾に次のコードを追加します。
fmt.Println("Predicting...")
predictor := prediction.New(prediction_key, endpoint)
testImageData, _ := ioutil.ReadFile(path.Join(sampleDataDirectory, "Test", "test_image.jpg"))
results, _ := predictor.ClassifyImage(ctx, *project.ID, iteration_publish_name, ioutil.NopCloser(bytes.NewReader(testImageData)), "")
for _, prediction := range *results.Predictions {
fmt.Printf("\t%s: %.2f%%", *prediction.TagName, *prediction.Probability * 100)
fmt.Println("")
}
}
アプリケーションを実行する
次のコマンドを使用してアプリケーションを実行します。
go run sample.go
アプリケーションの出力は、次のテキストのようになります。
Creating project...
Adding images...
Training...
Training status: Training
Training status: Training
Training status: Training
Training status: Completed
Done!
Hemlock: 93.53%
Japanese Cherry: 0.01%
その後、テスト イメージ ( <base_image_url>/Images/Test/) が適切にタグ付けされていることを確認できます。 Custom Vision Web サイトに戻り、新しく作成したプロジェクトの現在の状態を確認することもできます。
リソースのクリーンアップ
独自の画像分類プロジェクトを実装する (または オブジェクト検出 プロジェクトを試す) 場合は、この例からツリー識別プロジェクトを削除できます。 無料サブスクリプションでは、2 つの Custom Vision プロジェクトを利用できます。
Custom Vision Web サイトで、Projects に移動し、[マイ ニュー Project] の下にあるごみ箱を選択します。
関連コンテンツ
これで、オブジェクト検出プロセスのすべてのステップをコードで実行する方法を確認しました。 このサンプルでは 1 回のトレーニング イテレーションを実行しますが、多くの場合、モデルをより正確にするために、モデルを複数回トレーニングしてテストする必要があります。
Java用の Custom Vision クライアント ライブラリを使用して、画像分類モデルを構築します。 パッケージをインストールし、基本的なタスクのコード例を試すには、次の手順に従います。 この例は、独自の画像認識アプリを構築するためのテンプレートとして使用します。
メモ
コードを記述 せずに 分類モデルを構築してトレーニングする場合は、 ブラウザーベースのガイダンスを参照してください。
Java用の Custom Vision クライアント ライブラリを使用して、次の目的で使用します。
- 新しい Custom Vision プロジェクトを作成する
- プロジェクトにタグを追加する
- 画像をアップロードしてタグ付けする
- プロジェクトをトレーニングする
- 現在のイテレーションを発行する
- 予測エンドポイントをテストする
リファレンス ドキュメント |(training) および (prediction)のライブラリ ソース コード|(training) および (prediction)用のアーティファクト (Maven) | サンプル
前提 条件
- Azure サブスクリプション。 無料で 作成できます。
- 現在のバージョンの Java Development Kit(JDK)。
- Gradle ビルド ツール、または別の依存関係マネージャー。
- Azure サブスクリプションを作成したら、Azure ポータルで Custom Vision リソースを作成して、トレーニングリソースと予測リソースを作成します。
- Free 価格レベル (
F0) を使用してサービスを試し、後で運用環境用の有料レベルにアップグレードできます。
- Free 価格レベル (
環境変数を作成する
この例では、アプリケーションを実行しているローカル コンピューター上の環境変数に資格情報を書き込みます。
Azure ポータルに移動します。 [前提条件] セクションで作成した Custom Vision リソースが正常にデプロイされた場合は、[次の手順] の [リソースに移動] ボタンを選択します。 キーとエンドポイントは、リソースの [ キー] ページと [エンドポイント] ページの [ リソース管理] にあります。 API エンドポイントと共に、トレーニング リソースと予測リソースの両方のキーを取得する必要があります。
予測リソースの Properties タブには、Azure ポータルで Resource ID として一覧表示されています。
ヒント
また、 https://www.customvision.ai を使用してこれらの値を取得します。 サインインしたら、右上にある [設定] アイコンを選択します。 [設定] ページでは、すべてのキー、リソース ID、エンドポイントを表示できます。
環境変数を設定するには、コンソール ウィンドウを開き、オペレーティング システムと開発環境の指示に従います。
-
VISION_TRAINING KEY環境変数を設定するには、<your-training-key>をトレーニング リソースのキーのいずれかに置き換えます。 -
VISION_TRAINING_ENDPOINT環境変数を設定するには、<your-training-endpoint>をトレーニング リソースのエンドポイントに置き換えます。 -
VISION_PREDICTION_KEY環境変数を設定するには、<your-prediction-key>を予測リソースのキーのいずれかに置き換えます。 -
VISION_PREDICTION_ENDPOINT環境変数を設定するには、<your-prediction-endpoint>を予測リソースのエンドポイントに置き換えます。 -
VISION_PREDICTION_RESOURCE_ID環境変数を設定するには、<your-resource-id>を予測リソースのリソース ID に置き換えます。
重要
クラウドで実行されるアプリケーションに資格情報を格納しないように、 Azure リソースの管理された ID を使用して認証をMicrosoft Entra IDすることをお勧めします。
API キーは慎重に使用してください。 API キーをコードに直接含めず、パブリックに投稿しないでください。 API キーを使用する場合は、Azure Key Vaultに安全に格納し、キーを定期的にローテーションし、ロールベースのアクセス制御とネットワーク アクセス制限を使用してAzure Key Vaultへのアクセスを制限します。 アプリで API キーを安全に使用する方法の詳細については、「Azure Key Vault を使用した
AI サービスのセキュリティの詳細については、「Authenticate requests to Azure AI サービス」を参照してください。
setx VISION_TRAINING_KEY <your-training-key>
setx VISION_TRAINING_ENDPOINT <your-training-endpoint>
setx VISION_PREDICTION_KEY <your-prediction-key>
setx VISION_PREDICTION_ENDPOINT <your-prediction-endpoint>
setx VISION_PREDICTION_RESOURCE_ID <your-resource-id>
環境変数を追加した後、コンソール ウィンドウを含め、環境変数を読み取る実行中のプログラムを再起動することが必要になる場合があります。
セットアップ
新しい Gradle プロジェクトを作成する
コンソール ウィンドウ (cmd、PowerShell、Bash など) で、アプリ用の新しいディレクトリを作成し、そこに移動します。
mkdir myapp && cd myapp
作業ディレクトリから gradle init コマンドを実行します。 このコマンドは、実行時にアプリケーションの作成と構成に使用される build.gradle.kts など、Gradle に不可欠なビルド ファイルを作成します。
gradle init --type basic
DSL の選択を求められたら、[Kotlin] を選択します。
クライアント ライブラリをインストールする
build.gradle.kts を見つけて、任意の IDE またはテキスト エディターで開きます。 次に、次のビルド構成をコピーします。 この構成では、エントリ ポイントがクラス CustomVisionQuickstart であるJava アプリケーションとしてプロジェクトを定義します。 Custom Vision ライブラリがインポートされます。
plugins {
java
application
}
application {
mainClassName = "CustomVisionQuickstart"
}
repositories {
mavenCentral()
}
dependencies {
compile(group = "com.azure", name = "azure-cognitiveservices-customvision-training", version = "1.1.0-preview.2")
compile(group = "com.azure", name = "azure-cognitiveservices-customvision-prediction", version = "1.1.0-preview.2")
}
Java ファイルを作成する
作業ディレクトリから、次のコマンドを実行してプロジェクト ソース フォルダーを作成します。
mkdir -p src/main/java
新しいフォルダーに移動し、 CustomVisionQuickstart.javaという名前のファイルを作成します。 任意のエディターまたは IDE で開き、次の import ステートメントを追加します。
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.UUID;
import com.google.common.io.ByteStreams;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.models.Classifier;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.models.Domain;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.models.DomainType;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.models.ImageFileCreateBatch;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.models.ImageFileCreateEntry;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.models.Iteration;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.models.Project;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.models.Region;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.models.TrainProjectOptionalParameter;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.CustomVisionTrainingClient;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.Trainings;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.CustomVisionTrainingManager;
import com.microsoft.azure.cognitiveservices.vision.customvision.prediction.models.ImagePrediction;
import com.microsoft.azure.cognitiveservices.vision.customvision.prediction.models.Prediction;
import com.microsoft.azure.cognitiveservices.vision.customvision.prediction.CustomVisionPredictionClient;
import com.microsoft.azure.cognitiveservices.vision.customvision.prediction.CustomVisionPredictionManager;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.models.Tag;
ヒント
クイック スタート コード ファイル全体を一度に表示しますか? このクイック スタートのコード例を含む GitHub で確認できます。
アプリケーションの CustomVisionQuickstart クラスで、環境変数からリソースのキーとエンドポイントを取得する変数を作成します。
// retrieve environment variables
final static String trainingApiKey = System.getenv("VISION_TRAINING_KEY");
final static String trainingEndpoint = System.getenv("VISION_TRAINING_ENDPOINT");
final static String predictionApiKey = System.getenv("VISION_PREDICTION_KEY");
final static String predictionEndpoint = System.getenv("VISION_PREDICTION_ENDPOINT");
final static String predictionResourceId = System.getenv("VISION_PREDICTION_RESOURCE_ID");
重要
完了したら、コードからキーを削除し、公開しないでください。 運用環境では、
アプリケーションの main メソッドで、このクイック スタートで使用するメソッドの呼び出しを追加します。 これらは後で定義します。
Project project = createProject(trainClient);
addTags(trainClient, project);
uploadImages(trainClient, project);
trainProject(trainClient, project);
publishIteration(trainClient, project);
testProject(predictor, project);
オブジェクト モデル
次のクラスとインターフェイスは、Custom Vision Java クライアント ライブラリの主要な機能の一部を処理します。
| 名前 | 説明 |
|---|---|
| CustomVisionTrainingClient | このクラスは、モデルの作成、トレーニング、発行を処理します。 |
| CustomVisionPredictionClient | このクラスは、画像分類の予測に対するモデルのクエリを処理します。 |
| ImagePrediction | このクラスは、1 つの画像に対して 1 つの予測を定義します。 これには、オブジェクト ID と名前のプロパティと信頼度スコアが含まれます。 |
コード例
これらのコード スニペットは、Java用 Custom Vision クライアント ライブラリを使用して次のタスクを実行する方法を示しています。
- クライアントを認証する
- 新しい Custom Vision プロジェクトを作成する
- プロジェクトにタグを追加する
- 画像をアップロードしてタグ付けする
- プロジェクトをトレーニングする
- 現在のイテレーションを発行する
- 予測エンドポイントをテストする
クライアントを認証する
mainメソッドで、エンドポイントとキーを使用してトレーニング クライアントと予測クライアントをインスタンス化します。
// Authenticate
CustomVisionTrainingClient trainClient = CustomVisionTrainingManager
.authenticate(trainingEndpoint, trainingApiKey)
.withEndpoint(trainingEndpoint);
CustomVisionPredictionClient predictor = CustomVisionPredictionManager
.authenticate(predictionEndpoint, predictionApiKey)
.withEndpoint(predictionEndpoint);
Custom Vision プロジェクトを作成する
この次の方法では、画像分類プロジェクトを作成します。 作成したプロジェクトは、先ほどアクセスした Custom Vision Web サイト に表示されます。 プロジェクトの作成時に他のオプションを指定するには、 CreateProject メソッドのオーバーロードを参照してください ( 「検出機能の構築 」Web ポータル ガイドで説明されています)。
public static Project createProject(CustomVisionTrainingClient trainClient) {
System.out.println("ImageClassification Sample");
Trainings trainer = trainClient.trainings();
System.out.println("Creating project...");
Project project = trainer.createProject().withName("Sample Java Project").execute();
return project;
}
プロジェクトにタグを追加する
このメソッドは、モデルをトレーニングするタグを定義します。
public static void addTags(CustomVisionTrainingClient trainClient, Project project) {
Trainings trainer = trainClient.trainings();
// create hemlock tag
Tag hemlockTag = trainer.createTag().withProjectId(project.id()).withName("Hemlock").execute();
// create cherry tag
Tag cherryTag = trainer.createTag().withProjectId(project.id()).withName("Japanese Cherry").execute();
}
画像をアップロードしてタグ付けする
まず、このプロジェクトのサンプル イメージをダウンロードします。 サンプル イメージ フォルダーの内容をローカル デバイスに保存します。
public static void uploadImages(CustomVisionTrainingClient trainClient, Project project) {
Trainings trainer = trainClient.trainings();
System.out.println("Adding images...");
for (int i = 1; i <= 10; i++) {
String fileName = "hemlock_" + i + ".jpg";
byte[] contents = GetImage("/Hemlock", fileName);
AddImageToProject(trainer, project, fileName, contents, hemlockTag.id(), null);
}
for (int i = 1; i <= 10; i++) {
String fileName = "japanese_cherry_" + i + ".jpg";
byte[] contents = GetImage("/Japanese_Cherry", fileName);
AddImageToProject(trainer, project, fileName, contents, cherryTag.id(), null);
}
}
前のコード スニペットでは、リソース ストリームとしてイメージを取得してサービスにアップロードする 2 つのヘルパー関数を使用しています (1 回のバッチで最大 64 個の画像をアップロードできます)。
private static void AddImageToProject(Trainings trainer, Project project, String fileName, byte[] contents,
UUID tag, double[] regionValues) {
System.out.println("Adding image: " + fileName);
ImageFileCreateEntry file = new ImageFileCreateEntry().withName(fileName).withContents(contents);
ImageFileCreateBatch batch = new ImageFileCreateBatch().withImages(Collections.singletonList(file));
// If Optional region is specified, tack it on and place the tag there,
// otherwise
// add it to the batch.
if (regionValues != null) {
Region region = new Region().withTagId(tag).withLeft(regionValues[0]).withTop(regionValues[1])
.withWidth(regionValues[2]).withHeight(regionValues[3]);
file = file.withRegions(Collections.singletonList(region));
} else {
batch = batch.withTagIds(Collections.singletonList(tag));
}
trainer.createImagesFromFiles(project.id(), batch);
}
private static byte[] GetImage(String folder, String fileName) {
try {
return ByteStreams.toByteArray(CustomVisionSamples.class.getResourceAsStream(folder + "/" + fileName));
} catch (Exception e) {
System.out.println(e.getMessage());
e.printStackTrace();
}
return null;
}
プロジェクトをトレーニングする
このメソッドは、プロジェクトで最初のトレーニング イテレーションを作成します。 トレーニングが完了するまでサービスに対してクエリを実行します。
public static void trainProject(CustomVisionTrainingClient trainClient, Project project) {
System.out.println("Training...");
Trainings trainer = trainClient.trainings();
Iteration iteration = trainer.trainProject(project.id(), new TrainProjectOptionalParameter());
while (iteration.status().equals("Training")) {
System.out.println("Training Status: " + iteration.status());
Thread.sleep(1000);
iteration = trainer.getIteration(project.id(), iteration.id());
}
System.out.println("Training Status: " + iteration.status());
}
現在のイテレーションを発行する
このメソッドを使用すると、モデルの現在のイテレーションをクエリに使用できるようになります。 モデル名を参照として使用して、予測要求を送信できます。
predictionResourceIdには独自の値を入力する必要があります。 予測リソース ID は、Azure ポータルのリソースの Properties タブで、Resource ID として表示されます。
public static String publishIteration(CustomVisionTrainingClient trainClient, Project project) {
Trainings trainer = trainClient.trainings();
// The iteration is now trained. Publish it to the prediction endpoint.
String publishedModelName = "myModel";
trainer.publishIteration(project.id(), iteration.id(), publishedModelName, predictionResourceId);
}
予測エンドポイントをテストする
このメソッドは、テスト イメージを読み込み、モデル エンドポイントに対してクエリを実行し、予測データをコンソールに出力します。
// load test image
public static void testProject(CustomVisionPredictionClient predictor, Project project) {
byte[] testImage = GetImage("/Test", "test_image.jpg");
// predict
ImagePrediction results = predictor.predictions().classifyImage().withProjectId(project.id())
.withPublishedName(publishedModelName).withImageData(testImage).execute();
for (Prediction prediction : results.predictions()) {
System.out.println(String.format("\t%s: %.2f%%", prediction.tagName(), prediction.probability() * 100.0f));
}
}
アプリケーションを実行する
次の方法でアプリをビルドできます。
gradle build
gradle run コマンドを使用してアプリケーションを実行します。
gradle run
リソースのクリーンアップ
Azure AI サービス サブスクリプションをクリーンアップして削除する場合は、リソースまたはリソース グループを削除できます。 リソース グループを削除すると、それに関連付けられている他のリソースも削除されます。
独自の画像分類プロジェクトを実装する (または オブジェクト検出 プロジェクトを試す) 場合は、この例からツリー識別プロジェクトを削除できます。 無料サブスクリプションでは、2 つの Custom Vision プロジェクトを利用できます。
Custom Vision Web サイトで、Projects に移動し、[マイ ニュー Project] の下にあるごみ箱を選択します。
関連コンテンツ
これで、オブジェクト検出プロセスのすべてのステップをコードで実行する方法を確認しました。 このサンプルでは 1 回のトレーニング イテレーションを実行しますが、多くの場合、モデルをより正確にするために、モデルを複数回トレーニングしてテストする必要があります。
- Custom Vision とは
- このサンプルのソース コードは、
GitHub
このガイドでは、Node.js 用 Custom Vision クライアント ライブラリを使用して画像分類モデルを構築する際に役立つ手順とサンプル コードについて説明します。 プロジェクトの作成、タグの追加、プロジェクトのトレーニング、プロジェクトの予測エンドポイント URL を使用してプログラムでテストすることができます。 この例は、独自の画像認識アプリを構築するためのテンプレートとして使用します。
メモ
コードを記述 せずに 分類モデルを構築してトレーニングする場合は、 ブラウザーベースのガイダンスを参照してください。
Node.js 用の Custom Vision クライアント ライブラリを使用して、次の目的で使用します。
- 新しい Custom Vision プロジェクトを作成する
- プロジェクトにタグを追加する
- 画像をアップロードしてタグ付けする
- プロジェクトをトレーニングする
- 現在のイテレーションを発行する
- 予測エンドポイントをテストする
(トレーニング) と (予測) のリファレンス ドキュメント | パッケージ (npm) 用 (トレーニング) および (予測) | サンプル
前提 条件
- Azure サブスクリプション。 無料で 作成できます。
- Node.jsの現在のバージョン。
- Azure サブスクリプションを作成したら、Azure ポータルで Custom Vision リソースを作成して、トレーニングリソースと予測リソースを作成します。
- Free 価格レベル (
F0) を使用してサービスを試し、後で運用環境用の有料レベルにアップグレードできます。
- Free 価格レベル (
環境変数を作成する
この例では、アプリケーションを実行しているローカル コンピューター上の環境変数に資格情報を書き込みます。
Azure ポータルに移動します。 [前提条件] セクションで作成した Custom Vision リソースが正常にデプロイされた場合は、[次の手順] の [リソースに移動] ボタンを選択します。 キーとエンドポイントは、リソースの [ キー] ページと [エンドポイント] ページの [ リソース管理] にあります。 API エンドポイントと共に、トレーニング リソースと予測リソースの両方のキーを取得する必要があります。
予測リソースの Properties タブには、Azure ポータルで Resource ID として一覧表示されています。
ヒント
また、 https://www.customvision.ai を使用してこれらの値を取得します。 サインインしたら、右上にある [設定] アイコンを選択します。 [設定] ページでは、すべてのキー、リソース ID、エンドポイントを表示できます。
環境変数を設定するには、コンソール ウィンドウを開き、オペレーティング システムと開発環境の指示に従います。
-
VISION_TRAINING KEY環境変数を設定するには、<your-training-key>をトレーニング リソースのキーのいずれかに置き換えます。 -
VISION_TRAINING_ENDPOINT環境変数を設定するには、<your-training-endpoint>をトレーニング リソースのエンドポイントに置き換えます。 -
VISION_PREDICTION_KEY環境変数を設定するには、<your-prediction-key>を予測リソースのキーのいずれかに置き換えます。 -
VISION_PREDICTION_ENDPOINT環境変数を設定するには、<your-prediction-endpoint>を予測リソースのエンドポイントに置き換えます。 -
VISION_PREDICTION_RESOURCE_ID環境変数を設定するには、<your-resource-id>を予測リソースのリソース ID に置き換えます。
重要
クラウドで実行されるアプリケーションに資格情報を格納しないように、 Azure リソースの管理された ID を使用して認証をMicrosoft Entra IDすることをお勧めします。
API キーは慎重に使用してください。 API キーをコードに直接含めず、パブリックに投稿しないでください。 API キーを使用する場合は、Azure Key Vaultに安全に格納し、キーを定期的にローテーションし、ロールベースのアクセス制御とネットワーク アクセス制限を使用してAzure Key Vaultへのアクセスを制限します。 アプリで API キーを安全に使用する方法の詳細については、「Azure Key Vault を使用した
AI サービスのセキュリティの詳細については、「Authenticate requests to Azure AI サービス」を参照してください。
setx VISION_TRAINING_KEY <your-training-key>
setx VISION_TRAINING_ENDPOINT <your-training-endpoint>
setx VISION_PREDICTION_KEY <your-prediction-key>
setx VISION_PREDICTION_ENDPOINT <your-prediction-endpoint>
setx VISION_PREDICTION_RESOURCE_ID <your-resource-id>
環境変数を追加した後、コンソール ウィンドウを含め、環境変数を読み取る実行中のプログラムを再起動することが必要になる場合があります。
セットアップ
新しい Node.js アプリケーションを作成する
コンソール ウィンドウ (cmd、PowerShell、Bash など) で、アプリ用の新しいディレクトリを作成し、そこに移動します。
mkdir myapp && cd myapp
npm init コマンドを実行して、package.json ファイルを含むノード アプリケーションを作成します。 Enter キーを複数回押してプロセスを完了します。
npm init
クライアント ライブラリをインストールする
Custom Vision for Node.jsを使用して画像分析アプリを作成するには、Custom Vision npm パッケージが必要です。 それらをインストールするには、PowerShell で次のコマンドを実行します。
npm install @azure/cognitiveservices-customvision-training
npm install @azure/cognitiveservices-customvision-prediction
アプリの package.json ファイルが依存関係で更新されます。
index.jsという名前のファイルを作成し、次のライブラリをインポートします。
const util = require('util');
const fs = require('fs');
const TrainingApi = require("@azure/cognitiveservices-customvision-training");
const PredictionApi = require("@azure/cognitiveservices-customvision-prediction");
const msRest = require("@azure/ms-rest-js");
ヒント
クイック スタート コード ファイル全体を一度に表示しますか? このクイック スタートのコード例を含む GitHub で確認できます。
リソースのAzure エンドポイントとキーの変数を作成します。
// retrieve environment variables
const trainingKey = process.env["VISION_TRAINING_KEY"];
const trainingEndpoint = process.env["VISION_TRAINING_ENDPOINT"];
const predictionKey = process.env["VISION_PREDICTION_KEY"];
const predictionResourceId = process.env["VISION_PREDICTION_RESOURCE_ID"];
const predictionEndpoint = process.env["VISION_PREDICTION_ENDPOINT"];
また、プロジェクト名のフィールドと非同期呼び出しのタイムアウト パラメーターも追加します。
const publishIterationName = "classifyModel";
const setTimeoutPromise = util.promisify(setTimeout);
オブジェクト モデル
| 名前 | 説明 |
|---|---|
| TrainingAPIClient | このクラスは、モデルの作成、トレーニング、発行を処理します。 |
| PredictionAPIClient | このクラスは、画像分類の予測に対するモデルのクエリを処理します。 |
| 予測 | このインターフェイスは、1 つの画像に対して 1 つの予測を定義します。 これには、オブジェクト ID と名前のプロパティと信頼度スコアが含まれます。 |
コード例
これらのコード スニペットは、JavaScript 用 Custom Vision クライアント ライブラリを使用して次のタスクを実行する方法を示しています。
- クライアントを認証する
- 新しい Custom Vision プロジェクトを作成する
- プロジェクトにタグを追加する
- 画像をアップロードしてタグ付けする
- プロジェクトをトレーニングする
- 現在のイテレーションを発行する
- 予測エンドポイントをテストする
クライアントを認証する
エンドポイントとキーを使用してクライアント オブジェクトをインスタンス化します。 キーを使用 して ApiKeyCredentials オブジェクトを作成し、それをエンドポイントと共に使用して TrainingAPIClient オブジェクトと PredictionAPIClient オブジェクトを作成します。
const credentials = new msRest.ApiKeyCredentials({ inHeader: { "Training-key": trainingKey } });
const trainer = new TrainingApi.TrainingAPIClient(credentials, trainingEndpoint);
const predictor_credentials = new msRest.ApiKeyCredentials({ inHeader: { "Prediction-key": predictionKey } });
const predictor = new PredictionApi.PredictionAPIClient(predictor_credentials, predictionEndpoint);
新しい Custom Vision プロジェクトを作成する
すべての Custom Vision 関数呼び出しを含む新しい関数を開始します。 次のコードを追加して、新しい Custom Vision サービス プロジェクトを作成します。
(async () => {
console.log("Creating project...");
const sampleProject = await trainer.createProject("Sample Project");
プロジェクトにタグを追加する
プロジェクトに分類タグを作成するには、次のコードを関数に追加します。
const hemlockTag = await trainer.createTag(sampleProject.id, "Hemlock");
const cherryTag = await trainer.createTag(sampleProject.id, "Japanese Cherry");
画像をアップロードしてタグ付けする
まず、このプロジェクトのサンプル イメージをダウンロードします。 サンプル イメージ フォルダーの内容をローカル デバイスに保存します。
サンプル イメージをプロジェクトに追加するには、タグの作成後に次のコードを挿入します。 このコードは、対応するタグを持つ各画像をアップロードします。
const sampleDataRoot = "Images";
console.log("Adding images...");
let fileUploadPromises = [];
const hemlockDir = `${sampleDataRoot}/Hemlock`;
const hemlockFiles = fs.readdirSync(hemlockDir);
hemlockFiles.forEach(file => {
fileUploadPromises.push(trainer.createImagesFromData(sampleProject.id, fs.readFileSync(`${hemlockDir}/${file}`), { tagIds: [hemlockTag.id] }));
});
const cherryDir = `${sampleDataRoot}/Japanese_Cherry`;
const japaneseCherryFiles = fs.readdirSync(cherryDir);
japaneseCherryFiles.forEach(file => {
fileUploadPromises.push(trainer.createImagesFromData(sampleProject.id, fs.readFileSync(`${cherryDir}/${file}`), { tagIds: [cherryTag.id] }));
});
await Promise.all(fileUploadPromises);
重要
Foundry Tools Python SDK Samples リポジトリをダウンロードした場所に基づいて、イメージへのパス (sampleDataRoot) を変更する必要があります。
プロジェクトをトレーニングする
このコードは、予測モデルの最初のイテレーションを作成します。
console.log("Training...");
let trainingIteration = await trainer.trainProject(sampleProject.id);
// Wait for training to complete
console.log("Training started...");
while (trainingIteration.status == "Training") {
console.log("Training status: " + trainingIteration.status);
await setTimeoutPromise(1000, null);
trainingIteration = await trainer.getIteration(sampleProject.id, trainingIteration.id)
}
console.log("Training status: " + trainingIteration.status);
現在のイテレーションを発行する
このコードは、トレーニング済みのイテレーションを予測エンドポイントに発行します。 発行されたイテレーションに指定された名前を使用して、予測要求を送信できます。 イテレーションは、公開されるまで予測エンドポイントで利用できません。
// Publish the iteration to the end point
await trainer.publishIteration(sampleProject.id, trainingIteration.id, publishIterationName, predictionResourceId);
予測エンドポイントをテストする
画像を予測エンドポイントに送信して予測を取得するには、次のコードを関数に追加します。
const testFile = fs.readFileSync(`${sampleDataRoot}/Test/test_image.jpg`);
const results = await predictor.classifyImage(sampleProject.id, publishIterationName, testFile);
// Show results
console.log("Results:");
results.predictions.forEach(predictedResult => {
console.log(`\t ${predictedResult.tagName}: ${(predictedResult.probability * 100.0).toFixed(2)}%`);
});
次に、Custom Vision 関数を閉じて呼び出します。
})()
アプリケーションを実行する
クイック スタート ファイルで node コマンドを使用してアプリケーションを実行します。
node index.js
アプリケーションの出力は、次のテキストのようになります。
Creating project...
Adding images...
Training...
Training started...
Training status: Training
Training status: Training
Training status: Training
Training status: Completed
Results:
Hemlock: 94.97%
Japanese Cherry: 0.01%
その後、テスト イメージ ( <sampleDataRoot>/Test/) が適切にタグ付けされていることを確認できます。 Custom Vision Web サイトに戻り、新しく作成したプロジェクトの現在の状態を確認することもできます。
独自の画像分類プロジェクトを実装する (または オブジェクト検出 プロジェクトを試す) 場合は、この例からツリー識別プロジェクトを削除できます。 無料サブスクリプションでは、2 つの Custom Vision プロジェクトを利用できます。
Custom Vision Web サイトで、Projects に移動し、[マイ ニュー Project] の下にあるごみ箱を選択します。
関連コンテンツ
このガイドでは、オブジェクト検出プロセスのすべての手順をコードで実行する方法を示します。 このサンプルでは 1 回のトレーニング イテレーションを実行しますが、多くの場合、モデルをより正確にするために、モデルを複数回トレーニングしてテストする必要があります。
- Custom Vision とは
- このサンプルのソース コードは、
GitHub - SDK リファレンス ドキュメント (トレーニング)
- SDK リファレンス ドキュメント (予測)
Python用 Custom Vision クライアント ライブラリの使用を開始します。 次の手順に従ってパッケージをインストールし、画像分類モデルを構築するためのコード例を試してください。 プロジェクトを作成し、タグを追加し、プロジェクトをトレーニングし、プロジェクトの予測エンドポイント URL を使用してプログラムでテストします。 この例は、独自の画像認識アプリを構築するためのテンプレートとして使用します。
メモ
コードを記述 せずに 分類モデルを構築してトレーニングする場合は、 ブラウザーベースのガイダンスを参照してください。
Python用の Custom Vision クライアント ライブラリを使用して、次の目的で使用します。
- 新しい Custom Vision プロジェクトを作成する
- プロジェクトにタグを追加する
- 画像をアップロードしてタグ付けする
- プロジェクトをトレーニングする
- 現在のイテレーションを発行する
- 予測エンドポイントをテストする
リファレンス ドキュメント | ライブラリのソース コード | パッケージ (PyPI) | サンプル
前提 条件
- Azure サブスクリプション。 無料で 作成できます。
-
Python 3.x。
- Pythonインストールには、pipが含まれている必要があります。 コマンド ラインで
pip --versionを実行することで、pip がインストールされているかどうかを確認できます。 最新バージョンのPythonをインストールして pip を取得します。
- Pythonインストールには、pipが含まれている必要があります。 コマンド ラインで
- Azure サブスクリプションを作成したら、Azure ポータルで Custom Vision リソースを作成して、トレーニングリソースと予測リソースを作成します。
- Free 価格レベル (
F0) を使用してサービスを試し、後で運用環境用の有料レベルにアップグレードできます。
- Free 価格レベル (
環境変数を作成する
この例では、アプリケーションを実行しているローカル コンピューター上の環境変数に資格情報を書き込みます。
Azure ポータルに移動します。 [前提条件] セクションで作成した Custom Vision リソースが正常にデプロイされた場合は、[次の手順] の [リソースに移動] ボタンを選択します。 キーとエンドポイントは、リソースの [ キー] ページと [エンドポイント] ページの [ リソース管理] にあります。 API エンドポイントと共に、トレーニング リソースと予測リソースの両方のキーを取得する必要があります。
予測リソースの Properties タブには、Azure ポータルで Resource ID として一覧表示されています。
ヒント
また、 https://www.customvision.ai を使用してこれらの値を取得します。 サインインしたら、右上にある [設定] アイコンを選択します。 [設定] ページでは、すべてのキー、リソース ID、エンドポイントを表示できます。
環境変数を設定するには、コンソール ウィンドウを開き、オペレーティング システムと開発環境の指示に従います。
-
VISION_TRAINING KEY環境変数を設定するには、<your-training-key>をトレーニング リソースのキーのいずれかに置き換えます。 -
VISION_TRAINING_ENDPOINT環境変数を設定するには、<your-training-endpoint>をトレーニング リソースのエンドポイントに置き換えます。 -
VISION_PREDICTION_KEY環境変数を設定するには、<your-prediction-key>を予測リソースのキーのいずれかに置き換えます。 -
VISION_PREDICTION_ENDPOINT環境変数を設定するには、<your-prediction-endpoint>を予測リソースのエンドポイントに置き換えます。 -
VISION_PREDICTION_RESOURCE_ID環境変数を設定するには、<your-resource-id>を予測リソースのリソース ID に置き換えます。
重要
クラウドで実行されるアプリケーションに資格情報を格納しないように、 Azure リソースの管理された ID を使用して認証をMicrosoft Entra IDすることをお勧めします。
API キーは慎重に使用してください。 API キーをコードに直接含めず、パブリックに投稿しないでください。 API キーを使用する場合は、Azure Key Vaultに安全に格納し、キーを定期的にローテーションし、ロールベースのアクセス制御とネットワーク アクセス制限を使用してAzure Key Vaultへのアクセスを制限します。 アプリで API キーを安全に使用する方法の詳細については、「Azure Key Vault を使用した
AI サービスのセキュリティの詳細については、「Authenticate requests to Azure AI サービス」を参照してください。
setx VISION_TRAINING_KEY <your-training-key>
setx VISION_TRAINING_ENDPOINT <your-training-endpoint>
setx VISION_PREDICTION_KEY <your-prediction-key>
setx VISION_PREDICTION_ENDPOINT <your-prediction-endpoint>
setx VISION_PREDICTION_RESOURCE_ID <your-resource-id>
環境変数を追加した後、コンソール ウィンドウを含め、環境変数を読み取る実行中のプログラムを再起動することが必要になる場合があります。
セットアップ
クライアント ライブラリをインストールする
Custom Vision for Python を使用して画像分析アプリを作成するには、Custom Vision クライアント ライブラリが必要です。 Pythonをインストールしたら、PowerShell またはコンソール ウィンドウで次のコマンドを実行します。
pip install azure-cognitiveservices-vision-customvision
新しいPython アプリケーションを作成する
新しいPython ファイルを作成し、次のライブラリをインポートします。
from azure.cognitiveservices.vision.customvision.training import CustomVisionTrainingClient
from azure.cognitiveservices.vision.customvision.prediction import CustomVisionPredictionClient
from azure.cognitiveservices.vision.customvision.training.models import ImageFileCreateBatch, ImageFileCreateEntry, Region
from msrest.authentication import ApiKeyCredentials
import os, time, uuid
ヒント
クイック スタート コード ファイル全体を一度に表示しますか? このクイック スタートのコード例を含む GitHub で確認できます。
リソースのAzure エンドポイントとキーの変数を作成します。
# retrieve environment variables
ENDPOINT = os.environ["VISION_TRAINING_ENDPOINT"]
prediction_endpoint = os.environ["VISION_PREDICTION_ENDPOINT"]
training_key = os.environ["VISION_TRAINING_KEY"]
prediction_key = os.environ["VISION_PREDICTION_KEY"]
prediction_resource_id = os.environ["VISION_PREDICTION_RESOURCE_ID"]
オブジェクト モデル
| 名前 | 説明 |
|---|---|
| CustomVisionTrainingClient | このクラスは、モデルの作成、トレーニング、発行を処理します。 |
| CustomVisionPredictionClient | このクラスは、画像分類の予測に対するモデルのクエリを処理します。 |
| ImagePrediction | このクラスは、1 つの画像に対して 1 つのオブジェクト予測を定義します。 これには、オブジェクト ID と名前のプロパティ、オブジェクトの境界ボックスの位置、信頼度スコアが含まれます。 |
コード例
これらのコード スニペットは、Python用 Custom Vision クライアント ライブラリを使用して次の操作を行う方法を示しています。
- クライアントを認証する
- 新しい Custom Vision プロジェクトを作成する
- プロジェクトにタグを追加する
- 画像をアップロードしてタグ付けする
- プロジェクトをトレーニングする
- 現在のイテレーションを発行する
- 予測エンドポイントをテストする
クライアントを認証する
エンドポイントとキーを使用してトレーニングおよび予測クライアントをインスタンス化します。 キーを使ってApiKeyServiceClientCredentialsオブジェクトを作成し、それらをエンドポイントで使用することでCustomVisionTrainingClientオブジェクトとCustomVisionPredictionClientオブジェクトを構築します。
credentials = ApiKeyCredentials(in_headers={"Training-key": training_key})
trainer = CustomVisionTrainingClient(ENDPOINT, credentials)
prediction_credentials = ApiKeyCredentials(in_headers={"Prediction-key": prediction_key})
predictor = CustomVisionPredictionClient(prediction_endpoint, prediction_credentials)
新しい Custom Vision プロジェクトを作成する
スクリプトに次のコードを追加して、新しい Custom Vision サービス プロジェクトを作成します。
プロジェクトの作成時に他のオプションを指定するには、 create_project メソッドを参照してください ( 分類子の作成 Web ポータル ガイドで説明します)。
publish_iteration_name = "classifyModel"
credentials = ApiKeyCredentials(in_headers={"Training-key": training_key})
trainer = CustomVisionTrainingClient(ENDPOINT, credentials)
# Create a new project
print ("Creating project...")
project_name = uuid.uuid4()
project = trainer.create_project(project_name)
プロジェクトにタグを追加する
プロジェクトに分類タグを追加するには、次のコードを追加します。
# Make two tags in the new project
hemlock_tag = trainer.create_tag(project.id, "Hemlock")
cherry_tag = trainer.create_tag(project.id, "Japanese Cherry")
画像をアップロードしてタグ付けする
まず、このプロジェクトのサンプル イメージをダウンロードします。 サンプル イメージ フォルダーの内容をローカル デバイスに保存します。
サンプル イメージをプロジェクトに追加するには、タグの作成後に次のコードを挿入します。 このコードは、対応するタグを持つ各画像をアップロードします。 1 回のバッチで最大 64 個の画像をアップロードできます。
base_image_location = os.path.join (os.path.dirname(__file__), "Images")
print("Adding images...")
image_list = []
for image_num in range(1, 11):
file_name = "hemlock_{}.jpg".format(image_num)
with open(os.path.join (base_image_location, "Hemlock", file_name), "rb") as image_contents:
image_list.append(ImageFileCreateEntry(name=file_name, contents=image_contents.read(), tag_ids=[hemlock_tag.id]))
for image_num in range(1, 11):
file_name = "japanese_cherry_{}.jpg".format(image_num)
with open(os.path.join (base_image_location, "Japanese_Cherry", file_name), "rb") as image_contents:
image_list.append(ImageFileCreateEntry(name=file_name, contents=image_contents.read(), tag_ids=[cherry_tag.id]))
upload_result = trainer.create_images_from_files(project.id, ImageFileCreateBatch(images=image_list))
if not upload_result.is_batch_successful:
print("Image batch upload failed.")
for image in upload_result.images:
print("Image status: ", image.status)
exit(-1)
メモ
Foundry Tools Python SDK Samples リポジトリをダウンロードした場所に基づいて、イメージへのパスを変更する必要があります。
プロジェクトをトレーニングする
このコードは、予測モデルの最初のイテレーションを作成します。
print ("Training...")
iteration = trainer.train_project(project.id)
while (iteration.status != "Completed"):
iteration = trainer.get_iteration(project.id, iteration.id)
print ("Training status: " + iteration.status)
print ("Waiting 10 seconds...")
time.sleep(10)
ヒント
選択したタグを使用してトレーニングする
必要に応じて、適用されたタグのサブセットのみをトレーニングできます。 特定のタグをまだ十分に適用していないが、他のタグが十分にある場合は、これを行うことができます。
train_project呼び出しで、省略可能なパラメーター selected_tagsを、使用するタグの ID 文字列の一覧に設定します。 モデルは、そのリストのタグのみを認識するようにトレーニングします。
現在のイテレーションを発行する
イテレーションは、公開されるまで予測エンドポイントで利用できません。 次のコードでは、モデルの現在のイテレーションをクエリに使用できるようにします。
# The iteration is now trained. Publish it to the project endpoint
trainer.publish_iteration(project.id, iteration.id, publish_iteration_name, prediction_resource_id)
print ("Done!")
予測エンドポイントをテストする
画像を予測エンドポイントに送信して予測を取得するには、ファイルの末尾に次のコードを追加します。
# Now there is a trained endpoint that can be used to make a prediction
prediction_credentials = ApiKeyCredentials(in_headers={"Prediction-key": prediction_key})
predictor = CustomVisionPredictionClient(prediction_endpoint, prediction_credentials)
with open(os.path.join (base_image_location, "Test/test_image.jpg"), "rb") as image_contents:
results = predictor.classify_image(
project.id, publish_iteration_name, image_contents.read())
# Display the results.
for prediction in results.predictions:
print("\t" + prediction.tag_name +
": {0:.2f}%".format(prediction.probability * 100))
アプリケーションを実行する
次のコマンドを使用してアプリケーションを実行します。
python CustomVisionQuickstart.py
アプリケーションの出力は、次のテキストのようになります。
Creating project...
Adding images...
Training...
Training status: Training
Training status: Completed
Done!
Hemlock: 93.53%
Japanese Cherry: 0.01%
その後、テスト イメージ ( <base_image_location>/images/Test/) が適切にタグ付けされていることを確認できます。 Custom Vision Web サイトに戻り、新しく作成したプロジェクトの現在の状態を確認することもできます。
リソースのクリーンアップ
独自の画像分類プロジェクトを実装する (または オブジェクト検出 プロジェクトを試す) 場合は、この例からツリー識別プロジェクトを削除できます。 無料サブスクリプションでは、2 つの Custom Vision プロジェクトを利用できます。
Custom Vision Web サイトで、Projects に移動し、[マイ ニュー Project] の下にあるごみ箱を選択します。
関連コンテンツ
これで、画像分類プロセスのすべてのステップをコードで実行する方法を確認しました。 このサンプルでは 1 回のトレーニング イテレーションを実行しますが、多くの場合、モデルをより正確にするために、モデルを複数回トレーニングしてテストする必要があります。
- Custom Vision とは
- このサンプルのソース コードは、
GitHub - SDK リファレンス ドキュメント
Custom Vision REST API の使用を開始します。 API を呼び出し、画像分類モデルを構築するには、次の手順に従います。 プロジェクトを作成し、タグを追加し、プロジェクトをトレーニングし、プロジェクトの予測エンドポイント URL を使用してプログラムでテストします。 この例は、独自の画像認識アプリを構築するためのテンプレートとして使用します。
メモ
Custom Vision は、クライアント ライブラリ SDK または ブラウザー ベースのガイダンスを使用して最も簡単に使用できます。
REST API 用の Custom Vision クライアント ライブラリを使用して、次の手順を実行します。
- 新しい Custom Vision プロジェクトを作成する
- プロジェクトにタグを追加する
- 画像をアップロードしてタグ付けする
- プロジェクトをトレーニングする
- 現在のイテレーションを発行する
- 予測エンドポイントをテストする
前提 条件
- Azure サブスクリプション。 無料で 作成できます。
- Azure サブスクリプションを作成したら、Azure ポータルで Custom Vision リソースを作成して、トレーニングリソースと予測リソースを作成します。
- アプリケーションを Custom Vision に接続するには、作成するリソースのキーとエンドポイントが必要です。 キーとエンドポイントは、クイックスタートの後半のコードに貼り付けます。
- Free 価格レベル (
F0) を使用してサービスを試し、後で運用環境用の有料レベルにアップグレードできます。
- PowerShell バージョン 6.0 以降、または同様のコマンド ライン アプリケーション。
新しい Custom Vision プロジェクトを作成する
次のようなコマンドを使用して、画像分類プロジェクトを作成します。 作成されたプロジェクトが Custom Vision Web サイトに表示されます。
curl -v -X POST -H "Training-key: {subscription key}" "https://{endpoint}/customvision/v3.3/Training/projects?name={name}"
コマンドをテキスト エディターにコピーし、次の変更を行います。
-
{subscription key}を有効なキーに置き換えます。 -
{endpoint}を、キーに対応するエンドポイントに置き換えます。メモ
2019 年 7 月 1 日以降に作成された新しいリソースでは、カスタム サブドメイン名が使用されます。 リージョン エンドポイントの詳細と完全な一覧については、「 Foundry Tools のカスタム サブドメイン名」を参照してください。
-
{name}をプロジェクトの名前に置き換えます。 - 必要に応じて、他の URL パラメーターを設定して、プロジェクトで使用するモデルの種類を構成します。 オプションについては、Create Project API を参照してください。
次の例のような JSON 応答が表示されます。 プロジェクトの "id" 値を一時的な場所に保存します。
{
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string",
"settings": {
"domainId": "00000000-0000-0000-0000-000000000000",
"classificationType": "Multiclass",
"targetExportPlatforms": [
"CoreML"
],
"useNegativeSet": true,
"detectionParameters": "string",
"imageProcessingSettings": {
"augmentationMethods": {}
}
},
"created": "string",
"lastModified": "string",
"thumbnailUri": "string",
"drModeEnabled": true,
"status": "Succeeded"
}
プロジェクトにタグを追加する
次のコマンドを使用して、モデルをトレーニングするタグを定義します。
curl -v -X POST -H "Training-key: {subscription key}" "https://{endpoint}/customvision/v3.3/Training/projects/{projectId}/tags?name={name}"
- ここでも、独自のキーとエンドポイントの URL を挿入します。
-
{projectId}を独自のプロジェクト ID に置き換えます。 -
{name}を、使用したいタグの名前に置き換えてください。
プロジェクトで使用するすべてのタグに対して、このプロセスを繰り返します。 提供されている画像の例を使用している場合は、タグ "Hemlock" と "Japanese Cherry"を追加します。
次の例のような JSON 応答が表示されます。 各タグの "id" 値を一時的な場所に保存します。
{
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string",
"type": "Regular",
"imageCount": 0
}
画像をアップロードしてタグ付けする
次に、このプロジェクトのサンプル イメージをダウンロードします。 サンプル イメージ フォルダーの内容をローカル デバイスに保存します。
次のコマンドを使用して画像をアップロードし、タグを適用します。1回は「ヘムロック」画像、別に「日本の桜」の画像用。 その他のオプションについては、「 データからイメージを作成 する」API を参照してください。
curl -v -X POST -H "Content-Type: multipart/form-data" -H "Training-key: {subscription key}" "https://{endpoint}/customvision/v3.3/Training/projects/{projectId}/images?tagIds={tagArray}"
--data-ascii "{binary data}"
- ここでも、独自のキーとエンドポイントの URL を挿入します。
-
{projectId}を独自のプロジェクト ID に置き換えます。 -
{tagArray}をタグの ID に置き換えます。 - 次に、タグ付けする画像のバイナリ データを要求の本文に設定します。
プロジェクトをトレーニングする
このメソッドは、アップロードしたタグ付きイメージでモデルをトレーニングし、現在のプロジェクトイテレーションの ID を返します。
curl -v -X POST -H "Content-Type: application/json" -H "Training-key: {subscription key}" "https://{endpoint}/customvision/v3.3/Training/projects/{projectId}/train"
- ここでも、独自のキーとエンドポイントの URL を挿入します。
-
{projectId}を独自のプロジェクト ID に置き換えます。 -
{tagArray}をタグの ID に置き換えます。 - 次に、タグ付けする画像のバイナリ データを要求の本文に設定します。
- 必要に応じて、他の URL パラメーターを使用します。 オプションについては、Train Project API を参照してください。
ヒント
選択したタグを使用してトレーニングする
必要に応じて、適用されたタグのサブセットのみをトレーニングできます。 特定のタグをまだ十分に適用していないが、他のタグが十分にある場合は、これを行うことができます。 省略可能な JSON コンテンツを要求の本文に追加します。
"selectedTags"配列に、使用するタグの ID を設定します。
{
"selectedTags": [
"00000000-0000-0000-0000-000000000000"
]
}
JSON 応答には、イテレーション ID ("id") など、トレーニング済みのプロジェクトに関する情報が含まれます。 次の手順でこの値を保存します。
{
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"status": "string",
"created": "string",
"lastModified": "string",
"trainedAt": "string",
"projectId": "00000000-0000-0000-0000-000000000000",
"exportable": true,
"exportableTo": [
"CoreML"
],
"domainId": "00000000-0000-0000-0000-000000000000",
"classificationType": "Multiclass",
"trainingType": "Regular",
"reservedBudgetInHours": 0,
"trainingTimeInMinutes": 0,
"publishName": "string",
"originalPublishResourceId": "string"
}
現在のイテレーションを発行する
このメソッドを使用すると、モデルの現在のイテレーションをクエリに使用できるようになります。 返されたモデル名は、予測要求を送信するための参照として使用します。
curl -v -X POST -H "Training-key: {subscription key}" "https://{endpoint}/customvision/v3.3/Training/projects/{projectId}/iterations/{iterationId}/publish?publishName={publishName}&predictionId={predictionId}"
- ここでも、独自のキーとエンドポイントの URL を挿入します。
-
{projectId}を独自のプロジェクト ID に置き換えます。 -
{iterationId}を、前の手順で返された ID に置き換えます。 -
{publishedName}は、予測モデルに割り当てる名前に置き換えます。 -
{predictionId}を独自の予測リソース ID に置き換えます。 予測リソース ID は、Azure ポータルのリソースの Properties タブで、Resource ID として表示されます。 - 必要に応じて、他の URL パラメーターを使用します。 パブリッシュ イテレーション API を参照してください。
予測エンドポイントをテストする
最後に、このコマンドを使用して、タグで分類するための新しいイメージをアップロードして、トレーニング済みのモデルをテストします。 イメージは、前にダウンロードしたサンプル ファイルの [テスト ] フォルダーで使用できます。
curl -v -X POST -H "Training-key: {subscription key}" "https://{endpoint}/customvision/v3.3/Training/projects/{projectId}/iterations/{iterationId}/publish?publishName={publishName}&predictionId={predictionId}"
- ここでも、独自のキーとエンドポイントの URL を挿入します。
-
{projectId}を独自のプロジェクト ID に置き換えます。 -
{publishedName}は、前の手順で使用した名前に置き換えます。 - ローカル イメージのバイナリ データを要求本文に追加します。
- 必要に応じて、他の URL パラメーターを使用します。 イメージ分類 API を参照してください。
返された JSON 応答には、モデルが画像に適用した各タグと、各タグの確率スコアが一覧表示されます。
{
"id": "00000000-0000-0000-0000-000000000000",
"project": "00000000-0000-0000-0000-000000000000",
"iteration": "00000000-0000-0000-0000-000000000000",
"created": "string",
"predictions": [
{
"probability": 0.0,
"tagId": "00000000-0000-0000-0000-000000000000",
"tagName": "string",
"boundingBox": {
"left": 0.0,
"top": 0.0,
"width": 0.0,
"height": 0.0
},
"tagType": "Regular"
}
]
}
独自の画像分類プロジェクトを実装する (または オブジェクト検出 プロジェクトを試す) 場合は、この例からツリー識別プロジェクトを削除できます。 無料サブスクリプションでは、2 つの Custom Vision プロジェクトを利用できます。
Custom Vision Web サイトで、Projects に移動し、[マイ ニュー Project] の下にあるごみ箱を選択します。
関連コンテンツ
REST API を使用して、画像分類プロセスのすべての手順を完了しました。 このサンプルでは 1 回のトレーニング イテレーションを実行しますが、多くの場合、モデルをより正確にするために、モデルを複数回トレーニングしてテストする必要があります。