Met de release van Aspose.Imaging Cloud 20.5 kondigen we met genoegen de functie voor objectdetectie in afbeeldingen aan. Hiermee kunnen gebruikers objectgrenzen op een invoerafbeelding detecteren op basis van hun labels en waarschijnlijkheden. De huidige implementatie ondersteunt een single shot detector-methode om objecten te herkennen waarbij het model is getraind met behulp van de COCO 2017-dataset. De SSD-benadering discretiseert de uitvoerruimte van begrenzende vakken in een set standaardvakken over verschillende aspectverhoudingen en schalen per locatie van de feature map.

Aspose.Imaging Cloud voert objectdetectie uit op basis van de volgende 4 methoden:

  1. Objecten op een bestaande afbeelding detecteren en resultaten retourneren als een JSON-object
  2. Objecten op een bestaande afbeelding detecteren en resultaten als afbeelding retourneren
  3. Upload een afbeelding, detecteer objecten erop en retourneer de resultaten als een JSON-object
  4. Upload een afbeelding, detecteer objecten erop en retourneer de resultaten als een afbeelding

In deze sectie gaan we de volgende secties in meer detail bespreken

Objectgrenzen detecteren

Deze aanpak detecteert objecten op een bestaande afbeelding en retourneert het resultaat als een JSON-object.

Parameters voor aanvraagquery:

  • naam (string, vereist): afbeeldingsnaam. Momenteel ondersteunen we 3 afbeeldingsformaten: BMP, JPEG en JPEG 2000.
  • methode (tekenreeks, optioneel, standaard “ssd”): methode voor objectdetectie.
  • drempelwaarde (getal, optioneel, [0 - 100], standaard 50): minimale waarschijnlijkheid in percentage van gedetecteerde objecten die in het resultaat worden opgenomen.
  • includeLabel (booleaans, optioneel, standaardwaarde false): of gedetecteerde objectlabels in het antwoord moeten worden opgenomen.
  • includeScore (booleaans, optioneel, standaardwaarde false): of de waarschijnlijkheid van gedetecteerde objecten in het antwoord moet worden opgenomen.
  • map (tekenreeks, optioneel): map.
  • storage (tekenreeks, optioneel): opslag.

Objectdetectie met behulp van cURL-opdracht

Aspose.Imaging Cloud kan ook worden benaderd met behulp van de cURL-opdrachten. De volgende opdracht laat zien hoe een cURL-opdracht kan worden gebruikt om een object te detecteren en een respons te krijgen als een JSON-object.

We gebruiken de volgende afbeelding om het object te detecteren.

Voorbeeld van een kattenafbeelding

Afbeelding 1:- Bronafbeelding

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 aanvragen

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

Reactie lichaam

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

Reactieschema

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

Objectdetectie in afbeeldingen met behulp van C#

Probeer het volgende codefragment voor objectdetectie in afbeeldingen met behulp van het C#-codefragment.

C# .NET-codefragment

///<summary>
/// Objecten op een afbeelding detecteren vanuit een cloudopslag.
///</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

    // Initialiseer Aspose.Imaging Cloud-object
    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);
    // aantal objecten in afbeeldingsbestand ophalen
    Console.WriteLine("Objects detected: " + detectedObjectList.DetectedObjects.Count);
}

Objectgrenzen detecteren en retourneren als afbeelding

Upload een afbeelding, detecteer objecten, trek er grenzen omheen en retourneer het resultaat als een afbeelding.

Parameters voor aanvraagquery:

  • naam (string, vereist): afbeeldingsnaam. Momenteel worden 3 afbeeldingsformaten ondersteund: bmp, jpg, jpeg en jpeg2000.
  • methode (tekenreeks, optioneel, [“ssd”], standaard “ssd”): methode voor objectdetectie.
  • drempelwaarde (getal, optioneel, [0 - 100], standaard 50): minimale waarschijnlijkheid in procenten van objecten die in het resultaat worden opgenomen.
  • includeLabel (booleaans, optioneel, standaardwaarde false): of gedetecteerde objectlabels in het antwoord moeten worden opgenomen.
  • includeScore (booleaans, optioneel, standaardwaarde false): of de waarschijnlijkheid van gedetecteerde objecten in het antwoord moet worden opgenomen.
  • color (string, optioneel): de aangepaste kleur van de gedetecteerde objectgrenzen en info. Als gelijk is aan null, hebben objecten met verschillende labels grenzen van verschillende kleuren.
  • map (tekenreeks, optioneel): map.
  • storage (tekenreeks, optioneel): opslag.

Het gebruik van de cURL-opdracht om objecten te bepalen

Aspose.Imaging Cloud is ook toegankelijk via cURL-opdrachten. Als vereiste moet u echter eerst een JWT-toegangstoken genereren op basis van uw clientreferenties. Voer de volgende opdracht uit om de JWT-token te genereren.

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"

Voer nu de volgende opdracht uit om objectgrenzen te detecteren en deze als afbeelding te retourneren.

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 aanvragen

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

In het bovenstaande verzoek is Rood opgegeven als markeerkleur.

C#.NET-codefragment

Het volgende codefragment toont de stappen om een afbeeldingsbestand te laden dat twee objecten bevat (hond en kat).Beide objecten worden geïdentificeerd met behulp van Aspose.Imaging Cloud API. De resulterende afbeeldingen met gemarkeerde objecten worden opgeslagen op de systeemschijf.

///<summary>
/// Visualiseer het gedetecteerde object op een afbeelding die wordt doorgegeven in een aanvraagstroom.
///</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/
    // Initialiseer Aspose.Imaging Cloud-object
    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))
        {
            // Bewaar bijgewerkte afbeeldingsstream op systeemlocatie
            System.Drawing.Image img = System.Drawing.Image.FromStream(updatedImage);
            img.Save("/Users/Aspose/Desktop/myImage.Jpeg", System.Drawing.Imaging.ImageFormat.Jpeg);
        }
    }
    Console.WriteLine();
}
Omslagfoto van kat en hond

Afbeelding 2: - Invoerafbeelding met kat en hond

Verwerkte afbeelding die geïdentificeerde objecten benadrukt

Afbeelding 3: - Verwerkte afbeelding met gemarkeerde geïdentificeerde objecten

Voor meer informatie over het zoeken naar afbeeldingen, bezoek Omgekeerd zoeken naar afbeeldingen.

Conclusie

In dit artikel hebben we de mogelijkheden van Aspose.Imaging Cloud voor objectdetectie in afbeeldingen besproken. Om objecten in afbeeldingen te identificeren, kunt u het codefragment of de cURL-opdrachten gebruiken. Bovendien hebben we programmeertaalspecifieke SDK’s gemaakt om onze klanten te helpen en in het bovenstaande artikel hebben we de functies van Aspose.Imaging Cloud SDK voor .NET voor objectdetectie onderzocht. De volledige broncode van SDK is beschikbaar om te downloaden via GitHub.

Gerelateerde artikelen

Voor meer informatie raden wij u aan de volgende links te bezoeken: