З випуском Aspose.Imaging Cloud 20.5 ми раді оголосити про функцію виявлення об’єктів на зображеннях. Це дозволяє користувачам виявляти межі об’єктів на вхідному зображенні на основі їхніх міток і ймовірностей. Поточна реалізація підтримує метод детектора одного пострілу для розпізнавання об’єктів, де модель навчається за допомогою набору даних COCO 2017. Підхід SSD дискретизує вихідний простір обмежувальних рамок у набір за замовчуванням рамок у різних пропорціях і масштабах для кожного розташування карти функцій.

Aspose.Imaging Cloud виконує виявлення об’єктів на основі таких 4 методів:

  1. Виявляти об’єкти на наявному зображенні та повертати результати як об’єкт JSON
  2. Виявляти об’єкти на наявному зображенні та повертати результати як зображення
  3. Завантажте зображення, виявіть на ньому об’єкти та поверніть результати як об’єкт JSON
  4. Завантажте зображення, виявляйте на ньому об’єкти та повертайте результати як зображення

У цьому розділі ми докладніше обговоримо наступні розділи

Виявлення меж об’єктів

Цей підхід виявляє об’єкти на існуючому зображенні та повертає результат як об’єкт JSON.

Параметри запиту запиту:

  • ім’я (рядок, обов’язково): ім’я зображення. Зараз ми підтримуємо 3 формати зображень: BMP, JPEG і JPEG 2000.
  • метод (рядок, необов’язковий, за замовчуванням “ssd”): метод виявлення об’єкта.
  • поріг (число, необов’язкове, [0 - 100], за замовчуванням 50): мінімальна ймовірність виявлених об’єктів у відсотках, які будуть включені в результат.
  • includeLabel (логічний, необов’язковий, за замовчуванням false): чи включати мітки виявлених об’єктів у відповідь.
  • includeScore (логічний, необов’язковий, за замовчуванням false): чи включати ймовірності виявленого об’єкта у відповідь.
  • folder (рядок, необов’язково): папка.
  • сховище (рядок, необов’язковий): сховище.

Виявлення об’єктів за допомогою команди 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);
}

Виявлення меж об’єктів і повернення як зображення

Завантажує зображення, виявляє об’єкти, малює їх межі та повертає результат у вигляді зображення.

Параметри запиту запиту:

  • ім’я (рядок, обов’язково): ім’я зображення. На даний момент підтримуються 3 формати зображень: bmp, jpg, jpeg і jpeg2000.
  • метод (рядок, необов’язковий, [“ssd”], за замовчуванням “ssd”): метод виявлення об’єкта.
  • поріг (число, необов’язково, [0 - 100], за замовчуванням 50): мінімальна ймовірність об’єктів у відсотках, які будуть включені в результат.
  • includeLabel (логічний, необов’язковий, за замовчуванням false): чи включати мітки виявлених об’єктів у відповідь.
  • includeScore (логічний, необов’язковий, за замовчуванням false): чи включати ймовірності виявленого об’єкта у відповідь.
  • колір (рядок, необов’язковий): спеціальний колір меж виявленого об’єкта та інформації. Якщо дорівнює null, об’єкти з різними мітками мають межі різних кольорів.
  • folder (рядок, необов’язково): папка.
  • сховище (рядок, необов’язковий): сховище.

Використання команди 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

У наведеному нижче фрагменті коду показано кроки для завантаження файлу зображення, що містить два об’єкти (собака та кіт).Обидва ці об’єкти ідентифікуються за допомогою 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 для .NET для виявлення об’єктів. Повний вихідний код SDK доступний для завантаження на GitHub.

Схожі статті

Ми рекомендуємо відвідати такі посилання, щоб дізнатися більше про: