С выпуском 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.
  • метод (строка, необязательно, по умолчанию «ssd»): метод обнаружения объекта.
  • порог (число, необязательно, [0 - 100], по умолчанию 50): минимальная вероятность обнаружения объектов в процентах, которая будет включена в результат.
  • includeLabel (логическое значение, необязательное, по умолчанию false): включать ли обнаруженные метки объектов в ответ.
  • includeScore (логическое значение, необязательное, по умолчанию false): включать ли вероятности обнаруженных объектов в ответ.
  • папка (строка, необязательно): папка.
  • хранилище (строка, необязательно): хранилище.

Обнаружение объектов с помощью команды 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);
}

Определить границы объекта и вернуть как изображение

Загрузите изображение, обнаружьте объекты, нарисуйте вокруг них границы и верните результат в виде изображения.

Параметры запроса запроса:

  • name (строка, обязательно): имя изображения. В настоящее время поддерживаются 3 формата изображений: bmp, jpg, jpeg и jpeg2000.
  • метод (строка, необязательно, [“ssd”], по умолчанию “ssd”): метод обнаружения объекта.
  • порог (число, необязательно, [0 - 100], по умолчанию 50): минимальная вероятность объектов в процентах, которые будут включены в результат.
  • includeLabel (логическое значение, необязательное, по умолчанию false): включать ли обнаруженные метки объектов в ответ.
  • includeScore (логическое значение, необязательное, по умолчанию false): включать ли вероятности обнаруженных объектов в ответ.
  • color (string, необязательно): пользовательский цвет границ обнаруженного объекта и информации. Если равно нулю, объекты с разными метками имеют границы разных цветов.
  • папка (строка, необязательно): папка.
  • хранилище (строка, необязательно): хранилище.

Использование команды 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

Следующий фрагмент кода показывает шаги для загрузки файла изображения, содержащего два объекта (Собака и Кошка).Оба этих объекта идентифицируются с помощью API Aspose.Imaging Cloud. Полученные изображения с выделенными объектами сохраняются на системном диске.

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

Похожие статьи

Мы рекомендуем посетить следующие ссылки, чтобы узнать больше о: