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:
- Objecten op een bestaande afbeelding detecteren en resultaten retourneren als een JSON-object
- Objecten op een bestaande afbeelding detecteren en resultaten als afbeelding retourneren
- Upload een afbeelding, detecteer objecten erop en retourneer de resultaten als een JSON-object
- 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
- Objectdetectie in afbeeldingen met behulp van C#
- Objectgrenzen detecteren en retourneren als afbeelding
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.
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();
}
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: