Logo Aspose.Imaging Cloud

La détection d’objets est une technologie informatique liée à la vision par ordinateur et au traitement d’images qui permet de détecter des instances d’objets sémantiques d’une certaine classe (tels que des humains, des bâtiments ou des voitures) dans des images et des vidéos numériques. Si vous devez effectuer la détection d’objets par programmation à l’aide de l’API Cloud, les API Cloud d’Aspose.Imaging sont un choix parfait. Nous avons également développé des SDK spécifiques au langage pour faciliter la tâche de nos clients. Ainsi, Aspose.Imaging Cloud Java SDK est un choix viable pour la reconnaissance d’objets à l’aide de Java.

Dans les versions récentes, nous avons intégré la fonction de détection d’objets dans nos SDK et, grâce à cette fonction, les utilisateurs sont en mesure de détecter les limites d’objets sur une image d’entrée, à condition que leurs étiquettes et leurs probabilités soient respectées. L’API prend actuellement en charge 3 formats d’image raster (BMP, JPG et JPEG2000) et Single Shot Detector (SSD) est la méthode de détection permettant de reconnaître les objets. Néanmoins, nous prévoyons d’intégrer plusieurs autres méthodes et formats d’image dans nos versions ultérieures. Une fois l’opération effectuée via l’API, nous pouvons obtenir un objet JSON avec les limites, les étiquettes et les scores des objets détectés ou une image de résultat avec les limites et les étiquettes des objets. Actuellement, vous pouvez identifier des objets tels qu’une personne, un vélo, une voiture, un chat, un chien, un cheval, etc. Vous pouvez envisager de visiter le lien suivant pour plus de détails sur la Liste des étiquettes disponibles.

Détecter les objets et les mettre en surbrillance sur l’image

Il existe deux options pour détecter des objets à l’intérieur d’une image : effectuer une opération sur une image en stockage ou effectuer une opération sur une image transmise dans le corps de la requête.

Traiter les images à partir du stockage cloud

La première méthode suppose que vous téléchargiez d’abord une image sur Cloud Storage, puis que vous transmettiez son nom dans l’URL de l’API. Après la détection de l’objet, l’API renvoie l’image résultante dans la réponse.

Nous comprenons également que les stockages Cloud sont un moyen rapide et facile de stocker et d’accéder aux fichiers. La procédure de détection d’objet peut facilement être effectuée sur des images stockées sur un stockage Cloud et le fichier résultant est renvoyé dans l’en-tête de réponse. Dans la commande cURL suivante, l’opération de détection d’objet est effectuée sur une image contenant plusieurs objets dans lesquels les arguments, il est spécifié d’utiliser Single Shot Detector (SSD) comme modèle de détection, de maintenir la valeur de seuil à 50, d’inclure les étiquettes des objets dans l’image résultante et de spécifier également le score de détection d’objet. De plus, nous avons spécifié Zebra, Giraffe, Horse comme une liste séparée par des virgules d’étiquettes autorisées contre l’argument authorizedLabels. Néanmoins, si vous souhaitez enregistrer le fichier résultant sur le système local, vous pouvez essayer d’utiliser -o et de spécifier un emplacement pour le fichier résultant.

Commande cURL

curl -v "https://api.aspose.cloud/v3.0/imaging/ai/objectdetection/71ElMFUKIvL.jpg/visualbounds?method=ssd&threshold=50&includeLabel=true&includeScore=true&allowedLabels=zebra, giraffe, horse" \
-X GET \
-H "accept: application/json" \
-H "authorization: Bearer <JWT Token>" \
-o c:/pdftest/mydetected.jpeg

Extrait de code Java

 public void VisualBoundsAnImageInCloud() throws Exception {

	String fileName = "object_detection_example.jpg";
	
	String method = "ssd";
	int threshold = 50;
	Boolean includeLabel = true;
	Boolean includeScore = true;
	String color = "blue";
	String folder = CloudPath; // Input file is saved at the Examples folder in the storage
	String storage = null; // We are using default Cloud Storage

	GetVisualObjectBoundsRequest request = new GetVisualObjectBoundsRequest(getSampleImageFileName(), method, threshold, includeLabel, includeScore, color, folder, storage);

	byte[] resultImage = ImagingApi.getVisualObjectBounds(request);
	Path path = Paths.get(OutputFolder, "object_detection_example_out.jpg").toAbsolutePath();
    Files.write(path, resultImage);
}
Fichier source pour la détection d'objets

Image 1 : Fichier source pour la détection d’objet

Image résultante avec objets détectés

Image 2 : Fichier résultant avec les objets reconnus

Traiter les images sans stockage

L’API de traitement d’image propose une deuxième méthode (POST) qui vous permet de transmettre directement l’image du stockage local au corps de la requête. Elle vous permet également d’enregistrer l’image résultante sur le stockage cloud en spécifiant la valeur du paramètre outPath. Toutefois, si vous ne spécifiez pas la valeur, la réponse contient une image diffusée en continu.

Commande cURL

curl -X POST "https://api.aspose.cloud/v3.0/imaging/ai/objectdetection/visualbounds?method=ssd&threshold=50&includeLabel=true&includeScore=true&allowedLabels=bird, cat, dog, horse, sheep, cow, elephant, bear, zebra, giraffe&color=yellow" -H "accept: application/json" -H "authorization: Bearer <jwt token>" -H "Content-Type: multipart/form-data" -d {"imageData":{}}

URL de la demande

https://api.aspose.cloud/v3.0/imaging/ai/objectdetection/visualbounds?method=ssd&threshold=50&includeLabel=true&includeScore=true&allowedLabels=bird, cat, dog, horse, sheep, cow, elephant, bear, zebra, giraffe&color=yellow

Extrait de code Java

public void VisualBoundsAnImageInRequestBody() throws Exception {

	String fileName = "object_detection_example.jpg";
	
	String method = "ssd";
	int threshold = 50;
	Boolean includeLabel = true;
	Boolean includeScore = true;
	String color = null;
	String outPath = null;
	String storage = null; // We are using default Cloud Storage

	byte[] inputStream = Files.readAllBytes(Paths.get(ExampleImagesFolder, getSampleImageFileName()));
	CreateVisualObjectBoundsRequest request = new CreateVisualObjectBoundsRequest(inputStream, method, threshold, includeLabel, includeScore, color, outPath, storage);	

	byte[] resultImage = ImagingApi.createVisualObjectBounds(request);
	Path path = Paths.get(OutputFolder, "object_detection_example_out.jpg").toAbsolutePath();
    Files.write(path, resultImage);
}
Image d'entrée avec un cheval

Image 3 : Image d’entrée avec un cheval en course

Objet cheval détecté sur l'image

Image 4 : Cheval détecté avec un score de 98 %

Conclusion

Dans cet article, nous avons exploré les fonctionnalités liées à la reconnaissance d’objets à l’aide du SDK Java. Le SDK est si étonnant qu’il peut déterminer avec précision plusieurs objets en une seule tentative. Pour faciliter encore plus les choses, il permet aux utilisateurs de mettre en évidence les objets et de les étiqueter en conséquence. Si vous rencontrez des problèmes lors de l’utilisation de l’API, n’hésitez pas à nous contacter via le forum d’assistance produit gratuit.

Articles connexes

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