Avec la sortie d’Aspose.Imaging Cloud 20.5, nous sommes heureux d’annoncer la fonctionnalité de détection d’objets dans les images. Elle permet aux utilisateurs de détecter les limites des objets sur une image d’entrée en fonction de leurs étiquettes et de leurs probabilités. L’implémentation actuelle prend en charge une méthode de détection à tir unique pour reconnaître les objets lorsque le modèle est formé à l’aide de l’ensemble de données COCO 2017. L’approche SSD discrétise l’espace de sortie des boîtes englobantes en un ensemble de boîtes par défaut sur différents rapports d’aspect et échelles par emplacement de carte de caractéristiques.

Aspose.Imaging Cloud effectue la détection d’objets en fonction des 4 méthodes suivantes :

  1. Détecter les objets sur une image existante et renvoyer les résultats sous forme d’objet JSON
  2. Détecter les objets sur une image existante et renvoyer les résultats sous forme d’image
  3. Téléchargez une image, détectez les objets dessus et renvoyez les résultats sous forme d’objet JSON
  4. Téléchargez une image, détectez les objets dessus et renvoyez les résultats sous forme d’image

Dans cette section, nous allons discuter plus en détail des sections suivantes

Détecter les limites de l’objet

Cette approche détecte les objets sur une image existante et renvoie le résultat sous forme d’objet JSON.

Paramètres de la requête :

  • nom (chaîne, obligatoire) : nom de l’image. Actuellement, nous prenons en charge 3 formats d’image : BMP, JPEG et JPEG 2000.
  • méthode (chaîne, facultative, par défaut « ssd ») : méthode de détection d’objet.
  • seuil (nombre, facultatif, [0 - 100], par défaut 50) : probabilité minimale des objets détectés en pourcentage qui seront inclus dans le résultat.
  • includeLabel (booléen, facultatif, par défaut false) : s’il faut inclure les étiquettes des objets détectés dans la réponse.
  • includeScore (booléen, facultatif, par défaut false) : s’il faut inclure les probabilités d’objets détectés dans la réponse.
  • dossier (chaîne, facultatif) : dossier.
  • stockage (chaîne, facultatif) : stockage.

Détection d’objet à l’aide de la commande cURL

Vous pouvez également accéder à Aspose.Imaging Cloud à l’aide des commandes cURL. La commande suivante montre comment une commande cURL peut être utilisée pour détecter un objet et obtenir une réponse sous forme d’objet JSON.

Nous utilisons l’image suivante pour détecter l’objet.

Exemple d'image de chat

Image 1 : Image source

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 de la demande

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

Corps de la réponse

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

Schéma de réponse

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

Détection d’objets dans les images à l’aide de C#

Veuillez essayer d’utiliser l’extrait de code suivant pour la détection d’objets dans les images à l’aide de l’extrait de code C#.

Extrait de code C# .NET

///<summary>
/// Détecter des objets sur une image à partir d'un stockage 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

    // Initialiser l'objet Cloud Aspose.Imaging
    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);
    // obtenir le nombre d'objets dans le fichier image
    Console.WriteLine("Objects detected: " + detectedObjectList.DetectedObjects.Count);
}

Détecter les limites de l’objet et le renvoyer sous forme d’image

Téléchargez une image, détectez les objets, tracez des limites autour d’eux et renvoyez le résultat sous forme d’image.

Paramètres de la requête :

  • nom (chaîne, obligatoire) : nom de l’image. Actuellement, 3 formats d’image sont pris en charge : bmp, jpg, jpeg et jpeg2000.
  • méthode (chaîne, facultative, [“ssd”], par défaut “ssd”) : méthode de détection d’objet.
  • seuil (nombre, facultatif, [0 - 100], par défaut 50) : probabilité minimale des objets en pourcentage qui seront inclus dans le résultat.
  • includeLabel (booléen, facultatif, par défaut false) : s’il faut inclure les étiquettes des objets détectés dans la réponse.
  • includeScore (booléen, facultatif, par défaut false) : s’il faut inclure les probabilités d’objets détectés dans la réponse.
  • color (chaîne, optionnel) : la couleur personnalisée des limites et des informations de l’objet détecté. Si la valeur est nulle, les objets de différentes étiquettes ont des limites de couleurs différentes.
  • dossier (chaîne, facultatif) : dossier.
  • stockage (chaîne, facultatif) : stockage.

Utilisation de la commande cURL pour déterminer les objets

Vous pouvez également accéder à Aspose.Imaging Cloud via des commandes cURL. Cependant, comme condition préalable, vous devez d’abord générer un jeton d’accès JWT basé sur vos informations d’identification client. Veuillez exécuter la commande suivante pour générer le jeton 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"

Exécutez maintenant la commande suivante pour détecter les limites de l’objet et les renvoyer sous forme d’image.

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 de la demande

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

Dans la demande ci-dessus, notez que le rouge est spécifié comme couleur de surbrillance.

Extrait de code C#.NET

L’extrait de code suivant montre les étapes à suivre pour charger un fichier image contenant deux objets (chien et chat).Ces deux objets sont identifiés à l’aide de l’API Cloud Aspose.Imaging. Les images résultantes avec les objets mis en surbrillance sont enregistrées sur le lecteur système.

///<summary>
/// Visualisez l'objet détecté sur une image transmise dans un flux de requête.
///</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/
    // Initialiser l'objet Cloud Aspose.Imaging
    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))
        {
            // enregistrer le flux d'images mis à jour à l'emplacement du système
            System.Drawing.Image img = System.Drawing.Image.FromStream(updatedImage);
            img.Save("/Users/Aspose/Desktop/myImage.Jpeg", System.Drawing.Imaging.ImageFormat.Jpeg);
        }
    }
    Console.WriteLine();
}
Image de couverture de Chat et chien

Image 2 : Image d’entrée avec chat et chien

Image traitée mettant en évidence les objets identifiés

Image 3 : Image traitée mettant en évidence les objets identifiés

Pour plus d’informations sur la recherche d’images, veuillez visiter Recherche d’images inversée.

Conclusion

Dans cet article, nous avons découvert les capacités d’Aspose.Imaging Cloud pour la détection d’objets dans les images. Pour identifier les objets dans les images, vous pouvez utiliser l’extrait de code ou les commandes cURL. De plus, pour faciliter la tâche de nos clients, nous avons créé des SDK spécifiques au langage de programmation et dans l’article ci-dessus, nous avons exploré les fonctionnalités d’Aspose.Imaging Cloud SDK pour .NET pour la détection d’objets. Le code source complet du SDK est disponible en téléchargement sur GitHub.

Articles connexes

Nous vous recommandons de visiter les liens suivants pour en savoir plus sur :