隨著 Aspose.Imaging Cloud 20.5 的發布,我們很高興地宣布影像中的物件偵測功能。它使用戶能夠根據標籤和機率檢測輸入影像上的物件邊界。目前的實作支援單次偵測器方法來識別使用 COCO 2017 資料集訓練模型的物件。 SSD 方法將邊界框的輸出空間離散化為一組預設框,每個特徵圖位置具有不同的縱橫比和比例。
Aspose.Imaging Cloud基於以下4種方法進行物體偵測:
- 偵測現有影像上的物件並將結果作為 JSON 物件傳回
- 檢測現有影像上的物件並將結果作為影像傳回
- 上傳影像,偵測影像上的對象,並將結果作為 JSON 物件傳回
- 上傳影像,偵測影像上的對象,並將結果作為影像傳回
在本節中,我們將進一步詳細討論以下幾節
偵測物件邊界
此方法偵測現有影像上的物件並將結果作為 JSON 物件傳回。
請求查詢參數:
- name(字串,必需):圖像名稱。目前,我們支援 3 種影像格式:BMP、JPEG 和 JPEG 2000。
- method(字串,可選,預設“ssd”):物件偵測方法。
- 閾值(數字,可選,[0 - 100],預設 50):將包含在結果中的最小檢測到的物件機率(以百分比表示)。
- includeLabel(布林值,可選,預設 false):是否在回應中包含偵測到的物件標籤。
- includeScore(布林值,可選,預設 false):是否在回應中包含偵測到的物件機率。
- 資料夾(字串,可選):資料夾。
- 儲存(字串,可選):儲存。
使用 cURL 指令進行物件偵測
也可以使用 cURL 指令存取 Aspose.Imaging Cloud。以下命令顯示如何使用 cURL 命令來偵測物件並取得 JSON 物件形式的回應。
我們使用下面的圖像來檢測物件。
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();
}
有關圖像搜尋的更多信息,請訪問反向圖像搜尋。
結論
在本文中,我們了解了 Aspose.Imaging Cloud 用於影像中物件偵測的功能。若要辨識影像中的對象,您可以使用程式碼片段或使用 cURL 指令。此外,為了方便我們的客戶,我們創建了特定於程式語言的 SDK,並且在上面的文章中,我們探索了 Aspose.Imaging Cloud SDK for .NET 用於物件偵測的功能。 SDK 的完整原始碼可以透過 GitHub 下載。
相關文章
我們建議訪問以下連結以了解更多資訊: