Rövid útmutató: Képbesorolási projekt létrehozása a Custom Vision ügyfélkódtárával vagy a REST API-val
A .NET-hez készült Custom Vision ügyfélkódtár használatának első lépései. Az alábbi lépések végrehajtásával telepítheti a csomagot, és kipróbálhatja a példakódot egy képosztályozási modell létrehozásához. Létrehoz egy projektet, címkéket ad hozzá, betanítja a projektet, és a projekt előrejelzési végpontJÁNAK URL-címével programozott módon teszteli azt. Ezt a példát használhatja sablonként saját képfelismerő alkalmazás létrehozásához.
Feljegyzés
Ha kód írása nélkül szeretne besorolási modellt létrehozni és betaníteni, tekintse meg inkább a böngészőalapú útmutatást.
Referenciadokumentáció | Kódtár forráskódja (betanítás)(előrejelzés) | Csomag (NuGet) (betanítás)(előrejelzés) | Minták
Előfeltételek
- Azure-előfizetés – Ingyenes létrehozás
- A Visual Studio IDE vagy a .NET Core aktuális verziója.
- Miután megkapta az Azure-előfizetését, hozzon létre egy Custom Vision-erőforrást az Azure Portalon egy betanítási és előrejelzési erőforrás létrehozásához.
- Az ingyenes tarifacsomag (
F0
) használatával kipróbálhatja a szolgáltatást, és később frissíthet egy fizetős szintre az éles környezetben.
- Az ingyenes tarifacsomag (
Környezeti változók létrehozása
Ebben a példában a hitelesítő adatokat az alkalmazást futtató helyi gépen lévő környezeti változókba fogja írni.
Nyissa meg az Azure Portalt. Ha az Előfeltételek szakaszban létrehozott Custom Vision-erőforrások sikeresen üzembe helyezve, válassza az Erőforrás megnyitása gombot a Következő lépések csoportban. A kulcsokat és végpontokat az erőforrások kulcs- és végpontoldalain, az erőforrás-kezelés alatt találja. Be kell szereznie a betanítási és előrejelzési erőforrások kulcsait, valamint az API-végpontokat.
Az előrejelzési erőforrás-azonosítót az előrejelzési erőforrás Tulajdonságok lapján találja az Azure Portalon, erőforrás-azonosítóként felsorolva.
Tipp.
Ezeket az értékeket is lekérheti https://www.customvision.ai/ . Bejelentkezés után kattintson a jobb felső sarokban található Gépház ikonra. A Beállítás lapon megtekintheti az összes kulcsot, erőforrás-azonosítót és végpontot.
Figyelem
Ne vegye fel közvetlenül a kulcsot a kódba, és soha ne tegye közzé nyilvánosan. Az Azure AI-szolgáltatások biztonsági cikkében további hitelesítési lehetőségeket talál, például az Azure Key Vaultot.
A környezeti változók beállításához nyisson meg egy konzolablakot, és kövesse az operációs rendszer és a fejlesztési környezet utasításait.
- A
VISION_TRAINING KEY
környezeti változó beállításához cserélje leyour-training-key
a betanítási erőforrás egyik kulcsára. - A
VISION_TRAINING_ENDPOINT
környezeti változó beállításához cserélje leyour-training-endpoint
a betanítási erőforrás végpontját. - A
VISION_PREDICTION_KEY
környezeti változó beállításához cserélje leyour-prediction-key
az előrejelzési erőforrás egyik kulcsára. - A
VISION_PREDICTION_ENDPOINT
környezeti változó beállításához cserélje leyour-prediction-endpoint
az előrejelzési erőforrás végpontját. - A
VISION_PREDICTION_RESOURCE_ID
környezeti változó beállításához cserélje leyour-resource-id
az előrejelzési erőforrás erőforrás-azonosítóját.
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
A környezeti változók hozzáadása után előfordulhat, hogy újra kell indítania a futó programokat, amelyek felolvassák a környezeti változókat, beleértve a konzolablakot is.
Beállítás
Új C#-alkalmazás létrehozása
A Visual Studio használatával hozzon létre egy új .NET Core-alkalmazást.
Telepítse az ügyfélkódtárat
Miután létrehozott egy új projektet, telepítse az ügyfélkódtárat a jobb gombbal a projektmegoldásra kattintva a Megoldáskezelő, és válassza a NuGet-csomagok kezelése lehetőséget. A megnyíló csomagkezelőben válassza a Tallózás lehetőséget, jelölje be az Előrendelés belefoglalása jelölőnégyzetet, és keressen Microsoft.Azure.CognitiveServices.Vision.CustomVision.Training
rá és Microsoft.Azure.CognitiveServices.Vision.CustomVision.Prediction
. Válassza ki a legújabb verziót, majd telepítse.
Tipp.
Szeretné egyben megtekinteni a teljes gyorsútmutatós kódfájlt? Megtalálhatja a GitHubon, amely a gyorsútmutató kódmintáit is tartalmazza.
Nyissa meg a program.cs fájlt a projektkönyvtárban, és adja hozzá a következő using
irányelveket:
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;
Az alkalmazás fő metódusában hozzon létre olyan változókat, amelyek lekérik az erőforrás kulcsait és végpontjait a környezeti változókból. Emellett deklarál néhány alapvető objektumot is, amelyeket később használni fog.
// 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;
Az alkalmazás Fő metódusában adja hozzá az ebben a rövid útmutatóban használt metódusok hívásait. Ezeket később fogja implementálni.
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);
Az ügyfél hitelesítése
Egy új módszerrel példányosíthatja a betanítási és előrejelzési ügyfeleket a végpont és a kulcsok használatával.
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;
}
Új Custom Vision-projekt létrehozása
Ez a következő kódrészlet létrehoz egy képbesorolási projektet. A létrehozott projekt megjelenik a Custom Vision webhelyén. Tekintse meg a CreateProject metódust a projekt létrehozásakor szükséges egyéb beállítások megadásához (erről az osztályozó webes portál összeállítása című útmutatóban olvashat).
private static Project CreateProject(CustomVisionTrainingClient trainingApi)
{
// Create a new project
Console.WriteLine("Creating new project:");
return trainingApi.CreateProject("My New Project");
}
Címkék hozzáadása a projekthez
Ez a módszer határozza meg a modell betanítása során használni kívánt címkéket.
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");
}
Képek feltöltése és címkézése
Először töltse le a projekt mintaképét. Mentse a Mintaképek mappa tartalmát a helyi eszközre.
Ezután adjon meg egy segédmetódust, amellyel feltöltheti a képeket ebbe a könyvtárba. Előfordulhat, hogy szerkesztenie kell a GetFiles argumentumot, hogy a rendszer a képek mentési helyére mutasson.
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")));
}
Ezután adjon meg egy módszert a képek feltöltésére, és alkalmazza a címkéket a mappa helyének megfelelően (a képek már rendezve vannak). A képeket iteratív módon vagy kötegben (kötegenként legfeljebb 64) töltheti fel és címkézheti fel. Ez a kódrészlet mindkettőre tartalmaz példákat.
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 }));
}
A projekt tanítása
Ez a módszer hozza létre az első betanítási iterációt a projektben. A betanítás befejezéséig lekérdezi a szolgáltatást.
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);
}
}
Tipp.
Betanítása kijelölt címkékkel
Igény szerint csak az alkalmazott címkék egy részhalmazára taníthat be. Ezt akkor érdemes megtennie, ha még nem alkalmazott elég címkét bizonyos címkék közül, de van elég más. A TrainProject hívásban használja a trainingParameters paramétert. Hozzon létre egy TrainingParameters tulajdonságot, és állítsa be a SelectedTags tulajdonságát a használni kívánt címkék azonosítóinak listájára. A modell betanítása csak a lista címkéinek felismerésére fog betanulni.
Az aktuális iteráció közzététele
Ezzel a módszerrel a modell aktuális iterációja elérhető lesz a lekérdezéshez. A modell neve hivatkozásként használható előrejelzési kérések küldéséhez. Meg kell adnia a saját értékét a következőhöz predictionResourceId
: . Az előrejelzési erőforrás-azonosítót az Azure Portal Tulajdonságok lapján találja, erőforrás-azonosítóként felsorolva.
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
}
Az előrejelzési végpont tesztelése
A szkript ezen része betölti a képet, lekérdezi a modell végpontját, majd megjeleníti az előrejelzési adatokat a konzolon.
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}");
}
}
Az alkalmazás futtatása
Futtassa az alkalmazást az IDE ablak tetején található Hibakeresés gombra kattintva.
A futtatása során az alkalmazásnak meg kell nyitnia egy konzolablakot, és az alábbi kimenetet kell megjelenítenie:
Creating new project:
Uploading images
Training
Done!
Making a prediction:
Hemlock: 95.0%
Japanese Cherry: 0.0%
Ezután ellenőrizheti, hogy a tesztkép (az Images/Test/ mappában található) megfelelően lett-e megcímkézve. Az alkalmazásból történő kilépéshez nyomjon meg egy billentyűt. Vissza is léphet a Custom Vision webhelyére, és megtekintheti az újonnan létrehozott projekt aktuális állapotát.
Az erőforrások eltávolítása
Ha saját képosztályozási projektet szeretne megvalósítani (vagy ehelyett egy objektumészlelési projektet szeretne kipróbálni), érdemes törölnie a példából a faazonosítási projektet. Az ingyenes előfizetés két Custom Vision-projektet tesz lehetővé.
A Custom Vision webhelyén lépjen a projektekhez, és kattintson a My New Project panel alsó részén található kuka ikonra.
Következő lépések
Most elvégezte a képbesorolási folyamat minden lépését a kódban. Ez a minta egyetlen betanítási iterációt hajt végre, de gyakran többször kell betanítania és tesztelnie a modellt, hogy pontosabb legyen.
- Mi az a Custom Vision?
- A minta forráskódja a GitHubon található
- SDK-referenciadokumentáció
Ez az útmutató útmutatást és mintakódot biztosít a Custom Vision Go ügyfélkódtárának a képosztályozási modell létrehozásához való használatának megkezdéséhez. Létrehoz egy projektet, címkéket ad hozzá, betanítja a projektet, és a projekt előrejelzési végpontJÁNAK URL-címével programozott módon teszteli azt. Ezt a példát használhatja sablonként saját képfelismerő alkalmazás létrehozásához.
Feljegyzés
Ha kód írása nélkül szeretne besorolási modellt létrehozni és betaníteni, tekintse meg inkább a böngészőalapú útmutatást.
Használja a Custom Vision ügyféloldali kódtárát a Következőhöz:
- Új Custom Vision-projekt létrehozása
- Címkék hozzáadása a projekthez
- Képek feltöltése és címkézése
- A projekt tanítása
- Az aktuális iteráció közzététele
- Az előrejelzési végpont tesztelése
Referenciadokumentáció (képzés)(előrejelzés)
Előfeltételek
- Azure-előfizetés – Ingyenes létrehozás
- Ugrás 1,8+
- Miután megkapta az Azure-előfizetését, hozzon létre egy Custom Vision-erőforrást az Azure Portalon egy betanítási és előrejelzési erőforrás létrehozásához.
- Az ingyenes tarifacsomag (
F0
) használatával kipróbálhatja a szolgáltatást, és később frissíthet egy fizetős szintre az éles környezetben.
- Az ingyenes tarifacsomag (
Környezeti változók létrehozása
Ebben a példában a hitelesítő adatokat az alkalmazást futtató helyi gépen lévő környezeti változókba fogja írni.
Nyissa meg az Azure Portalt. Ha az Előfeltételek szakaszban létrehozott Custom Vision-erőforrások sikeresen üzembe helyezve, válassza az Erőforrás megnyitása gombot a Következő lépések csoportban. A kulcsokat és végpontokat az erőforrások kulcs- és végpontoldalain, az erőforrás-kezelés alatt találja. Be kell szereznie a betanítási és előrejelzési erőforrások kulcsait, valamint az API-végpontokat.
Az előrejelzési erőforrás-azonosítót az előrejelzési erőforrás Tulajdonságok lapján találja az Azure Portalon, erőforrás-azonosítóként felsorolva.
Tipp.
Ezeket az értékeket is lekérheti https://www.customvision.ai/ . Bejelentkezés után kattintson a jobb felső sarokban található Gépház ikonra. A Beállítás lapon megtekintheti az összes kulcsot, erőforrás-azonosítót és végpontot.
Figyelem
Ne vegye fel közvetlenül a kulcsot a kódba, és soha ne tegye közzé nyilvánosan. Az Azure AI-szolgáltatások biztonsági cikkében további hitelesítési lehetőségeket talál, például az Azure Key Vaultot.
A környezeti változók beállításához nyisson meg egy konzolablakot, és kövesse az operációs rendszer és a fejlesztési környezet utasításait.
- A
VISION_TRAINING KEY
környezeti változó beállításához cserélje leyour-training-key
a betanítási erőforrás egyik kulcsára. - A
VISION_TRAINING_ENDPOINT
környezeti változó beállításához cserélje leyour-training-endpoint
a betanítási erőforrás végpontját. - A
VISION_PREDICTION_KEY
környezeti változó beállításához cserélje leyour-prediction-key
az előrejelzési erőforrás egyik kulcsára. - A
VISION_PREDICTION_ENDPOINT
környezeti változó beállításához cserélje leyour-prediction-endpoint
az előrejelzési erőforrás végpontját. - A
VISION_PREDICTION_RESOURCE_ID
környezeti változó beállításához cserélje leyour-resource-id
az előrejelzési erőforrás erőforrás-azonosítóját.
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
A környezeti változók hozzáadása után előfordulhat, hogy újra kell indítania a futó programokat, amelyek felolvassák a környezeti változókat, beleértve a konzolablakot is.
Beállítás
A Custom Vision ügyfélkódtár telepítése
Ha a Custom Vision for Go-val szeretne képelemzési alkalmazást írni, szüksége lesz a Custom Vision szolgáltatás ügyfélkódtárára. Futtassa az alábbi parancsot a PowerShellben:
go get -u github.com/Azure/azure-sdk-for-go/...
vagy ha használja dep
, futtassa az adattáron belül a következőt:
dep ensure -add github.com/Azure/azure-sdk-for-go
Mintaképek letöltése
Ez a példa az Azure AI-szolgáltatások Python SDK-mintatárából származó képeket használja a GitHubon. Klónozza vagy töltse le ezt az adattárat a fejlesztői környezetbe. Jegyezze meg a mappa helyét egy későbbi lépésben.
A Custom Vision-projekt létrehozása
Hozzon létre egy sample.go nevű új fájlt az előnyben részesített projektkönyvtárban, és nyissa meg az előnyben részesített kódszerkesztőben.
Adja hozzá a következő kódot a szkripthez egy új Custom Vision Service-projekt létrehozásához.
Tekintse meg a CreateProject metódust a projekt létrehozásakor szükséges egyéb beállítások megadásához (erről az osztályozó webes portál összeállítása című útmutatóban olvashat).
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)
}
Címkék létrehozása a projektben
Ha besorolási címkéket szeretne létrehozni a projekthez, adja hozzá a következő kódot a sample.go végéhez:
// 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))
Képek feltöltése és címkézése
A minta képek projekthez adásához, helyezze el a következő kódot a címke létrehozása után. Ez a kód a képeket a hozzájuk tartozó címkékkel együtt tölti fel. Egyetlen kötegben legfeljebb 64 képet tölthet fel.
Feljegyzés
Módosítania kell a rendszerképek elérési útját annak alapján, hogy hol töltötte le korábban az Azure AI-szolgáltatások Go SDK-mintái projektet.
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() })
}
A projekt betanítása és közzététele
Ez a kód létrehozza az előrejelzési modell első iterációját, majd közzéteszi az iterációt az előrejelzési végponton. A közzétett iterációnak megadott név használható előrejelzési kérések küldéséhez. Az előrejelzési végponton csak a közzététel után érhető el iteráció.
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))
Az előrejelzési végpont használata
A képek előrejelzési végpontra való küldéséhez és az előrejelzés lekéréséhez adja hozzá a következő kódot a fájl végéhez:
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("")
}
}
Az alkalmazás futtatása
Futtassa a sample.go fájlt.
go run sample.go
Az alkalmazás kimenetének az alábbi szöveghez hasonlóan kell kinéznie:
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%
Ezután ellenőrizheti, hogy a tesztkép (base_image_url<>/Images/Test/) megfelelően van-e megjelölve. Vissza is léphet a Custom Vision webhelyére, és megtekintheti az újonnan létrehozott projekt aktuális állapotát.
Az erőforrások eltávolítása
Ha saját képosztályozási projektet szeretne megvalósítani (vagy ehelyett egy objektumészlelési projektet szeretne kipróbálni), érdemes törölnie a példából a faazonosítási projektet. Az ingyenes előfizetés két Custom Vision-projektet tesz lehetővé.
A Custom Vision webhelyén lépjen a projektekhez, és kattintson a My New Project panel alsó részén található kuka ikonra.
Következő lépések
Most már láthatta, hogyan végezhető el az objektumészlelési folyamat minden lépése kódban. Ez a minta egyetlen betanítási iterációt hajt végre, de gyakran többször kell betanítania és tesztelnie a modellt, hogy pontosabb legyen.
Ismerkedés a Custom Vision Java-ügyfélkódtárával képosztályozási modell létrehozásához. Az alábbi lépések végrehajtásával telepítheti a csomagot, és kipróbálhatja az alapműveletek példakódját. Ezt a példát használhatja sablonként saját képfelismerő alkalmazás létrehozásához.
Feljegyzés
Ha kód írása nélkül szeretne besorolási modellt létrehozni és betaníteni, tekintse meg inkább a böngészőalapú útmutatást.
A Java-hoz készült Custom Vision ügyfélkódtár használatával:
- Új Custom Vision-projekt létrehozása
- Címkék hozzáadása a projekthez
- Képek feltöltése és címkézése
- A projekt tanítása
- Az aktuális iteráció közzététele
- Az előrejelzési végpont tesztelése
Referenciadokumentáció | Kódtár forráskódja (betanítás)(előrejelzés)| Artifact (Maven) (oktatás)(előrejelzés) | Minták
Előfeltételek
- Azure-előfizetés – Ingyenes létrehozás
- A Java Development Kit (JDK) jelenlegi verziója
- A Gradle buildelési eszköz vagy egy másik függőségkezelő.
- Miután megkapta az Azure-előfizetését, hozzon létre egy Custom Vision-erőforrást az Azure Portalon egy betanítási és előrejelzési erőforrás létrehozásához.
- Az ingyenes tarifacsomag (
F0
) használatával kipróbálhatja a szolgáltatást, és később frissíthet egy fizetős szintre az éles környezetben.
- Az ingyenes tarifacsomag (
Környezeti változók létrehozása
Ebben a példában a hitelesítő adatokat az alkalmazást futtató helyi gépen lévő környezeti változókba fogja írni.
Nyissa meg az Azure Portalt. Ha az Előfeltételek szakaszban létrehozott Custom Vision-erőforrások sikeresen üzembe helyezve, válassza az Erőforrás megnyitása gombot a Következő lépések csoportban. A kulcsokat és végpontokat az erőforrások kulcs- és végpontoldalain, az erőforrás-kezelés alatt találja. Be kell szereznie a betanítási és előrejelzési erőforrások kulcsait, valamint az API-végpontokat.
Az előrejelzési erőforrás-azonosítót az előrejelzési erőforrás Tulajdonságok lapján találja az Azure Portalon, erőforrás-azonosítóként felsorolva.
Tipp.
Ezeket az értékeket is lekérheti https://www.customvision.ai/ . Bejelentkezés után kattintson a jobb felső sarokban található Gépház ikonra. A Beállítás lapon megtekintheti az összes kulcsot, erőforrás-azonosítót és végpontot.
Figyelem
Ne vegye fel közvetlenül a kulcsot a kódba, és soha ne tegye közzé nyilvánosan. Az Azure AI-szolgáltatások biztonsági cikkében további hitelesítési lehetőségeket talál, például az Azure Key Vaultot.
A környezeti változók beállításához nyisson meg egy konzolablakot, és kövesse az operációs rendszer és a fejlesztési környezet utasításait.
- A
VISION_TRAINING KEY
környezeti változó beállításához cserélje leyour-training-key
a betanítási erőforrás egyik kulcsára. - A
VISION_TRAINING_ENDPOINT
környezeti változó beállításához cserélje leyour-training-endpoint
a betanítási erőforrás végpontját. - A
VISION_PREDICTION_KEY
környezeti változó beállításához cserélje leyour-prediction-key
az előrejelzési erőforrás egyik kulcsára. - A
VISION_PREDICTION_ENDPOINT
környezeti változó beállításához cserélje leyour-prediction-endpoint
az előrejelzési erőforrás végpontját. - A
VISION_PREDICTION_RESOURCE_ID
környezeti változó beállításához cserélje leyour-resource-id
az előrejelzési erőforrás erőforrás-azonosítóját.
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
A környezeti változók hozzáadása után előfordulhat, hogy újra kell indítania a futó programokat, amelyek felolvassák a környezeti változókat, beleértve a konzolablakot is.
Beállítás
Új Gradle-projekt létrehozása
Egy konzolablakban (pl. cmd, PowerShell vagy Bash) hozzon létre egy új mappát az alkalmazásnak, majd navigáljon oda.
mkdir myapp && cd myapp
Futtassa a gradle init
parancsot a munkakönyvtárból. Ez a parancs alapvető buildfájlokat hoz létre a Gradle-hez, beleértve a build.gradle.kts fájlt, amelyet futásidőben használnak az alkalmazás létrehozásához és konfigurálásához.
gradle init --type basic
Amikor a rendszer kéri, hogy válasszon egy DSL-t, válassza a Kotlin lehetőséget.
Telepítse az ügyfélkódtárat
Keresse meg a build.gradle.kts fájlt, és nyissa meg a kívánt IDE- vagy szövegszerkesztővel. Ezután másolja a következő buildkonfigurációba. Ez a konfiguráció Java-alkalmazásként definiálja a projektet, amelynek belépési pontja a CustomVisionQuickstart osztály. Importálja a Custom Vision-kódtárakat.
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")
}
Java-fájl létrehozása
A munkakönyvtárban futtassa a következő parancsot a projekt forrásmappájának létrehozásához:
mkdir -p src/main/java
Lépjen az új mappára, és hozzon létre egy CustomVisionQuickstart.java nevű fájlt. Nyissa meg a kívánt szerkesztőben vagy IDE-ben, és adja hozzá a következő import
utasításokat:
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;
Tipp.
Szeretné egyben megtekinteni a teljes gyorsútmutatós kódfájlt? Megtalálhatja a GitHubon, amely a gyorsútmutató kódmintáit is tartalmazza.
Az alkalmazás CustomVisionQuickstart osztályában olyan változókat hozhat létre, amelyek lekérik az erőforrás kulcsait és végpontját a környezeti változókból.
// 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");
Fontos
Nyissa meg az Azure Portalt. Ha az Előfeltételek szakaszban létrehozott Custom Vision-erőforrások sikeresen üzembe helyezve, válassza az Erőforrás megnyitása gombot a Következő lépések csoportban. A kulcsokat és a végpontokat az erőforrások kulcs- és végpontoldalain találja. Be kell szereznie a betanítási és előrejelzési erőforrások kulcsait, valamint a betanítási erőforrás API-végpontját.
Az előrejelzési erőforrás-azonosítót az Azure Portal Tulajdonságok lapján találja, erőforrás-azonosítóként felsorolva.
Fontos
Ne felejtse el eltávolítani a kulcsokat a kódból, amikor elkészült, és soha ne tegye közzé őket nyilvánosan. Éles környezetben biztonságos módon tárolhatja és érheti el a hitelesítő adatait, például az Azure Key Vaultot. További információkért tekintse meg az Azure AI-szolgáltatások biztonsági cikkét.
Az alkalmazás fő metódusában adja hozzá az ebben a rövid útmutatóban használt metódusok hívásait. Ezeket később fogja meghatározni.
Project project = createProject(trainClient);
addTags(trainClient, project);
uploadImages(trainClient, project);
trainProject(trainClient, project);
publishIteration(trainClient, project);
testProject(predictor, project);
Objektummodell
Az alábbi osztályok és felületek a Custom Vision Java ügyfélkódtár néhány fő funkcióját kezelik.
Név | Leírás |
---|---|
CustomVisionTrainingClient | Ez az osztály kezeli a modellek létrehozását, betanítását és közzétételét. |
CustomVisionPredictionClient | Ez az osztály kezeli a modellek lekérdezését képosztályozási előrejelzésekhez. |
ImagePrediction | Ez az osztály egyetlen előrejelzést határoz meg egyetlen képen. Tartalmazza az objektumazonosító és -név tulajdonságait, valamint egy megbízhatósági pontszámot. |
Kódpéldák
Ezek a kódrészletek bemutatják, hogyan végezheti el a következő feladatokat a Java Custom Vision ügyfélkódtárával:
- Az ügyfél hitelesítése
- Új Custom Vision-projekt létrehozása
- Címkék hozzáadása a projekthez
- Képek feltöltése és címkézése
- A projekt betanítása
- Az aktuális iteráció közzététele
- Az előrejelzési végpont tesztelése
Az ügyfél hitelesítése
A fő módszerben példányosíthatja a betanítási és előrejelzési ügyfeleket a végpont és a kulcsok használatával.
// Authenticate
CustomVisionTrainingClient trainClient = CustomVisionTrainingManager
.authenticate(trainingEndpoint, trainingApiKey)
.withEndpoint(trainingEndpoint);
CustomVisionPredictionClient predictor = CustomVisionPredictionManager
.authenticate(predictionEndpoint, predictionApiKey)
.withEndpoint(predictionEndpoint);
Custom Vision-projekt létrehozása
T## Új Custom Vision-projekt létrehozása
Ez a következő metódus létrehoz egy képbesorolási projektet. A létrehozott projekt a Custom Vision webhelyén jelenik meg, amelyet korábban felkeresett. Tekintse meg a CreateProject metódus túlterheléseit, és adjon meg más lehetőségeket a projekt létrehozásakor (erről a Detektor létrehozása webes portál útmutatójában olvashat).
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;
}
Címkék hozzáadása a projekthez
Ez a módszer határozza meg a modell betanítása során használni kívánt címkéket.
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();
}
Képek feltöltése és címkézése
Először töltse le a projekt mintaképét. Mentse a Mintaképek mappa tartalmát a helyi eszközre.
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);
}
}
Az előző kódrészlet két segédfüggvényt használ, amelyek erőforrás-adatfolyamként kérik le a képeket, és feltöltik őket a szolgáltatásba (egyetlen kötegben legfeljebb 64 képet tölthet fel).
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;
}
A projekt tanítása
Ez a módszer hozza létre az első betanítási iterációt a projektben. A betanítás befejezéséig lekérdezi a szolgáltatást.
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());
}
Az aktuális iteráció közzététele
Ezzel a módszerrel a modell aktuális iterációja elérhető lesz a lekérdezéshez. A modell neve hivatkozásként használható előrejelzési kérések küldéséhez. Meg kell adnia a saját értékét a következőhöz predictionResourceId
: . Az előrejelzési erőforrás-azonosítót az Azure Portal Tulajdonságok lapján találja, erőforrás-azonosítóként felsorolva.
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);
}
Az előrejelzési végpont tesztelése
Ez a metódus betölti a tesztrendszerképet, lekérdezi a modell végpontját, és előrejelzési adatokat ad ki a konzolon.
// 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));
}
}
Az alkalmazás futtatása
Az alkalmazást a következőkkel hozhatja létre:
gradle build
Futtassa az alkalmazást a gradle run
következő paranccsal:
gradle run
Az erőforrások eltávolítása
Ha törölni és eltávolítani szeretne egy Azure AI-szolgáltatási előfizetést, törölheti az erőforrást vagy az erőforráscsoportot. Az erőforráscsoport törlése a hozzá társított egyéb erőforrásokat is törli.
Ha saját képosztályozási projektet szeretne megvalósítani (vagy ehelyett egy objektumészlelési projektet szeretne kipróbálni), érdemes törölnie a példából a faazonosítási projektet. Az ingyenes előfizetés két Custom Vision-projektet tesz lehetővé.
A Custom Vision webhelyén lépjen a projektekhez, és kattintson a My New Project panel alsó részén található kuka ikonra.
Következő lépések
Most már láthatta, hogyan végezhető el a képbesorolási folyamat minden lépése kódban. Ez a minta egyetlen betanítási iterációt hajt végre, de gyakran többször kell betanítania és tesztelnie a modellt, hogy pontosabb legyen.
- Mi az a Custom Vision?
- A minta forráskódja a GitHubon található
Ez az útmutató útmutatást és mintakódot biztosít a Custom Vision ügyfélkódtár Node.js rendszerképbesorolási modell létrehozásához való használatának megkezdéséhez. Létrehoz egy projektet, címkéket ad hozzá, betanítja a projektet, és a projekt előrejelzési végpontJÁNAK URL-címével programozott módon teszteli azt. Ezt a példát használhatja sablonként saját képfelismerő alkalmazás létrehozásához.
Feljegyzés
Ha kód írása nélkül szeretne besorolási modellt létrehozni és betaníteni, tekintse meg inkább a böngészőalapú útmutatást.
A .NET-hez készült Custom Vision ügyfélkódtár használatával:
- Új Custom Vision-projekt létrehozása
- Címkék hozzáadása a projekthez
- Képek feltöltése és címkézése
- A projekt tanítása
- Az aktuális iteráció közzététele
- Az előrejelzési végpont tesztelése
Referenciadokumentáció (képzés)(előrejelzés) | Kódtár forráskódja (betanítás)(előrejelzés) | Csomag (npm) (betanítás)(előrejelzés) | Minták
Előfeltételek
- Azure-előfizetés – Ingyenes létrehozás
- A Node.js aktuális verziója
- Miután megkapta az Azure-előfizetését, hozzon létre egy Custom Vision-erőforrást az Azure Portalon egy betanítási és előrejelzési erőforrás létrehozásához.
- Az ingyenes tarifacsomag (
F0
) használatával kipróbálhatja a szolgáltatást, és később frissíthet egy fizetős szintre az éles környezetben.
- Az ingyenes tarifacsomag (
Környezeti változók létrehozása
Ebben a példában a hitelesítő adatokat az alkalmazást futtató helyi gépen lévő környezeti változókba fogja írni.
Nyissa meg az Azure Portalt. Ha az Előfeltételek szakaszban létrehozott Custom Vision-erőforrások sikeresen üzembe helyezve, válassza az Erőforrás megnyitása gombot a Következő lépések csoportban. A kulcsokat és végpontokat az erőforrások kulcs- és végpontoldalain, az erőforrás-kezelés alatt találja. Be kell szereznie a betanítási és előrejelzési erőforrások kulcsait, valamint az API-végpontokat.
Az előrejelzési erőforrás-azonosítót az előrejelzési erőforrás Tulajdonságok lapján találja az Azure Portalon, erőforrás-azonosítóként felsorolva.
Tipp.
Ezeket az értékeket is lekérheti https://www.customvision.ai/ . Bejelentkezés után kattintson a jobb felső sarokban található Gépház ikonra. A Beállítás lapon megtekintheti az összes kulcsot, erőforrás-azonosítót és végpontot.
Figyelem
Ne vegye fel közvetlenül a kulcsot a kódba, és soha ne tegye közzé nyilvánosan. Az Azure AI-szolgáltatások biztonsági cikkében további hitelesítési lehetőségeket talál, például az Azure Key Vaultot.
A környezeti változók beállításához nyisson meg egy konzolablakot, és kövesse az operációs rendszer és a fejlesztési környezet utasításait.
- A
VISION_TRAINING KEY
környezeti változó beállításához cserélje leyour-training-key
a betanítási erőforrás egyik kulcsára. - A
VISION_TRAINING_ENDPOINT
környezeti változó beállításához cserélje leyour-training-endpoint
a betanítási erőforrás végpontját. - A
VISION_PREDICTION_KEY
környezeti változó beállításához cserélje leyour-prediction-key
az előrejelzési erőforrás egyik kulcsára. - A
VISION_PREDICTION_ENDPOINT
környezeti változó beállításához cserélje leyour-prediction-endpoint
az előrejelzési erőforrás végpontját. - A
VISION_PREDICTION_RESOURCE_ID
környezeti változó beállításához cserélje leyour-resource-id
az előrejelzési erőforrás erőforrás-azonosítóját.
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
A környezeti változók hozzáadása után előfordulhat, hogy újra kell indítania a futó programokat, amelyek felolvassák a környezeti változókat, beleértve a konzolablakot is.
Beállítás
Új Node.js-alkalmazás létrehozása
Egy konzolablakban (pl. cmd, PowerShell vagy Bash) hozzon létre egy új mappát az alkalmazásnak, majd navigáljon oda.
mkdir myapp && cd myapp
Futtassa az npm init
parancsot egy Node-alkalmazás package.json
fájllal való létrehozásához.
npm init
Telepítse az ügyfélkódtárat
Ha képelemzési alkalmazást szeretne írni a Custom Vision for Node.js használatával, szüksége lesz a Custom Vision NPM-csomagokra. A telepítésükhöz futtassa a következő parancsot a PowerShellben:
npm install @azure/cognitiveservices-customvision-training
npm install @azure/cognitiveservices-customvision-prediction
Az alkalmazás package.json
fájlja frissül a függőségekkel.
Hozzon létre egy elnevezett index.js
fájlt, és importálja a következő kódtárakat:
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");
Tipp.
Szeretné egyben megtekinteni a teljes gyorsútmutatós kódfájlt? Megtalálhatja a GitHubon, amely a gyorsútmutató kódmintáit is tartalmazza.
Változókat hozhat létre az erőforrás Azure-végpontjához és kulcsaihoz.
// 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"];
Adjon hozzá mezőket a projekt nevének és egy időtúllépési paraméternek az aszinkron hívásokhoz.
const publishIterationName = "classifyModel";
const setTimeoutPromise = util.promisify(setTimeout);
Objektummodell
Név | Leírás |
---|---|
TrainingAPIClient | Ez az osztály kezeli a modellek létrehozását, betanítását és közzétételét. |
PredictionAPIClient | Ez az osztály kezeli a modellek lekérdezését képosztályozási előrejelzésekhez. |
előrejelzés | Ez a felület egyetlen előrejelzést határoz meg egyetlen képen. Tartalmazza az objektumazonosító és -név tulajdonságait, valamint egy megbízhatósági pontszámot. |
Kódpéldák
Ezek a kódrészletek bemutatják, hogyan végezheti el a következő feladatokat a JavaScripthez készült Custom Vision ügyfélkódtárral:
- Az ügyfél hitelesítése
- Új Custom Vision-projekt létrehozása
- Címkék hozzáadása a projekthez
- Képek feltöltése és címkézése
- A projekt betanítása
- Az aktuális iteráció közzététele
- Az előrejelzési végpont tesztelése
Az ügyfél hitelesítése
Ügyfélobjektumok példányosítása a végponttal és a kulccsal. Hozzon létre egy ApiKeyCredentials objektumot a kulccsal, és használja a végponttal egy TrainingAPIClient és PredictionAPIClient objektum létrehozásához.
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);
Új Custom Vision-projekt létrehozása
Új függvény indítása az összes Custom Vision-függvényhívást tartalmazó függvényhez. Adja hozzá a következő kódot egy új Custom Vision service-projekt létrehozásához.
(async () => {
console.log("Creating project...");
const sampleProject = await trainer.createProject("Sample Project");
Címkék hozzáadása a projekthez
Ha besorolási címkéket szeretne létrehozni a projekthez, adja hozzá a következő kódot a függvényhez:
const hemlockTag = await trainer.createTag(sampleProject.id, "Hemlock");
const cherryTag = await trainer.createTag(sampleProject.id, "Japanese Cherry");
Képek feltöltése és címkézése
Először töltse le a projekt mintaképét. Mentse a Mintaképek mappa tartalmát a helyi eszközre.
A minta képek projekthez adásához, helyezze el a következő kódot a címke létrehozása után. Ez a kód a képeket a hozzájuk tartozó címkékkel együtt tölti fel.
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);
Fontos
Módosítania kell a rendszerképek elérési útját (sampleDataRoot
) az Azure AI-szolgáltatások Python SDK-minták adattárának letöltési helye alapján.
A projekt tanítása
Ez a kód létrehozza az előrejelzési modell első iterációját.
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);
Az aktuális iteráció közzététele
Ez a kód közzéteszi a betanított iterációt az előrejelzési végponton. A közzétett iterációnak megadott név használható előrejelzési kérések küldéséhez. Az előrejelzési végponton csak a közzététel után érhető el iteráció.
// Publish the iteration to the end point
await trainer.publishIteration(sampleProject.id, trainingIteration.id, publishIterationName, predictionResourceId);
Az előrejelzési végpont tesztelése
Ha képet szeretne küldeni az előrejelzési végpontnak, és le szeretné kérni az előrejelzést, adja hozzá a következő kódot a függvényhez.
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)}%`);
});
Ezután zárja be a Custom Vision függvényt, és hívja meg.
})()
Az alkalmazás futtatása
Futtassa az alkalmazást a node
paranccsal a gyorsútmutatós fájlon.
node index.js
Az alkalmazás kimenetének az alábbi szöveghez hasonlóan kell kinéznie:
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%
Ezután ellenőrizheti, hogy a tesztkép (a <sampleDataRoot>/Test/) megfelelően van-e megjelölve. Vissza is léphet a Custom Vision webhelyére, és megtekintheti az újonnan létrehozott projekt aktuális állapotát.
Ha saját képosztályozási projektet szeretne megvalósítani (vagy ehelyett egy objektumészlelési projektet szeretne kipróbálni), érdemes törölnie a példából a faazonosítási projektet. Az ingyenes előfizetés két Custom Vision-projektet tesz lehetővé.
A Custom Vision webhelyén lépjen a projektekhez, és kattintson a My New Project panel alsó részén található kuka ikonra.
Következő lépések
Most már láthatta, hogyan végezhető el az objektumészlelési folyamat minden lépése kódban. Ez a minta egyetlen betanítási iterációt hajt végre, de gyakran többször kell betanítania és tesztelnie a modellt, hogy pontosabb legyen.
- Mi az a Custom Vision?
- A minta forráskódja a GitHubon található
- SDK-referenciadokumentáció (oktatás)
- SDK-referenciadokumentáció (előrejelzés)
Ismerkedés a Python Custom Vision ügyfélkódtárával. Az alábbi lépések végrehajtásával telepítheti a csomagot, és kipróbálhatja a példakódot egy képosztályozási modell létrehozásához. Létrehoz egy projektet, címkéket ad hozzá, betanítja a projektet, és a projekt előrejelzési végpontJÁNAK URL-címével programozott módon teszteli azt. Ezt a példát használhatja sablonként saját képfelismerő alkalmazás létrehozásához.
Feljegyzés
Ha kód írása nélkül szeretne besorolási modellt létrehozni és betaníteni, tekintse meg inkább a böngészőalapú útmutatást.
A Python Custom Vision ügyfélkódtárával a következő célokra használhatja:
- Új Custom Vision-projekt létrehozása
- Címkék hozzáadása a projekthez
- Képek feltöltése és címkézése
- A projekt tanítása
- Az aktuális iteráció közzététele
- Az előrejelzési végpont tesztelése
Referenciadokumentáció Kódtár forráskódcsomagja | (PyPI)Minták | |
Előfeltételek
- Azure-előfizetés – Ingyenes létrehozás
- Python 3.x
- Miután megkapta az Azure-előfizetését, hozzon létre egy Custom Vision-erőforrást az Azure Portalon egy betanítási és előrejelzési erőforrás létrehozásához.
- Az ingyenes tarifacsomag (
F0
) használatával kipróbálhatja a szolgáltatást, és később frissíthet egy fizetős szintre az éles környezetben.
- Az ingyenes tarifacsomag (
Környezeti változók létrehozása
Ebben a példában a hitelesítő adatokat az alkalmazást futtató helyi gépen lévő környezeti változókba fogja írni.
Nyissa meg az Azure Portalt. Ha az Előfeltételek szakaszban létrehozott Custom Vision-erőforrások sikeresen üzembe helyezve, válassza az Erőforrás megnyitása gombot a Következő lépések csoportban. A kulcsokat és végpontokat az erőforrások kulcs- és végpontoldalain, az erőforrás-kezelés alatt találja. Be kell szereznie a betanítási és előrejelzési erőforrások kulcsait, valamint az API-végpontokat.
Az előrejelzési erőforrás-azonosítót az előrejelzési erőforrás Tulajdonságok lapján találja az Azure Portalon, erőforrás-azonosítóként felsorolva.
Tipp.
Ezeket az értékeket is lekérheti https://www.customvision.ai/ . Bejelentkezés után kattintson a jobb felső sarokban található Gépház ikonra. A Beállítás lapon megtekintheti az összes kulcsot, erőforrás-azonosítót és végpontot.
Figyelem
Ne vegye fel közvetlenül a kulcsot a kódba, és soha ne tegye közzé nyilvánosan. Az Azure AI-szolgáltatások biztonsági cikkében további hitelesítési lehetőségeket talál, például az Azure Key Vaultot.
A környezeti változók beállításához nyisson meg egy konzolablakot, és kövesse az operációs rendszer és a fejlesztési környezet utasításait.
- A
VISION_TRAINING KEY
környezeti változó beállításához cserélje leyour-training-key
a betanítási erőforrás egyik kulcsára. - A
VISION_TRAINING_ENDPOINT
környezeti változó beállításához cserélje leyour-training-endpoint
a betanítási erőforrás végpontját. - A
VISION_PREDICTION_KEY
környezeti változó beállításához cserélje leyour-prediction-key
az előrejelzési erőforrás egyik kulcsára. - A
VISION_PREDICTION_ENDPOINT
környezeti változó beállításához cserélje leyour-prediction-endpoint
az előrejelzési erőforrás végpontját. - A
VISION_PREDICTION_RESOURCE_ID
környezeti változó beállításához cserélje leyour-resource-id
az előrejelzési erőforrás erőforrás-azonosítóját.
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
A környezeti változók hozzáadása után előfordulhat, hogy újra kell indítania a futó programokat, amelyek felolvassák a környezeti változókat, beleértve a konzolablakot is.
Beállítás
Telepítse az ügyfélkódtárat
Ha a Custom Vision for Pythonnal szeretne képelemzési alkalmazást írni, szüksége lesz a Custom Vision ügyfélkódtárára. A Python telepítése után futtassa a következő parancsot a PowerShellben vagy egy konzolablakban:
pip install azure-cognitiveservices-vision-customvision
Új Python-alkalmazás létrehozása
Hozzon létre egy új Python-fájlt, és importálja a következő kódtárakat.
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
Tipp.
Szeretné egyben megtekinteni a teljes gyorsútmutatós kódfájlt? Megtalálhatja a GitHubon, amely a gyorsútmutató kódmintáit is tartalmazza.
Változókat hozhat létre az erőforrás Azure-végpontjához és kulcsaihoz.
# retrieve environment variables
ENDPOINT = os.environ["VISION_TRAINING_ENDPOINT"]
training_key = os.environ["VISION_TRAINING_KEY"]
prediction_key = os.environ["VISION_PREDICTION_KEY"]
prediction_resource_id = os.environ["VISION_PREDICTION_RESOURCE_ID"]
Objektummodell
Név | Leírás |
---|---|
CustomVisionTrainingClient | Ez az osztály kezeli a modellek létrehozását, betanítását és közzétételét. |
CustomVisionPredictionClient | Ez az osztály kezeli a modellek lekérdezését képosztályozási előrejelzésekhez. |
ImagePrediction | Ez az osztály egyetlen objektum előrejelzését határozza meg egyetlen képen. Tartalmazza az objektum azonosítójának és nevének tulajdonságait, az objektum határolókeretének helyét és a megbízhatósági pontszámot. |
Kódpéldák
Ezek a kódrészletek bemutatják, hogyan végezheti el a következőket a Python Custom Vision ügyfélkódtárával:
- Az ügyfél hitelesítése
- Új Custom Vision-projekt létrehozása
- Címkék hozzáadása a projekthez
- Képek feltöltése és címkézése
- A projekt betanítása
- Az aktuális iteráció közzététele
- Az előrejelzési végpont tesztelése
Az ügyfél hitelesítése
Hozzon létre egy betanítási és előrejelzési ügyfelet a végponttal és a kulcsokkal. Hozzon létre ApiKeyServiceClientCredentials objektumokat a kulcsaival, és használja őket a végponttal a CustomVisionTrainingClient és a CustomVisionPredictionClient objektum létrehozásához.
credentials = ApiKeyCredentials(in_headers={"Training-key": training_key})
trainer = CustomVisionTrainingClient(ENDPOINT, credentials)
prediction_credentials = ApiKeyCredentials(in_headers={"Prediction-key": prediction_key})
predictor = CustomVisionPredictionClient(ENDPOINT, prediction_credentials)
Új Custom Vision-projekt létrehozása
Adja hozzá a következő kódot a szkripthez egy új Custom Vision Service-projekt létrehozásához.
Tekintse meg a create_project metódust, amely a projekt létrehozásakor más beállításokat is megadhat (erről az osztályozó webes portál összeállítása című útmutatóban olvashat).
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)
Címkék hozzáadása a projekthez
Ha besorolási címkéket szeretne hozzáadni a projekthez, adja hozzá a következő kódot:
# Make two tags in the new project
hemlock_tag = trainer.create_tag(project.id, "Hemlock")
cherry_tag = trainer.create_tag(project.id, "Japanese Cherry")
Képek feltöltése és címkézése
Először töltse le a projekt mintaképét. Mentse a Mintaképek mappa tartalmát a helyi eszközre.
A minta képek projekthez adásához, helyezze el a következő kódot a címke létrehozása után. Ez a kód a képeket a hozzájuk tartozó címkékkel együtt tölti fel. Egyetlen kötegben legfeljebb 64 képet tölthet fel.
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)
Feljegyzés
Az Azure AI-szolgáltatások Python SDK-minták adattárának letöltési helye alapján módosítania kell a rendszerképek elérési útját.
A projekt tanítása
Ez a kód létrehozza az előrejelzési modell első iterációját.
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)
Tipp.
Betanítása kijelölt címkékkel
Igény szerint csak az alkalmazott címkék egy részhalmazára taníthat be. Ezt akkor érdemes megtennie, ha még nem alkalmazott elég címkét bizonyos címkék közül, de van elég más. A train_project hívásban állítsa a selected_tags opcionális paramétert a használni kívánt címkék azonosító sztringjeinek listájára. A modell betanítása csak a lista címkéinek felismerésére fog betanulni.
Az aktuális iteráció közzététele
Az előrejelzési végponton csak a közzététel után érhető el iteráció. Az alábbi kód a modell aktuális iterációját teszi elérhetővé lekérdezésre.
# 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!")
Az előrejelzési végpont tesztelése
A képek előrejelzési végpontra való küldéséhez és az előrejelzés lekéréséhez adja hozzá a következő kódot a fájl végéhez:
# 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(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))
Az alkalmazás futtatása
Futtassa a CustomVisionQuickstart.py.
python CustomVisionQuickstart.py
Az alkalmazás kimenetének az alábbi szöveghez hasonlóan kell kinéznie:
Creating project...
Adding images...
Training...
Training status: Training
Training status: Completed
Done!
Hemlock: 93.53%
Japanese Cherry: 0.01%
Ezután ellenőrizheti, hogy a tesztkép (base_image_location<>/images/Test/) megfelelően van-e megjelölve. Vissza is léphet a Custom Vision webhelyére, és megtekintheti az újonnan létrehozott projekt aktuális állapotát.
Az erőforrások eltávolítása
Ha saját képosztályozási projektet szeretne megvalósítani (vagy ehelyett egy objektumészlelési projektet szeretne kipróbálni), érdemes törölnie a példából a faazonosítási projektet. Az ingyenes előfizetés két Custom Vision-projektet tesz lehetővé.
A Custom Vision webhelyén lépjen a projektekhez, és kattintson a My New Project panel alsó részén található kuka ikonra.
Következő lépések
Most már láthatta, hogyan végezhető el a képbesorolási folyamat minden lépése kódban. Ez a minta egyetlen betanítási iterációt hajt végre, de gyakran többször kell betanítania és tesztelnie a modellt, hogy pontosabb legyen.
- Mi az a Custom Vision?
- A minta forráskódja a GitHubon található
- SDK-referenciadokumentáció
Ismerkedés a Custom Vision REST API-val. Kövesse az alábbi lépéseket az API meghívásához és egy képbesorolási modell létrehozásához. Létrehoz egy projektet, címkéket ad hozzá, betanítja a projektet, és a projekt előrejelzési végpontJÁNAK URL-címével programozott módon teszteli azt. Ezt a példát használhatja sablonként saját képfelismerő alkalmazás létrehozásához.
Feljegyzés
A Custom Vision a legegyszerűbben egy ügyfélkódtár SDK-ján vagy a böngészőalapú útmutatón keresztül használható.
A .NET-hez készült Custom Vision ügyfélkódtár használatával:
- Új Custom Vision-projekt létrehozása
- Címkék hozzáadása a projekthez
- Képek feltöltése és címkézése
- A projekt tanítása
- Az aktuális iteráció közzététele
- Az előrejelzési végpont tesztelése
Előfeltételek
- Azure-előfizetés – Ingyenes létrehozás
- Miután megkapta az Azure-előfizetését, hozzon létre egy Custom Vision-erőforrást az Azure Portalon egy betanítási és előrejelzési erőforrás létrehozásához, valamint a kulcsok és végpontok lekéréséhez. Várja meg, amíg üzembe helyezi, és kattintson az Erőforrás megnyitása gombra.
- Az alkalmazás Custom Visionhez való csatlakoztatásához szüksége lesz a létrehozott erőforrások kulcsára és végpontjára. A rövid útmutató későbbi részében illessze be a kulcsot és a végpontot az alábbi kódba.
- Az ingyenes tarifacsomag (
F0
) használatával kipróbálhatja a szolgáltatást, és később frissíthet egy fizetős szintre az éles környezetben.
- PowerShell 6.0-s vagy hasonló parancssori alkalmazás.
Új Custom Vision-projekt létrehozása
Egy képosztályozási projekt létrehozásához az alábbihoz hasonló parancsot fog használni. A létrehozott projekt megjelenik a Custom Vision webhelyén.
curl -v -X POST -H "Training-key: {subscription key}" "https://{endpoint}/customvision/v3.3/Training/projects?name={name}"
Másolja a parancsot egy szövegszerkesztőbe, és végezze el a következő módosításokat:
- Cserélje le
{subscription key}
érvényes Face-kulccsal. - Cserélje le
{endpoint}
a kulcsnak megfelelő végpontra.Feljegyzés
A 2019. július 1. után létrehozott új erőforrások egyéni altartományneveket fognak használni. További információkért és a regionális végpontok teljes listájáért tekintse meg az Azure AI-szolgáltatások egyéni altartományneveit.
- Cserélje le
{name}
a projekt nevére. - Ha szeretné, más URL-paramétereket is beállíthat, hogy konfigurálja a projekt által használni kívánt modell típusát. További lehetőségekért tekintse meg a CreatProject API-t .
A következőhez hasonló JSON-választ fog kapni. Mentse a "id"
projekt értékét egy ideiglenes helyre.
{
"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"
}
Címkék hozzáadása a projekthez
Az alábbi paranccsal definiálhatja a modellt betanított címkéket.
curl -v -X POST -H "Training-key: {subscription key}" "https://{endpoint}/customvision/v3.3/Training/projects/{projectId}/tags?name={name}"
- Ismét szúrja be saját kulcsát és végponti URL-címét.
- Cserélje le
{projectId}
a saját projektazonosítóját. - Cserélje le
{name}
a használni kívánt címke nevére.
Ismételje meg ezt a folyamatot a projektben használni kívánt összes címke esetében. Ha a példaként megadott képeket használja, adja hozzá a címkéket "Hemlock"
és "Japanese Cherry"
a .
Az alábbihoz hasonló JSON-választ fog kapni. Mentse az "id"
egyes címkék értékét egy ideiglenes helyre.
{
"id": "00000000-0000-0000-0000-000000000000",
"name": "string",
"description": "string",
"type": "Regular",
"imageCount": 0
}
Képek feltöltése és címkézése
Ezután töltse le a projekt mintaképét. Mentse a Mintaképek mappa tartalmát a helyi eszközre.
Az alábbi paranccsal töltse fel a képeket, és alkalmazza a címkéket; egyszer a "Hemlock" képeket, és külön-külön a "Japán Cseresznye" képeket. További lehetőségekért tekintse meg a Képek létrehozása a Data API-ból című témakört.
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}"
- Ismét szúrja be saját kulcsát és végponti URL-címét.
- Cserélje le
{projectId}
a saját projektazonosítóját. - Cserélje le
{tagArray}
egy címke azonosítójára. - Ezután töltse ki a kérelem törzsét a címkézni kívánt képek bináris adataival.
A projekt tanítása
Ez a módszer betanozza a modellt a feltöltött címkézett képekre, és visszaad egy azonosítót az aktuális projekt iterációjához.
curl -v -X POST -H "Content-Type: application/json" -H "Training-key: {subscription key}" "https://{endpoint}/customvision/v3.3/Training/projects/{projectId}/train"
- Ismét szúrja be saját kulcsát és végponti URL-címét.
- Cserélje le
{projectId}
a saját projektazonosítóját. - Cserélje le
{tagArray}
egy címke azonosítójára. - Ezután töltse ki a kérelem törzsét a címkézni kívánt képek bináris adataival.
- Szükség esetén más URL-paramétereket is használhat. További lehetőségekért tekintse meg a Project API betanítása című témakört.
Tipp.
Betanítása kijelölt címkékkel
Igény szerint csak az alkalmazott címkék egy részhalmazára taníthat be. Ezt akkor érdemes megtennie, ha még nem alkalmazott elég címkét bizonyos címkék közül, de van elég más. Adja hozzá az opcionális JSON-tartalmat a kérés törzséhez. Töltse ki a "selectedTags"
tömböt a használni kívánt címkék azonosítóival.
{
"selectedTags": [
"00000000-0000-0000-0000-000000000000"
]
}
A JSON-válasz információkat tartalmaz a betanított projektről, beleértve az iterációs azonosítót ("id"
). Mentse ezt az értéket a következő lépéshez.
{
"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"
}
Az aktuális iteráció közzététele
Ezzel a módszerrel a modell aktuális iterációja elérhető lesz a lekérdezéshez. Az előrejelzési kérések küldéséhez a visszaadott modellnevet használja hivatkozásként.
curl -v -X POST -H "Training-key: {subscription key}" "https://{endpoint}/customvision/v3.3/Training/projects/{projectId}/iterations/{iterationId}/publish?publishName={publishName}&predictionId={predictionId}"
- Ismét szúrja be saját kulcsát és végponti URL-címét.
- Cserélje le
{projectId}
a saját projektazonosítóját. - Cserélje le
{iterationId}
az előző lépésben visszaadott azonosítóra. - Cserélje le
{publishedName}
az előrejelzési modellhez hozzárendelni kívánt nevet. - Cserélje le
{predictionId}
a saját előrejelzési erőforrás-azonosítóját. Az előrejelzési erőforrás-azonosítót az Azure Portal Tulajdonságok lapján találja, erőforrás-azonosítóként felsorolva. - Szükség esetén más URL-paramétereket is használhat. Tekintse meg a Publish Iteration API-t.
Az előrejelzési végpont tesztelése
Végül ezzel a paranccsal tesztelje a betanított modellt egy új kép feltöltésével, hogy címkékkel osztályozhassa. A korábban letöltött mintafájlok "Teszt" mappájában használhatja a képet.
curl -v -X POST -H "Training-key: {subscription key}" "https://{endpoint}/customvision/v3.3/Training/projects/{projectId}/iterations/{iterationId}/publish?publishName={publishName}&predictionId={predictionId}"
- Ismét szúrja be saját kulcsát és végponti URL-címét.
- Cserélje le
{projectId}
a saját projektazonosítóját. - Cserélje le
{publishedName}
az előző lépésben használt névre. - Adja hozzá a helyi rendszerkép bináris adatait a kérelem törzséhez.
- Szükség esetén más URL-paramétereket is használhat. Lásd a Classify Image API-t.
A visszaadott JSON-válasz felsorolja a modell által a képre alkalmazott címkéket, valamint az egyes címkék valószínűségi pontszámait.
{
"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"
}
]
}
Ha saját képosztályozási projektet szeretne megvalósítani (vagy ehelyett egy objektumészlelési projektet szeretne kipróbálni), érdemes törölnie a példából a faazonosítási projektet. Az ingyenes előfizetés két Custom Vision-projektet tesz lehetővé.
A Custom Vision webhelyén lépjen a projektekhez, és kattintson a My New Project panel alsó részén található kuka ikonra.
Következő lépések
Most elvégezte a képbesorolási folyamat minden lépését a REST API használatával. Ez a minta egyetlen betanítási iterációt hajt végre, de gyakran többször kell betanítania és tesztelnie a modellt, hogy pontosabb legyen.