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:

  1. 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
  2. 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
  3. 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
  4. 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

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ể.

Hình ảnh mẫu mèo

Hình ảnh 1:- Hình ảnh nguồn

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();
}
Ảnh bìa Mèo và Chó

Hình ảnh 2:- Nhập hình ảnh với Mèo và Chó

Hình ảnh được xử lý làm nổi bật các đối tượng đã xác định

Hình ảnh 3:- Hình ảnh đã xử lý làm nổi bật các đối tượng đã xác định

Để 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ề: