Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Ga aan de slag met de Custom Vision-clientbibliotheek voor .NET. Volg deze stappen om het pakket te installeren en de voorbeeldcode uit te proberen voor het bouwen van een afbeeldingsclassificatiemodel. U kunt een project maken, tags toevoegen, het project trainen en de URL van het voorspellingseindpunt van het project gebruiken om het programmatisch te testen. Gebruik dit voorbeeld als sjabloon voor het bouwen van uw eigen app voor afbeeldingsherkenning.
Opmerking
Als u een classificatiemodel wilt bouwen en trainen zonder code te schrijven, raadpleegt u de richtlijnen op basis van de browser.
Referentiedocumentatie
Voorwaarden
- Een Azure-abonnement. U kunt er gratis een maken.
- De Visual Studio IDE of huidige versie van .NET Core.
- Zodra u uw Azure-abonnement hebt, maakt u een Custom Vision-resource in de Azure-portal om een trainingsresource en een voorspellingsresource te maken.
- U kunt de gratis prijscategorie (
F0) gebruiken om de service uit te proberen en later een upgrade uit te voeren naar een betaalde laag voor productie.
- U kunt de gratis prijscategorie (
Omgevingsvariabelen maken
In dit voorbeeld schrijft u uw inloggegevens naar omgevingsvariabelen op de lokale computer die de toepassing uitvoert.
Ga naar de Azure-portal. Als de Custom Vision-resources die u hebt gemaakt in de sectie Vereisten zijn geïmplementeerd, selecteert u de knop Ga naar resource onder Volgende stappen. U vindt uw sleutels en eindpunten op de pagina's Sleutels en eindpunten van de resources onder Resourcebeheer. U moet de sleutels voor uw trainingsresource en voorspellingsresource ophalen, samen met de API-eindpunten.
U vindt de id van de voorspellingsresource op het tabblad Properties in de Azure-portal, vermeld als Resource-id.
Tip
U gebruikt https://www.customvision.ai ook om deze waarden op te halen. Nadat u zich hebt aangemeld, selecteert u het pictogram Instellingen rechtsboven. Op de pagina's Instellingen kunt u alle sleutels, resource-id's en eindpunten weergeven.
Als u de omgevingsvariabelen wilt instellen, opent u een consolevenster en volgt u de instructies voor uw besturingssysteem en ontwikkelomgeving.
- Als u de
VISION_TRAINING KEYomgevingsvariabele wilt instellen, vervangt u deze door<your-training-key>een van de sleutels voor uw trainingsresource. - Stel de
VISION_TRAINING_ENDPOINTomgevingsvariabele in door<your-training-endpoint>te vervangen door het eindpunt voor uw trainingsresource. - Als u de
VISION_PREDICTION_KEYomgevingsvariabele wilt instellen, vervangt u deze door<your-prediction-key>een van de sleutels voor uw voorspellingsresource. - Als u de
VISION_PREDICTION_ENDPOINTomgevingsvariabele wilt instellen, vervangt u het<your-prediction-endpoint>eindpunt voor uw voorspellingsresource. - Als u de
VISION_PREDICTION_RESOURCE_IDomgevingsvariabele wilt instellen, vervangt u deze door<your-resource-id>de resource-id voor uw voorspellingsresource.
Belangrijk
We raden Microsoft Entra ID-authenticatie aan met beheerde identiteiten voor Azure-resources om te voorkomen dat referenties worden opgeslagen bij uw toepassingen die in de cloud draaien.
Gebruik API-sleutels met voorzichtigheid. Neem de API-sleutel niet rechtstreeks in uw code op en plaats deze nooit openbaar. Als u API-sleutels gebruikt, slaat u deze veilig op in Azure Key Vault, draait u de sleutels regelmatig en beperkt u de toegang tot Azure Key Vault met behulp van op rollen gebaseerd toegangsbeheer en netwerktoegangsbeperkingen. Zie API-sleutels met Azure Key Vault voor meer informatie over het veilig gebruiken van API-sleutels in uw apps.
Zie Authenticate requests to Azure AI-services voor meer informatie over beveiliging van 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>
Nadat u de omgevingsvariabelen hebt toegevoegd, moet u mogelijk alle actieve programma's die de omgevingsvariabelen lezen opnieuw opstarten, inclusief het consolevenster.
Instellen
Een nieuwe C#-toepassing maken
Maak met Visual Studio een nieuwe .NET Core-toepassing.
De clientbibliotheek installeren
Nadat u een nieuw project hebt gemaakt, installeert u de clientbibliotheek door met de rechtermuisknop op de projectoplossing in de Solution Explorer te klikken en Manage NuGet-pakketten te selecteren. Selecteer Browse in het pakketbeheer dat wordt geopend, controleer Include prerelease en zoek naar Microsoft.Azure.CognitiveServices.Vision.CustomVision.Training en Microsoft.Azure.CognitiveServices.Vision.CustomVision.Prediction. Selecteer de nieuwste versie en kies Installeren.
Tip
Wilt u het hele quickstart-codebestand tegelijk weergeven? U vindt deze op GitHub, die de codevoorbeelden in deze quickstart bevat.
Open in de projectmap het bestand program.cs en voeg de volgende using instructies toe:
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;
Maak in de methode van main de toepassing variabelen waarmee de sleutels en eindpunten van uw resource worden opgehaald uit omgevingsvariabelen. U declareert ook enkele basisobjecten die later moeten worden gebruikt.
// 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;
Voeg in de main-methode van de toepassing aanroepen toe voor de methoden die in deze quickstart worden gebruikt. U implementeert dit later.
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);
De client verifiëren
Initialiseer in een nieuwe methode trainings- en voorspellingsclients met behulp van uw eindpunt en sleutels.
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;
}
Een nieuw Custom Vision-project maken
Met deze volgende bit code wordt een afbeeldingsclassificatieproject gemaakt. Het gemaakte project wordt weergegeven op de Custom Vision-website. Zie de methode CreateProject om andere opties op te geven wanneer u uw project maakt (uitgelegd in de handleiding Een classificatiewebportal bouwen).
private static Project CreateProject(CustomVisionTrainingClient trainingApi)
{
// Create a new project
Console.WriteLine("Creating new project:");
return trainingApi.CreateProject("My New Project");
}
Tags toevoegen aan het project
Met deze methode worden de tags gedefinieerd waarop u het model traint.
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");
}
Afbeeldingen uploaden en taggen
Download eerst de voorbeeldafbeeldingen voor dit project. Sla de inhoud van de map sample Images op uw lokale apparaat op.
Definieer vervolgens een helpermethode om de afbeeldingen in deze map te uploaden. Mogelijk moet u het GetFiles argument bewerken om te verwijzen naar de locatie waar uw afbeeldingen worden opgeslagen.
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")));
}
Definieer vervolgens een methode voor het uploaden van de afbeeldingen, waarbij tags worden toegepast op basis van de locatie van de map. De afbeeldingen zijn al gesorteerd. U kunt afbeeldingen iteratief uploaden en taggen, of in een batch (maximaal 64 per batch). Dit codefragment bevat voorbeelden van beide.
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 }));
}
Het project trainen
Met deze methode maakt u de eerste trainingsiteratie in het project. Er wordt een query uitgevoerd op de service totdat de training is voltooid.
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);
}
}
Tip
Trainen met geselecteerde tags
U kunt eventueel alleen trainen op een subset van uw toegepaste tags. U kunt dit doen als u nog niet genoeg van bepaalde tags hebt toegepast, maar u wel genoeg van anderen hebt. Gebruik in de TrainProject-aanroep de trainingParameters-parameter. Maak een TrainingParameters en stel SelectedTags de eigenschap ervan in op een lijst met id's van de tags die u wilt gebruiken. Het model traint om alleen de tags in die lijst te herkennen.
De huidige iteratie publiceren
Met deze methode wordt de huidige iteratie van het model beschikbaar voor het uitvoeren van query's. U kunt de modelnaam gebruiken als verwijzing om voorspellingsaanvragen te verzenden. U moet uw eigen waarde invoeren voor predictionResourceId. U vindt de voorspellingsresource-id op het tabblad Properties van de resource in de Azure-portal, vermeld als 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
}
Het voorspellingseindpunt testen
In dit deel van het script wordt de testafbeelding geladen, wordt het modeleindpunt opgevraagd en worden voorspellingsgegevens naar de console uitgevoerd.
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}");
}
}
De toepassing uitvoeren
Voer de toepassing uit door boven aan het IDE-venster op de knop Foutopsporing te klikken.
Terwijl de toepassing wordt uitgevoerd, moet er een consolevenster worden geopend en de volgende uitvoer worden geschreven:
Creating new project:
Uploading images
Training
Done!
Making a prediction:
Hemlock: 95.0%
Japanese Cherry: 0.0%
Vervolgens kunt u controleren of de testafbeelding (gevonden in Afbeeldingen/Test/) op de juiste wijze is getagd. Druk op een willekeurige toets om de toepassing af te sluiten. U kunt ook teruggaan naar de Custom Vision-website en de huidige status van uw zojuist gemaakte project bekijken.
Resources opschonen
Als u uw eigen afbeeldingsclassificatieproject wilt implementeren (of in plaats daarvan een objectdetectieproject wilt proberen), kunt u het structuuridentificatieproject uit dit voorbeeld verwijderen. Met een gratis abonnement kunt u twee Custom Vision-projecten uitvoeren.
Ga op de website Custom Vision naar Projects en selecteer de prullenbak onder Mijn nieuwe Project.
Verwante inhoud
Nu hebt u gezien hoe elke stap van het objectdetectieproces in code kan worden uitgevoerd. In dit voorbeeld wordt één trainingsiteratie uitgevoerd, maar vaak moet u uw model meerdere keren trainen en testen om het nauwkeuriger te maken.
- Wat is Custom Vision?
- De broncode voor dit voorbeeld vindt u op GitHub
- SDK-referentiedocumentatie
Deze handleiding bevat instructies en voorbeeldcode om u te helpen aan de slag te gaan met de Custom Vision-clientbibliotheek voor Go om een afbeeldingsclassificatiemodel te bouwen. U maakt een project, voegt tags toe, traint het project en gebruikt de voorspellingseindpunt-URL van het project om het programmatisch te testen. Gebruik dit voorbeeld als sjabloon voor het bouwen van uw eigen app voor afbeeldingsherkenning.
Opmerking
Als u een classificatiemodel wilt bouwen en trainen zonder code te schrijven, raadpleegt u de richtlijnen op basis van de browser.
Gebruik de Custom Vision-clientbibliotheek voor Go.
- Een nieuw Custom Vision-project maken
- Tags toevoegen aan het project
- Afbeeldingen uploaden en taggen
- Het project trainen
- De huidige iteratie publiceren
- Het voorspellingseindpunt testen
Referentiedocumentatie voor (training) en (prediction)
Voorwaarden
- Een Azure-abonnement. U kunt er gratis een maken.
- Ga 1,8 of hoger.
- Zodra u uw Azure-abonnement hebt, maakt u een Custom Vision-resource in de Azure-portal om een trainings- en voorspellingsresource te maken.
- U kunt de gratis prijscategorie (
F0) gebruiken om de service uit te proberen en later een upgrade uit te voeren naar een betaalde laag voor productie.
- U kunt de gratis prijscategorie (
Omgevingsvariabelen maken
In dit voorbeeld schrijft u uw inloggegevens naar omgevingsvariabelen op de lokale computer die de toepassing uitvoert.
Ga naar de Azure-portal. Als de Custom Vision-resources die u hebt gemaakt in de sectie Vereisten zijn geïmplementeerd, selecteert u de knop Ga naar resource onder Volgende stappen. U vindt uw sleutels en eindpunten op de pagina's Sleutels en eindpunten van de resources onder Resourcebeheer. U moet de sleutels voor uw trainingsresource en voorspellingsresource ophalen, samen met de API-eindpunten.
U vindt de id van de voorspellingsresource op het tabblad Properties in de Azure-portal, vermeld als Resource-id.
Tip
U gebruikt https://www.customvision.ai ook om deze waarden op te halen. Nadat u zich hebt aangemeld, selecteert u het pictogram Instellingen rechtsboven. Op de pagina's Instellingen kunt u alle sleutels, resource-id's en eindpunten weergeven.
Als u de omgevingsvariabelen wilt instellen, opent u een consolevenster en volgt u de instructies voor uw besturingssysteem en ontwikkelomgeving.
- Als u de
VISION_TRAINING KEYomgevingsvariabele wilt instellen, vervangt u deze door<your-training-key>een van de sleutels voor uw trainingsresource. - Stel de
VISION_TRAINING_ENDPOINTomgevingsvariabele in door<your-training-endpoint>te vervangen door het eindpunt voor uw trainingsresource. - Als u de
VISION_PREDICTION_KEYomgevingsvariabele wilt instellen, vervangt u deze door<your-prediction-key>een van de sleutels voor uw voorspellingsresource. - Als u de
VISION_PREDICTION_ENDPOINTomgevingsvariabele wilt instellen, vervangt u het<your-prediction-endpoint>eindpunt voor uw voorspellingsresource. - Als u de
VISION_PREDICTION_RESOURCE_IDomgevingsvariabele wilt instellen, vervangt u deze door<your-resource-id>de resource-id voor uw voorspellingsresource.
Belangrijk
We raden Microsoft Entra ID-authenticatie aan met beheerde identiteiten voor Azure-resources om te voorkomen dat referenties worden opgeslagen bij uw toepassingen die in de cloud draaien.
Gebruik API-sleutels met voorzichtigheid. Neem de API-sleutel niet rechtstreeks in uw code op en plaats deze nooit openbaar. Als u API-sleutels gebruikt, slaat u deze veilig op in Azure Key Vault, draait u de sleutels regelmatig en beperkt u de toegang tot Azure Key Vault met behulp van op rollen gebaseerd toegangsbeheer en netwerktoegangsbeperkingen. Zie API-sleutels met Azure Key Vault voor meer informatie over het veilig gebruiken van API-sleutels in uw apps.
Zie Authenticate requests to Azure AI-services voor meer informatie over beveiliging van 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>
Nadat u de omgevingsvariabelen hebt toegevoegd, moet u mogelijk alle actieve programma's die de omgevingsvariabelen lezen opnieuw opstarten, inclusief het consolevenster.
Instellen
De Custom Vision-clientbibliotheek installeren
Als u een app voor afbeeldingsanalyse wilt schrijven met Custom Vision voor Go, hebt u de Custom Vision-serviceclientbibliotheek nodig. Voer de volgende opdracht uit in PowerShell:
go get -u github.com/Azure/azure-sdk-for-go/...
Of, als u dep binnen uw repository uitvoert:
dep ensure -add github.com/Azure/azure-sdk-for-go
De voorbeeldafbeeldingen ophalen
In dit voorbeeld worden de afbeeldingen van de Foundry Tools Python SDK Samples repository op GitHub gebruikt. Kloon of download deze opslagplaats naar uw ontwikkelomgeving. Onthoud de maplocatie voor een latere stap.
Het Custom Vision-project maken
Maak een nieuw bestand met de naam sample.go in de projectmap van uw voorkeur en open het in de code-editor van uw voorkeur.
Voeg de volgende code toe aan uw script om een nieuw Custom Vision-serviceproject te maken.
Zie de methode CreateProject om andere opties op te geven wanneer u uw project maakt (uitgelegd in de handleiding Een classificatiewebportal bouwen).
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)
}
Tags maken in het project
Als u classificatietags wilt maken voor uw project, voegt u de volgende code toe aan het einde van 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))
Afbeeldingen uploaden en taggen
Als u de voorbeeldafbeeldingen aan het project wilt toevoegen, voegt u de volgende code in na het maken van de tag. Met deze code wordt elke afbeelding met de bijbehorende tag geüpload. U kunt maximaal 64 afbeeldingen uploaden in één batch.
Opmerking
U moet het pad naar de afbeeldingen wijzigen op basis van waar u het project Foundry Tools Go SDK Samples eerder hebt gedownload.
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() })
}
Het project trainen en publiceren
Met deze code maakt u de eerste iteratie van het voorspellingsmodel en publiceert u die iteratie vervolgens naar het voorspellingseindpunt. De naam die aan de gepubliceerde iteratie wordt gegeven, kan worden gebruikt om voorspellingsaanvragen te verzenden. Een iteratie is pas beschikbaar in het voorspellingseindpunt als het is gepubliceerd.
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))
Het voorspellingseindpunt gebruiken
Als u een afbeelding naar het voorspellingseindpunt wilt verzenden en de voorspelling wilt ophalen, voegt u de volgende code toe aan het einde van het bestand:
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("")
}
}
De toepassing uitvoeren
Voer de toepassing uit met behulp van de volgende opdracht:
go run sample.go
De uitvoer van de toepassing moet vergelijkbaar zijn met de volgende tekst:
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%
Vervolgens kunt u controleren of de testafbeelding (gevonden in <base_image_url>/Images/Test/) op de juiste wijze is getagd. U kunt ook teruggaan naar de Custom Vision-website en de huidige status van uw zojuist gemaakte project bekijken.
Resources opschonen
Als u uw eigen afbeeldingsclassificatieproject wilt implementeren (of in plaats daarvan een objectdetectieproject wilt proberen), kunt u het structuuridentificatieproject uit dit voorbeeld verwijderen. Met een gratis abonnement kunt u twee Custom Vision-projecten uitvoeren.
Ga op de website Custom Vision naar Projects en selecteer de prullenbak onder Mijn nieuwe Project.
Verwante inhoud
Nu hebt u gezien hoe elke stap van het objectdetectieproces in code kan worden uitgevoerd. In dit voorbeeld wordt één trainingsiteratie uitgevoerd, maar vaak moet u uw model meerdere keren trainen en testen om het nauwkeuriger te maken.
- Wat is Custom Vision?
- SDK-referentiedocumentatie (training)
- SDK-referentiedocumentatie (voorspelling)
Ga aan de slag met de Custom Vision-clientbibliotheek voor Java om een afbeeldingsclassificatiemodel te bouwen. Volg deze stappen om het pakket te installeren en de voorbeeldcode voor basistaken uit te proberen. Gebruik dit voorbeeld als sjabloon voor het bouwen van uw eigen app voor afbeeldingsherkenning.
Opmerking
Als u een classificatiemodel wilt bouwen en trainen zonder code te schrijven, raadpleegt u de richtlijnen op basis van de browser.
Gebruik de Custom Vision-clientbibliotheek voor Java om het volgende te doen:
- Een nieuw Custom Vision-project maken
- Tags toevoegen aan het project
- Afbeeldingen uploaden en taggen
- Het project trainen
- De huidige iteratie publiceren
- Het voorspellingseindpunt testen
Referentiedocumentatie | Broncode van bibliotheek voor (training) en (voorspelling)| Artefact (Maven) voor (training) en (voorspelling) | Voorbeelden
Voorwaarden
- Een Azure-abonnement. U kunt er gratis een maken.
- De huidige versie van de Java Development Kit(JDK).
- Het hulpprogramma Gradle-build of een andere afhankelijkheidsmanager.
- Zodra u uw Azure-abonnement hebt, maakt u een Custom Vision-resource in de Azure-portal om een trainings- en voorspellingsresource te maken.
- U kunt de gratis prijscategorie (
F0) gebruiken om de service uit te proberen en later een upgrade uit te voeren naar een betaalde laag voor productie.
- U kunt de gratis prijscategorie (
Omgevingsvariabelen maken
In dit voorbeeld schrijft u uw inloggegevens naar omgevingsvariabelen op de lokale computer die de toepassing uitvoert.
Ga naar de Azure-portal. Als de Custom Vision-resources die u hebt gemaakt in de sectie Vereisten zijn geïmplementeerd, selecteert u de knop Ga naar resource onder Volgende stappen. U vindt uw sleutels en eindpunten op de pagina's Sleutels en eindpunten van de resources onder Resourcebeheer. U moet de sleutels voor uw trainingsresource en voorspellingsresource ophalen, samen met de API-eindpunten.
U vindt de id van de voorspellingsresource op het tabblad Properties in de Azure-portal, vermeld als Resource-id.
Tip
U gebruikt https://www.customvision.ai ook om deze waarden op te halen. Nadat u zich hebt aangemeld, selecteert u het pictogram Instellingen rechtsboven. Op de pagina's Instellingen kunt u alle sleutels, resource-id's en eindpunten weergeven.
Als u de omgevingsvariabelen wilt instellen, opent u een consolevenster en volgt u de instructies voor uw besturingssysteem en ontwikkelomgeving.
- Als u de
VISION_TRAINING KEYomgevingsvariabele wilt instellen, vervangt u deze door<your-training-key>een van de sleutels voor uw trainingsresource. - Stel de
VISION_TRAINING_ENDPOINTomgevingsvariabele in door<your-training-endpoint>te vervangen door het eindpunt voor uw trainingsresource. - Als u de
VISION_PREDICTION_KEYomgevingsvariabele wilt instellen, vervangt u deze door<your-prediction-key>een van de sleutels voor uw voorspellingsresource. - Als u de
VISION_PREDICTION_ENDPOINTomgevingsvariabele wilt instellen, vervangt u het<your-prediction-endpoint>eindpunt voor uw voorspellingsresource. - Als u de
VISION_PREDICTION_RESOURCE_IDomgevingsvariabele wilt instellen, vervangt u deze door<your-resource-id>de resource-id voor uw voorspellingsresource.
Belangrijk
We raden Microsoft Entra ID-authenticatie aan met beheerde identiteiten voor Azure-resources om te voorkomen dat referenties worden opgeslagen bij uw toepassingen die in de cloud draaien.
Gebruik API-sleutels met voorzichtigheid. Neem de API-sleutel niet rechtstreeks in uw code op en plaats deze nooit openbaar. Als u API-sleutels gebruikt, slaat u deze veilig op in Azure Key Vault, draait u de sleutels regelmatig en beperkt u de toegang tot Azure Key Vault met behulp van op rollen gebaseerd toegangsbeheer en netwerktoegangsbeperkingen. Zie API-sleutels met Azure Key Vault voor meer informatie over het veilig gebruiken van API-sleutels in uw apps.
Zie Authenticate requests to Azure AI-services voor meer informatie over beveiliging van 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>
Nadat u de omgevingsvariabelen hebt toegevoegd, moet u mogelijk alle actieve programma's die de omgevingsvariabelen lezen opnieuw opstarten, inclusief het consolevenster.
Instellen
Een nieuw Gradle-project maken
Maak in een consolevenster (zoals cmd, PowerShell of Bash) een nieuwe map voor uw app en navigeer ernaartoe.
mkdir myapp && cd myapp
Voer de gradle init opdracht uit vanuit uw werkmap. Met deze opdracht maakt u essentiële buildbestanden voor Gradle, waaronder build.gradle.kts, die tijdens runtime wordt gebruikt om uw toepassing te maken en te configureren.
gradle init --type basic
Wanneer u wordt gevraagd om een DSL te kiezen, selecteert u Kotlin.
De clientbibliotheek installeren
Zoek build.gradle.kts en open deze met uw favoriete IDE of teksteditor. Kopieer vervolgens de volgende buildconfiguratie. Deze configuratie definieert het project als een Java-toepassing waarvan het toegangspunt de klasse CustomVisionQuickstart is. De Custom Vision-bibliotheken worden geïmporteerd.
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")
}
Een Java-bestand maken
Voer vanuit uw werkmap de volgende opdracht uit om een projectbronmap te maken:
mkdir -p src/main/java
Navigeer naar de nieuwe map en maak een bestand met de naam CustomVisionQuickstart.java. Open deze in uw favoriete editor of IDE en voeg de volgende import instructies toe:
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;
Tip
Wilt u het hele quickstart-codebestand tegelijk weergeven? U vindt deze op GitHub, die de codevoorbeelden in deze quickstart bevat.
Maak in de klasse van CustomVisionQuickstart de toepassing variabelen waarmee de sleutels en het eindpunt van uw resource worden opgehaald uit omgevingsvariabelen.
// 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");
Belangrijk
Vergeet niet om de sleutels uit uw code te verwijderen wanneer u klaar bent en deze nooit openbaar te plaatsen. Gebruik voor productie een veilige manier om uw referenties op te slaan en te openen, zoals Azure Key Vault. Zie het artikel over de beveiliging van Foundry Tools voor meer informatie.
Voeg in de main-methode van de toepassing aanroepen toe voor de methoden die in deze quickstart worden gebruikt. U definieert deze later.
Project project = createProject(trainClient);
addTags(trainClient, project);
uploadImages(trainClient, project);
trainProject(trainClient, project);
publishIteration(trainClient, project);
testProject(predictor, project);
Objectmodel
De volgende klassen en interfaces verwerken enkele van de belangrijkste functies van de Custom Vision-Java-clientbibliotheek.
| Naam | Beschrijving |
|---|---|
| CustomVisionTrainingClient | Deze klasse verwerkt het maken, trainen en publiceren van uw modellen. |
| CustomVisionPredictionClient | Deze klasse verwerkt de query's van uw modellen voor voorspellingen voor afbeeldingsclassificatie. |
| ImagePrediction | Deze klasse definieert één voorspelling op één afbeelding. Het bevat eigenschappen voor de object-id en naam en een betrouwbaarheidsscore. |
Codevoorbeelden
Deze codefragmenten laten zien hoe u de volgende taken kunt uitvoeren met de Custom Vision-clientbibliotheek voor Java:
- De client verifiëren
- Een nieuw Custom Vision-project maken
- Tags toevoegen aan het project
- Afbeeldingen uploaden en taggen
- Het project trainen
- De huidige iteratie publiceren
- Het voorspellingseindpunt testen
De client verifiëren
Maak in uw main methode een instantie van trainings- en voorspellingsclients met behulp van uw eindpunt en sleutels.
// Authenticate
CustomVisionTrainingClient trainClient = CustomVisionTrainingManager
.authenticate(trainingEndpoint, trainingApiKey)
.withEndpoint(trainingEndpoint);
CustomVisionPredictionClient predictor = CustomVisionPredictionManager
.authenticate(predictionEndpoint, predictionApiKey)
.withEndpoint(predictionEndpoint);
Een Custom Vision-project maken
Met deze volgende methode maakt u een afbeeldingsclassificatieproject. Het gemaakte project wordt weergegeven op de Custom Vision-website die u eerder hebt bezocht. Zie de overbelasting van de methode CreateProject om andere opties op te geven wanneer u uw project maakt (uitgelegd in de handleiding een detectorwebportal bouwen).
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;
}
Tags toevoegen aan uw project
Met deze methode worden de tags gedefinieerd waarop u het model gaat trainen.
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();
}
Afbeeldingen uploaden en taggen
Download eerst de voorbeeldafbeeldingen voor dit project. Sla de inhoud van de map sample Images op uw lokale apparaat op.
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);
}
}
Het vorige codefragment maakt gebruik van twee helperfuncties waarmee de afbeeldingen als resourcestreams worden opgehaald en naar de service worden geüpload (u kunt maximaal 64 afbeeldingen in één batch uploaden).
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;
}
Het project trainen
Met deze methode maakt u de eerste trainingsiteratie in het project. Er wordt een query uitgevoerd op de service totdat de training is voltooid.
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());
}
De huidige iteratie publiceren
Met deze methode wordt de huidige iteratie van het model beschikbaar voor het uitvoeren van query's. U kunt de modelnaam gebruiken als verwijzing om voorspellingsaanvragen te verzenden. U moet uw eigen waarde invoeren voor predictionResourceId. U vindt de voorspellingsresource-id op het tabblad Properties van de resource in de Azure-portal, vermeld als 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);
}
Het voorspellingseindpunt testen
Met deze methode wordt de testafbeelding geladen, wordt het modeleindpunt opgevraagd en worden voorspellingsgegevens naar de console uitgevoerd.
// 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));
}
}
De toepassing uitvoeren
U kunt de app bouwen met:
gradle build
Voer de toepassing uit met de gradle run opdracht:
gradle run
Resources opschonen
Als u een Azure AI-services-abonnement wilt opschonen en verwijderen, kunt u de resource of resourcegroep verwijderen. Als u de resourcegroep verwijdert, worden ook alle andere resources verwijderd die eraan zijn gekoppeld.
Als u uw eigen afbeeldingsclassificatieproject wilt implementeren (of in plaats daarvan een objectdetectieproject wilt proberen), kunt u het structuuridentificatieproject uit dit voorbeeld verwijderen. Met een gratis abonnement kunt u twee Custom Vision-projecten uitvoeren.
Ga op de website Custom Vision naar Projects en selecteer de prullenbak onder Mijn nieuwe Project.
Verwante inhoud
Nu hebt u gezien hoe elke stap van het objectdetectieproces in code kan worden uitgevoerd. In dit voorbeeld wordt één trainingsiteratie uitgevoerd, maar vaak moet u uw model meerdere keren trainen en testen om het nauwkeuriger te maken.
- Wat is Custom Vision?
- De broncode voor dit voorbeeld vindt u op GitHub
Deze handleiding bevat instructies en voorbeeldcode om u te helpen aan de slag te gaan met de Custom Vision-clientbibliotheek voor Node.js om een afbeeldingsclassificatiemodel te bouwen. U kunt een project maken, tags toevoegen, het project trainen en de voorspellingseindpunt-URL van het project gebruiken om het programmatisch te testen. Gebruik dit voorbeeld als sjabloon voor het bouwen van uw eigen app voor afbeeldingsherkenning.
Opmerking
Als u een classificatiemodel wilt bouwen en trainen zonder code te schrijven, raadpleegt u de richtlijnen op basis van de browser.
Gebruik de Custom Vision-clientbibliotheek voor Node.js om het volgende te doen:
- Een nieuw Custom Vision-project maken
- Tags toevoegen aan het project
- Afbeeldingen uploaden en taggen
- Het project trainen
- De huidige iteratie publiceren
- Het voorspellingseindpunt testen
Referentiedocumentatie voor (training) en (voorspelling) | Pakket (npm) voor (training) en (voorspelling) | Voorbeelden
Voorwaarden
- Een Azure-abonnement. U kunt er gratis een maken.
- De huidige versie van Node.js.
- Zodra u uw Azure-abonnement hebt, maakt u een Custom Vision-resource in de Azure-portal om een trainings- en voorspellingsresource te maken.
- U kunt de gratis prijscategorie (
F0) gebruiken om de service uit te proberen en later een upgrade uit te voeren naar een betaalde laag voor productie.
- U kunt de gratis prijscategorie (
Omgevingsvariabelen maken
In dit voorbeeld schrijft u uw inloggegevens naar omgevingsvariabelen op de lokale computer die de toepassing uitvoert.
Ga naar de Azure-portal. Als de Custom Vision-resources die u hebt gemaakt in de sectie Vereisten zijn geïmplementeerd, selecteert u de knop Ga naar resource onder Volgende stappen. U vindt uw sleutels en eindpunten op de pagina's Sleutels en eindpunten van de resources onder Resourcebeheer. U moet de sleutels voor uw trainingsresource en voorspellingsresource ophalen, samen met de API-eindpunten.
U vindt de id van de voorspellingsresource op het tabblad Properties in de Azure-portal, vermeld als Resource-id.
Tip
U gebruikt https://www.customvision.ai ook om deze waarden op te halen. Nadat u zich hebt aangemeld, selecteert u het pictogram Instellingen rechtsboven. Op de pagina's Instellingen kunt u alle sleutels, resource-id's en eindpunten weergeven.
Als u de omgevingsvariabelen wilt instellen, opent u een consolevenster en volgt u de instructies voor uw besturingssysteem en ontwikkelomgeving.
- Als u de
VISION_TRAINING KEYomgevingsvariabele wilt instellen, vervangt u deze door<your-training-key>een van de sleutels voor uw trainingsresource. - Stel de
VISION_TRAINING_ENDPOINTomgevingsvariabele in door<your-training-endpoint>te vervangen door het eindpunt voor uw trainingsresource. - Als u de
VISION_PREDICTION_KEYomgevingsvariabele wilt instellen, vervangt u deze door<your-prediction-key>een van de sleutels voor uw voorspellingsresource. - Als u de
VISION_PREDICTION_ENDPOINTomgevingsvariabele wilt instellen, vervangt u het<your-prediction-endpoint>eindpunt voor uw voorspellingsresource. - Als u de
VISION_PREDICTION_RESOURCE_IDomgevingsvariabele wilt instellen, vervangt u deze door<your-resource-id>de resource-id voor uw voorspellingsresource.
Belangrijk
We raden Microsoft Entra ID-authenticatie aan met beheerde identiteiten voor Azure-resources om te voorkomen dat referenties worden opgeslagen bij uw toepassingen die in de cloud draaien.
Gebruik API-sleutels met voorzichtigheid. Neem de API-sleutel niet rechtstreeks in uw code op en plaats deze nooit openbaar. Als u API-sleutels gebruikt, slaat u deze veilig op in Azure Key Vault, draait u de sleutels regelmatig en beperkt u de toegang tot Azure Key Vault met behulp van op rollen gebaseerd toegangsbeheer en netwerktoegangsbeperkingen. Zie API-sleutels met Azure Key Vault voor meer informatie over het veilig gebruiken van API-sleutels in uw apps.
Zie Authenticate requests to Azure AI-services voor meer informatie over beveiliging van 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>
Nadat u de omgevingsvariabelen hebt toegevoegd, moet u mogelijk alle actieve programma's die de omgevingsvariabelen lezen opnieuw opstarten, inclusief het consolevenster.
Instellen
Een nieuwe Node.js-toepassing maken
Maak in een consolevenster (zoals cmd, PowerShell of Bash) een nieuwe map voor uw app en navigeer ernaartoe.
mkdir myapp && cd myapp
Voer de npm init opdracht uit om een knooppunttoepassing met een package.json bestand te maken. Druk meerdere keren op Enter om het proces te voltooien.
npm init
De clientbibliotheek installeren
Als u een app voor afbeeldingsanalyse wilt schrijven met Custom Vision voor Node.js, hebt u de Npm-pakketten van Custom Vision nodig. Voer de volgende opdracht uit in PowerShell om ze te installeren:
npm install @azure/cognitiveservices-customvision-training
npm install @azure/cognitiveservices-customvision-prediction
Het package.json-bestand van uw app wordt bijgewerkt met de afhankelijkheden.
Maak een bestand met de naam index.js en importeer de volgende bibliotheken:
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");
Tip
Wilt u het hele quickstart-codebestand tegelijk weergeven? U vindt deze op GitHub, die de codevoorbeelden in deze quickstart bevat.
Maak variabelen voor het Azure eindpunt en sleutels van uw resource.
// 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"];
Voeg ook velden toe voor uw projectnaam en een time-outparameter voor asynchrone aanroepen.
const publishIterationName = "classifyModel";
const setTimeoutPromise = util.promisify(setTimeout);
Objectmodel
| Naam | Beschrijving |
|---|---|
| TrainingAPIClient | Deze klasse verwerkt het maken, trainen en publiceren van uw modellen. |
| PredictionAPIClient | Deze klasse verwerkt de query's van uw modellen voor voorspellingen voor afbeeldingsclassificatie. |
| Voorspelling | Deze interface definieert één voorspelling op één afbeelding. Het bevat eigenschappen voor de object-id en naam en een betrouwbaarheidsscore. |
Codevoorbeelden
Deze codefragmenten laten zien hoe u de volgende taken kunt uitvoeren met de Custom Vision-clientbibliotheek voor JavaScript:
- De client verifiëren
- Een nieuw Custom Vision-project maken
- Tags toevoegen aan het project
- Afbeeldingen uploaden en taggen
- Het project trainen
- De huidige iteratie publiceren
- Het voorspellingseindpunt testen
De client verifiëren
Instantieer clientobjecten met uw eindpunt en sleutel. Maak een ApiKeyCredentials-object met uw sleutel en gebruik het met uw eindpunt om een TrainingAPIClient - en PredictionAPIClient-object te maken.
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);
Een nieuw Custom Vision-project maken
Start een nieuwe functie die al uw Custom Vision-functie-aanroepen bevat. Voeg de volgende code toe om een nieuw Custom Vision-serviceproject te maken.
(async () => {
console.log("Creating project...");
const sampleProject = await trainer.createProject("Sample Project");
Tags toevoegen aan het project
Als u classificatietags wilt maken voor uw project, voegt u de volgende code toe aan uw functie:
const hemlockTag = await trainer.createTag(sampleProject.id, "Hemlock");
const cherryTag = await trainer.createTag(sampleProject.id, "Japanese Cherry");
Afbeeldingen uploaden en taggen
Download eerst de voorbeeldafbeeldingen voor dit project. Sla de inhoud van de map sample Images op uw lokale apparaat op.
Als u de voorbeeldafbeeldingen aan het project wilt toevoegen, voegt u de volgende code in na het maken van de tag. Met deze code wordt elke afbeelding met de bijbehorende tag geüpload.
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);
Belangrijk
U moet het pad naar de afbeeldingen (sampleDataRoot) wijzigen op basis van de locatie waar u de Foundry Tools Python SDK Samples-repository hebt gedownload.
Het project trainen
Met deze code wordt de eerste iteratie van het voorspellingsmodel gemaakt.
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);
De huidige iteratie publiceren
Met deze code wordt de getrainde iteratie naar het voorspellingseindpunt gepubliceerd. De naam die aan de gepubliceerde iteratie wordt gegeven, kan worden gebruikt om voorspellingsaanvragen te verzenden. Een iteratie is pas beschikbaar in het voorspellingseindpunt als het is gepubliceerd.
// Publish the iteration to the end point
await trainer.publishIteration(sampleProject.id, trainingIteration.id, publishIterationName, predictionResourceId);
Het voorspellingseindpunt testen
Als u een afbeelding naar het voorspellingseindpunt wilt verzenden en de voorspelling wilt ophalen, voegt u de volgende code toe aan uw functie.
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)}%`);
});
Sluit vervolgens uw Custom Vision-functie en roep deze aan.
})()
De toepassing uitvoeren
Voer de toepassing uit met de node opdracht in uw quickstart-bestand.
node index.js
De uitvoer van de toepassing moet vergelijkbaar zijn met de volgende tekst:
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%
Vervolgens kunt u controleren of de testafbeelding (gevonden in <sampleDataRoot>/Test/) op de juiste wijze is getagd. U kunt ook teruggaan naar de Custom Vision-website en de huidige status van uw zojuist gemaakte project bekijken.
Als u uw eigen afbeeldingsclassificatieproject wilt implementeren (of in plaats daarvan een objectdetectieproject wilt proberen), kunt u het structuuridentificatieproject uit dit voorbeeld verwijderen. Met een gratis abonnement kunt u twee Custom Vision-projecten uitvoeren.
Ga op de website Custom Vision naar Projects en selecteer de prullenbak onder Mijn nieuwe Project.
Verwante inhoud
Deze handleiding laat zien hoe elke stap van het objectdetectieproces in code kan worden uitgevoerd. In dit voorbeeld wordt één trainingsiteratie uitgevoerd, maar vaak moet u uw model meerdere keren trainen en testen om het nauwkeuriger te maken.
- Wat is Custom Vision?
- De broncode voor dit voorbeeld vindt u op GitHub
- SDK-referentiedocumentatie (training)
- SDK-referentiedocumentatie (voorspelling)
Ga aan de slag met de Custom Vision-clientbibliotheek voor Python. Volg deze stappen om het pakket te installeren en de voorbeeldcode uit te proberen voor het bouwen van een afbeeldingsclassificatiemodel. U maakt een project, voegt tags toe, traint het project en gebruikt de voorspellingseindpunt-URL van het project om het programmatisch te testen. Gebruik dit voorbeeld als sjabloon voor het bouwen van uw eigen app voor afbeeldingsherkenning.
Opmerking
Als u een classificatiemodel wilt bouwen en trainen zonder code te schrijven, raadpleegt u de richtlijnen op basis van de browser.
Gebruik de Custom Vision-clientbibliotheek voor Python om het volgende te doen:
- Een nieuw Custom Vision-project maken
- Tags toevoegen aan het project
- Afbeeldingen uploaden en taggen
- Het project trainen
- De huidige iteratie publiceren
- Het voorspellingseindpunt testen
Referentiedocumentatie | Library-broncode | Package (PyPI) | Voorbeelden
Voorwaarden
- Een Azure-abonnement. U kunt er gratis een maken.
-
Python 3.x.
- De installatie van uw Python moet pip bevatten. U kunt controleren of pip is geïnstalleerd door op de opdrachtregel uit te voeren
pip --version. Installeer pip door de nieuwste versie van Python te installeren.
- De installatie van uw Python moet pip bevatten. U kunt controleren of pip is geïnstalleerd door op de opdrachtregel uit te voeren
- Zodra u uw Azure-abonnement hebt, maakt u een Custom Vision-resource in de Azure-portal om een trainings- en voorspellingsresource te maken.
- U kunt de gratis prijscategorie (
F0) gebruiken om de service uit te proberen en later een upgrade uit te voeren naar een betaalde laag voor productie.
- U kunt de gratis prijscategorie (
Omgevingsvariabelen maken
In dit voorbeeld schrijft u uw inloggegevens naar omgevingsvariabelen op de lokale computer die de toepassing uitvoert.
Ga naar de Azure-portal. Als de Custom Vision-resources die u hebt gemaakt in de sectie Vereisten zijn geïmplementeerd, selecteert u de knop Ga naar resource onder Volgende stappen. U vindt uw sleutels en eindpunten op de pagina's Sleutels en eindpunten van de resources onder Resourcebeheer. U moet de sleutels voor uw trainingsresource en voorspellingsresource ophalen, samen met de API-eindpunten.
U vindt de id van de voorspellingsresource op het tabblad Properties in de Azure-portal, vermeld als Resource-id.
Tip
U gebruikt https://www.customvision.ai ook om deze waarden op te halen. Nadat u zich hebt aangemeld, selecteert u het pictogram Instellingen rechtsboven. Op de pagina's Instellingen kunt u alle sleutels, resource-id's en eindpunten weergeven.
Als u de omgevingsvariabelen wilt instellen, opent u een consolevenster en volgt u de instructies voor uw besturingssysteem en ontwikkelomgeving.
- Als u de
VISION_TRAINING KEYomgevingsvariabele wilt instellen, vervangt u deze door<your-training-key>een van de sleutels voor uw trainingsresource. - Stel de
VISION_TRAINING_ENDPOINTomgevingsvariabele in door<your-training-endpoint>te vervangen door het eindpunt voor uw trainingsresource. - Als u de
VISION_PREDICTION_KEYomgevingsvariabele wilt instellen, vervangt u deze door<your-prediction-key>een van de sleutels voor uw voorspellingsresource. - Als u de
VISION_PREDICTION_ENDPOINTomgevingsvariabele wilt instellen, vervangt u het<your-prediction-endpoint>eindpunt voor uw voorspellingsresource. - Als u de
VISION_PREDICTION_RESOURCE_IDomgevingsvariabele wilt instellen, vervangt u deze door<your-resource-id>de resource-id voor uw voorspellingsresource.
Belangrijk
We raden Microsoft Entra ID-authenticatie aan met beheerde identiteiten voor Azure-resources om te voorkomen dat referenties worden opgeslagen bij uw toepassingen die in de cloud draaien.
Gebruik API-sleutels met voorzichtigheid. Neem de API-sleutel niet rechtstreeks in uw code op en plaats deze nooit openbaar. Als u API-sleutels gebruikt, slaat u deze veilig op in Azure Key Vault, draait u de sleutels regelmatig en beperkt u de toegang tot Azure Key Vault met behulp van op rollen gebaseerd toegangsbeheer en netwerktoegangsbeperkingen. Zie API-sleutels met Azure Key Vault voor meer informatie over het veilig gebruiken van API-sleutels in uw apps.
Zie Authenticate requests to Azure AI-services voor meer informatie over beveiliging van 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>
Nadat u de omgevingsvariabelen hebt toegevoegd, moet u mogelijk alle actieve programma's die de omgevingsvariabelen lezen opnieuw opstarten, inclusief het consolevenster.
Instellen
De clientbibliotheek installeren
Als u een app voor afbeeldingsanalyse wilt schrijven met Custom Vision voor Python, hebt u de Custom Vision-clientbibliotheek nodig. Nadat u Python hebt geïnstalleerd, voert u de volgende opdracht uit in PowerShell of een consolevenster:
pip install azure-cognitiveservices-vision-customvision
Een nieuwe Python-toepassing maken
Maak een nieuw Python-bestand en importeer de volgende bibliotheken.
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
Tip
Wilt u het hele quickstart-codebestand tegelijk weergeven? U vindt deze op GitHub, die de codevoorbeelden in deze quickstart bevat.
Maak variabelen voor het Azure eindpunt en sleutels van uw resource.
# 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"]
Objectmodel
| Naam | Beschrijving |
|---|---|
| CustomVisionTrainingClient | Deze klasse verwerkt het maken, trainen en publiceren van uw modellen. |
| CustomVisionPredictionClient | Deze klasse verwerkt de query's van uw modellen voor voorspellingen voor afbeeldingsclassificatie. |
| ImagePrediction | Deze klasse definieert een voorspelling van één object op één afbeelding. Het bevat eigenschappen voor de object-id en naam, de locatie van het omsluitende kader van het object en een nauwkeurigheidsscore. |
Codevoorbeelden
Deze codefragmenten laten zien hoe u het volgende kunt doen met de Custom Vision-clientbibliotheek voor Python:
- De client verifiëren
- Een nieuw Custom Vision-project maken
- Tags toevoegen aan het project
- Afbeeldingen uploaden en taggen
- Het project trainen
- De huidige iteratie publiceren
- Het voorspellingseindpunt testen
De client verifiëren
Instantieer een trainings- en voorspellingsclient met uw eindpunt en sleutels. Maak ApiKeyServiceClientCredentials objecten met uw sleutels en gebruik deze met uw eindpunt om een CustomVisionTrainingClient - en CustomVisionPredictionClient-object te maken.
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)
Een nieuw Custom Vision-project maken
Voeg de volgende code toe aan uw script om een nieuw Custom Vision-serviceproject te maken.
Zie de methode create_project om andere opties op te geven wanneer u uw project maakt (uitgelegd in de handleiding een classificatiewebportal bouwen).
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)
Tags toevoegen aan het project
Als u classificatietags aan uw project wilt toevoegen, voegt u de volgende code toe:
# Make two tags in the new project
hemlock_tag = trainer.create_tag(project.id, "Hemlock")
cherry_tag = trainer.create_tag(project.id, "Japanese Cherry")
Afbeeldingen uploaden en taggen
Download eerst de voorbeeldafbeeldingen voor dit project. Sla de inhoud van de map sample Images op uw lokale apparaat op.
Als u de voorbeeldafbeeldingen aan het project wilt toevoegen, voegt u de volgende code in na het maken van de tag. Met deze code wordt elke afbeelding met de bijbehorende tag geüpload. U kunt maximaal 64 afbeeldingen uploaden in één batch.
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)
Opmerking
U moet het pad naar de afbeeldingen wijzigen op basis van waar u de Foundry Tools Python SDK Samples repository hebt gedownload.
Het project trainen
Met deze code wordt de eerste iteratie van het voorspellingsmodel gemaakt.
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)
Tip
Trainen met geselecteerde tags
U kunt eventueel alleen trainen op een subset van uw toegepaste tags. U kunt dit doen als u nog niet genoeg van bepaalde tags hebt toegepast, maar u wel genoeg van anderen hebt. Stel in de train_project aanroep de optionele parameter selected_tags in op een lijst met de id-tekenreeksen van de tags die u wilt gebruiken. Het model traint om alleen de tags in die lijst te herkennen.
De huidige iteratie publiceren
Een iteratie is pas beschikbaar in het voorspellingseindpunt als het is gepubliceerd. Met de volgende code wordt de huidige iteratie van het model beschikbaar voor het uitvoeren van query's.
# 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!")
Het voorspellingseindpunt testen
Als u een afbeelding naar het voorspellingseindpunt wilt verzenden en de voorspelling wilt ophalen, voegt u de volgende code toe aan het einde van het bestand:
# 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))
De toepassing uitvoeren
Voer de toepassing uit met behulp van de volgende opdracht:
python CustomVisionQuickstart.py
De uitvoer van de toepassing moet vergelijkbaar zijn met de volgende tekst:
Creating project...
Adding images...
Training...
Training status: Training
Training status: Completed
Done!
Hemlock: 93.53%
Japanese Cherry: 0.01%
Vervolgens kunt u controleren of de testafbeelding (gevonden in <base_image_location>/images/Test/) op de juiste wijze is gelabeld. U kunt ook teruggaan naar de Custom Vision-website en de huidige status van uw zojuist gemaakte project bekijken.
Resources opschonen
Als u uw eigen afbeeldingsclassificatieproject wilt implementeren (of in plaats daarvan een objectdetectieproject wilt proberen), kunt u het structuuridentificatieproject uit dit voorbeeld verwijderen. Met een gratis abonnement kunt u twee Custom Vision-projecten uitvoeren.
Ga op de website Custom Vision naar Projects en selecteer de prullenbak onder Mijn nieuwe Project.
Verwante inhoud
U hebt nu gezien hoe elke stap van het afbeeldingsclassificatieproces in code kan worden uitgevoerd. In dit voorbeeld wordt één trainingsiteratie uitgevoerd, maar vaak moet u uw model meerdere keren trainen en testen om het nauwkeuriger te maken.
- Wat is Custom Vision?
- De broncode voor dit voorbeeld vindt u op GitHub
- SDK-referentiedocumentatie
Aan de slag met de Custom Vision REST API. Volg deze stappen om de API aan te roepen en een afbeeldingsclassificatiemodel te bouwen. U maakt een project, voegt tags toe, traint het project en gebruikt de voorspellingseindpunt-URL van het project om het programmatisch te testen. Gebruik dit voorbeeld als sjabloon voor het bouwen van uw eigen app voor afbeeldingsherkenning.
Opmerking
Custom Vision wordt het eenvoudigst gebruikt via een clientbibliotheek-SDK of via de richtlijnen op basis van de browser.
Gebruik de Custom Vision-clientbibliotheek voor de REST API om:
- Een nieuw Custom Vision-project maken
- Tags toevoegen aan het project
- Afbeeldingen uploaden en taggen
- Het project trainen
- De huidige iteratie publiceren
- Het voorspellingseindpunt testen
Voorwaarden
- Een Azure-abonnement. U kunt er gratis een maken.
- Zodra u uw Azure-abonnement hebt, maakt u een Custom Vision-resource in de Azure-portal om een trainings- en voorspellingsresource te maken.
- U hebt de sleutel en het eindpunt nodig van de resources die u maakt om uw toepassing te verbinden met Custom Vision. Verderop in de quickstart plakt u uw sleutel en eindpunt in de code.
- U kunt de gratis prijscategorie (
F0) gebruiken om de service uit te proberen en later een upgrade uit te voeren naar een betaalde laag voor productie.
- PowerShell versie 6.0+ of een vergelijkbare opdrachtregeltoepassing.
Een nieuw Custom Vision-project maken
U gebruikt een opdracht zoals hieronder om een afbeeldingsclassificatieproject te maken. Het gemaakte project wordt weergegeven op de Custom Vision-website.
curl -v -X POST -H "Training-key: {subscription key}" "https://{endpoint}/customvision/v3.3/Training/projects?name={name}"
Kopieer de opdracht naar een teksteditor en breng de volgende wijzigingen aan:
- Vervang
{subscription key}door uw geldige sleutel. - Vervang
{endpoint}door het eindpunt dat overeenkomt met uw sleutel.Opmerking
Nieuwe resources die na 1 juli 2019 zijn gemaakt, gebruiken aangepaste subdomeinnamen. Zie Aangepaste subdomeinnamen voor Foundry Tools voor meer informatie en een volledige lijst met regionale eindpunten.
- Vervang door
{name}de naam van uw project. - U kunt eventueel andere URL-parameters instellen om te configureren welk type model uw project gebruikt. Zie de Create Project API voor opties.
Er wordt een JSON-antwoord zoals in het volgende voorbeeld weergegeven. Sla de "id" waarde van uw project op een tijdelijke locatie op.
{
"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"
}
Tags toevoegen aan het project
Gebruik de volgende opdracht om de tags te definiëren waarop u het model gaat trainen.
curl -v -X POST -H "Training-key: {subscription key}" "https://{endpoint}/customvision/v3.3/Training/projects/{projectId}/tags?name={name}"
- Voeg nogmaals uw eigen sleutel en eindpunt-URL in.
- Vervang
{projectId}door uw eigen project-id. - Vervang
{name}door de naam van de tag die u wilt gebruiken.
Herhaal dit proces voor alle tags die u in uw project wilt gebruiken. Als u de opgegeven voorbeeldafbeeldingen gebruikt, voegt u de tags "Hemlock" en "Japanese Cherry".
Er wordt een JSON-antwoord zoals in het volgende voorbeeld weergegeven. Sla de "id" waarde van elke tag op een tijdelijke locatie op.
{
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string",
"type": "Regular",
"imageCount": 0
}
Afbeeldingen uploaden en taggen
Download vervolgens de voorbeeldafbeeldingen voor dit project. Sla de inhoud van de map sample Images op uw lokale apparaat op.
Gebruik de volgende opdracht om de afbeeldingen te uploaden en tags toe te passen; eenmaal voor de 'Hemlock'-afbeeldingen, en afzonderlijk voor de 'Japanse Cherry'-afbeeldingen. Zie de afbeeldingen maken op basis van gegevens-API voor meer opties.
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}"
- Voeg nogmaals uw eigen sleutel en eindpunt-URL in.
- Vervang
{projectId}door uw eigen project-id. - Vervang
{tagArray}door de id van een tag. - Vul vervolgens de hoofdtekst van de aanvraag in met de binaire gegevens van de afbeeldingen die u wilt taggen.
Het project trainen
Met deze methode traint u het model op de getagde afbeeldingen die u hebt geüpload en retourneert u een id voor de huidige projectiteratie.
curl -v -X POST -H "Content-Type: application/json" -H "Training-key: {subscription key}" "https://{endpoint}/customvision/v3.3/Training/projects/{projectId}/train"
- Voeg nogmaals uw eigen sleutel en eindpunt-URL in.
- Vervang
{projectId}door uw eigen project-id. - Vervang
{tagArray}door de id van een tag. - Vul vervolgens de hoofdtekst van de aanvraag in met de binaire gegevens van de afbeeldingen die u wilt taggen.
- Gebruik eventueel andere URL-parameters. Zie de API Train Project voor opties.
Tip
Trainen met geselecteerde tags
U kunt eventueel alleen trainen op een subset van uw toegepaste tags. U kunt dit doen als u nog niet genoeg van bepaalde tags hebt toegepast, maar u wel genoeg van anderen hebt. Voeg de optionele JSON-inhoud toe aan de hoofdtekst van uw aanvraag. Vul de "selectedTags" matrix in met de id's van de tags die u wilt gebruiken.
{
"selectedTags": [
"00000000-0000-0000-0000-000000000000"
]
}
Het JSON-antwoord bevat informatie over uw getrainde project, inclusief de iteratie-id ("id"). Sla deze waarde op voor de volgende stap.
{
"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"
}
De huidige iteratie publiceren
Met deze methode wordt de huidige iteratie van het model beschikbaar voor het uitvoeren van query's. U gebruikt de geretourneerde modelnaam als verwijzing om voorspellingsaanvragen te verzenden.
curl -v -X POST -H "Training-key: {subscription key}" "https://{endpoint}/customvision/v3.3/Training/projects/{projectId}/iterations/{iterationId}/publish?publishName={publishName}&predictionId={predictionId}"
- Voeg nogmaals uw eigen sleutel en eindpunt-URL in.
- Vervang
{projectId}door uw eigen project-id. - Vervang
{iterationId}door de id die in de vorige stap is geretourneerd. - Vervang
{publishedName}door de naam die u wilt toewijzen aan uw voorspellingsmodel. - Vervang
{predictionId}door uw eigen voorspellingsresource-id. U vindt de voorspellingsresource-id op het tabblad Properties van de resource in de Azure-portal, vermeld als Resource-id. - Gebruik eventueel andere URL-parameters. Zie de Publicatie-iteratie-API .
Het voorspellingseindpunt testen
Gebruik tot slot deze opdracht om uw getrainde model te testen door een nieuwe afbeelding te uploaden om deze te classificeren met tags. U kunt de afbeelding gebruiken in de map Test van de voorbeeldbestanden die u eerder hebt gedownload.
curl -v -X POST -H "Training-key: {subscription key}" "https://{endpoint}/customvision/v3.3/Training/projects/{projectId}/iterations/{iterationId}/publish?publishName={publishName}&predictionId={predictionId}"
- Voeg nogmaals uw eigen sleutel en eindpunt-URL in.
- Vervang
{projectId}door uw eigen project-id. - Vervang
{publishedName}door de naam die u in de vorige stap hebt gebruikt. - Voeg de binaire gegevens van uw lokale afbeelding toe aan de hoofdtekst van de aanvraag.
- Gebruik eventueel andere URL-parameters. Zie de API voor classificatieafbeeldingen .
Het geretourneerde JSON-antwoord bevat alle tags die het model op uw afbeelding heeft toegepast, samen met waarschijnlijkheidsscores voor elke tag.
{
"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"
}
]
}
Als u uw eigen afbeeldingsclassificatieproject wilt implementeren (of in plaats daarvan een objectdetectieproject wilt proberen), kunt u het structuuridentificatieproject uit dit voorbeeld verwijderen. Met een gratis abonnement kunt u twee Custom Vision-projecten uitvoeren.
Ga op de website Custom Vision naar Projects en selecteer de prullenbak onder Mijn nieuwe Project.
Verwante inhoud
Nu hebt u elke stap van het afbeeldingsclassificatieproces uitgevoerd met behulp van de REST API. In dit voorbeeld wordt één trainingsiteratie uitgevoerd, maar vaak moet u uw model meerdere keren trainen en testen om het nauwkeuriger te maken.
- Wat is Custom Vision?
- API-referentiedocumentatie (training)
- API-referentiedocumentatie (voorspelling)