Com o lançamento do Aspose.Imaging Cloud 20.5, temos o prazer de anunciar o recurso de detecção de objetos em imagens. Ele permite que os usuários detectem limites de objetos em uma imagem de entrada com base em seus rótulos e probabilidades. A implementação atual oferece suporte a um método de detector de disparo único para reconhecer objetos onde o modelo é treinado usando o conjunto de dados COCO 2017. A abordagem SSD discretiza o espaço de saída de caixas delimitadoras em um conjunto de caixas padrão em diferentes proporções e escalas por localização do mapa de recursos.

Aspose.Imaging Cloud executa a detecção de objetos com base nos 4 métodos a seguir:

  1. Detectar objetos em uma imagem existente e retornar resultados como um objeto JSON
  2. Detectar objetos em uma imagem existente e retornar resultados como uma imagem
  3. Carregue uma imagem, detecte objetos nela e retorne os resultados como um objeto JSON
  4. Carregue uma imagem, detecte objetos nela e retorne os resultados como uma imagem

Nesta seção, discutiremos as seguintes seções com mais detalhes

Detectar limites de objetos

Essa abordagem detecta objetos em uma imagem existente e retorna o resultado como um objeto JSON.

Parâmetros de consulta de solicitação:

  • nome (string, obrigatório): nome da imagem. Atualmente, oferecemos suporte a 3 formatos de imagem: BMP, JPEG e JPEG 2000.
  • método (string, opcional, padrão “ssd”): método de detecção de objetos.
  • limite (número, opcional, [0 - 100], padrão 50): probabilidade mínima de objetos detectados em porcentagem que serão incluídos no resultado.
  • includeLabel (booleano, opcional, padrão false): se deve incluir rótulos de objetos detectados na resposta.
  • includeScore (booleano, opcional, padrão falso): se deve incluir probabilidades de objetos detectados na resposta.
  • pasta (string, opcional): pasta.
  • armazenamento (string, opcional): armazenamento.

Detecção de objetos usando o comando cURL

O Aspose.Imaging Cloud também pode ser acessado usando os comandos cURL. O comando a seguir mostra como um comando cURL pode ser usado para detectar um objeto e obter uma resposta como um objeto JSON.

Estamos usando a seguinte imagem para detectar o objeto.

Exemplo de imagem de gato

Imagem 1:- Imagem de origem

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 da solicitação

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

Corpo de resposta

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

Esquema de Resposta

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

Detecção de objetos em imagens usando C#

Tente usar o seguinte trecho de código para detecção de objetos em imagens usando o trecho de código C#.

Trecho de código C# .NET

///<summary>
/// Detectar objetos em uma imagem de um armazenamento em nuvem.
///</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 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);
    // obter contagem de objetos no arquivo de imagem
    Console.WriteLine("Objects detected: " + detectedObjectList.DetectedObjects.Count);
}

Detectar limites de objetos e retornar como imagem

Carregue uma imagem, detecte objetos, desenhe limites ao redor deles e retorne o resultado como uma imagem.

Parâmetros de consulta de solicitação:

  • nome (string, obrigatório): nome da imagem. Atualmente, 3 formatos de imagem são suportados: bmp, jpg, jpeg e jpeg2000.
  • método (string, opcional, [“ssd”], padrão “ssd”): método de detecção de objetos.
  • limite (número, opcional, [0 - 100], padrão 50): probabilidade mínima de objetos em porcentagem que serão incluídos no resultado.
  • includeLabel (booleano, opcional, padrão false): se deve incluir rótulos de objetos detectados na resposta.
  • includeScore (booleano, opcional, padrão falso): se deve incluir probabilidades de objetos detectados na resposta.
  • color (string, opcional): a cor personalizada dos limites do objeto detectado e info. Se for igual a null, objetos de rótulos diferentes têm limites de cores diferentes.
  • pasta (string, opcional): pasta.
  • armazenamento (string, opcional): armazenamento.

Usando o comando cURL para determinar objetos

O Aspose.Imaging Cloud também pode ser acessado por meio de comandos cURL. No entanto, como pré-requisito, você precisa primeiro gerar um token de acesso JWT com base nas credenciais do seu cliente. Execute o comando a seguir para gerar o 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"

Agora execute o seguinte comando para detectar limites de objetos e retorná-los como uma imagem.

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 da solicitação

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

Na solicitação acima, observe que o vermelho é especificado como cor de destaque.

Trecho de código C#.NET

O seguinte trecho de código mostra as etapas para carregar um arquivo de imagem contendo dois objetos (Dog e Cat).Ambos os objetos são identificados usando a API Aspose.Imaging Cloud. As imagens resultantes com objetos destacados são salvas na unidade do sistema.

///<summary>
/// Visualize o objeto detectado em uma imagem que é passada em um fluxo de solicitação.
///</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 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))
        {
            // salvar fluxo de imagem atualizado no local do sistema
            System.Drawing.Image img = System.Drawing.Image.FromStream(updatedImage);
            img.Save("/Users/Aspose/Desktop/myImage.Jpeg", System.Drawing.Imaging.ImageFormat.Jpeg);
        }
    }
    Console.WriteLine();
}
Imagem da capa de Cat and Dog

Imagem 2:- Imagem de entrada com gato e cachorro

Imagem processada destacando objetos identificados

Imagem 3:- Imagem processada destacando objetos identificados

Para mais informações sobre a pesquisa de imagens, visite Pesquisa reversa de imagens.

Conclusão

Neste artigo, aprendemos os recursos do Aspose.Imaging Cloud para detecção de objetos em imagens. Para identificar objetos em imagens, você pode usar o snippet de código ou usar os comandos cURL. Além disso, para facilitar nossos clientes, criamos SDKs específicos para linguagem de programação e, no artigo acima, exploramos os recursos do Aspose.Imaging Cloud SDK para .NET para detecção de objetos. O código-fonte completo do SDK está disponível para download no GitHub.

Artigos relacionados

Recomendamos visitar os seguintes links para saber mais sobre: