隨著 Aspose.Imaging Cloud 20.5 的發布,我們很高興地宣布影像中的物件偵測功能。它使用戶能夠根據標籤和機率檢測輸入影像上的物件邊界。目前的實作支援單次偵測器方法來識別使用 COCO 2017 資料集訓練模型的物件。 SSD 方法將邊界框的輸出空間離散化為一組預設框,每個特徵圖位置具有不同的縱橫比和比例。

Aspose.Imaging Cloud基於以下4種方法進行物體偵測:

  1. 偵測現有影像上的物件並將結果作為 JSON 物件傳回
  2. 檢測現有影像上的物件並將結果作為影像傳回
  3. 上傳影像,偵測影像上的對象,並將結果作為 JSON 物件傳回
  4. 上傳影像,偵測影像上的對象,並將結果作為影像傳回

在本節中,我們將進一步詳細討論以下幾節

偵測物件邊界

此方法偵測現有影像上的物件並將結果作為 JSON 物件傳回。

請求查詢參數:

  • name(字串,必需):圖像名稱。目前,我們支援 3 種影像格式:BMP、JPEG 和 JPEG 2000。
  • method(字串,可選,預設“ssd”):物件偵測方法。
  • 閾值(數字,可選,[0 - 100],預設 50):將包含在結果中的最小檢測到的物件機率(以百分比表示)。
  • includeLabel(布林值,可選,預設 false):是否在回應中包含偵測到的物件標籤。
  • includeScore(布林值,可選,預設 false):是否在回應中包含偵測到的物件機率。
  • 資料夾(字串,可選):資料夾。
  • 儲存(字串,可選):儲存。

使用 cURL 指令進行物件偵測

也可以使用 cURL 指令存取 Aspose.Imaging Cloud。以下命令顯示如何使用 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>"

請求網址

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(字串,必需):圖像名稱。目前支援 3 種圖片格式:bmp、jpg、jpeg 和 jpeg2000。
  • method(字串,可選,[“ssd”],預設為“ssd”):物件偵測方法。
  • 閾值(數字,可選,[0 - 100],預設 50):將包含在結果中的最小物件機率(以百分比表示)。
  • includeLabel(布林值,可選,預設 false):是否在回應中包含偵測到的物件標籤。
  • includeScore(布林值,可選,預設 false):是否在回應中包含偵測到的物件機率。
  • color(字串,可選):偵測到的物件邊界和資訊的自訂顏色。如果等於 null,則不同標籤的物件具有不同顏色的邊界。
  • 資料夾(字串,可選):資料夾。
  • 儲存(字串,可選):儲存。

使用 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>"

請求網址

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 程式碼片段

以下程式碼片段顯示了載入包含兩個物件(狗和貓)的圖像檔案的步驟。這兩個物件均使用 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 下載。

相關文章

我們建議訪問以下連結以了解更多資訊: