Aspose.Imaging Cloud ロゴ

オブジェクト検出は、コンピューター ビジョンと画像処理に関連するコンピューター テクノロジであり、デジタル画像やビデオ内の特定のクラス (人間、建物、車など) の意味的オブジェクトのインスタンスを検出する処理を行います。クラウド API を使用してプログラムでオブジェクト検出を実行する必要がある場合は、Aspose.Imaging Cloud API が最適です。また、お客様の利便性のために言語固有の SDK も開発しました。そのため、Aspose.Imaging Cloud Java SDK は、Java を使用したオブジェクト認識に適した選択肢です。

最近のリリースバージョンでは、SDK にオブジェクト検出機能を組み込んでおり、この機能を使用すると、ラベルと確率がわかれば、入力画像上のオブジェクトの境界を検出できます。API は現在 3 つのラスター画像形式 (BMPJPGJPEG2000) をサポートしており、シングルショット検出器 (SSD) がオブジェクトを認識する検出方法です。ただし、今後のリリースでは、他のいくつかの方法と画像形式を統合する予定です。API を介して操作を実行すると、検出されたオブジェクトの境界、ラベル、スコアを含む JSON オブジェクト、またはオブジェクトの境界とラベルを含む結果画像を取得できます。現在、人、自転車、車、猫、犬、馬などのオブジェクトを識別できます。使用可能なラベルのリスト の詳細については、次のリンクをご覧ください。

画像上のオブジェクトを検出してハイライトする

画像内のオブジェクトを検出するには、ストレージ内の画像に対して操作を実行するか、リクエスト本文で渡された画像に対して操作を実行するという 2 つのオプションがあります。

クラウドストレージから画像を処理する

最初の方法では、まず画像を Cloud Storage にアップロードし、その名前を API URL に渡します。オブジェクト検出後、API は結果の画像をレスポンスで返します。

また、クラウド ストレージは、ファイルを保存してアクセスするための迅速かつ簡単な方法であることも理解しています。クラウド ストレージに保存されている画像に対してオブジェクト検出手順を簡単に実行でき、結果のファイルは応答ヘッダーで返されます。次の cURL コマンドでは、複数のオブジェクトを含む画像に対してオブジェクト検出操作が実行され、引数として、検出モデルとしてシングル ショット ディテクター (SSD) を使用し、しきい値を 50 に保ち、結果の画像にオブジェクトのラベルを含め、オブジェクト検出スコアも指定しています。さらに、allowedLabels 引数に対して、許可されるラベルのコンマ区切りリストとして、シマウマ、キリン、馬を指定しています。ただし、結果のファイルをローカル システムに保存する場合は、-o を使用して結果のファイルの場所を指定してみてください。

cURLコマンド

curl -v "https://api.aspose.cloud/v3.0/imaging/ai/objectdetection/71ElMFUKIvL.jpg/visualbounds?method=ssd&threshold=50&includeLabel=true&includeScore=true&allowedLabels=zebra, giraffe, horse" \
-X GET \
-H "accept: application/json" \
-H "authorization: Bearer <JWT Token>" \
-o c:/pdftest/mydetected.jpeg

Java コード スニペット

 public void VisualBoundsAnImageInCloud() throws Exception {

	String fileName = "object_detection_example.jpg";
	
	String method = "ssd";
	int threshold = 50;
	Boolean includeLabel = true;
	Boolean includeScore = true;
	String color = "blue";
	String folder = CloudPath; // Input file is saved at the Examples folder in the storage
	String storage = null; // We are using default Cloud Storage

	GetVisualObjectBoundsRequest request = new GetVisualObjectBoundsRequest(getSampleImageFileName(), method, threshold, includeLabel, includeScore, color, folder, storage);

	byte[] resultImage = ImagingApi.getVisualObjectBounds(request);
	Path path = Paths.get(OutputFolder, "object_detection_example_out.jpg").toAbsolutePath();
    Files.write(path, resultImage);
}
オブジェクト検出のソースファイル

画像1:- オブジェクト検出のソースファイル

検出されたオブジェクトを含む結果画像

画像2: 認識されたオブジェクトを含む結果ファイル

保存せずに画像を処理する

画像処理 API には、ローカル ストレージからリクエスト本文に画像を直接渡すことができる 2 番目のメソッド (POST) が用意されています。また、outPath パラメータ値を指定して、結果の画像を Cloud Storage に保存することもできます。ただし、値を指定しないと、レスポンスにはストリーミングされた画像が含まれます。

cURLコマンド

curl -X POST "https://api.aspose.cloud/v3.0/imaging/ai/objectdetection/visualbounds?method=ssd&threshold=50&includeLabel=true&includeScore=true&allowedLabels=bird, cat, dog, horse, sheep, cow, elephant, bear, zebra, giraffe&color=yellow" -H "accept: application/json" -H "authorization: Bearer <jwt token>" -H "Content-Type: multipart/form-data" -d {"imageData":{}}

リクエストURL

https://api.aspose.cloud/v3.0/imaging/ai/objectdetection/visualbounds?method=ssd&threshold=50&includeLabel=true&includeScore=true&allowedLabels=bird, cat, dog, horse, sheep, cow, elephant, bear, zebra, giraffe&color=yellow

Java コード スニペット

public void VisualBoundsAnImageInRequestBody() throws Exception {

	String fileName = "object_detection_example.jpg";
	
	String method = "ssd";
	int threshold = 50;
	Boolean includeLabel = true;
	Boolean includeScore = true;
	String color = null;
	String outPath = null;
	String storage = null; // We are using default Cloud Storage

	byte[] inputStream = Files.readAllBytes(Paths.get(ExampleImagesFolder, getSampleImageFileName()));
	CreateVisualObjectBoundsRequest request = new CreateVisualObjectBoundsRequest(inputStream, method, threshold, includeLabel, includeScore, color, outPath, storage);	

	byte[] resultImage = ImagingApi.createVisualObjectBounds(request);
	Path path = Paths.get(OutputFolder, "object_detection_example_out.jpg").toAbsolutePath();
    Files.write(path, resultImage);
}
馬の画像を入力する

画像3: 走っている馬の入力画像

画像内に馬の物体が検出されました

画像4:- 98%のスコアで馬を検出

結論

この記事では、Java SDK を使用したオブジェクト認識に関連する機能について説明しました。この SDK は、1 回の試行で複数のオブジェクトを正確に判別できるという点で優れています。さらに、ユーザーがオブジェクトを強調表示してラベルを付けることもできます。API の使用中に問題が発生した場合は、無料の製品サポート フォーラム からお気軽にお問い合わせください。

関連記事

以下のリンクにアクセスして詳細を確認することをお勧めします。