Với việc phát hành Aspose.Imaging Cloud 20.5, chúng tôi vui mừng thông báo tính năng phát hiện đối tượng trong hình ảnh. Tính năng này cho phép người dùng phát hiện ranh giới đối tượng trên hình ảnh đầu vào dựa trên nhãn và xác suất của chúng. Việc triển khai hiện tại hỗ trợ phương pháp phát hiện một lần chụp để nhận dạng đối tượng trong đó mô hình được đào tạo bằng tập dữ liệu COCO 2017. Phương pháp SSD phân rã không gian đầu ra của các hộp giới hạn thành một tập hợp các hộp mặc định trên các tỷ lệ khung hình và tỷ lệ khác nhau cho mỗi vị trí bản đồ đối tượng.
Aspose.Imaging Cloud thực hiện phát hiện đối tượng dựa trên 4 phương pháp sau:
- Phát hiện các đối tượng trên hình ảnh hiện có và trả về kết quả dưới dạng đối tượng JSON
- Phát hiện các đối tượng trên một hình ảnh hiện có và trả về kết quả dưới dạng hình ảnh
- Tải lên hình ảnh, phát hiện các đối tượng trên đó và trả về kết quả dưới dạng đối tượng JSON
- Tải lên hình ảnh, phát hiện các đối tượng trên đó và trả về kết quả dưới dạng hình ảnh
Trong phần này, chúng ta sẽ thảo luận các phần sau chi tiết hơn
- Phát hiện ranh giới đối tượng
- Phát hiện đối tượng trong hình ảnh bằng C#
- Phát hiện ranh giới đối tượng và trả về dưới dạng hình ảnh
Phát hiện ranh giới đối tượng
Cách tiếp cận này phát hiện các đối tượng trên một hình ảnh hiện có và trả về kết quả dưới dạng đối tượng JSON.
Yêu cầu tham số truy vấn:
- name (chuỗi, bắt buộc): tên hình ảnh. Hiện tại, chúng tôi hỗ trợ 3 định dạng hình ảnh: BMP, JPEG và JPEG 2000.
- phương pháp (chuỗi, tùy chọn, mặc định là “ssd”): phương pháp phát hiện đối tượng.
- ngưỡng (số, tùy chọn, [0 - 100], mặc định là 50): xác suất đối tượng được phát hiện tối thiểu theo phần trăm sẽ được đưa vào kết quả.
- includeLabel (boolean, tùy chọn, mặc định là false): có bao gồm nhãn đối tượng được phát hiện trong phản hồi hay không.
- includeScore (boolean, tùy chọn, mặc định là false): có bao gồm xác suất đối tượng được phát hiện trong phản hồi hay không.
- thư mục (chuỗi, tùy chọn): thư mục.
- lưu trữ (chuỗi, tùy chọn): lưu trữ.
Phát hiện đối tượng bằng lệnh cURL
Aspose.Imaging Cloud cũng có thể được truy cập bằng lệnh cURL. Lệnh sau đây cho thấy cách lệnh cURL có thể được sử dụng để phát hiện đối tượng và nhận phản hồi dưới dạng đối tượng JSON.
Chúng tôi sử dụng hình ảnh sau để phát hiện vật thể.
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>"
Yêu cầu 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
Nội dung phản hồi
{
"detectedObjects": [
{
"label": "cat",
"score": 0.9450986,
"bounds": {
"x": 43,
"y": 4,
"width": 401,
"height": 323
}
}
]
}
Sơ đồ phản hồi
{
"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"
]
}
Phát hiện đối tượng trong hình ảnh bằng C#
Vui lòng thử sử dụng đoạn mã sau để phát hiện đối tượng trong hình ảnh bằng đoạn mã C#.
Đoạn mã C# .NET
///<summary>
/// Phát hiện đối tượng trên hình ảnh từ bộ nhớ đám mây.
///</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
// Khởi tạo đối tượng 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);
// lấy số lượng đối tượng trong tệp hình ảnh
Console.WriteLine("Objects detected: " + detectedObjectList.DetectedObjects.Count);
}
Phát hiện ranh giới đối tượng và trả về dưới dạng hình ảnh
Tải lên hình ảnh, phát hiện đối tượng, vẽ ranh giới xung quanh chúng và trả về kết quả dưới dạng hình ảnh.
Yêu cầu tham số truy vấn:
- name (chuỗi, bắt buộc): tên hình ảnh. Hiện tại, 3 định dạng hình ảnh được hỗ trợ: bmp, jpg, jpeg và jpeg2000.
- phương pháp (chuỗi, tùy chọn, [“ssd”], mặc định là “ssd”): phương pháp phát hiện đối tượng.
- ngưỡng (số, tùy chọn, [0 - 100], mặc định là 50): xác suất tối thiểu của các đối tượng tính theo phần trăm sẽ được đưa vào kết quả.
- includeLabel (boolean, tùy chọn, mặc định là false): có bao gồm nhãn đối tượng được phát hiện trong phản hồi hay không.
- includeScore (boolean, tùy chọn, mặc định là false): có bao gồm xác suất đối tượng được phát hiện trong phản hồi hay không.
- color (chuỗi, tùy chọn): màu tùy chỉnh của ranh giới và thông tin đối tượng được phát hiện. Nếu bằng null, các đối tượng có nhãn khác nhau sẽ có ranh giới màu khác nhau.
- thư mục (chuỗi, tùy chọn): thư mục.
- lưu trữ (chuỗi, tùy chọn): lưu trữ.
Sử dụng lệnh cURL để xác định đối tượng
Aspose.Imaging Cloud cũng có thể được truy cập thông qua lệnh cURL. Tuy nhiên, như một điều kiện tiên quyết, trước tiên bạn cần tạo mã thông báo truy cập JWT dựa trên thông tin xác thực của máy khách. Vui lòng thực hiện lệnh sau để tạo mã thông báo 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"
Bây giờ hãy thực hiện lệnh sau để phát hiện ranh giới đối tượng và trả về chúng dưới dạng hình ảnh.
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>"
Yêu cầu 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
Trong yêu cầu trên, lưu ý màu Đỏ được chỉ định là màu nổi bật.
Đoạn mã C#.NET
Đoạn mã sau đây cho thấy các bước để tải tệp hình ảnh chứa hai đối tượng (Chó và Mèo).Cả hai đối tượng này đều được xác định bằng API Aspose.Imaging Cloud. Các hình ảnh kết quả có các đối tượng được tô sáng được lưu trên ổ đĩa hệ thống.
///<summary>
/// Hiển thị đối tượng được phát hiện trên hình ảnh được truyền qua luồng yêu cầu.
///</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/
// Khởi tạo đối tượng 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))
{
// lưu luồng hình ảnh đã cập nhật vào vị trí hệ thống
System.Drawing.Image img = System.Drawing.Image.FromStream(updatedImage);
img.Save("/Users/Aspose/Desktop/myImage.Jpeg", System.Drawing.Imaging.ImageFormat.Jpeg);
}
}
Console.WriteLine();
}
Để biết thêm thông tin về Tìm kiếm hình ảnh, vui lòng truy cập Tìm kiếm hình ảnh ngược.
Phần kết luận
Trong bài viết này, chúng ta đã tìm hiểu về khả năng của Aspose.Imaging Cloud để phát hiện đối tượng trong hình ảnh. Để xác định đối tượng trong hình ảnh, bạn có thể sử dụng đoạn mã hoặc sử dụng lệnh cURL. Hơn nữa, để tạo điều kiện thuận lợi cho khách hàng, chúng tôi đã tạo ra các SDK dành riêng cho ngôn ngữ lập trình và trong bài viết trên, chúng tôi đã khám phá các tính năng của Aspose.Imaging Cloud SDK cho .NET để phát hiện đối tượng. Mã nguồn đầy đủ của SDK có thể tải xuống qua GitHub.
Bài viết liên quan
Chúng tôi khuyên bạn nên truy cập vào các liên kết sau để tìm hiểu thêm về: