Aspose.Imaging Cloud 20.5 のリリースに伴い、画像内のオブジェクト検出機能を発表いたします。この機能により、ユーザーはラベルと確率に基づいて入力画像上のオブジェクトの境界を検出できます。現在の実装では、モデルが COCO 2017 データセットを使用してトレーニングされている場合に、オブジェクトを認識する シングル ショット検出法 をサポートしています。SSD アプローチは、境界ボックスの出力空間を、特徴マップの位置ごとに異なるアスペクト比とスケールの一連のデフォルト ボックスに離散化します。

Aspose.Imaging Cloudは、次の4つの方法に基づいてオブジェクト検出を実行します。

  1. 既存の画像上のオブジェクトを検出し、結果をJSONオブジェクトとして返します。
  2. 既存の画像上のオブジェクトを検出し、結果を画像として返します
  3. 画像をアップロードし、画像上のオブジェクトを検出し、結果をJSONオブジェクトとして返します。
  4. 画像をアップロードし、その画像上のオブジェクトを検出し、結果を画像として返します

このセクションでは、以下のセクションについてさらに詳しく説明します。

オブジェクトの境界を検出する

このアプローチは、既存の画像上のオブジェクトを検出し、結果を JSON オブジェクトとして返します。

リクエストクエリパラメータ:

  • name (文字列、必須): 画像名。現在、BMP、JPEG、JPEG 2000 の 3 つの画像形式をサポートしています。
  • method (文字列、オプション、デフォルト “ssd”): オブジェクトの検出方法。
  • しきい値(数値、オプション、[0 - 100]、デフォルト 50):結果に含まれる検出オブジェクトの最小確率(パーセンテージ)。
  • includeLabel (ブール値、オプション、デフォルトは false): 検出されたオブジェクト ラベルを応答に含めるかどうか。
  • includeScore (ブール値、オプション、デフォルトは false): 検出されたオブジェクトの確率を応答に含めるかどうか。
  • フォルダー (文字列、オプション): フォルダー。
  • storage (文字列、オプション): ストレージ。

cURL コマンドを使用したオブジェクト検出

Aspose.Imaging Cloud には、cURL コマンドを使用してアクセスすることもできます。次のコマンドは、cURL コマンドを使用してオブジェクトを検出し、JSON オブジェクトとして応答を取得する方法を示しています。

オブジェクトを検出するために次の画像を使用しています。

猫のサンプル画像

画像1:- ソース画像

curl "https://api.aspose.cloud/v3.0/imaging/ai/objectdetection/cat-pet-animal-domestic-104827.jpeg/bounds?method=ssd&threshold=50&includeLabel=true&includeScore=true" \
-X GET \
-H "accept: application/json" \
-H "authorization: Bearer <jwt token>"

リクエストURL

https://api.aspose.cloud/v3.0/imaging/ai/objectdetection/cat-pet-animal-domestic-104827.jpeg/bounds?method=ssd&threshold=50&includeLabel=true&includeScore=true

レスポンス本文

{
  "detectedObjects": [
    {
      "label": "cat",
      "score": 0.9450986,
      "bounds": {
        "x": 43,
        "y": 4,
        "width": 401,
        "height": 323
      }
    }
  ]
}

レスポンススキーマ

{
    "type": "object",
    "properties": {
        "detectedObjects": {
            "type": "array",
            "items": [
                {
                    "type": "object",
                    "properties": {
                        "score": {
                            "type": "number"
                        },
                        "label": {
                            "type": "string"
                        },
                        "bounds": {
                            "type": "object",
                            "properties": {
                                "x": {
                                    "type": "number"
                                },
                                "y": {
                                    "type": "number"
                                },
                                "width": {
                                    "type": "number"
                                },
                                "height": {
                                    "type": "number"
                                }
                            },
                            "required": [
                                "x",
                                "y",
                                "width",
                                "height"
                            ]
                        }
                    },
                    "required": [
                        "score",
                        "label",
                        "bounds"
                    ]
                }
            ]
        }
    },
    "required": [
        "detectedObjects"
    ]
}

C# を使用した画像内のオブジェクト検出

C# コード スニペットを使用して画像内のオブジェクトを検出するには、次のコード スニペットを使用してみてください。

C# .NET コード スニペット

///<summary>
/// クラウド ストレージから画像上のオブジェクトを検出します。
///</summary>
public static void DetectObjectsImageFromStorage()
{
    string MyAppKey = "xxxxx";   // Get AppKey and AppSID from https://dashboard.aspose.cloud/
    string MyAppSid = "xxxxx";   // Get AppKey and AppSID from https://dashboard.aspose.cloud/

    string method = "ssd";
    int threshold = 50;
    bool includeLabel = true;
    bool includeScore = true;
    string folder = "";    // Input file is saved at default folder in the storage
    string storage = null; // We are using default Cloud Storage

    // Aspose.Imaging Cloud オブジェクトを初期化する
    ImagingApi imagingApi = new ImagingApi(appKey: MyAppKey, appSid: MyAppSid, debug: false);
    imagingApi.UploadFile(new Aspose.Imaging.Cloud.Sdk.Model.Requests.UploadFileRequest("dog-and-cat-cover.jpg", File.Open("dog-and-cat-cover.jpg", FileMode.Open), null));

    var request = new Aspose.Imaging.Cloud.Sdk.Model.Requests.GetObjectBoundsRequest("dog-and-cat-cover.jpg", method, threshold, includeLabel, includeScore, folder, storage);
    Console.WriteLine($"Call ObjectBoundsRequest with params: method:{method}, threshold:{threshold}, include label: {includeLabel}, includeScore: {includeScore}");
    Aspose.Imaging.Cloud.Sdk.Model.DetectedObjectList detectedObjectList = imagingApi.GetObjectBounds(request);
    // 画像ファイル内のオブジェクトの数を取得する
    Console.WriteLine("Objects detected: " + detectedObjectList.DetectedObjects.Count);
}

オブジェクトの境界を検出し、画像として返す

画像をアップロードし、オブジェクトを検出し、その周囲に境界を描画し、結果を画像として返します。

リクエストクエリパラメータ:

  • name (文字列、必須): 画像名。現在、bmp、jpg、jpeg、jpeg2000 の 3 つの画像形式がサポートされています。
  • method (文字列、オプション、[“ssd”]、デフォルト “ssd”): オブジェクトの検出方法。
  • しきい値 (数値、オプション、[0 - 100]、デフォルト 50): 結果に含まれるオブジェクトの最小確率 (パーセント単位)。
  • includeLabel (ブール値、オプション、デフォルトは false): 検出されたオブジェクト ラベルを応答に含めるかどうか。
  • includeScore (ブール値、オプション、デフォルトは false): 検出されたオブジェクトの確率を応答に含めるかどうか。
  • color (文字列、オプション): 検出されたオブジェクトの境界と情報のカスタム色。null に等しい場合、異なるラベルのオブジェクトには異なる色の境界が設定されます。
  • フォルダー (文字列、オプション): フォルダー。
  • storage (文字列、オプション): ストレージ。

cURL コマンドを使用してオブジェクトを特定する

Aspose.Imaging Cloud には cURL コマンド経由でもアクセスできます。ただし、前提条件として、まずクライアントの資格情報に基づいて JWT アクセス トークンを生成する必要があります。JWT トークンを生成するには、次のコマンドを実行してください。

curl -v "https://api.aspose.cloud/connect/token" \
-X POST \
-d "grant_type=client_credentials&client_id=4ccf1790-accc-41e9-8d18-a78dbb2ed1aa&client_secret=caac6e3d4a4724b2feb53f4e460eade3" \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Accept: application/json"

次に、次のコマンドを実行してオブジェクトの境界を検出し、それを画像として返します。

curl -v "https://api.aspose.cloud/v3.0/imaging/ai/objectdetection/dog-and-cat-cover.jpg/visualbounds?method=ssd&threshold=50&includeLabel=false&includeScore=false&color=Red" \
-X GET \
-H "accept: application/json" \
-H "authorization: Bearer <JWT Token>"

リクエストURL

https://api.aspose.cloud/v3.0/imaging/ai/objectdetection/dog-and-cat-cover.jpg/visualbounds?method=ssd&threshold=50&includeLabel=false&includeScore=false&color=Red

上記のリクエストでは、ハイライト色として赤が指定されていることに注意してください。

C#.NET コード スニペット

次のコード スニペットは、2 つのオブジェクト (犬と猫) を含む画像ファイルを読み込む手順を示しています。これらのオブジェクトは両方とも、Aspose.Imaging Cloud API を使用して識別されます。強調表示されたオブジェクトを含む結果画像は、システム ドライブに保存されます。

///<summary>
/// リクエスト ストリームで渡された画像上で検出されたオブジェクトを視覚化します。
///</summary>
public static void VisualizeObjectsImageFromRequestBody()
{
    Console.WriteLine("Detect objects on an image. Image data is passed in a request stream");

    string MyAppKey = "xxxxx";   // Get AppKey and AppSID from https://dashboard.aspose.cloud/
    string MyAppSid = "xxxxx";   // Get AppKey and AppSID from https://dashboard.aspose.cloud/
    // Aspose.Imaging Cloud オブジェクトを初期化する
    ImagingApi imagingApi = new ImagingApi(appKey: MyAppKey, appSid: MyAppSid, debug: false);
    using (FileStream inputImageStream = File.OpenRead("dog-and-cat-cover.jpg"))
    {
        string method = "ssd";
        int threshold = 50;
        bool includeLabel = true;
        bool includeScore = true;
        string color = null;
        string outPath = null;
        string storage = null; // We are using default Cloud Storage

        var request = new Aspose.Imaging.Cloud.Sdk.Model.Requests.CreateVisualObjectBoundsRequest(inputImageStream, method, threshold, includeLabel, includeScore, color, outPath, storage);

        Console.WriteLine($"Call CreateVisualObjectBoundsRequest with params: method:{method}, threshold:{threshold}, include label: {includeLabel}, include score: {includeScore}");

        using (Stream updatedImage = imagingApi.CreateVisualObjectBounds(request))
        {
            // 更新された画像ストリームをシステムの場所に保存する
            System.Drawing.Image img = System.Drawing.Image.FromStream(updatedImage);
            img.Save("/Users/Aspose/Desktop/myImage.Jpeg", System.Drawing.Imaging.ImageFormat.Jpeg);
        }
    }
    Console.WriteLine();
}
猫と犬の表紙画像

画像2: 猫と犬の入力画像

識別されたオブジェクトを強調表示する処理済み画像

画像3: 特定されたオブジェクトを強調表示した処理済み画像

画像検索の詳細については、逆画像検索をご覧ください。

結論

この記事では、画像内のオブジェクト検出のための Aspose.Imaging Cloud の機能について説明しました。画像内のオブジェクトを識別するには、コード スニペットを使用するか、cURL コマンドを使用します。さらに、お客様の利便性のために、プログラミング言語固有の SDK を作成しました。上記の記事では、オブジェクト検出のための Aspose.Imaging Cloud SDK for .NET の機能について説明しました。SDK の完全なソース コードは、GitHub からダウンロードできます。

関連記事

詳細については、次のリンクにアクセスすることをお勧めします。