Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Prise en main de la bibliothèque cliente Custom Vision pour .NET. Suivez ces étapes pour installer le package et essayer l’exemple de code permettant de créer un modèle de classification d’images. Vous pouvez créer un projet, ajouter des balises, entraîner le projet et utiliser l’URL du point de terminaison de prédiction du projet pour le tester par programmation. Utilisez cet exemple comme modèle pour créer votre propre application de reconnaissance d’image.
Note
Si vous souhaitez générer et entraîner un modèle de classification sans écrire de code, consultez les instructions basées sur le navigateur.
Documentation de référence | Code source de la bibliothèque pour l'entraînement et la prédiction | Package (NuGet) pour l'entraînement et la prédiction | Exemples
Conditions préalables
- Un abonnement Azure. Vous pouvez en créer un gratuitement.
- La version IDE Visual Studio ou actuelle de .NET Core.
- Une fois que vous avez votre abonnement Azure, créez une ressource Custom Vision dans le portail Azure pour créer une ressource d’apprentissage et une ressource de prédiction.
- Vous pouvez utiliser le niveau tarifaire gratuit (
F0) pour essayer le service et effectuer une mise à niveau ultérieure vers un niveau payant pour la production.
- Vous pouvez utiliser le niveau tarifaire gratuit (
Créer des variables d’environnement
Dans cet exemple, vous allez écrire vos informations d’identification dans des variables d’environnement sur l’ordinateur local exécutant l’application.
Accédez au portail Azure. Si les ressources Custom Vision que vous avez créées dans la section Conditions préalables déployées avec succès, sélectionnez le bouton Accéder à la ressource sous Étapes suivantes. Vous trouverez vos clés et points de terminaison dans les pages Clés et points de terminaison des ressources, sous Gestion des ressources. Vous devez obtenir les clés de votre ressource d’entraînement et de votre ressource de prédiction, ainsi que les points de terminaison d’API.
Vous trouverez l'ID de ressource de prédiction sous l'onglet Properties dans le portail Azure, répertorié sous la forme Resource ID.
Conseil
Vous utilisez https://www.customvision.ai également pour obtenir ces valeurs. Une fois connecté, sélectionnez l’icône Paramètres en haut à droite. Dans les pages Paramètres , vous pouvez afficher toutes les clés, l’ID de ressource et les points de terminaison.
Pour définir les variables d’environnement, ouvrez une fenêtre de console et suivez les instructions de votre système d’exploitation et de votre environnement de développement.
- Pour définir la variable d’environnement
VISION_TRAINING KEY, remplacez<your-training-key>par l’une des clés de votre ressource d’apprentissage. - Pour définir la variable d’environnement
VISION_TRAINING_ENDPOINT, remplacez<your-training-endpoint>par le point de terminaison de votre ressource d’entraînement. - Pour définir la variable d’environnement
VISION_PREDICTION_KEY, remplacez<your-prediction-key>par l’une des clés de votre ressource de prédiction. - Pour définir la variable d’environnement
VISION_PREDICTION_ENDPOINT, remplacez<your-prediction-endpoint>par le point de terminaison de votre ressource de prédiction. - Pour définir la variable d’environnement
VISION_PREDICTION_RESOURCE_ID, remplacez<your-resource-id>par l’ID de ressource de votre ressource de prédiction.
Important
Nous vous recommandons l'authentification Microsoft Entra ID avec les identités managées pour les ressources Azure pour éviter de stocker les identifiants avec vos applications qui s'exécutent dans le cloud.
Utilisez des clés API avec précaution. N’incluez pas la clé API directement dans votre code et ne la publiez jamais publiquement. Si vous utilisez des clés API, stockez-les en toute sécurité dans Azure Key Vault, faites pivoter les clés régulièrement et limitez l’accès aux Azure Key Vault à l’aide du contrôle d’accès en fonction du rôle et des restrictions d’accès réseau. Pour plus d’informations sur l’utilisation sécurisée des clés API dans vos applications, consultez les API avec Azure Key Vault.
Pour plus d’informations sur la sécurité des services d’INTELLIGENCE artificielle, consultez Demandes d’authentification à Azure AI services.
setx VISION_TRAINING_KEY <your-training-key>
setx VISION_TRAINING_ENDPOINT <your-training-endpoint>
setx VISION_PREDICTION_KEY <your-prediction-key>
setx VISION_PREDICTION_ENDPOINT <your-prediction-endpoint>
setx VISION_PREDICTION_RESOURCE_ID <your-resource-id>
Après avoir ajouté les variables d’environnement, vous devrez peut-être redémarrer les programmes en cours d’exécution qui lisent les variables d’environnement, y compris la fenêtre de console.
Mise en place
Créer une application C#
À l’aide de Visual Studio, créez une application .NET Core.
Installer la bibliothèque cliente
Après avoir créé un projet, installez la bibliothèque cliente en cliquant avec le bouton droit sur la solution de projet dans le Explorateur de solutions et en sélectionnant Manage des packages NuGet. Sélectionnez Browse dans le gestionnaire de package qui s’ouvre, puis vérifiez Include prerelease et recherchez Microsoft.Azure.CognitiveServices.Vision.CustomVision.Training et Microsoft.Azure.CognitiveServices.Vision.CustomVision.Prediction. Sélectionnez la dernière version, puis choisissez Installer.
Conseil
Vous souhaitez afficher l’ensemble du fichier de code de démarrage rapide à la fois ? Vous pouvez le trouver sur GitHub qui contient les exemples de code de ce guide de démarrage rapide.
Dans le répertoire du projet, ouvrez le fichier program.cs et ajoutez les directives suivantes using :
using Microsoft.Azure.CognitiveServices.Vision.CustomVision.Prediction;
using Microsoft.Azure.CognitiveServices.Vision.CustomVision.Training;
using Microsoft.Azure.CognitiveServices.Vision.CustomVision.Training.Models;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading;
Dans la méthode de main l’application, créez des variables qui récupèrent les clés et les points de terminaison de votre ressource à partir de variables d’environnement. Vous allez également déclarer certains objets de base à utiliser ultérieurement.
// Retrieve the environment variables for your credentials:
private static string trainingEndpoint = Environment.GetEnvironmentVariable("VISION_TRAINING_ENDPOINT");
private static string trainingKey = Environment.GetEnvironmentVariable("VISION_TRAINING_KEY");
private static string predictionEndpoint = Environment.GetEnvironmentVariable("VISION_PREDICTION_ENDPOINT");
private static string predictionKey = Environment.GetEnvironmentVariable("VISION_PREDICTION_KEY");
private static string predictionResourceId = Environment.GetEnvironmentVariable("VISION_PREDICTION_RESOURCE_ID");
private static List<string> hemlockImages;
private static List<string> japaneseCherryImages;
private static Tag hemlockTag;
private static Tag japaneseCherryTag;
private static Iteration iteration;
private static string publishedModelName = "treeClassModel";
private static MemoryStream testImage;
Dans la méthode main de l'application, ajoutez des appels aux méthodes utilisées dans ce quickstart. Vous implémentez ces éléments ultérieurement.
CustomVisionTrainingClient trainingApi = AuthenticateTraining(trainingEndpoint, trainingKey);
CustomVisionPredictionClient predictionApi = AuthenticatePrediction(predictionEndpoint, predictionKey);
Project project = CreateProject(trainingApi);
AddTags(trainingApi, project);
UploadImages(trainingApi, project);
TrainProject(trainingApi, project);
PublishIteration(trainingApi, project);
TestIteration(predictionApi, project);
DeleteProject(trainingApi, project);
Authentifier le client
Dans une nouvelle méthode, utilisez votre endpoint et vos clés pour instancier les clients d’entraînement et de prédiction.
private static CustomVisionTrainingClient AuthenticateTraining(string endpoint, string trainingKey)
{
// Create the Api, passing in the training key
CustomVisionTrainingClient trainingApi = new CustomVisionTrainingClient(new Microsoft.Azure.CognitiveServices.Vision.CustomVision.Training.ApiKeyServiceClientCredentials(trainingKey))
{
Endpoint = endpoint
};
return trainingApi;
}
private static CustomVisionPredictionClient AuthenticatePrediction(string endpoint, string predictionKey)
{
// Create a prediction endpoint, passing in the obtained prediction key
CustomVisionPredictionClient predictionApi = new CustomVisionPredictionClient(new Microsoft.Azure.CognitiveServices.Vision.CustomVision.Prediction.ApiKeyServiceClientCredentials(predictionKey))
{
Endpoint = endpoint
};
return predictionApi;
}
Créer un projet Custom Vision
Ce bit de code suivant crée un projet de classification d’images. Le projet créé s’affiche sur le site web Custom Vision. Consultez la méthode CreateProject pour spécifier d’autres options lorsque vous créez votre projet (expliqué dans le guide générer un portail web classifieur ).
private static Project CreateProject(CustomVisionTrainingClient trainingApi)
{
// Create a new project
Console.WriteLine("Creating new project:");
return trainingApi.CreateProject("My New Project");
}
Ajouter des balises au projet
Cette méthode définit les balises sur lesquelles vous effectuez l’apprentissage du modèle.
private static void AddTags(CustomVisionTrainingClient trainingApi, Project project)
{
// Make two tags in the new project
hemlockTag = trainingApi.CreateTag(project.Id, "Hemlock");
japaneseCherryTag = trainingApi.CreateTag(project.Id, "Japanese Cherry");
}
Charger et étiqueter des images
Tout d’abord, téléchargez les exemples d’images pour ce projet. Enregistrez le contenu du dossier sample Images sur votre appareil local.
Définissez ensuite une méthode d’assistance pour charger les images dans ce répertoire. Vous devrez peut-être modifier l’argument GetFiles pour pointer vers l’emplacement où vos images sont enregistrées.
private static void LoadImagesFromDisk()
{
// this loads the images to be uploaded from disk into memory
hemlockImages = Directory.GetFiles(Path.Combine("Images", "Hemlock")).ToList();
japaneseCherryImages = Directory.GetFiles(Path.Combine("Images", "Japanese_Cherry")).ToList();
testImage = new MemoryStream(File.ReadAllBytes(Path.Combine("Images", "Test", "test_image.jpg")));
}
Ensuite, définissez une méthode pour charger les images, en appliquant des balises en fonction de leur emplacement de dossier. Les images sont déjà triées. Vous pouvez charger et étiqueter des images de manière itérative ou dans un lot (jusqu’à 64 par lot). Cet extrait de code contient des exemples des deux.
private static void UploadImages(CustomVisionTrainingClient trainingApi, Project project)
{
// Add some images to the tags
Console.WriteLine("\tUploading images");
LoadImagesFromDisk();
// Images can be uploaded one at a time
foreach (var image in hemlockImages)
{
using (var stream = new MemoryStream(File.ReadAllBytes(image)))
{
trainingApi.CreateImagesFromData(project.Id, stream, new List<Guid>() { hemlockTag.Id });
}
}
// Or uploaded in a single batch
var imageFiles = japaneseCherryImages.Select(img => new ImageFileCreateEntry(Path.GetFileName(img), File.ReadAllBytes(img))).ToList();
trainingApi.CreateImagesFromFiles(project.Id, new ImageFileCreateBatch(imageFiles, new List<Guid>() { japaneseCherryTag.Id }));
}
Entraîner le projet
Cette méthode crée la première itération d’entraînement dans le projet. Il interroge le service jusqu’à ce que la formation soit terminée.
private static void TrainProject(CustomVisionTrainingClient trainingApi, Project project)
{
// Now there are images with tags start training the project
Console.WriteLine("\tTraining");
iteration = trainingApi.TrainProject(project.Id);
// The returned iteration will be in progress, and can be queried periodically to see when it has completed
while (iteration.Status == "Training")
{
Console.WriteLine("Waiting 10 seconds for training to complete...");
Thread.Sleep(10000);
// Re-query the iteration to get it's updated status
iteration = trainingApi.GetIteration(project.Id, iteration.Id);
}
}
Conseil
S'entraîner avec des balises sélectionnées
Vous pouvez éventuellement effectuer l’apprentissage uniquement sur un sous-ensemble de vos balises appliquées. Vous pouvez le faire si vous n’avez pas encore appliqué suffisamment de certaines balises, mais vous avez assez d’autres. Dans l’appel TrainProject , utilisez le trainingParameters paramètre. Construisez un TrainingParameters et définissez sa SelectedTags propriété sur une liste d’ID des balises que vous souhaitez utiliser. Le modèle s’entraîne pour reconnaître uniquement les étiquettes de cette liste.
Publier l’itération actuelle
Cette méthode rend l’itération actuelle du modèle disponible pour l’interrogation. Vous pouvez utiliser le nom du modèle comme référence pour envoyer des demandes de prédiction. Vous devez entrer votre propre valeur pour predictionResourceId. Vous trouverez l'ID de ressource de prédiction sous l'onglet Properties dans le portail Azure, répertorié en tant qu'ID Resource ID.
private static void PublishIteration(CustomVisionTrainingClient trainingApi, Project project)
{
trainingApi.PublishIteration(project.Id, iteration.Id, publishedModelName, predictionResourceId);
Console.WriteLine("Done!\n");
// Now there is a trained endpoint, it can be used to make a prediction
}
Tester le point de terminaison de prédiction
Cette partie du script charge l’image de test, interroge le point de terminaison du modèle et génère des données de prédiction dans la console.
private static void TestIteration(CustomVisionPredictionClient predictionApi, Project project)
{
// Make a prediction against the new project
Console.WriteLine("Making a prediction:");
var result = predictionApi.ClassifyImage(project.Id, publishedModelName, testImage);
// Loop over each prediction and write out the results
foreach (var c in result.Predictions)
{
Console.WriteLine($"\t{c.TagName}: {c.Probability:P1}");
}
}
Exécuter l’application
Exécutez l’application en cliquant sur le bouton Déboguer en haut de la fenêtre IDE.
Lorsque l’application s’exécute, elle doit ouvrir une fenêtre de console et écrire la sortie suivante :
Creating new project:
Uploading images
Training
Done!
Making a prediction:
Hemlock: 95.0%
Japanese Cherry: 0.0%
Vous pouvez ensuite vérifier que l’image de test (trouvée dans Images/Test/) est étiquetée de manière appropriée. Appuyez sur n’importe quelle touche pour quitter l’application. Vous pouvez également revenir au site web Custom Vision et voir l’état actuel de votre projet nouvellement créé.
Nettoyer les ressources
Si vous souhaitez implémenter votre propre projet de classification d’images (ou essayer un projet de détection d’objet à la place), vous pouvez supprimer le projet d’identification d’arborescence de cet exemple. Un abonnement gratuit permet de créer deux projets dans Custom Vision.
Sur le site web Custom Vision, accédez à Projects et sélectionnez la corbeille sous Mon nouveau Project.
Contenu connexe
Vous avez maintenant vu comment chaque étape du processus de détection d’objet peut être effectuée dans le code. Cet exemple exécute une seule itération d’entraînement, mais vous devez souvent entraîner et tester votre modèle plusieurs fois afin de le rendre plus précis.
- Qu’est-ce que Custom Vision ?
- Le code source de cet exemple est disponible sur GitHub
- Documentation de référence du Kit de développement logiciel (SDK)
Ce guide fournit des instructions et des exemples de code pour vous aider à commencer à utiliser la bibliothèque cliente Custom Vision pour Go afin de créer un modèle de classification d’images. Vous allez créer un projet, ajouter des balises, entraîner le projet et utiliser l’URL du point de terminaison de prédiction du projet pour le tester par programmation. Utilisez cet exemple comme modèle pour créer votre propre application de reconnaissance d’image.
Note
Si vous souhaitez générer et entraîner un modèle de classification sans écrire de code, consultez les instructions basées sur le navigateur.
Utilisez la bibliothèque de client Custom Vision pour Accéder à :
- Créer un projet Custom Vision
- Ajouter des balises au projet
- Charger et étiqueter des images
- Entraîner le projet
- Publier l’itération actuelle
- Tester le point de terminaison de prédiction
Documentation de référence sur (formation) et (prédiction)
Conditions préalables
- Un abonnement Azure. Vous pouvez en créer un gratuitement.
- Accédez à la version 1.8 ou ultérieure.
- Une fois que vous avez votre abonnement Azure, créez une ressource Custom Vision dans le portail Azure pour créer une ressource de formation et de prédiction.
- Vous pouvez utiliser le niveau tarifaire gratuit (
F0) pour essayer le service et effectuer une mise à niveau ultérieure vers un niveau payant pour la production.
- Vous pouvez utiliser le niveau tarifaire gratuit (
Créer des variables d’environnement
Dans cet exemple, vous allez écrire vos informations d’identification dans des variables d’environnement sur l’ordinateur local exécutant l’application.
Accédez au portail Azure. Si les ressources Custom Vision que vous avez créées dans la section Conditions préalables déployées avec succès, sélectionnez le bouton Accéder à la ressource sous Étapes suivantes. Vous trouverez vos clés et points de terminaison dans les pages Clés et points de terminaison des ressources, sous Gestion des ressources. Vous devez obtenir les clés de votre ressource d’entraînement et de votre ressource de prédiction, ainsi que les points de terminaison d’API.
Vous trouverez l'ID de ressource de prédiction sous l'onglet Properties dans le portail Azure, répertorié sous la forme Resource ID.
Conseil
Vous utilisez https://www.customvision.ai également pour obtenir ces valeurs. Une fois connecté, sélectionnez l’icône Paramètres en haut à droite. Dans les pages Paramètres , vous pouvez afficher toutes les clés, l’ID de ressource et les points de terminaison.
Pour définir les variables d’environnement, ouvrez une fenêtre de console et suivez les instructions de votre système d’exploitation et de votre environnement de développement.
- Pour définir la variable d’environnement
VISION_TRAINING KEY, remplacez<your-training-key>par l’une des clés de votre ressource d’apprentissage. - Pour définir la variable d’environnement
VISION_TRAINING_ENDPOINT, remplacez<your-training-endpoint>par le point de terminaison de votre ressource d’entraînement. - Pour définir la variable d’environnement
VISION_PREDICTION_KEY, remplacez<your-prediction-key>par l’une des clés de votre ressource de prédiction. - Pour définir la variable d’environnement
VISION_PREDICTION_ENDPOINT, remplacez<your-prediction-endpoint>par le point de terminaison de votre ressource de prédiction. - Pour définir la variable d’environnement
VISION_PREDICTION_RESOURCE_ID, remplacez<your-resource-id>par l’ID de ressource de votre ressource de prédiction.
Important
Nous vous recommandons l'authentification Microsoft Entra ID avec les identités managées pour les ressources Azure pour éviter de stocker les identifiants avec vos applications qui s'exécutent dans le cloud.
Utilisez des clés API avec précaution. N’incluez pas la clé API directement dans votre code et ne la publiez jamais publiquement. Si vous utilisez des clés API, stockez-les en toute sécurité dans Azure Key Vault, faites pivoter les clés régulièrement et limitez l’accès aux Azure Key Vault à l’aide du contrôle d’accès en fonction du rôle et des restrictions d’accès réseau. Pour plus d’informations sur l’utilisation sécurisée des clés API dans vos applications, consultez les API avec Azure Key Vault.
Pour plus d’informations sur la sécurité des services d’INTELLIGENCE artificielle, consultez Demandes d’authentification à Azure AI services.
setx VISION_TRAINING_KEY <your-training-key>
setx VISION_TRAINING_ENDPOINT <your-training-endpoint>
setx VISION_PREDICTION_KEY <your-prediction-key>
setx VISION_PREDICTION_ENDPOINT <your-prediction-endpoint>
setx VISION_PREDICTION_RESOURCE_ID <your-resource-id>
Après avoir ajouté les variables d’environnement, vous devrez peut-être redémarrer les programmes en cours d’exécution qui lisent les variables d’environnement, y compris la fenêtre de console.
Mise en place
Installer la bibliothèque de client Custom Vision
Pour écrire une application d’analyse d’images avec Custom Vision pour Go, vous avez besoin de la bibliothèque de client du service Custom Vision. Exécutez la commande suivante dans PowerShell :
go get -u github.com/Azure/azure-sdk-for-go/...
Ou si vous utilisez dep, dans votre dépôt, exécutez :
dep ensure -add github.com/Azure/azure-sdk-for-go
Obtenir les exemples d’images
Cet exemple utilise les images du référentiel Foundry Tools Python SDK Samples sur GitHub. Clonez ou téléchargez ce référentiel dans votre environnement de développement. N’oubliez pas l’emplacement de son dossier pour une étape ultérieure.
Créer le projet Custom Vision
Créez un fichier appelé sample.go dans votre répertoire de projet préféré, puis ouvrez-le dans votre éditeur de code préféré.
Ajoutez le code suivant à votre script pour créer un projet de service Custom Vision.
Consultez la méthode CreateProject pour spécifier d’autres options lorsque vous créez votre projet (expliqué dans le guide générer un portail web classifieur ).
import(
"context"
"bytes"
"fmt"
"io/ioutil"
"path"
"log"
"time"
"github.com/Azure/azure-sdk-for-go/services/cognitiveservices/v3.0/customvision/training"
"github.com/Azure/azure-sdk-for-go/services/cognitiveservices/v3.0/customvision/prediction"
)
var (
training_key string = os.Getenv("VISION_TRAINING_KEY")
prediction_key string = os.Getenv("VISION_PREDICTION_KEY")
prediction_resource_id = os.Getenv("VISION_PREDICTION_RESOURCE_ID")
endpoint string = os.Getenv("VISION_ENDPOINT")
project_name string = "Go Sample Project"
iteration_publish_name = "classifyModel"
sampleDataDirectory = "<path to sample images>"
)
func main() {
fmt.Println("Creating project...")
ctx = context.Background()
trainer := training.New(training_key, endpoint)
project, err := trainer.CreateProject(ctx, project_name, "sample project", nil, string(training.Multilabel))
if (err != nil) {
log.Fatal(err)
}
Créer des balises dans le projet
Pour créer des balises de classification dans votre projet, ajoutez le code suivant à la fin de sample.go :
// Make two tags in the new project
hemlockTag, _ := trainer.CreateTag(ctx, *project.ID, "Hemlock", "Hemlock tree tag", string(training.Regular))
cherryTag, _ := trainer.CreateTag(ctx, *project.ID, "Japanese Cherry", "Japanese cherry tree tag", string(training.Regular))
Charger et étiqueter des images
Pour ajouter les exemples d’images au projet, insérez le code suivant après la création de la balise. Ce code charge chaque image avec sa balise correspondante. Vous pouvez charger jusqu’à 64 images dans un seul lot.
Note
Vous devrez modifier le chemin vers les images en fonction de l’emplacement où vous avez téléchargé précédemment le projet d'exemples du SDK Go des Outils Foundry.
fmt.Println("Adding images...")
japaneseCherryImages, err := ioutil.ReadDir(path.Join(sampleDataDirectory, "Japanese Cherry"))
if err != nil {
fmt.Println("Error finding Sample images")
}
hemLockImages, err := ioutil.ReadDir(path.Join(sampleDataDirectory, "Hemlock"))
if err != nil {
fmt.Println("Error finding Sample images")
}
for _, file := range hemLockImages {
imageFile, _ := ioutil.ReadFile(path.Join(sampleDataDirectory, "Hemlock", file.Name()))
imageData := ioutil.NopCloser(bytes.NewReader(imageFile))
trainer.CreateImagesFromData(ctx, *project.ID, imageData, []string{ hemlockTag.ID.String() })
}
for _, file := range japaneseCherryImages {
imageFile, _ := ioutil.ReadFile(path.Join(sampleDataDirectory, "Japanese Cherry", file.Name()))
imageData := ioutil.NopCloser(bytes.NewReader(imageFile))
trainer.CreateImagesFromData(ctx, *project.ID, imageData, []string{ cherryTag.ID.String() })
}
Entraîner et publier le projet
Ce code crée la première itération du modèle de prédiction, puis publie cette itération sur le point de terminaison de prédiction. Le nom donné à l’itération publiée peut être utilisé pour envoyer des demandes de prédiction. Une itération n’est pas disponible dans le point de terminaison de prédiction tant qu’elle n’est pas publiée.
fmt.Println("Training...")
iteration, _ := trainer.TrainProject(ctx, *project.ID)
for {
if *iteration.Status != "Training" {
break
}
fmt.Println("Training status: " + *iteration.Status)
time.Sleep(1 * time.Second)
iteration, _ = trainer.GetIteration(ctx, *project.ID, *iteration.ID)
}
fmt.Println("Training status: " + *iteration.Status)
trainer.PublishIteration(ctx, *project.ID, *iteration.ID, iteration_publish_name, prediction_resource_id))
Utiliser le point de terminaison de prédiction
Pour envoyer une image au point de terminaison de prédiction et récupérer la prédiction, ajoutez le code suivant à la fin du fichier :
fmt.Println("Predicting...")
predictor := prediction.New(prediction_key, endpoint)
testImageData, _ := ioutil.ReadFile(path.Join(sampleDataDirectory, "Test", "test_image.jpg"))
results, _ := predictor.ClassifyImage(ctx, *project.ID, iteration_publish_name, ioutil.NopCloser(bytes.NewReader(testImageData)), "")
for _, prediction := range *results.Predictions {
fmt.Printf("\t%s: %.2f%%", *prediction.TagName, *prediction.Probability * 100)
fmt.Println("")
}
}
Exécuter l’application
Exécutez l’application à l’aide de la commande suivante :
go run sample.go
La sortie de l’application doit être similaire au texte suivant :
Creating project...
Adding images...
Training...
Training status: Training
Training status: Training
Training status: Training
Training status: Completed
Done!
Hemlock: 93.53%
Japanese Cherry: 0.01%
Vous pouvez ensuite vérifier que l’image de test (trouvée dans <base_image_url>/Images/Test/) est étiquetée de manière appropriée. Vous pouvez également revenir au site web Custom Vision et voir l’état actuel de votre projet nouvellement créé.
Nettoyer les ressources
Si vous souhaitez implémenter votre propre projet de classification d’images (ou essayer un projet de détection d’objet à la place), vous pouvez supprimer le projet d’identification d’arborescence de cet exemple. Un abonnement gratuit permet de créer deux projets dans Custom Vision.
Sur le site web Custom Vision, accédez à Projects et sélectionnez la corbeille sous Mon nouveau Project.
Contenu connexe
Vous avez maintenant vu comment chaque étape du processus de détection d’objet peut être effectuée dans le code. Cet exemple exécute une seule itération d’entraînement, mais vous devez souvent entraîner et tester votre modèle plusieurs fois afin de le rendre plus précis.
- Qu’est-ce que Custom Vision ?
- documentation de référence SDK (formation)
- documentation de référence SDK (prédiction)
Commencez à utiliser la bibliothèque cliente Custom Vision pour Java pour créer un modèle de classification d’images. Suivez ces étapes pour installer le package et essayer l’exemple de code pour les tâches de base. Utilisez cet exemple comme modèle pour créer votre propre application de reconnaissance d’image.
Note
Si vous souhaitez générer et entraîner un modèle de classification sans écrire de code, consultez les instructions basées sur le navigateur.
Utilisez la bibliothèque de client Custom Vision pour Java pour :
- Créer un projet Custom Vision
- Ajouter des balises au projet
- Charger et étiqueter des images
- Entraîner le projet
- Publier l’itération actuelle
- Tester le point de terminaison de prédiction
Documentation de référence | Code source de la bibliothèque pour (formation) et (prédiction) | Artefact (Maven) pour (formation) et (prédiction) | Exemples
Conditions préalables
- Un abonnement Azure. Vous pouvez en créer un gratuitement.
- Version actuelle du kit de développement Java(JDK).
- L’outil de génération Gradle ou un autre gestionnaire de dépendances.
- Une fois que vous avez votre abonnement Azure, créez une ressource Custom Vision dans le portail Azure pour créer une ressource de formation et de prédiction.
- Vous pouvez utiliser le niveau tarifaire gratuit (
F0) pour essayer le service et effectuer une mise à niveau ultérieure vers un niveau payant pour la production.
- Vous pouvez utiliser le niveau tarifaire gratuit (
Créer des variables d’environnement
Dans cet exemple, vous allez écrire vos informations d’identification dans des variables d’environnement sur l’ordinateur local exécutant l’application.
Accédez au portail Azure. Si les ressources Custom Vision que vous avez créées dans la section Conditions préalables déployées avec succès, sélectionnez le bouton Accéder à la ressource sous Étapes suivantes. Vous trouverez vos clés et points de terminaison dans les pages Clés et points de terminaison des ressources, sous Gestion des ressources. Vous devez obtenir les clés de votre ressource d’entraînement et de votre ressource de prédiction, ainsi que les points de terminaison d’API.
Vous trouverez l'ID de ressource de prédiction sous l'onglet Properties dans le portail Azure, répertorié sous la forme Resource ID.
Conseil
Vous utilisez https://www.customvision.ai également pour obtenir ces valeurs. Une fois connecté, sélectionnez l’icône Paramètres en haut à droite. Dans les pages Paramètres , vous pouvez afficher toutes les clés, l’ID de ressource et les points de terminaison.
Pour définir les variables d’environnement, ouvrez une fenêtre de console et suivez les instructions de votre système d’exploitation et de votre environnement de développement.
- Pour définir la variable d’environnement
VISION_TRAINING KEY, remplacez<your-training-key>par l’une des clés de votre ressource d’apprentissage. - Pour définir la variable d’environnement
VISION_TRAINING_ENDPOINT, remplacez<your-training-endpoint>par le point de terminaison de votre ressource d’entraînement. - Pour définir la variable d’environnement
VISION_PREDICTION_KEY, remplacez<your-prediction-key>par l’une des clés de votre ressource de prédiction. - Pour définir la variable d’environnement
VISION_PREDICTION_ENDPOINT, remplacez<your-prediction-endpoint>par le point de terminaison de votre ressource de prédiction. - Pour définir la variable d’environnement
VISION_PREDICTION_RESOURCE_ID, remplacez<your-resource-id>par l’ID de ressource de votre ressource de prédiction.
Important
Nous vous recommandons l'authentification Microsoft Entra ID avec les identités managées pour les ressources Azure pour éviter de stocker les identifiants avec vos applications qui s'exécutent dans le cloud.
Utilisez des clés API avec précaution. N’incluez pas la clé API directement dans votre code et ne la publiez jamais publiquement. Si vous utilisez des clés API, stockez-les en toute sécurité dans Azure Key Vault, faites pivoter les clés régulièrement et limitez l’accès aux Azure Key Vault à l’aide du contrôle d’accès en fonction du rôle et des restrictions d’accès réseau. Pour plus d’informations sur l’utilisation sécurisée des clés API dans vos applications, consultez les API avec Azure Key Vault.
Pour plus d’informations sur la sécurité des services d’INTELLIGENCE artificielle, consultez Demandes d’authentification à Azure AI services.
setx VISION_TRAINING_KEY <your-training-key>
setx VISION_TRAINING_ENDPOINT <your-training-endpoint>
setx VISION_PREDICTION_KEY <your-prediction-key>
setx VISION_PREDICTION_ENDPOINT <your-prediction-endpoint>
setx VISION_PREDICTION_RESOURCE_ID <your-resource-id>
Après avoir ajouté les variables d’environnement, vous devrez peut-être redémarrer les programmes en cours d’exécution qui lisent les variables d’environnement, y compris la fenêtre de console.
Mise en place
Créer un projet Gradle
Dans une fenêtre de console (par exemple, cmd, PowerShell ou Bash), créez un répertoire pour votre application et accédez-y.
mkdir myapp && cd myapp
Exécutez la gradle init commande à partir de votre répertoire de travail. Cette commande crée des fichiers de build essentiels pour Gradle, notamment build.gradle.kts, qui est utilisé lors de l’exécution pour créer et configurer votre application.
gradle init --type basic
Lorsque vous êtes invité à choisir une DSL, sélectionnez Kotlin.
Installer la bibliothèque cliente
Recherchez build.gradle.kts et ouvrez-le avec votre IDE ou éditeur de texte préféré. Copiez ensuite dans la configuration de build suivante. Cette configuration définit le projet comme une application Java dont le point d’entrée est la classe CustomVisionQuickstart. Il importe les bibliothèques Custom Vision.
plugins {
java
application
}
application {
mainClassName = "CustomVisionQuickstart"
}
repositories {
mavenCentral()
}
dependencies {
compile(group = "com.azure", name = "azure-cognitiveservices-customvision-training", version = "1.1.0-preview.2")
compile(group = "com.azure", name = "azure-cognitiveservices-customvision-prediction", version = "1.1.0-preview.2")
}
Créer un fichier Java
À partir de votre répertoire de travail, exécutez la commande suivante pour créer un dossier source de projet :
mkdir -p src/main/java
Accédez au nouveau dossier et créez un fichier appelé CustomVisionQuickstart.java. Ouvrez-le dans votre éditeur ou IDE préféré et ajoutez les instructions suivantes import :
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.UUID;
import com.google.common.io.ByteStreams;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.models.Classifier;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.models.Domain;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.models.DomainType;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.models.ImageFileCreateBatch;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.models.ImageFileCreateEntry;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.models.Iteration;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.models.Project;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.models.Region;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.models.TrainProjectOptionalParameter;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.CustomVisionTrainingClient;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.Trainings;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.CustomVisionTrainingManager;
import com.microsoft.azure.cognitiveservices.vision.customvision.prediction.models.ImagePrediction;
import com.microsoft.azure.cognitiveservices.vision.customvision.prediction.models.Prediction;
import com.microsoft.azure.cognitiveservices.vision.customvision.prediction.CustomVisionPredictionClient;
import com.microsoft.azure.cognitiveservices.vision.customvision.prediction.CustomVisionPredictionManager;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.models.Tag;
Conseil
Vous souhaitez afficher l’ensemble du fichier de code de démarrage rapide à la fois ? Vous pouvez le trouver sur GitHub qui contient les exemples de code de ce guide de démarrage rapide.
Dans la classe de CustomVisionQuickstart l’application, créez des variables qui récupèrent les clés et le point de terminaison de votre ressource à partir de variables d’environnement.
// retrieve environment variables
final static String trainingApiKey = System.getenv("VISION_TRAINING_KEY");
final static String trainingEndpoint = System.getenv("VISION_TRAINING_ENDPOINT");
final static String predictionApiKey = System.getenv("VISION_PREDICTION_KEY");
final static String predictionEndpoint = System.getenv("VISION_PREDICTION_ENDPOINT");
final static String predictionResourceId = System.getenv("VISION_PREDICTION_RESOURCE_ID");
Important
N’oubliez pas de supprimer les clés de votre code lorsque vous avez terminé, et ne les publiez jamais publiquement. Pour la production, utilisez un moyen sécurisé de stocker et d’accéder à vos informations d’identification comme Azure Key Vault. Pour plus d’informations, consultez l’article sur la sécurité des outils Foundry.
Dans la méthode main de l'application, ajoutez des appels aux méthodes utilisées dans ce quickstart. Vous les définirez plus tard.
Project project = createProject(trainClient);
addTags(trainClient, project);
uploadImages(trainClient, project);
trainProject(trainClient, project);
publishIteration(trainClient, project);
testProject(predictor, project);
Modèle objet
Les classes et interfaces suivantes gèrent certaines des principales fonctionnalités de la bibliothèque cliente Custom Vision Java.
| Nom | Description |
|---|---|
| CustomVisionTrainingClient | Cette classe gère la création, l’entraînement et la publication de vos modèles. |
| CustomVisionPredictionClient | Cette classe gère les requêtes sur vos modèles pour les prédictions de classification d'images. |
| ImagePrediction | Cette classe définit une prédiction unique sur une seule image. Il inclut des propriétés pour l’ID et le nom de l’objet, ainsi qu’un score de confiance. |
Exemples de code
Ces extraits de code vous montrent comment effectuer les tâches suivantes avec la bibliothèque cliente Custom Vision pour Java :
- Authentifier le client
- Créer un projet Custom Vision
- Ajouter des balises au projet
- Charger et étiqueter des images
- Entraîner le projet
- Publier l’itération actuelle
- Tester le point de terminaison de prédiction
Authentifier le client
Dans la méthode main, instanciez des clients pour l’entraînement et la prédiction à l’aide de votre point de terminaison et de vos clés.
// Authenticate
CustomVisionTrainingClient trainClient = CustomVisionTrainingManager
.authenticate(trainingEndpoint, trainingApiKey)
.withEndpoint(trainingEndpoint);
CustomVisionPredictionClient predictor = CustomVisionPredictionManager
.authenticate(predictionEndpoint, predictionApiKey)
.withEndpoint(predictionEndpoint);
Créer un projet Custom Vision
Cette méthode suivante crée un projet de classification d’images. Le projet créé s’affiche sur le site web Custom Vision que vous avez visité précédemment. Consultez les surcharges de méthode CreateProject pour spécifier d’autres options lorsque vous créez votre projet (expliqué dans le guide générer un portail web détecteur).
public static Project createProject(CustomVisionTrainingClient trainClient) {
System.out.println("ImageClassification Sample");
Trainings trainer = trainClient.trainings();
System.out.println("Creating project...");
Project project = trainer.createProject().withName("Sample Java Project").execute();
return project;
}
Ajouter des balises à votre projet
Cette méthode définit les balises sur lesquelles vous allez entraîner le modèle.
public static void addTags(CustomVisionTrainingClient trainClient, Project project) {
Trainings trainer = trainClient.trainings();
// create hemlock tag
Tag hemlockTag = trainer.createTag().withProjectId(project.id()).withName("Hemlock").execute();
// create cherry tag
Tag cherryTag = trainer.createTag().withProjectId(project.id()).withName("Japanese Cherry").execute();
}
Charger et étiqueter des images
Tout d’abord, téléchargez les exemples d’images pour ce projet. Enregistrez le contenu du dossier sample Images sur votre appareil local.
public static void uploadImages(CustomVisionTrainingClient trainClient, Project project) {
Trainings trainer = trainClient.trainings();
System.out.println("Adding images...");
for (int i = 1; i <= 10; i++) {
String fileName = "hemlock_" + i + ".jpg";
byte[] contents = GetImage("/Hemlock", fileName);
AddImageToProject(trainer, project, fileName, contents, hemlockTag.id(), null);
}
for (int i = 1; i <= 10; i++) {
String fileName = "japanese_cherry_" + i + ".jpg";
byte[] contents = GetImage("/Japanese_Cherry", fileName);
AddImageToProject(trainer, project, fileName, contents, cherryTag.id(), null);
}
}
L’extrait de code précédent utilise deux fonctions d’assistance qui récupèrent les images en tant que flux de ressources et les chargent dans le service (vous pouvez charger jusqu’à 64 images dans un lot unique).
private static void AddImageToProject(Trainings trainer, Project project, String fileName, byte[] contents,
UUID tag, double[] regionValues) {
System.out.println("Adding image: " + fileName);
ImageFileCreateEntry file = new ImageFileCreateEntry().withName(fileName).withContents(contents);
ImageFileCreateBatch batch = new ImageFileCreateBatch().withImages(Collections.singletonList(file));
// If Optional region is specified, tack it on and place the tag there,
// otherwise
// add it to the batch.
if (regionValues != null) {
Region region = new Region().withTagId(tag).withLeft(regionValues[0]).withTop(regionValues[1])
.withWidth(regionValues[2]).withHeight(regionValues[3]);
file = file.withRegions(Collections.singletonList(region));
} else {
batch = batch.withTagIds(Collections.singletonList(tag));
}
trainer.createImagesFromFiles(project.id(), batch);
}
private static byte[] GetImage(String folder, String fileName) {
try {
return ByteStreams.toByteArray(CustomVisionSamples.class.getResourceAsStream(folder + "/" + fileName));
} catch (Exception e) {
System.out.println(e.getMessage());
e.printStackTrace();
}
return null;
}
Entraîner le projet
Cette méthode crée la première itération d’entraînement dans le projet. Il interroge le service jusqu’à ce que la formation soit terminée.
public static void trainProject(CustomVisionTrainingClient trainClient, Project project) {
System.out.println("Training...");
Trainings trainer = trainClient.trainings();
Iteration iteration = trainer.trainProject(project.id(), new TrainProjectOptionalParameter());
while (iteration.status().equals("Training")) {
System.out.println("Training Status: " + iteration.status());
Thread.sleep(1000);
iteration = trainer.getIteration(project.id(), iteration.id());
}
System.out.println("Training Status: " + iteration.status());
}
Publier l’itération actuelle
Cette méthode rend l’itération actuelle du modèle disponible pour l’interrogation. Vous pouvez utiliser le nom du modèle comme référence pour envoyer des demandes de prédiction. Vous devez entrer votre propre valeur pour predictionResourceId. Vous trouverez l'ID de ressource de prédiction sous l'onglet Properties dans le portail Azure, répertorié en tant qu'ID Resource ID.
public static String publishIteration(CustomVisionTrainingClient trainClient, Project project) {
Trainings trainer = trainClient.trainings();
// The iteration is now trained. Publish it to the prediction endpoint.
String publishedModelName = "myModel";
trainer.publishIteration(project.id(), iteration.id(), publishedModelName, predictionResourceId);
}
Tester le point de terminaison de prédiction
Cette méthode charge l’image de test, interroge le point de terminaison du modèle et génère des données de prédiction dans la console.
// load test image
public static void testProject(CustomVisionPredictionClient predictor, Project project) {
byte[] testImage = GetImage("/Test", "test_image.jpg");
// predict
ImagePrediction results = predictor.predictions().classifyImage().withProjectId(project.id())
.withPublishedName(publishedModelName).withImageData(testImage).execute();
for (Prediction prediction : results.predictions()) {
System.out.println(String.format("\t%s: %.2f%%", prediction.tagName(), prediction.probability() * 100.0f));
}
}
Exécuter l’application
Vous pouvez créer l’application avec :
gradle build
Exécutez l’application avec la gradle run commande :
gradle run
Nettoyer les ressources
Si vous souhaitez nettoyer et supprimer un abonnement Azure AI services, vous pouvez supprimer la ressource ou le groupe de ressources. La suppression du groupe de ressources supprime également toutes les autres ressources associées.
Si vous souhaitez implémenter votre propre projet de classification d’images (ou essayer un projet de détection d’objet à la place), vous pouvez supprimer le projet d’identification d’arborescence de cet exemple. Un abonnement gratuit permet de créer deux projets dans Custom Vision.
Sur le site web Custom Vision, accédez à Projects et sélectionnez la corbeille sous Mon nouveau Project.
Contenu connexe
Vous avez maintenant vu comment chaque étape du processus de détection d’objet peut être effectuée dans le code. Cet exemple exécute une seule itération d’entraînement, mais vous devez souvent entraîner et tester votre modèle plusieurs fois afin de le rendre plus précis.
- Qu’est-ce que Custom Vision ?
- Le code source de cet exemple est disponible sur GitHub
Ce guide fournit des instructions et des exemples de code pour vous aider à commencer à utiliser la bibliothèque cliente Custom Vision pour Node.js pour créer un modèle de classification d’images. Vous pouvez créer un projet, ajouter des balises, entraîner le projet et utiliser l’URL du point de terminaison de prédiction du projet pour le tester par programmation. Utilisez cet exemple comme modèle pour créer votre propre application de reconnaissance d’image.
Note
Si vous souhaitez générer et entraîner un modèle de classification sans écrire de code, consultez les instructions basées sur le navigateur.
Utilisez la bibliothèque de client Custom Vision pour Node.js pour :
- Créer un projet Custom Vision
- Ajouter des balises au projet
- Charger et étiqueter des images
- Entraîner le projet
- Publier l’itération actuelle
- Tester le point de terminaison de prédiction
Documentation de référence pour (formation) et (prédiction) | Package (npm) pour (entraînement) et (prédiction) | Exemples
Conditions préalables
- Un abonnement Azure. Vous pouvez en créer un gratuitement.
- Version actuelle de Node.js.
- Une fois que vous avez votre abonnement Azure, créez une ressource Custom Vision dans le portail Azure pour créer une ressource de formation et de prédiction.
- Vous pouvez utiliser le niveau tarifaire gratuit (
F0) pour essayer le service et effectuer une mise à niveau ultérieure vers un niveau payant pour la production.
- Vous pouvez utiliser le niveau tarifaire gratuit (
Créer des variables d’environnement
Dans cet exemple, vous allez écrire vos informations d’identification dans des variables d’environnement sur l’ordinateur local exécutant l’application.
Accédez au portail Azure. Si les ressources Custom Vision que vous avez créées dans la section Conditions préalables déployées avec succès, sélectionnez le bouton Accéder à la ressource sous Étapes suivantes. Vous trouverez vos clés et points de terminaison dans les pages Clés et points de terminaison des ressources, sous Gestion des ressources. Vous devez obtenir les clés de votre ressource d’entraînement et de votre ressource de prédiction, ainsi que les points de terminaison d’API.
Vous trouverez l'ID de ressource de prédiction sous l'onglet Properties dans le portail Azure, répertorié sous la forme Resource ID.
Conseil
Vous utilisez https://www.customvision.ai également pour obtenir ces valeurs. Une fois connecté, sélectionnez l’icône Paramètres en haut à droite. Dans les pages Paramètres , vous pouvez afficher toutes les clés, l’ID de ressource et les points de terminaison.
Pour définir les variables d’environnement, ouvrez une fenêtre de console et suivez les instructions de votre système d’exploitation et de votre environnement de développement.
- Pour définir la variable d’environnement
VISION_TRAINING KEY, remplacez<your-training-key>par l’une des clés de votre ressource d’apprentissage. - Pour définir la variable d’environnement
VISION_TRAINING_ENDPOINT, remplacez<your-training-endpoint>par le point de terminaison de votre ressource d’entraînement. - Pour définir la variable d’environnement
VISION_PREDICTION_KEY, remplacez<your-prediction-key>par l’une des clés de votre ressource de prédiction. - Pour définir la variable d’environnement
VISION_PREDICTION_ENDPOINT, remplacez<your-prediction-endpoint>par le point de terminaison de votre ressource de prédiction. - Pour définir la variable d’environnement
VISION_PREDICTION_RESOURCE_ID, remplacez<your-resource-id>par l’ID de ressource de votre ressource de prédiction.
Important
Nous vous recommandons l'authentification Microsoft Entra ID avec les identités managées pour les ressources Azure pour éviter de stocker les identifiants avec vos applications qui s'exécutent dans le cloud.
Utilisez des clés API avec précaution. N’incluez pas la clé API directement dans votre code et ne la publiez jamais publiquement. Si vous utilisez des clés API, stockez-les en toute sécurité dans Azure Key Vault, faites pivoter les clés régulièrement et limitez l’accès aux Azure Key Vault à l’aide du contrôle d’accès en fonction du rôle et des restrictions d’accès réseau. Pour plus d’informations sur l’utilisation sécurisée des clés API dans vos applications, consultez les API avec Azure Key Vault.
Pour plus d’informations sur la sécurité des services d’INTELLIGENCE artificielle, consultez Demandes d’authentification à Azure AI services.
setx VISION_TRAINING_KEY <your-training-key>
setx VISION_TRAINING_ENDPOINT <your-training-endpoint>
setx VISION_PREDICTION_KEY <your-prediction-key>
setx VISION_PREDICTION_ENDPOINT <your-prediction-endpoint>
setx VISION_PREDICTION_RESOURCE_ID <your-resource-id>
Après avoir ajouté les variables d’environnement, vous devrez peut-être redémarrer les programmes en cours d’exécution qui lisent les variables d’environnement, y compris la fenêtre de console.
Mise en place
Créer une application Node.js
Dans une fenêtre de console (par exemple, cmd, PowerShell ou Bash), créez un répertoire pour votre application et accédez-y.
mkdir myapp && cd myapp
Exécutez la npm init commande pour créer une application de nœud avec un package.json fichier. Appuyez sur Entrée plusieurs fois pour terminer le processus.
npm init
Installer la bibliothèque cliente
Pour écrire une application d’analyse d’image avec Custom Vision pour Node.js, vous avez besoin des packages npm Custom Vision. Pour les installer, exécutez la commande suivante dans PowerShell :
npm install @azure/cognitiveservices-customvision-training
npm install @azure/cognitiveservices-customvision-prediction
Le fichier package.json de votre application est mis à jour avec les dépendances.
Créez un fichier nommé index.js et importez les bibliothèques suivantes :
const util = require('util');
const fs = require('fs');
const TrainingApi = require("@azure/cognitiveservices-customvision-training");
const PredictionApi = require("@azure/cognitiveservices-customvision-prediction");
const msRest = require("@azure/ms-rest-js");
Conseil
Vous souhaitez afficher l’ensemble du fichier de code de démarrage rapide à la fois ? Vous pouvez le trouver sur GitHub qui contient les exemples de code de ce guide de démarrage rapide.
Créez des variables pour le point de terminaison et les clés Azure de votre ressource.
// retrieve environment variables
const trainingKey = process.env["VISION_TRAINING_KEY"];
const trainingEndpoint = process.env["VISION_TRAINING_ENDPOINT"];
const predictionKey = process.env["VISION_PREDICTION_KEY"];
const predictionResourceId = process.env["VISION_PREDICTION_RESOURCE_ID"];
const predictionEndpoint = process.env["VISION_PREDICTION_ENDPOINT"];
Ajoutez également des champs pour le nom de votre projet et un paramètre de délai d’expiration pour les appels asynchrones.
const publishIterationName = "classifyModel";
const setTimeoutPromise = util.promisify(setTimeout);
Modèle objet
| Nom | Description |
|---|---|
| TrainingAPIClient | Cette classe gère la création, l’entraînement et la publication de vos modèles. |
| PredictionAPIClient | Cette classe gère les requêtes sur vos modèles pour les prédictions de classification d'images. |
| Prédiction | Cette interface définit une prédiction unique sur une seule image. Il inclut des propriétés pour l’ID et le nom de l’objet, ainsi qu’un score de confiance. |
Exemples de code
Ces extraits de code vous montrent comment effectuer les tâches suivantes avec la bibliothèque cliente Custom Vision pour JavaScript :
- Authentifier le client
- Créer un projet Custom Vision
- Ajouter des balises au projet
- Charger et étiqueter des images
- Entraîner le projet
- Publier l’itération actuelle
- Tester le point de terminaison de prédiction
Authentifier le client
Instanciez des objets clients avec votre point de terminaison et votre clé. Créez un objet ApiKeyCredentials avec votre clé et utilisez-le avec votre point de terminaison pour créer un objet TrainingAPIClient et PredictionAPIClient .
const credentials = new msRest.ApiKeyCredentials({ inHeader: { "Training-key": trainingKey } });
const trainer = new TrainingApi.TrainingAPIClient(credentials, trainingEndpoint);
const predictor_credentials = new msRest.ApiKeyCredentials({ inHeader: { "Prediction-key": predictionKey } });
const predictor = new PredictionApi.PredictionAPIClient(predictor_credentials, predictionEndpoint);
Créer un projet Custom Vision
Lancez une nouvelle fonction pour regrouper tous vos appels de fonction Custom Vision. Ajoutez le code suivant pour créer un projet de service Custom Vision.
(async () => {
console.log("Creating project...");
const sampleProject = await trainer.createProject("Sample Project");
Ajouter des balises au projet
Pour créer des balises de classification dans votre projet, ajoutez le code suivant à votre fonction :
const hemlockTag = await trainer.createTag(sampleProject.id, "Hemlock");
const cherryTag = await trainer.createTag(sampleProject.id, "Japanese Cherry");
Charger et étiqueter des images
Tout d’abord, téléchargez les exemples d’images pour ce projet. Enregistrez le contenu du dossier sample Images sur votre appareil local.
Pour ajouter les exemples d’images au projet, insérez le code suivant après la création de la balise. Ce code charge chaque image avec sa balise correspondante.
const sampleDataRoot = "Images";
console.log("Adding images...");
let fileUploadPromises = [];
const hemlockDir = `${sampleDataRoot}/Hemlock`;
const hemlockFiles = fs.readdirSync(hemlockDir);
hemlockFiles.forEach(file => {
fileUploadPromises.push(trainer.createImagesFromData(sampleProject.id, fs.readFileSync(`${hemlockDir}/${file}`), { tagIds: [hemlockTag.id] }));
});
const cherryDir = `${sampleDataRoot}/Japanese_Cherry`;
const japaneseCherryFiles = fs.readdirSync(cherryDir);
japaneseCherryFiles.forEach(file => {
fileUploadPromises.push(trainer.createImagesFromData(sampleProject.id, fs.readFileSync(`${cherryDir}/${file}`), { tagIds: [cherryTag.id] }));
});
await Promise.all(fileUploadPromises);
Important
Vous devez modifier le chemin d’accès aux images (sampleDataRoot) en fonction de l’emplacement où vous avez téléchargé le dépôt d’exemples du Kit de développement logiciel (SDK) Foundry Tools Python.
Entraîner le projet
Ce code crée la première itération du modèle de prédiction.
console.log("Training...");
let trainingIteration = await trainer.trainProject(sampleProject.id);
// Wait for training to complete
console.log("Training started...");
while (trainingIteration.status == "Training") {
console.log("Training status: " + trainingIteration.status);
await setTimeoutPromise(1000, null);
trainingIteration = await trainer.getIteration(sampleProject.id, trainingIteration.id)
}
console.log("Training status: " + trainingIteration.status);
Publier l’itération actuelle
Ce code publie l’itération entraînée sur le point de terminaison de prédiction. Le nom donné à l’itération publiée peut être utilisé pour envoyer des demandes de prédiction. Une itération n’est pas disponible dans le point de terminaison de prédiction tant qu’elle n’est pas publiée.
// Publish the iteration to the end point
await trainer.publishIteration(sampleProject.id, trainingIteration.id, publishIterationName, predictionResourceId);
Tester le point de terminaison de prédiction
Pour envoyer une image au point de terminaison de prédiction et récupérer la prédiction, ajoutez le code suivant à votre fonction.
const testFile = fs.readFileSync(`${sampleDataRoot}/Test/test_image.jpg`);
const results = await predictor.classifyImage(sampleProject.id, publishIterationName, testFile);
// Show results
console.log("Results:");
results.predictions.forEach(predictedResult => {
console.log(`\t ${predictedResult.tagName}: ${(predictedResult.probability * 100.0).toFixed(2)}%`);
});
Ensuite, fermez votre fonction Custom Vision et appelez-la.
})()
Exécuter l’application
Exécutez l’application avec la node commande dans votre fichier de démarrage rapide.
node index.js
La sortie de l’application doit être similaire au texte suivant :
Creating project...
Adding images...
Training...
Training started...
Training status: Training
Training status: Training
Training status: Training
Training status: Completed
Results:
Hemlock: 94.97%
Japanese Cherry: 0.01%
Vous pouvez ensuite vérifier que l’image de test (trouvée dans <sampleDataRoot>/Test/) est étiquetée de manière appropriée. Vous pouvez également revenir au site web Custom Vision et voir l’état actuel de votre projet nouvellement créé.
Si vous souhaitez implémenter votre propre projet de classification d’images (ou essayer un projet de détection d’objet à la place), vous pouvez supprimer le projet d’identification d’arborescence de cet exemple. Un abonnement gratuit permet de créer deux projets dans Custom Vision.
Sur le site web Custom Vision, accédez à Projects et sélectionnez la corbeille sous Mon nouveau Project.
Contenu connexe
Ce guide montre comment chaque étape du processus de détection d’objets peut être effectuée dans le code. Cet exemple exécute une seule itération d’entraînement, mais vous devez souvent entraîner et tester votre modèle plusieurs fois afin de le rendre plus précis.
- Qu’est-ce que Custom Vision ?
- Le code source de cet exemple est disponible sur GitHub
- documentation de référence SDK (formation)
- documentation de référence SDK (prédiction)
Prise en main de la bibliothèque de client Custom Vision pour Python. Suivez ces étapes pour installer le package et essayer l’exemple de code permettant de créer un modèle de classification d’images. Vous allez créer un projet, ajouter des balises, entraîner le projet et utiliser l’URL du point de terminaison de prédiction du projet pour le tester par programmation. Utilisez cet exemple comme modèle pour créer votre propre application de reconnaissance d’image.
Note
Si vous souhaitez générer et entraîner un modèle de classification sans écrire de code, consultez les instructions basées sur le navigateur.
Utilisez la bibliothèque de client Custom Vision pour Python pour :
- Créer un projet Custom Vision
- Ajouter des balises au projet
- Charger et étiqueter des images
- Entraîner le projet
- Publier l’itération actuelle
- Tester le point de terminaison de prédiction
Documentation de référence | Code source de la bibliothèque | Package (PyPI) | Exemples
Conditions préalables
- Un abonnement Azure. Vous pouvez en créer un gratuitement.
-
Python 3.x.
- Votre installation de Python doit inclure pip. Vous pouvez vérifier si pip est installé en exécutant
pip --versionla ligne de commande. Obtenez pip en installant la dernière version de Python.
- Votre installation de Python doit inclure pip. Vous pouvez vérifier si pip est installé en exécutant
- Une fois que vous avez votre abonnement Azure, créez une ressource Custom Vision dans le portail Azure pour créer une ressource de formation et de prédiction.
- Vous pouvez utiliser le niveau tarifaire gratuit (
F0) pour essayer le service et effectuer une mise à niveau ultérieure vers un niveau payant pour la production.
- Vous pouvez utiliser le niveau tarifaire gratuit (
Créer des variables d’environnement
Dans cet exemple, vous allez écrire vos informations d’identification dans des variables d’environnement sur l’ordinateur local exécutant l’application.
Accédez au portail Azure. Si les ressources Custom Vision que vous avez créées dans la section Conditions préalables déployées avec succès, sélectionnez le bouton Accéder à la ressource sous Étapes suivantes. Vous trouverez vos clés et points de terminaison dans les pages Clés et points de terminaison des ressources, sous Gestion des ressources. Vous devez obtenir les clés de votre ressource d’entraînement et de votre ressource de prédiction, ainsi que les points de terminaison d’API.
Vous trouverez l'ID de ressource de prédiction sous l'onglet Properties dans le portail Azure, répertorié sous la forme Resource ID.
Conseil
Vous utilisez https://www.customvision.ai également pour obtenir ces valeurs. Une fois connecté, sélectionnez l’icône Paramètres en haut à droite. Dans les pages Paramètres , vous pouvez afficher toutes les clés, l’ID de ressource et les points de terminaison.
Pour définir les variables d’environnement, ouvrez une fenêtre de console et suivez les instructions de votre système d’exploitation et de votre environnement de développement.
- Pour définir la variable d’environnement
VISION_TRAINING KEY, remplacez<your-training-key>par l’une des clés de votre ressource d’apprentissage. - Pour définir la variable d’environnement
VISION_TRAINING_ENDPOINT, remplacez<your-training-endpoint>par le point de terminaison de votre ressource d’entraînement. - Pour définir la variable d’environnement
VISION_PREDICTION_KEY, remplacez<your-prediction-key>par l’une des clés de votre ressource de prédiction. - Pour définir la variable d’environnement
VISION_PREDICTION_ENDPOINT, remplacez<your-prediction-endpoint>par le point de terminaison de votre ressource de prédiction. - Pour définir la variable d’environnement
VISION_PREDICTION_RESOURCE_ID, remplacez<your-resource-id>par l’ID de ressource de votre ressource de prédiction.
Important
Nous vous recommandons l'authentification Microsoft Entra ID avec les identités managées pour les ressources Azure pour éviter de stocker les identifiants avec vos applications qui s'exécutent dans le cloud.
Utilisez des clés API avec précaution. N’incluez pas la clé API directement dans votre code et ne la publiez jamais publiquement. Si vous utilisez des clés API, stockez-les en toute sécurité dans Azure Key Vault, faites pivoter les clés régulièrement et limitez l’accès aux Azure Key Vault à l’aide du contrôle d’accès en fonction du rôle et des restrictions d’accès réseau. Pour plus d’informations sur l’utilisation sécurisée des clés API dans vos applications, consultez les API avec Azure Key Vault.
Pour plus d’informations sur la sécurité des services d’INTELLIGENCE artificielle, consultez Demandes d’authentification à Azure AI services.
setx VISION_TRAINING_KEY <your-training-key>
setx VISION_TRAINING_ENDPOINT <your-training-endpoint>
setx VISION_PREDICTION_KEY <your-prediction-key>
setx VISION_PREDICTION_ENDPOINT <your-prediction-endpoint>
setx VISION_PREDICTION_RESOURCE_ID <your-resource-id>
Après avoir ajouté les variables d’environnement, vous devrez peut-être redémarrer les programmes en cours d’exécution qui lisent les variables d’environnement, y compris la fenêtre de console.
Mise en place
Installer la bibliothèque cliente
Pour écrire une application d’analyse d’images avec Custom Vision pour Python, vous avez besoin de la bibliothèque cliente Custom Vision. Après avoir installé Python, exécutez la commande suivante dans PowerShell ou une fenêtre de console :
pip install azure-cognitiveservices-vision-customvision
Créer une application Python
Créez un fichier Python et importez les bibliothèques suivantes.
from azure.cognitiveservices.vision.customvision.training import CustomVisionTrainingClient
from azure.cognitiveservices.vision.customvision.prediction import CustomVisionPredictionClient
from azure.cognitiveservices.vision.customvision.training.models import ImageFileCreateBatch, ImageFileCreateEntry, Region
from msrest.authentication import ApiKeyCredentials
import os, time, uuid
Conseil
Vous souhaitez afficher l’ensemble du fichier de code de démarrage rapide à la fois ? Vous pouvez le trouver sur GitHub qui contient les exemples de code de ce guide de démarrage rapide.
Créez des variables pour le point de terminaison et les clés Azure de votre ressource.
# retrieve environment variables
ENDPOINT = os.environ["VISION_TRAINING_ENDPOINT"]
prediction_endpoint = os.environ["VISION_PREDICTION_ENDPOINT"]
training_key = os.environ["VISION_TRAINING_KEY"]
prediction_key = os.environ["VISION_PREDICTION_KEY"]
prediction_resource_id = os.environ["VISION_PREDICTION_RESOURCE_ID"]
Modèle objet
| Nom | Description |
|---|---|
| CustomVisionTrainingClient | Cette classe gère la création, l’entraînement et la publication de vos modèles. |
| CustomVisionPredictionClient | Cette classe gère les requêtes sur vos modèles pour les prédictions de classification d'images. |
| ImagePrediction | Cette classe définit une prédiction d’objet unique sur une seule image. Il inclut les propriétés de l’ID et du nom de l’objet, de l’emplacement de la boîte englobante de l’objet et d’un score de confiance. |
Exemples de code
Ces extraits de code vous montrent comment effectuer les opérations suivantes avec la bibliothèque de client Custom Vision pour Python :
- Authentifier le client
- Créer un projet Custom Vision
- Ajouter des balises au projet
- Charger et étiqueter des images
- Entraîner le projet
- Publier l’itération actuelle
- Tester le point de terminaison de prédiction
Authentifier le client
Instanciez un client d’entraînement et de prédiction avec votre point de terminaison et vos clés. Créez des ApiKeyServiceClientCredentials objets avec vos clés et utilisez-les avec votre point de terminaison pour créer un objet CustomVisionTrainingClient et CustomVisionPredictionClient .
credentials = ApiKeyCredentials(in_headers={"Training-key": training_key})
trainer = CustomVisionTrainingClient(ENDPOINT, credentials)
prediction_credentials = ApiKeyCredentials(in_headers={"Prediction-key": prediction_key})
predictor = CustomVisionPredictionClient(prediction_endpoint, prediction_credentials)
Créer un projet Custom Vision
Ajoutez le code suivant à votre script pour créer un projet de service Custom Vision.
Consultez la méthode create_project pour spécifier d’autres options lorsque vous créez votre projet (expliqué dans le guide générer un portail web classifieur ).
publish_iteration_name = "classifyModel"
credentials = ApiKeyCredentials(in_headers={"Training-key": training_key})
trainer = CustomVisionTrainingClient(ENDPOINT, credentials)
# Create a new project
print ("Creating project...")
project_name = uuid.uuid4()
project = trainer.create_project(project_name)
Ajouter des balises au projet
Pour ajouter des balises de classification à votre projet, ajoutez le code suivant :
# Make two tags in the new project
hemlock_tag = trainer.create_tag(project.id, "Hemlock")
cherry_tag = trainer.create_tag(project.id, "Japanese Cherry")
Charger et étiqueter des images
Tout d’abord, téléchargez les exemples d’images pour ce projet. Enregistrez le contenu du dossier sample Images sur votre appareil local.
Pour ajouter les exemples d’images au projet, insérez le code suivant après la création de la balise. Ce code charge chaque image avec sa balise correspondante. Vous pouvez charger jusqu’à 64 images dans un seul lot.
base_image_location = os.path.join (os.path.dirname(__file__), "Images")
print("Adding images...")
image_list = []
for image_num in range(1, 11):
file_name = "hemlock_{}.jpg".format(image_num)
with open(os.path.join (base_image_location, "Hemlock", file_name), "rb") as image_contents:
image_list.append(ImageFileCreateEntry(name=file_name, contents=image_contents.read(), tag_ids=[hemlock_tag.id]))
for image_num in range(1, 11):
file_name = "japanese_cherry_{}.jpg".format(image_num)
with open(os.path.join (base_image_location, "Japanese_Cherry", file_name), "rb") as image_contents:
image_list.append(ImageFileCreateEntry(name=file_name, contents=image_contents.read(), tag_ids=[cherry_tag.id]))
upload_result = trainer.create_images_from_files(project.id, ImageFileCreateBatch(images=image_list))
if not upload_result.is_batch_successful:
print("Image batch upload failed.")
for image in upload_result.images:
print("Image status: ", image.status)
exit(-1)
Note
Vous devez modifier le chemin d’accès aux images en fonction de l’emplacement où vous avez téléchargé le dépôt d’exemples de SDK Foundry Tools Python.
Entraîner le projet
Ce code crée la première itération du modèle de prédiction.
print ("Training...")
iteration = trainer.train_project(project.id)
while (iteration.status != "Completed"):
iteration = trainer.get_iteration(project.id, iteration.id)
print ("Training status: " + iteration.status)
print ("Waiting 10 seconds...")
time.sleep(10)
Conseil
S'entraîner avec des balises sélectionnées
Vous pouvez éventuellement effectuer l’apprentissage uniquement sur un sous-ensemble de vos balises appliquées. Vous pouvez le faire si vous n’avez pas encore appliqué suffisamment de certaines balises, mais vous avez assez d’autres. Dans l'appel train_project, définissez le paramètre selected_tags facultatif sur une liste des chaînes d’ID des balises que vous souhaitez utiliser. Le modèle s’entraîne pour reconnaître uniquement les étiquettes de cette liste.
Publier l’itération actuelle
Une itération n’est pas disponible dans le point de terminaison de prédiction tant qu’elle n’est pas publiée. Le code suivant rend l’itération actuelle du modèle disponible pour l’interrogation.
# The iteration is now trained. Publish it to the project endpoint
trainer.publish_iteration(project.id, iteration.id, publish_iteration_name, prediction_resource_id)
print ("Done!")
Tester le point de terminaison de prédiction
Pour envoyer une image au point de terminaison de prédiction et récupérer la prédiction, ajoutez le code suivant à la fin du fichier :
# Now there is a trained endpoint that can be used to make a prediction
prediction_credentials = ApiKeyCredentials(in_headers={"Prediction-key": prediction_key})
predictor = CustomVisionPredictionClient(prediction_endpoint, prediction_credentials)
with open(os.path.join (base_image_location, "Test/test_image.jpg"), "rb") as image_contents:
results = predictor.classify_image(
project.id, publish_iteration_name, image_contents.read())
# Display the results.
for prediction in results.predictions:
print("\t" + prediction.tag_name +
": {0:.2f}%".format(prediction.probability * 100))
Exécuter l’application
Exécutez l’application à l’aide de la commande suivante :
python CustomVisionQuickstart.py
La sortie de l’application doit être similaire au texte suivant :
Creating project...
Adding images...
Training...
Training status: Training
Training status: Completed
Done!
Hemlock: 93.53%
Japanese Cherry: 0.01%
Vous pouvez ensuite vérifier que l’image de test (trouvée dans <base_image_location>/images/Test/) est étiquetée de manière appropriée. Vous pouvez également revenir au site web Custom Vision et voir l’état actuel de votre projet nouvellement créé.
Nettoyer les ressources
Si vous souhaitez implémenter votre propre projet de classification d’images (ou essayer un projet de détection d’objet à la place), vous pouvez supprimer le projet d’identification d’arborescence de cet exemple. Un abonnement gratuit permet de créer deux projets dans Custom Vision.
Sur le site web Custom Vision, accédez à Projects et sélectionnez la corbeille sous Mon nouveau Project.
Contenu connexe
Vous avez maintenant vu comment chaque étape du processus de classification d’images peut être effectuée dans le code. Cet exemple exécute une seule itération d’entraînement, mais vous devez souvent entraîner et tester votre modèle plusieurs fois afin de le rendre plus précis.
- Qu’est-ce que Custom Vision ?
- Le code source de cet exemple est disponible sur GitHub
- Documentation de référence du Kit de développement logiciel (SDK)
Démarrer avec l'API REST Custom Vision. Suivez ces étapes pour appeler l’API et générer un modèle de classification d’images. Vous allez créer un projet, ajouter des balises, entraîner le projet et utiliser l’URL du point de terminaison de prédiction du projet pour le tester par programmation. Utilisez cet exemple comme modèle pour créer votre propre application de reconnaissance d’image.
Note
Custom Vision est plus facilement utilisé par le biais d’un SDK de bibliothèque cliente ou par le biais des instructions basées sur le navigateur.
Utilisez la bibliothèque de client Custom Vision pour l’API REST pour :
- Créer un projet Custom Vision
- Ajouter des balises au projet
- Charger et étiqueter des images
- Entraîner le projet
- Publier l’itération actuelle
- Tester le point de terminaison de prédiction
Conditions préalables
- Un abonnement Azure. Vous pouvez en créer un gratuitement.
- Une fois que vous avez votre abonnement Azure, créez une ressource Custom Vision dans le portail Azure pour créer une ressource de formation et de prédiction.
- Vous avez besoin de la clé et du point de terminaison à partir des ressources que vous créez pour connecter votre application à Custom Vision. Vous collez votre clé et votre point de terminaison dans le code plus loin dans le guide de démarrage rapide.
- Vous pouvez utiliser le niveau tarifaire gratuit (
F0) pour essayer le service et effectuer une mise à niveau ultérieure vers un niveau payant pour la production.
- PowerShell version 6.0+, ou une application de ligne de commande similaire.
Créer un projet Custom Vision
Vous utiliserez une commande comme celle-ci pour créer un projet de classification d’images. Le projet créé s’affiche sur le site web Custom Vision.
curl -v -X POST -H "Training-key: {subscription key}" "https://{endpoint}/customvision/v3.3/Training/projects?name={name}"
Copiez la commande dans un éditeur de texte et apportez les modifications suivantes :
- Remplacez par
{subscription key}votre clé valide. - Remplacez
{endpoint}par le point de terminaison qui correspond à votre clé.Note
Les nouvelles ressources créées après le 1er juillet 2019 utilisent des noms de sous-domaines personnalisés. Pour plus d’informations et une liste complète des points de terminaison régionaux, consultez les noms de sous-domaines personnalisés pour Foundry Tools.
- Remplacez
{name}par le nom de votre projet. - Définissez éventuellement d’autres paramètres d’URL pour configurer le type de modèle utilisé par votre projet. Consultez l’API Create Project pour connaître les options.
Une réponse JSON comme l’exemple suivant s’affiche. Enregistrez la valeur "id" de votre projet dans un emplacement temporaire.
{
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string",
"settings": {
"domainId": "00000000-0000-0000-0000-000000000000",
"classificationType": "Multiclass",
"targetExportPlatforms": [
"CoreML"
],
"useNegativeSet": true,
"detectionParameters": "string",
"imageProcessingSettings": {
"augmentationMethods": {}
}
},
"created": "string",
"lastModified": "string",
"thumbnailUri": "string",
"drModeEnabled": true,
"status": "Succeeded"
}
Ajouter des balises au projet
Utilisez la commande suivante pour définir les balises sur lesquelles vous allez entraîner le modèle.
curl -v -X POST -H "Training-key: {subscription key}" "https://{endpoint}/customvision/v3.3/Training/projects/{projectId}/tags?name={name}"
- Là encore, insérez votre propre clé et VOTRE URL de point de terminaison.
- Remplacez par
{projectId}votre propre ID de projet. - Remplacez
{name}par le nom de la balise que vous souhaitez utiliser.
Répétez ce processus pour toutes les balises que vous souhaitez utiliser dans votre projet. Si vous utilisez les exemples d’images fournis, ajoutez les balises "Hemlock" et "Japanese Cherry".
Une réponse JSON comme l’exemple suivant s’affiche. Enregistrez la "id" valeur de chaque balise dans un emplacement temporaire.
{
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string",
"type": "Regular",
"imageCount": 0
}
Charger et étiqueter des images
Ensuite, téléchargez les exemples d’images pour ce projet. Enregistrez le contenu du dossier sample Images sur votre appareil local.
Utilisez la commande suivante pour charger les images et appliquer des balises ; une fois pour les images « Hemlock », et séparément pour les images « Cerise japonaise ». Pour plus d’options, consultez l’API Créer des images à partir de données .
curl -v -X POST -H "Content-Type: multipart/form-data" -H "Training-key: {subscription key}" "https://{endpoint}/customvision/v3.3/Training/projects/{projectId}/images?tagIds={tagArray}"
--data-ascii "{binary data}"
- Là encore, insérez votre propre clé et VOTRE URL de point de terminaison.
- Remplacez par
{projectId}votre propre ID de projet. - Remplacez
{tagArray}par l’ID d’une balise. - Ensuite, renseignez le corps de la requête avec les données binaires des images que vous souhaitez baliser.
Entraîner le projet
Cette méthode entraîne le modèle sur les images étiquetées que vous avez chargées et retourne un ID pour l’itération actuelle du projet.
curl -v -X POST -H "Content-Type: application/json" -H "Training-key: {subscription key}" "https://{endpoint}/customvision/v3.3/Training/projects/{projectId}/train"
- Là encore, insérez votre propre clé et VOTRE URL de point de terminaison.
- Remplacez par
{projectId}votre propre ID de projet. - Remplacez
{tagArray}par l’ID d’une balise. - Ensuite, renseignez le corps de la requête avec les données binaires des images que vous souhaitez baliser.
- Utilisez éventuellement d’autres paramètres d’URL. Pour obtenir des options, consultez l’API Train Project.
Conseil
S'entraîner avec des balises sélectionnées
Vous pouvez éventuellement effectuer l’apprentissage uniquement sur un sous-ensemble de vos balises appliquées. Vous pouvez le faire si vous n’avez pas encore appliqué suffisamment de certaines balises, mais vous avez assez d’autres. Ajoutez le contenu JSON facultatif au corps de votre requête. Remplissez le "selectedTags" tableau avec les ID des balises que vous souhaitez utiliser.
{
"selectedTags": [
"00000000-0000-0000-0000-000000000000"
]
}
La réponse JSON contient des informations sur votre projet entraîné, y compris l’ID d’itération ("id"). Enregistrez cette valeur pour l’étape suivante.
{
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"status": "string",
"created": "string",
"lastModified": "string",
"trainedAt": "string",
"projectId": "00000000-0000-0000-0000-000000000000",
"exportable": true,
"exportableTo": [
"CoreML"
],
"domainId": "00000000-0000-0000-0000-000000000000",
"classificationType": "Multiclass",
"trainingType": "Regular",
"reservedBudgetInHours": 0,
"trainingTimeInMinutes": 0,
"publishName": "string",
"originalPublishResourceId": "string"
}
Publier l’itération actuelle
Cette méthode rend l’itération actuelle du modèle disponible pour l’interrogation. Vous utilisez le nom du modèle retourné comme référence pour envoyer des demandes de prédiction.
curl -v -X POST -H "Training-key: {subscription key}" "https://{endpoint}/customvision/v3.3/Training/projects/{projectId}/iterations/{iterationId}/publish?publishName={publishName}&predictionId={predictionId}"
- Là encore, insérez votre propre clé et VOTRE URL de point de terminaison.
- Remplacez par
{projectId}votre propre ID de projet. - Remplacez
{iterationId}par l’ID retourné à l’étape précédente. - Remplacez
{publishedName}par le nom que vous souhaitez affecter à votre modèle de prédiction. - Remplacez
{predictionId}par votre propre ID de ressource de prédiction. Vous trouverez l'ID de ressource de prédiction sous l'onglet Properties dans le portail Azure, répertorié en tant qu'ID Resource ID. - Utilisez éventuellement d’autres paramètres d’URL. Consultez l’API d’itération de publication .
Tester le point de terminaison de prédiction
Enfin, utilisez cette commande pour tester votre modèle entraîné en chargeant une nouvelle image pour qu’elle se classifie avec des balises. Vous pouvez utiliser l’image dans le dossier Test des exemples de fichiers que vous avez téléchargés précédemment.
curl -v -X POST -H "Training-key: {subscription key}" "https://{endpoint}/customvision/v3.3/Training/projects/{projectId}/iterations/{iterationId}/publish?publishName={publishName}&predictionId={predictionId}"
- Là encore, insérez votre propre clé et VOTRE URL de point de terminaison.
- Remplacez par
{projectId}votre propre ID de projet. - Remplacez
{publishedName}par le nom que vous avez utilisé à l’étape précédente. - Ajoutez les données binaires de votre image locale au corps de la requête.
- Utilisez éventuellement d’autres paramètres d’URL. Consultez l’API Classifier l’image .
La réponse JSON retournée répertorie chacune des balises que le modèle a appliquées à votre image, ainsi que les scores de probabilité pour chaque balise.
{
"id": "00000000-0000-0000-0000-000000000000",
"project": "00000000-0000-0000-0000-000000000000",
"iteration": "00000000-0000-0000-0000-000000000000",
"created": "string",
"predictions": [
{
"probability": 0.0,
"tagId": "00000000-0000-0000-0000-000000000000",
"tagName": "string",
"boundingBox": {
"left": 0.0,
"top": 0.0,
"width": 0.0,
"height": 0.0
},
"tagType": "Regular"
}
]
}
Si vous souhaitez implémenter votre propre projet de classification d’images (ou essayer un projet de détection d’objet à la place), vous pouvez supprimer le projet d’identification d’arborescence de cet exemple. Un abonnement gratuit permet de créer deux projets dans Custom Vision.
Sur le site web Custom Vision, accédez à Projects et sélectionnez la corbeille sous Mon nouveau Project.
Contenu connexe
Vous avez maintenant effectué chaque étape du processus de classification d’images à l’aide de l’API REST. Cet exemple exécute une seule itération d’entraînement, mais vous devez souvent entraîner et tester votre modèle plusieurs fois afin de le rendre plus précis.