Con il rilascio di Aspose.Imaging Cloud 20.5, siamo lieti di annunciare la funzionalità di rilevamento degli oggetti nelle immagini. Consente agli utenti di rilevare i confini degli oggetti su un’immagine di input in base alle loro etichette e probabilità. L’implementazione corrente supporta un metodo di rilevamento a scatto singolo per riconoscere gli oggetti in cui il modello è addestrato utilizzando il set di dati COCO 2017. L’approccio SSD discretizza lo spazio di output delle bounding box in un set di box predefiniti su diversi rapporti di aspetto e scale per posizione della feature map.

Aspose.Imaging Cloud esegue il rilevamento degli oggetti in base ai seguenti 4 metodi:

  1. Rileva oggetti su un’immagine esistente e restituisce i risultati come oggetto JSON
  2. Rileva oggetti su un’immagine esistente e restituisce i risultati come immagine
  3. Carica un’immagine, rileva gli oggetti su di essa e restituisci i risultati come oggetto JSON
  4. Carica un’immagine, rileva gli oggetti su di essa e restituisci i risultati come immagine

In questa sezione, discuteremo le seguenti sezioni in modo più dettagliato

Rileva i limiti dell’oggetto

Questo approccio rileva gli oggetti su un’immagine esistente e restituisce il risultato come oggetto JSON.

Richiedi parametri di query:

  • name (stringa, obbligatorio): nome dell’immagine. Attualmente, supportiamo 3 formati di immagine: BMP, JPEG e JPEG 2000.
  • metodo (stringa, facoltativo, predefinito “ssd”): metodo di rilevamento degli oggetti.
  • soglia (numero, facoltativo, [0 - 100], predefinito 50): probabilità minima in percentuale degli oggetti rilevati che saranno inclusi nel risultato.
  • includeLabel (booleano, facoltativo, predefinito false): se includere le etichette degli oggetti rilevati nella risposta.
  • includeScore (booleano, facoltativo, predefinito false): se includere le probabilità degli oggetti rilevati nella risposta.
  • cartella (stringa, facoltativo): cartella.
  • storage (stringa, facoltativo): archiviazione.

Rilevamento di oggetti tramite comando cURL

È possibile accedere ad Aspose.Imaging Cloud anche tramite i comandi cURL. Il seguente comando mostra come un comando cURL può essere utilizzato per rilevare un oggetto e ottenere una risposta come oggetto JSON.

Per rilevare l’oggetto utilizziamo l’immagine seguente.

Immagine di esempio di un gatto

Immagine 1:- Immagine sorgente

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>"

Richiedi 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

Corpo della risposta

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

Schema di risposta

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

Rilevamento di oggetti nelle immagini tramite C#

Prova a utilizzare il seguente frammento di codice per il rilevamento degli oggetti nelle immagini utilizzando il frammento di codice C#.

Frammento di codice C# .NET

///<summary>
/// Rileva oggetti su un'immagine da un archivio cloud.
///</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

    // Inizializza l'oggetto 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);
    // ottenere il conteggio degli oggetti nel file immagine
    Console.WriteLine("Objects detected: " + detectedObjectList.DetectedObjects.Count);
}

Rileva i limiti dell’oggetto e restituiscilo come immagine

Carica un’immagine, rileva gli oggetti, traccia i limiti attorno a essi e restituisce il risultato come immagine.

Richiedi parametri di query:

  • name (stringa, obbligatorio): nome dell’immagine. Attualmente sono supportati 3 formati immagine: bmp, jpg, jpeg e jpeg2000.
  • metodo (stringa, facoltativo, [“ssd”], predefinito “ssd”): metodo di rilevamento degli oggetti.
  • soglia (numero, facoltativo, [0 - 100], predefinito 50): probabilità minima in percentuale degli oggetti che verranno inclusi nel risultato.
  • includeLabel (booleano, facoltativo, predefinito false): se includere le etichette degli oggetti rilevati nella risposta.
  • includeScore (booleano, facoltativo, predefinito false): se includere le probabilità degli oggetti rilevati nella risposta.
  • color (stringa, opzionale): il colore personalizzato dei limiti e delle informazioni dell’oggetto rilevato. Se è uguale a null, gli oggetti con etichette diverse hanno limiti di colori diversi.
  • cartella (stringa, facoltativo): cartella.
  • storage (stringa, facoltativo): archiviazione.

Utilizzo del comando cURL per determinare gli oggetti

È possibile accedere ad Aspose.Imaging Cloud anche tramite comandi cURL. Tuttavia, come prerequisito, è necessario generare prima un token di accesso JWT basato sulle credenziali del client. Eseguire il seguente comando per generare il 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"

Ora esegui il seguente comando per rilevare i limiti dell’oggetto e restituirli come immagine.

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>"

Richiedi 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

Nella richiesta di cui sopra, si noti che il rosso è specificato come colore di evidenziazione.

Frammento di codice C#.NET

Il seguente frammento di codice mostra i passaggi per caricare un file immagine contenente due oggetti (cane e gatto).Entrambi questi oggetti vengono identificati tramite Aspose.Imaging Cloud API. Le immagini risultanti con oggetti evidenziati vengono salvate sull’unità di sistema.

///<summary>
/// Visualizza l'oggetto rilevato su un'immagine passata in un flusso di richieste.
///</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/
    // Inizializza l'oggetto 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))
        {
            // salva il flusso di immagini aggiornato nella posizione di sistema
            System.Drawing.Image img = System.Drawing.Image.FromStream(updatedImage);
            img.Save("/Users/Aspose/Desktop/myImage.Jpeg", System.Drawing.Imaging.ImageFormat.Jpeg);
        }
    }
    Console.WriteLine();
}
Immagine di copertina di Gatto e Cane

Immagine 2: - Immagine di input con gatto e cane

Immagine elaborata che evidenzia gli oggetti identificati

Immagine 3:- Immagine elaborata che evidenzia gli oggetti identificati

Per maggiori informazioni sulla ricerca di immagini, visitare Ricerca inversa di immagini.

Conclusione

In questo articolo, abbiamo appreso le capacità di Aspose.Imaging Cloud per il rilevamento di oggetti nelle immagini. Per identificare gli oggetti nelle immagini, puoi usare il frammento di codice o i comandi cURL. Inoltre, per facilitare i nostri clienti, abbiamo creato SDK specifici per il linguaggio di programmazione e nell’articolo sopra, abbiamo esplorato le funzionalità di Aspose.Imaging Cloud SDK per .NET per il rilevamento di oggetti. Il codice sorgente completo dell’SDK è disponibile per il download su GitHub.

Articoli correlati

Ti consigliamo di visitare i seguenti link per saperne di più: