Mit der Veröffentlichung von Aspose.Imaging Cloud 20.5 freuen wir uns, die Funktion zur Objekterkennung in Bildern bekannt zu geben. Sie ermöglicht es den Benutzern, Objektgrenzen auf einem Eingabebild anhand ihrer Beschriftungen und Wahrscheinlichkeiten zu erkennen. Die aktuelle Implementierung unterstützt eine Single-Shot-Detection-Methode zur Erkennung von Objekten, bei denen das Modell mit dem COCO 2017-Datensatz trainiert wird. Der SSD-Ansatz diskretisiert den Ausgaberaum der Begrenzungsrahmen in eine Reihe von Standardrahmen mit unterschiedlichen Seitenverhältnissen und Maßstäben pro Feature-Map-Standort.

Aspose.Imaging Cloud führt die Objekterkennung basierend auf den folgenden 4 Methoden durch:

  1. Objekte in einem vorhandenen Bild erkennen und Ergebnisse als JSON Objekt zurückgeben
  2. Objekte auf einem vorhandenen Bild erkennen und Ergebnisse als Bild zurückgeben
  3. Laden Sie ein Bild hoch, erkennen Sie Objekte darauf und geben Sie die Ergebnisse als JSON Objekt zurück.
  4. Laden Sie ein Bild hoch, erkennen Sie Objekte darauf und geben Sie die Ergebnisse als Bild zurück

In diesem Abschnitt werden wir die folgenden Abschnitte ausführlicher besprechen

Objektgrenzen erkennen

Dieser Ansatz erkennt Objekte in einem vorhandenen Bild und gibt das Ergebnis als JSON Objekt zurück.

Abfrageparameter anfordern:

  • Name (Zeichenfolge, erforderlich): Bildname. Derzeit unterstützen wir 3 Bildformate: BMP, JPEG und JPEG 2000.
  • Methode (Zeichenfolge, optional, Standard „ssd“): Methode zur Objekterkennung.
  • Schwellenwert (Zahl, optional, [0 – 100], Standard 50): Mindestwahrscheinlichkeit erkannter Objekte in Prozent, die in das Ergebnis einbezogen werden.
  • includeLabel (Boolesch, optional, Standard: „false“): ob erkannte Objektbeschriftungen in die Antwort einbezogen werden sollen.
  • includeScore (Boolesch, optional, Standard: „false“): ob erkannte Objektwahrscheinlichkeiten in die Antwort einbezogen werden sollen.
  • Ordner (Zeichenfolge, optional): Ordner.
  • Speicher (Zeichenfolge, optional): Speicher.

Objekterkennung mit dem cURL-Befehl

Auf Aspose.Imaging Cloud kann auch über die cURL-Befehle zugegriffen werden. Der folgende Befehl zeigt, wie ein cURL-Befehl verwendet werden kann, um ein Objekt zu erkennen und eine Antwort als JSON Objekt zu erhalten.

Wir verwenden das folgende Bild, um das Objekt zu erkennen.

Beispielbild einer Katze

Bild 1:- Quellbild

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

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

Antworttext

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

Antwortschema

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

Objekterkennung in Bildern mit C#

Bitte versuchen Sie, den folgenden Codeausschnitt zur Objekterkennung in Bildern mithilfe des C#-Codeausschnitts zu verwenden.

C# .NET-Codeausschnitt

///<summary>
/// Objekte auf einem Bild aus einem Cloud-Speicher erkennen.
///</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 Objekt initialisieren
    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);
    // Anzahl der Objekte in der Bilddatei abrufen
    Console.WriteLine("Objects detected: " + detectedObjectList.DetectedObjects.Count);
}

Objektgrenzen erkennen und als Bild zurückgeben

Laden Sie ein Bild hoch, erkennen Sie Objekte, zeichnen Sie Grenzen um sie herum und geben Sie das Ergebnis als Bild zurück.

Abfrageparameter anfordern:

  • Name (Zeichenfolge, erforderlich): Bildname. Derzeit werden 3 Bildformate unterstützt: bmp, jpg, jpeg und jpeg2000.
  • Methode (Zeichenfolge, optional, [“ssd”], Standard “ssd”): Methode zur Objekterkennung.
  • Schwellenwert (Zahl, optional, [0 – 100], Standard 50): Mindestwahrscheinlichkeit in Prozent der Objekte, die in das Ergebnis einbezogen werden.
  • includeLabel (Boolesch, optional, Standard: „false“): ob erkannte Objektbeschriftungen in die Antwort einbezogen werden sollen.
  • includeScore (Boolesch, optional, Standard: „false“): ob erkannte Objektwahrscheinlichkeiten in die Antwort einbezogen werden sollen.
  • Farbe (Zeichenfolge, optional): die benutzerdefinierte Farbe der erkannten Objektgrenzen und -informationen. Wenn gleich null, haben Objekte mit unterschiedlichen Beschriftungen Grenzen unterschiedlicher Farbe.
  • Ordner (Zeichenfolge, optional): Ordner.
  • Speicher (Zeichenfolge, optional): Speicher.

Verwenden des cURL-Befehls zum Bestimmen von Objekten

Auf Aspose.Imaging Cloud kann auch über cURL-Befehle zugegriffen werden. Voraussetzung ist jedoch, dass Sie zunächst ein JWT-Zugriffstoken basierend auf Ihren Clientanmeldeinformationen generieren. Führen Sie den folgenden Befehl aus, um das JWT-Token zu generieren.

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"

Führen Sie nun den folgenden Befehl aus, um Objektgrenzen zu erkennen und sie als Bild zurückzugeben.

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

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

Beachten Sie, dass in der obigen Anfrage Rot als Hervorhebungsfarbe angegeben ist.

C#.NET-Codeausschnitt

Der folgende Codeausschnitt zeigt die Schritte zum Laden einer Bilddatei mit zwei Objekten (Hund und Katze).Beide Objekte werden mithilfe der Aspose.Imaging Cloud API identifiziert. Die resultierenden Bilder mit hervorgehobenen Objekten werden auf dem Systemlaufwerk gespeichert.

///<summary>
/// Visualisieren Sie erkannte Objekte auf einem Bild, das in einem Anforderungsstream übergeben wird.
///</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 Objekt initialisieren
    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))
        {
            // aktualisierten Bildstrom am Systemspeicherort speichern
            System.Drawing.Image img = System.Drawing.Image.FromStream(updatedImage);
            img.Save("/Users/Aspose/Desktop/myImage.Jpeg", System.Drawing.Imaging.ImageFormat.Jpeg);
        }
    }
    Console.WriteLine();
}
Titelbild „Katze und Hund“

Bild 2: - Eingabebild mit Katze und Hund

Verarbeitetes Bild mit Hervorhebung identifizierter Objekte

Bild 3: - Verarbeitetes Bild, das identifizierte Objekte hervorhebt

Weitere Informationen zur Bildersuche finden Sie unter Umgekehrte Bildersuche.

Abschluss

In diesem Artikel haben wir die Funktionen von Aspose.Imaging Cloud zur Objekterkennung in Bildern kennengelernt. Um Objekte in Bildern zu identifizieren, können Sie entweder den Codeausschnitt oder die cURL-Befehle verwenden. Darüber hinaus haben wir zur Unterstützung unserer Kunden programmiersprachenspezifische SDKs erstellt und im obigen Artikel die Funktionen von Aspose.Imaging Cloud SDK für .NET zur Objekterkennung untersucht. Der vollständige Quellcode des SDK steht zum Download über GitHub zur Verfügung.

Verwandte Artikel

Wir empfehlen Ihnen, die folgenden Links zu besuchen, um mehr zu erfahren über: