Con el lanzamiento de Aspose.Imaging Cloud 20.5, nos complace anunciar la función de detección de objetos en imágenes. Permite a los usuarios detectar los límites de los objetos en una imagen de entrada en función de sus etiquetas y probabilidades. La implementación actual admite un método de detección de disparo único para reconocer objetos donde el modelo se entrena utilizando el conjunto de datos COCO 2017. El enfoque SSD discretiza el espacio de salida de los cuadros delimitadores en un conjunto de cuadros predeterminados en diferentes relaciones de aspecto y escalas por ubicación del mapa de características.

Aspose.Imaging Cloud realiza la detección de objetos basándose en los siguientes 4 métodos:

  1. Detecta objetos en una imagen existente y devuelve resultados como un objeto JSON
  2. Detecta objetos en una imagen existente y devuelve resultados como una imagen
  3. Sube una imagen, detecta objetos en ella y devuelve resultados como un objeto JSON
  4. Sube una imagen, detecta objetos en ella y devuelve resultados como una imagen

En esta sección, analizaremos las siguientes secciones con más detalle.

Detectar límites de objetos

Este enfoque detecta objetos en una imagen existente y devuelve el resultado como un objeto JSON.

Parámetros de consulta de solicitud:

  • nombre (cadena, obligatorio): nombre de la imagen. Actualmente, admitimos 3 formatos de imagen: BMP, JPEG y JPEG 2000.
  • método (cadena, opcional, predeterminado “ssd”): método de detección de objetos.
  • umbral (número, opcional, [0 - 100], predeterminado 50): probabilidad mínima de objetos detectados en porcentaje que se incluirán en el resultado.
  • includeLabel (booleano, opcional, predeterminado falso): si se deben incluir las etiquetas de los objetos detectados en la respuesta.
  • includeScore (booleano, opcional, predeterminado falso): si se deben incluir las probabilidades de los objetos detectados en la respuesta.
  • carpeta (cadena, opcional): carpeta.
  • almacenamiento (cadena, opcional): almacenamiento.

Detección de objetos mediante el comando cURL

También se puede acceder a Aspose.Imaging Cloud mediante comandos cURL. El siguiente comando muestra cómo se puede utilizar un comando cURL para detectar un objeto y obtener una respuesta como un objeto JSON.

Estamos utilizando la siguiente imagen para detectar el objeto.

Imagen de muestra de gato

Imagen 1:- Imagen fuente

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 de solicitud

https://api.aspose.cloud/v3.0/imaging/ai/objectdetection/cat-pet-animal-domestic-104827.jpeg/bounds?method=ssd&threshold=50&includeLabel=true&includeScore=true

Cuerpo de respuesta

{
  "detectedObjects": [
    {
      "label": "cat",
      "score": 0.9450986,
      "bounds": {
        "x": 43,
        "y": 4,
        "width": 401,
        "height": 323
      }
    }
  ]
}

Esquema de respuesta

{
    "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"
    ]
}

Detección de objetos en imágenes mediante C#

Intente utilizar el siguiente fragmento de código para la detección de objetos en imágenes utilizando el fragmento de código C#.

Fragmento de código C# .NET

///<summary>
/// Detectar objetos en una imagen desde un almacenamiento en la nube.
///</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

    // Inicializar el objeto 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);
    // Obtener el recuento de objetos en el archivo de imagen
    Console.WriteLine("Objects detected: " + detectedObjectList.DetectedObjects.Count);
}

Detectar límites de objetos y devolverlos como imagen

Sube una imagen, detecta objetos, dibuja límites alrededor de ellos y devuelve el resultado como una imagen.

Parámetros de consulta de solicitud:

  • nombre (cadena, obligatorio): nombre de la imagen. Actualmente, se admiten 3 formatos de imagen: bmp, jpg, jpeg y jpeg2000.
  • método (cadena, opcional, [“ssd”], predeterminado “ssd”): método de detección de objetos.
  • umbral (número, opcional, [0 - 100], predeterminado 50): probabilidad mínima de objetos en porcentaje que se incluirán en el resultado.
  • includeLabel (booleano, opcional, predeterminado falso): si se deben incluir las etiquetas de los objetos detectados en la respuesta.
  • includeScore (booleano, opcional, predeterminado falso): si se deben incluir las probabilidades de los objetos detectados en la respuesta.
  • color (cadena, opcional): el color personalizado de los límites y la información del objeto detectado. Si es igual a nulo, los objetos de diferentes etiquetas tienen límites de diferentes colores.
  • carpeta (cadena, opcional): carpeta.
  • almacenamiento (cadena, opcional): almacenamiento.

Uso del comando cURL para determinar objetos

También se puede acceder a Aspose.Imaging Cloud mediante comandos cURL. Sin embargo, como requisito previo, primero debe generar un token de acceso JWT basado en sus credenciales de cliente. Ejecute el siguiente comando para generar el token 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"

Ahora ejecute el siguiente comando para detectar los límites del objeto y devolverlos como una imagen.

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 de solicitud

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

En la solicitud anterior, se especifica que el color rojo es el color resaltado.

Fragmento de código C#.NET

El siguiente fragmento de código muestra los pasos para cargar un archivo de imagen que contiene dos objetos (perro y gato).Ambos objetos se identifican mediante la API de Aspose.Imaging Cloud. Las imágenes resultantes con los objetos resaltados se guardan en la unidad del sistema.

///<summary>
/// Visualizar el objeto detectado en una imagen que se pasa en un flujo de solicitud.
///</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/
    // Inicializar el objeto 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))
        {
            // Guardar la secuencia de imágenes actualizada en la ubicación del sistema
            System.Drawing.Image img = System.Drawing.Image.FromStream(updatedImage);
            img.Save("/Users/Aspose/Desktop/myImage.Jpeg", System.Drawing.Imaging.ImageFormat.Jpeg);
        }
    }
    Console.WriteLine();
}
Imagen de portada de gato y perro

Imagen 2: Imagen de entrada con gato y perro.

Imagen procesada que resalta los objetos identificados

Imagen 3: Imagen procesada que resalta los objetos identificados

Para obtener más información sobre la búsqueda de imágenes, visite Búsqueda inversa de imágenes.

Conclusión

En este artículo, hemos aprendido las capacidades de Aspose.Imaging Cloud para la detección de objetos en imágenes. Para identificar objetos en imágenes, puede utilizar el fragmento de código o los comandos cURL. Además, para facilitar la tarea a nuestros clientes, hemos creado SDK específicos para lenguajes de programación y en el artículo anterior, hemos explorado las características de Aspose.Imaging Cloud SDK para .NET para la detección de objetos. El código fuente completo del SDK está disponible para descargar en GitHub.

Artículos relacionados

Te recomendamos visitar los siguientes enlaces para conocer más sobre: