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

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.

  1. A VISION_TRAINING KEY környezeti változó beállításához cserélje le your-training-key a betanítási erőforrás egyik kulcsára.
  2. A VISION_TRAINING_ENDPOINT környezeti változó beállításához cserélje le your-training-endpoint a betanítási erőforrás végpontját.
  3. A VISION_PREDICTION_KEY környezeti változó beállításához cserélje le your-prediction-key az előrejelzési erőforrás egyik kulcsára.
  4. A VISION_PREDICTION_ENDPOINT környezeti változó beállításához cserélje le your-prediction-endpoint az előrejelzési erőforrás végpontját.
  5. A VISION_PREDICTION_RESOURCE_ID környezeti változó beállításához cserélje le your-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.

Screenshot of a panel labeled My New Project with a trash can icon.

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.

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

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.

  1. A VISION_TRAINING KEY környezeti változó beállításához cserélje le your-training-key a betanítási erőforrás egyik kulcsára.
  2. A VISION_TRAINING_ENDPOINT környezeti változó beállításához cserélje le your-training-endpoint a betanítási erőforrás végpontját.
  3. A VISION_PREDICTION_KEY környezeti változó beállításához cserélje le your-prediction-key az előrejelzési erőforrás egyik kulcsára.
  4. A VISION_PREDICTION_ENDPOINT környezeti változó beállításához cserélje le your-prediction-endpoint az előrejelzési erőforrás végpontját.
  5. A VISION_PREDICTION_RESOURCE_ID környezeti változó beállításához cserélje le your-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.

Screenshot of a panel labeled My New Project with a trash can icon.

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.

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.

  1. A VISION_TRAINING KEY környezeti változó beállításához cserélje le your-training-key a betanítási erőforrás egyik kulcsára.
  2. A VISION_TRAINING_ENDPOINT környezeti változó beállításához cserélje le your-training-endpoint a betanítási erőforrás végpontját.
  3. A VISION_PREDICTION_KEY környezeti változó beállításához cserélje le your-prediction-key az előrejelzési erőforrás egyik kulcsára.
  4. A VISION_PREDICTION_ENDPOINT környezeti változó beállításához cserélje le your-prediction-endpoint az előrejelzési erőforrás végpontját.
  5. A VISION_PREDICTION_RESOURCE_ID környezeti változó beállításához cserélje le your-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

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.

Screenshot of a panel labeled My New Project with a trash can icon.

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.

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.

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.

  1. A VISION_TRAINING KEY környezeti változó beállításához cserélje le your-training-key a betanítási erőforrás egyik kulcsára.
  2. A VISION_TRAINING_ENDPOINT környezeti változó beállításához cserélje le your-training-endpoint a betanítási erőforrás végpontját.
  3. A VISION_PREDICTION_KEY környezeti változó beállításához cserélje le your-prediction-key az előrejelzési erőforrás egyik kulcsára.
  4. A VISION_PREDICTION_ENDPOINT környezeti változó beállításához cserélje le your-prediction-endpoint az előrejelzési erőforrás végpontját.
  5. A VISION_PREDICTION_RESOURCE_ID környezeti változó beállításához cserélje le your-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

Ü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.

Screenshot of a panel labeled My New Project with a trash can icon.

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 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
    • A Python-telepítésnek tartalmaznia kell a pipet. A parancssorban való futtatással pip --version ellenőrizheti, hogy telepítve van-e a pip. Kérje le a pipet a Python legújabb verziójának telepítésével.
  • 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.

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.

  1. A VISION_TRAINING KEY környezeti változó beállításához cserélje le your-training-key a betanítási erőforrás egyik kulcsára.
  2. A VISION_TRAINING_ENDPOINT környezeti változó beállításához cserélje le your-training-endpoint a betanítási erőforrás végpontját.
  3. A VISION_PREDICTION_KEY környezeti változó beállításához cserélje le your-prediction-key az előrejelzési erőforrás egyik kulcsára.
  4. A VISION_PREDICTION_ENDPOINT környezeti változó beállításához cserélje le your-prediction-endpoint az előrejelzési erőforrás végpontját.
  5. A VISION_PREDICTION_RESOURCE_ID környezeti változó beállításához cserélje le your-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

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.

Screenshot of a panel labeled My New Project with a trash can icon.

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.

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.

Screenshot of a panel labeled My New Project with a trash can icon.

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.