Mulai cepat: Membuat proyek klasifikasi gambar dengan REST API atau pustaka klien Custom Vision

Mulai menggunakan pustaka klien Visi Kustom untuk .NET. Ikuti langkah-langkah ini untuk memasang paket dan mencoba contoh kode untuk membangun model klasifikasi gambar. Anda akan membuat proyek, menambahkan tag, melatih proyek, dan menggunakan URL titik akhir prediksi proyek untuk mengujinya secara terprogram. Gunakan contoh ini sebagai templat untuk membuat aplikasi pengenalan gambar Anda sendiri.

Catatan

Jika Anda ingin membangun dan melatih model klasifikasi tanpa menulis kode, lihat panduan berbasis browser.

Dokumentasi referensi | Kode sumber pustaka (pelatihan)(prediksi)| Paket (NuGet) (pelatihan)(prediksi) | Sampel

Prasyarat

  • Langganan Azure - Buat langganan secara gratis
  • IDE Visual Studio atau versi .NET Core saat ini.
  • Setelah Anda memiliki langganan Azure, buat sumber daya Custom Vision di portal Azure untuk membuat sumber daya pelatihan dan prediksi.
    • Anda dapat menggunakan tingkat harga gratis (F0) untuk percobaan, lalu meningkatkannya ke tingkat berbayar untuk produksi.

Membuat variabel lingkungan

Dalam contoh ini, Anda akan menulis kredensial Anda ke variabel lingkungan pada komputer lokal yang menjalankan aplikasi.

Buka portal Microsoft Azure. Jika sumber daya Custom Vision yang Anda buat di bagian Prasyarat berhasil disebarkan, pilih tombol Buka Sumber Daya di bawah Langkah Berikutnya. Anda dapat menemukan kunci dan titik akhir di halaman kunci dan titik akhir sumber daya, di bawah manajemen sumber daya. Anda harus mendapatkan kunci untuk sumber daya pelatihan dan prediksi Anda, bersama dengan titik akhir API.

Anda dapat menemukan ID sumber daya prediksi pada tab Properti sumber daya prediksi di portal Azure, yang tercantum sebagai ID Sumber Daya.

Tip

Anda juga menggunakan https://www.customvision.ai/ untuk mendapatkan nilai-nilai ini. Setelah masuk, pilih ikon Pengaturan di kanan atas. Pada halaman Pengaturan , Anda dapat melihat semua kunci, ID sumber daya, dan titik akhir.

Perhatian

Jangan sertakan kunci langsung dalam kode Anda, dan jangan pernah mempostingnya secara publik. Lihat artikel keamanan layanan Azure AI untuk opsi autentikasi lainnya seperti Azure Key Vault.

Untuk mengatur variabel lingkungan, buka jendela konsol dan ikuti instruksi untuk sistem operasi dan lingkungan pengembangan Anda.

  1. Untuk mengatur VISION_TRAINING KEY variabel lingkungan, ganti your-training-key dengan salah satu kunci untuk sumber daya pelatihan Anda.
  2. Untuk mengatur VISION_TRAINING_ENDPOINT variabel lingkungan, ganti your-training-endpoint dengan titik akhir untuk sumber daya pelatihan Anda.
  3. Untuk mengatur VISION_PREDICTION_KEY variabel lingkungan, ganti your-prediction-key dengan salah satu kunci untuk sumber daya prediksi Anda.
  4. Untuk mengatur VISION_PREDICTION_ENDPOINT variabel lingkungan, ganti your-prediction-endpoint dengan titik akhir untuk sumber daya prediksi Anda.
  5. Untuk mengatur VISION_PREDICTION_RESOURCE_ID variabel lingkungan, ganti your-resource-id dengan ID sumber daya untuk sumber daya prediksi Anda.
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

Setelah menambahkan variabel lingkungan, Anda mungkin perlu memulai ulang program yang sedang berjalan yang akan membaca variabel lingkungan, termasuk jendela konsol.

Menyiapkan

Membuat aplikasi C# baru

Menggunakan Visual Studio, buat aplikasi .NET Core baru.

Memasang pustaka klien

Setelah Anda membuat proyek baru, pasang pustaka klien dengan mengklik kanan solusi proyek di Penjelajah Solusi, lalu pilih Kelola Paket NuGet. Di manajer paket yang terbuka, pilih Telusuri, centang Sertakan prarilis, lalu cari Microsoft.Azure.CognitiveServices.Vision.CustomVision.Training dan Microsoft.Azure.CognitiveServices.Vision.CustomVision.Prediction. Pilih versi terbaru, lalu Pasang.

Tip

Ingin menampilkan seluruh file kode mulai cepat sekaligus? Anda dapat menemukannya di GitHub, yang berisi contoh kode dalam mulai cepat ini.

Dari direktori proyek, buka file program.cs dan tambahkan instruksi using berikut:

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;

Dalam metode Utama aplikasi, buat variabel yang mengambil kunci dan titik akhir sumber daya Anda dari variabel lingkungan. Anda juga akan mendeklarasikan beberapa objek dasar yang akan digunakan nanti.

// 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;

Dalam metode Utama aplikasi, tambahkan panggilan untuk metode yang digunakan dalam mulai cepat ini. Anda akan mengimplementasikannya nanti.

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);

Mengautentikasi klien

Dalam metode baru, beri contoh pelatihan dan klien prediksi menggunakan titik akhir dan kunci Anda.

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;
}

Membuat proyek Custom Vision baru

Bit kode berikutnya membuat proyek klasifikasi gambar. Proyek yang dibuat akan muncul di situs web Custom Vision. Lihat metode CreateProject untuk menentukan opsi lain saat Anda membuat proyek (dijelaskan dalam panduan portal web Membuat pengklasifikasi).

private static Project CreateProject(CustomVisionTrainingClient trainingApi)
{
    // Create a new project
    Console.WriteLine("Creating new project:");
    return trainingApi.CreateProject("My New Project");
}

Menambahkan tag ke proyek

Metode ini mendefinisikan tag yang akan Anda latih modelnya.

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");
}

Mengunggah dan menandai gambar

Pertama, unduh gambar sampel untuk proyek ini. Simpan konten folder gambar sampel ke perangkat lokal Anda.

Kemudian, tentukan metode pembantu untuk mengunggah gambar di direktori ini. Anda mungkin perlu mengedit argumen GetFiles untuk mengarahkan ke lokasi tempat gambar disimpan.

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")));
}

Selanjutnya, tentukan metode untuk mengunggah gambar, menerapkan tag yang sesuai dengan lokasi foldernya (gambar sudah diurutkan). Anda dapat mengunggah dan menandai gambar secara berulang, atau dalam batch (hingga 64 per batch). Cuplikan kode ini berisi contoh keduanya.

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 }));

}

Melatih proyek

Metode ini menciptakan perulangan pelatihan pertama dalam proyek. Metode ini mengajukan kueri layanan sampai pelatihan selesai.

private static void TrainProject(CustomVisionTrainingClient trainingApi, Project project)
{
    // Now there are images with tags start training the project
    Console.WriteLine("\tTraining");
    iteration = trainingApi.TrainProject(project.Id);

    // The returned iteration will be in progress, and can be queried periodically to see when it has completed
    while (iteration.Status == "Training")
    {
        Console.WriteLine("Waiting 10 seconds for training to complete...");
        Thread.Sleep(10000);

        // Re-query the iteration to get it's updated status
        iteration = trainingApi.GetIteration(project.Id, iteration.Id);
    }
}

Tip

Berlatih dengan tag yang dipilih

Secara opsional, Anda dapat berlatih hanya dengan subkumpulan tag yang Anda terapkan. Anda mungkin ingin melakukannya jika belum cukup menerapkan tag tertentu, tetapi Anda memiliki cukup banyak tag lain. Dalam panggilan TrainProject, gunakan parameter trainingParameters. Buat TrainingParameters dan atur properti SelectedTags-nya ke daftar ID tag yang ingin Anda gunakan. Model akan dilatih untuk hanya mengenali tag dalam daftar itu.

Menerbitkan perulangan saat ini

Metode ini membuat perulangan model saat ini tersedia untuk kueri. Anda dapat menggunakan nama model sebagai referensi untuk mengirim permintaan prediksi. Anda perlu memasukkan nilai Anda sendiri untuk predictionResourceId. Anda dapat menemukan ID sumber daya prediksi pada tab Properti sumber daya di portal Azure, yang tercantum sebagai ID Sumber Daya.

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
}

Menguji titik akhir prediksi

Bagian skrip ini memuat gambar pengujian, kueri titik akhir model, dan output data prediksi ke konsol.

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}");
    }
}

Jalankan aplikasi

Jalankan aplikasi dengan mengeklik tombol Debug di bagian atas jendela IDE.

Saat aplikasi berjalan, aplikasi harus membuka jendela konsol dan menulis output berikut:

Creating new project:
        Uploading images
        Training
Done!

Making a prediction:
        Hemlock: 95.0%
        Japanese Cherry: 0.0%

Anda kemudian dapat memverifikasi bahwa gambar pengujian (yang ditemukan di Images/Test/) ditandai dengan tepat. Tekan tombol apa pun untuk keluar dari aplikasi. Anda juga dapat kembali ke situs web Custom Vision dan melihat status terbaru proyek Anda yang baru saja dibuat.

Membersihkan sumber daya

Jika Anda ingin menerapkan proyek klasifikasi gambar Anda sendiri (atau mencoba proyek deteksi objek), hapus proyek identifikasi pohon dari contoh ini. Langganan gratis memungkinkan untuk dua proyek Custom Vision.

Di situs web Custom Vision, navigasi ke Proyek dan pilih tempat sampah di bawah Proyek Baru Saya.

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

Langkah berikutnya

Kini Anda telah menyelesaikan setiap langkah proses klasifikasi gambar dalam kode. Sampel ini menjalankan perulangan pelatihan tunggal, tetapi sering kali Anda harus melatih dan menguji model Anda beberapa kali untuk membuatnya lebih akurat.

Panduan ini memberikan petunjuk dan kode sampel untuk membantu Anda memulai menggunakan pustaka klien Custom Vision untuk Go guna membangun model klasifikasi gambar. Anda akan membuat proyek, menambahkan tag, melatih proyek, dan menggunakan URL titik akhir prediksi proyek untuk mengujinya secara terprogram. Gunakan contoh ini sebagai templat untuk membuat aplikasi pengenalan gambar Anda sendiri.

Catatan

Jika Anda ingin membangun dan melatih model klasifikasi tanpa menulis kode, lihat panduan berbasis browser.

Gunakan pustaka klien Custom Vision untuk Go guna:

  • Membuat proyek Custom Vision baru
  • Menambahkan tag ke proyek
  • Mengunggah dan menandai gambar
  • Melatih proyek
  • Menerbitkan perulangan saat ini
  • Menguji titik akhir prediksi

Dokumentasi referensi (pelatihan)(prediksi)

Prasyarat

  • Langganan Azure - Buat langganan secara gratis
  • Go 1.8+
  • Setelah Anda memiliki langganan Azure, buat sumber daya Custom Vision di portal Azure untuk membuat sumber daya pelatihan dan prediksi.
    • Anda dapat menggunakan tingkat harga gratis (F0) untuk percobaan, lalu meningkatkannya ke tingkat berbayar untuk produksi.

Membuat variabel lingkungan

Dalam contoh ini, Anda akan menulis kredensial Anda ke variabel lingkungan pada komputer lokal yang menjalankan aplikasi.

Buka portal Microsoft Azure. Jika sumber daya Custom Vision yang Anda buat di bagian Prasyarat berhasil disebarkan, pilih tombol Buka Sumber Daya di bawah Langkah Berikutnya. Anda dapat menemukan kunci dan titik akhir di halaman kunci dan titik akhir sumber daya, di bawah manajemen sumber daya. Anda harus mendapatkan kunci untuk sumber daya pelatihan dan prediksi Anda, bersama dengan titik akhir API.

Anda dapat menemukan ID sumber daya prediksi pada tab Properti sumber daya prediksi di portal Azure, yang tercantum sebagai ID Sumber Daya.

Tip

Anda juga menggunakan https://www.customvision.ai/ untuk mendapatkan nilai-nilai ini. Setelah masuk, pilih ikon Pengaturan di kanan atas. Pada halaman Pengaturan , Anda dapat melihat semua kunci, ID sumber daya, dan titik akhir.

Perhatian

Jangan sertakan kunci langsung dalam kode Anda, dan jangan pernah mempostingnya secara publik. Lihat artikel keamanan layanan Azure AI untuk opsi autentikasi lainnya seperti Azure Key Vault.

Untuk mengatur variabel lingkungan, buka jendela konsol dan ikuti instruksi untuk sistem operasi dan lingkungan pengembangan Anda.

  1. Untuk mengatur VISION_TRAINING KEY variabel lingkungan, ganti your-training-key dengan salah satu kunci untuk sumber daya pelatihan Anda.
  2. Untuk mengatur VISION_TRAINING_ENDPOINT variabel lingkungan, ganti your-training-endpoint dengan titik akhir untuk sumber daya pelatihan Anda.
  3. Untuk mengatur VISION_PREDICTION_KEY variabel lingkungan, ganti your-prediction-key dengan salah satu kunci untuk sumber daya prediksi Anda.
  4. Untuk mengatur VISION_PREDICTION_ENDPOINT variabel lingkungan, ganti your-prediction-endpoint dengan titik akhir untuk sumber daya prediksi Anda.
  5. Untuk mengatur VISION_PREDICTION_RESOURCE_ID variabel lingkungan, ganti your-resource-id dengan ID sumber daya untuk sumber daya prediksi Anda.
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

Setelah menambahkan variabel lingkungan, Anda mungkin perlu memulai ulang program yang sedang berjalan yang akan membaca variabel lingkungan, termasuk jendela konsol.

Menyiapkan

Menginstal pustaka klien Custom Vision

Untuk menulis aplikasi analisis gambar dengan Custom Vision untuk Go, Anda memerlukan pustaka klien layanan Custom Vision. Jalankan perintah berikut ini di PowerShell :

go get -u github.com/Azure/azure-sdk-for-go/...

atau jika Anda menggunakan dep, dalam repo run Anda:

dep ensure -add github.com/Azure/azure-sdk-for-go

Mendapatkan sampel gambar

Contoh ini menggunakan gambar dari layanan Azure AI repositori Sampel Python SDK di GitHub. Kloning atau unduh repositori ini ke lingkungan pengembangan Anda. Ingat lokasi foldernya untuk langkah selanjutnya.

Membuat proyek Custom Vision

Buat file baru yang disebut sample.go di direktori proyek yang dipilih, dan buka di editor kode pilihan Anda.

Tambahkan kode berikut ke skrip Anda untuk membuat proyek layanan Custom Vision baru.

Lihat metode CreateProject untuk menentukan opsi lain saat Anda membuat proyek (dijelaskan dalam panduan portal web Membuat pengklasifikasi).

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)
    }

Buat tag dalam proyek

Untuk membuat tag klasifikasi ke proyek Anda, tambahkan kode berikut ke akhir sample.go:

// Make two tags in the new project
hemlockTag, _ := trainer.CreateTag(ctx, *project.ID, "Hemlock", "Hemlock tree tag", string(training.Regular))
cherryTag, _ := trainer.CreateTag(ctx, *project.ID, "Japanese Cherry", "Japanese cherry tree tag", string(training.Regular))

Mengunggah dan menandai gambar

Untuk menambahkan gambar sampel ke proyek, sisipkan kode berikut setelah pembuatan tag. Kode ini mengunggah setiap gambar dengan tag yang sesuai. Anda dapat mengunggah hingga 64 gambar dalam satu batch.

Catatan

Anda harus mengubah jalur ke gambar berdasarkan tempat Anda mengunduh proyek Sampel Go SDK layanan Azure AI sebelumnya.

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() })
}

Melatih dan menerbitkan proyek

Kode ini membuat perulangan pertama dari model prediksi dan kemudian menerbitkan perulangan itu ke titik akhir prediksi. Nama yang diberikan pada perulangan yang dipublikasikan dapat digunakan untuk mengirim permintaan prediksi. Perulangan tidak tersedia di titik akhir prediksi hingga diterbitkan.

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))

Menggunakan titik akhir prediksi

Untuk mengirim gambar ke titik akhir prediksi dan mengambil prediksi, tambahkan kode berikut ke akhir file:

    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("")
    }
}

Jalankan aplikasi

Jalankan sample.go.

go run sample.go

Output aplikasi harus mirip dengan teks berikut:

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%

Lalu, Anda dapat memastikan bahwa gambar pengujian (ditemukan di <base_image_url>/Images/Test/) diberi tag dengan benar. Anda juga dapat kembali ke situs web Custom Vision dan melihat status terbaru proyek Anda yang baru saja dibuat.

Membersihkan sumber daya

Jika Anda ingin menerapkan proyek klasifikasi gambar Anda sendiri (atau mencoba proyek deteksi objek), hapus proyek identifikasi pohon dari contoh ini. Langganan gratis memungkinkan untuk dua proyek Custom Vision.

Di situs web Custom Vision, navigasi ke Proyek dan pilih tempat sampah di bawah Proyek Baru Saya.

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

Langkah berikutnya

Sekarang Anda telah melihat bagaimana setiap langkah proses deteksi objek dapat dilakukan dalam kode. Sampel ini menjalankan perulangan pelatihan tunggal, tetapi sering kali Anda harus melatih dan menguji model Anda beberapa kali untuk membuatnya lebih akurat.

Mulai menggunakan pustaka klien Visual Kustom untuk Java untuk membangun model klasifikasi gambar. Ikuti langkah-langkah berikut untuk memasang paket dan mencoba contoh kode untuk tugas-tugas dasar. Gunakan contoh ini sebagai templat untuk membuat aplikasi pengenalan gambar Anda sendiri.

Catatan

Jika Anda ingin membangun dan melatih model klasifikasi tanpa menulis kode, lihat panduan berbasis browser.

Gunakan pustaka klien Visual Kustom untuk Java untuk:

  • Membuat proyek Custom Vision baru
  • Menambahkan tag ke proyek
  • Mengunggah dan menandai gambar
  • Melatih proyek
  • Menerbitkan perulangan saat ini
  • Menguji titik akhir prediksi

Dokumentasi referensi | Kode sumber pustaka (pelatihan)(prediksi)| Artefak (Maven) (pelatihan)(prediksi) | Sampel

Prasyarat

Membuat variabel lingkungan

Dalam contoh ini, Anda akan menulis kredensial Anda ke variabel lingkungan pada komputer lokal yang menjalankan aplikasi.

Buka portal Microsoft Azure. Jika sumber daya Custom Vision yang Anda buat di bagian Prasyarat berhasil disebarkan, pilih tombol Buka Sumber Daya di bawah Langkah Berikutnya. Anda dapat menemukan kunci dan titik akhir di halaman kunci dan titik akhir sumber daya, di bawah manajemen sumber daya. Anda harus mendapatkan kunci untuk sumber daya pelatihan dan prediksi Anda, bersama dengan titik akhir API.

Anda dapat menemukan ID sumber daya prediksi pada tab Properti sumber daya prediksi di portal Azure, yang tercantum sebagai ID Sumber Daya.

Tip

Anda juga menggunakan https://www.customvision.ai/ untuk mendapatkan nilai-nilai ini. Setelah masuk, pilih ikon Pengaturan di kanan atas. Pada halaman Pengaturan , Anda dapat melihat semua kunci, ID sumber daya, dan titik akhir.

Perhatian

Jangan sertakan kunci langsung dalam kode Anda, dan jangan pernah mempostingnya secara publik. Lihat artikel keamanan layanan Azure AI untuk opsi autentikasi lainnya seperti Azure Key Vault.

Untuk mengatur variabel lingkungan, buka jendela konsol dan ikuti instruksi untuk sistem operasi dan lingkungan pengembangan Anda.

  1. Untuk mengatur VISION_TRAINING KEY variabel lingkungan, ganti your-training-key dengan salah satu kunci untuk sumber daya pelatihan Anda.
  2. Untuk mengatur VISION_TRAINING_ENDPOINT variabel lingkungan, ganti your-training-endpoint dengan titik akhir untuk sumber daya pelatihan Anda.
  3. Untuk mengatur VISION_PREDICTION_KEY variabel lingkungan, ganti your-prediction-key dengan salah satu kunci untuk sumber daya prediksi Anda.
  4. Untuk mengatur VISION_PREDICTION_ENDPOINT variabel lingkungan, ganti your-prediction-endpoint dengan titik akhir untuk sumber daya prediksi Anda.
  5. Untuk mengatur VISION_PREDICTION_RESOURCE_ID variabel lingkungan, ganti your-resource-id dengan ID sumber daya untuk sumber daya prediksi Anda.
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

Setelah menambahkan variabel lingkungan, Anda mungkin perlu memulai ulang program yang sedang berjalan yang akan membaca variabel lingkungan, termasuk jendela konsol.

Menyiapkan

Buat proyek Gradle baru

Di jendela konsol (seperti cmd, PowerShell, atau Bash), buat direktori baru untuk aplikasi Anda, dan buka direktori tersebut.

mkdir myapp && cd myapp

Jalankan perintah gradle init dari direktori yang berfungsi. Perintah ini akan membuat file build penting untuk Gradle, termasuk build.gradle.kts yang digunakan saat runtime bahasa umum untuk membuat dan mengonfigurasi aplikasi Anda.

gradle init --type basic

Saat diminta untuk memilih DSL, pilih Kotlin.

Memasang pustaka klien

Temukan build.gradle.kts lalu buka dengan IDE atau editor teks pilihan Anda. Lalu, salin dalam konfigurasi build berikut. Konfigurasi ini mendefinisikan proyek sebagai aplikasi Java yang titik masuknya adalah kelas CustomVisionQuickstart. Konfigurasi ini mengimpor pustaka Visual Kustom.

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")
}

Membuat file Java

Dari direktori kerja Anda, jalankan perintah berikut ini untuk membuat folder sumber proyek:

mkdir -p src/main/java

Navigasi ke folder baru dan buat file bernama CustomVisionQuickstart.java. Buka di editor atau IDE pilihan Anda, lalu tambahkan pernyataan import berikut:

import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.UUID;

import com.google.common.io.ByteStreams;

import com.microsoft.azure.cognitiveservices.vision.customvision.training.models.Classifier;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.models.Domain;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.models.DomainType;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.models.ImageFileCreateBatch;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.models.ImageFileCreateEntry;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.models.Iteration;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.models.Project;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.models.Region;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.models.TrainProjectOptionalParameter;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.CustomVisionTrainingClient;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.Trainings;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.CustomVisionTrainingManager;
import com.microsoft.azure.cognitiveservices.vision.customvision.prediction.models.ImagePrediction;
import com.microsoft.azure.cognitiveservices.vision.customvision.prediction.models.Prediction;
import com.microsoft.azure.cognitiveservices.vision.customvision.prediction.CustomVisionPredictionClient;
import com.microsoft.azure.cognitiveservices.vision.customvision.prediction.CustomVisionPredictionManager;
import com.microsoft.azure.cognitiveservices.vision.customvision.training.models.Tag;

Tip

Ingin menampilkan seluruh file kode mulai cepat sekaligus? Anda dapat menemukannya di GitHub, yang berisi contoh kode dalam mulai cepat ini.

Di kelas CustomVisionQuickstart aplikasi, buat variabel yang mengambil kunci dan titik akhir sumber daya Anda dari variabel lingkungan.

// 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");

Penting

Buka portal Microsoft Azure. Jika sumber daya Custom Vision yang Anda buat di bagian Prasyarat berhasil disebarkan, pilih tombol Buka Sumber Daya di bawah Langkah Berikutnya. Anda dapat menemukan kunci dan titik akhir di halaman kunci dan titik akhir sumber daya. Anda harus mendapatkan kunci untuk sumber daya pelatihan dan prediksi Anda, bersama dengan titik akhir API untuk sumber daya pelatihan Anda.

Anda dapat menemukan ID sumber daya prediksi pada tab Properti sumber daya di portal Azure, yang tercantum sebagai ID Sumber Daya.

Penting

Ingatlah untuk menghapus kunci dari kode setelah selesai dan jangan pernah mempostingnya secara publik. Untuk produksi, gunakan cara yang aman untuk menyimpan dan mengakses kredensial Anda seperti Azure Key Vault. Lihat artikel keamanan layanan Azure AI untuk informasi selengkapnya.

Dalam metode utama aplikasi, tambahkan panggilan untuk metode yang digunakan dalam mulai cepat ini. Anda akan menentukannya nanti.

Project project = createProject(trainClient);
addTags(trainClient, project);
uploadImages(trainClient, project);
trainProject(trainClient, project);
publishIteration(trainClient, project);
testProject(predictor, project);

Model objek

Kelas dan antarmuka berikut menangani beberapa fitur utama pustaka klien Java Visual Kustom.

Nama Deskripsi
CustomVisionTrainingClient Kelas ini menangani pembuatan, pelatihan, dan penerbitan model Anda.
CustomVisionPredictionClient Kelas ini menangani kueri model Anda untuk prediksi klasifikasi gambar.
ImagePrediction Kelas ini mendefinisikan prediksi tunggal pada satu gambar. Ini termasuk properti untuk ID dan nama objek, serta skor keyakinan.

Contoh kode

Cuplikan kode ini memperlihatkan cara melakukan berbagai tugas berikut dengan pustaka klien Visual Kustom untuk Java:

Mengautentikasi klien

Dalam metode utama Anda, iberi contoh pelatihan dan prediksi klien menggunakan titik akhir dan kunci Anda.

// Authenticate
CustomVisionTrainingClient trainClient = CustomVisionTrainingManager
        .authenticate(trainingEndpoint, trainingApiKey)
        .withEndpoint(trainingEndpoint);
CustomVisionPredictionClient predictor = CustomVisionPredictionManager
        .authenticate(predictionEndpoint, predictionApiKey)
        .withEndpoint(predictionEndpoint);

Membuat proyek Visual Kustom

T## Buat proyek Visual Kustom baru

Metode berikutnya ini membuat proyek klasifikasi gambar. Proyek yang dibuat akan muncul di situs web Visual Kustom yang Anda kunjungi sebelumnya. Lihat overload metode CreateProject untuk menentukan opsi lain saat Anda membuat proyek (dijelaskan dalam panduan portal web Membuat detektor).

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;
}

Menambahkan tag ke proyek Anda

Metode ini mendefinisikan tag yang akan Anda latih modelnya.

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();
}

Mengunggah dan menandai gambar

Pertama, unduh gambar sampel untuk proyek ini. Simpan konten folder gambar sampel ke perangkat lokal Anda.

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);
    }
}

Cuplikan kode sebelumnya menggunakan dua fungsi bantuan yang mengambil gambar sebagai aliran sumber daya dan mengunggahnya ke layanan (Anda dapat mengunggah hingga 64 gambar dalam satu batch).

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;
}

Melatih proyek

Metode ini menciptakan perulangan pelatihan pertama dalam proyek. Metode ini mengajukan kueri layanan sampai pelatihan selesai.

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());
}

Menerbitkan perulangan saat ini

Metode ini membuat perulangan model saat ini tersedia untuk kueri. Anda dapat menggunakan nama model sebagai referensi untuk mengirim permintaan prediksi. Anda perlu memasukkan nilai Anda sendiri untuk predictionResourceId. Anda dapat menemukan ID sumber daya prediksi pada tab Properti sumber daya di portal Azure, yang tercantum sebagai ID Sumber Daya.

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);
}

Menguji titik akhir prediksi

Metode ini memuat gambar pengujian, kueri titik akhir model, dan output data prediksi ke konsol.

// 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));
    }
}

Jalankan aplikasi

Anda dapat membuat aplikasi dengan:

gradle build

Jalankan aplikasi dengan gradle run perintah:

gradle run

Membersihkan sumber daya

Jika Anda ingin membersihkan dan menghapus langganan layanan Azure AI, Anda dapat menghapus sumber daya atau grup sumber daya. Menghapus grup sumber daya juga menghapus sumber daya apa pun yang terkait dengannya.

Jika Anda ingin menerapkan proyek klasifikasi gambar Anda sendiri (atau mencoba proyek deteksi objek), hapus proyek identifikasi pohon dari contoh ini. Langganan gratis memungkinkan untuk dua proyek Custom Vision.

Di situs web Custom Vision, navigasi ke Proyek dan pilih tempat sampah di bawah Proyek Baru Saya.

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

Langkah berikutnya

Sekarang Anda telah melihat bagaimana setiap langkah proses klasifikasi gambar dapat dilakukan dalam kode. Sampel ini menjalankan perulangan pelatihan tunggal, tetapi sering kali Anda harus melatih dan menguji model Anda beberapa kali untuk membuatnya lebih akurat.

Panduan ini menyediakan instruksi dan kode sampel untuk membantu Anda mulai menggunakan pustaka klien Custom Vision untuk Node.js untuk membangun model klasifikasi gambar. Anda akan membuat proyek, menambahkan tag, melatih proyek, dan menggunakan URL titik akhir prediksi proyek untuk mengujinya secara terprogram. Gunakan contoh ini sebagai templat untuk membuat aplikasi pengenalan gambar Anda sendiri.

Catatan

Jika Anda ingin membangun dan melatih model klasifikasi tanpa menulis kode, lihat panduan berbasis browser.

Gunakan pustaka klien Custom Vision untuk .NET untuk:

  • Membuat proyek Custom Vision baru
  • Menambahkan tag ke proyek
  • Mengunggah dan menandai gambar
  • Melatih proyek
  • Menerbitkan perulangan saat ini
  • Menguji titik akhir prediksi

Dokumentasi referensi (pelatihan)(prediksi) | Kode sumber pustaka (pelatihan)(prediksi) | Paket (npm) (pelatihan)(prediksi) | Sampel

Prasyarat

  • Langganan Azure - Buat langganan secara gratis
  • Versi terbaru Node.js
  • Setelah Anda memiliki langganan Azure, buat sumber daya Custom Vision di portal Azure untuk membuat sumber daya pelatihan dan prediksi.
    • Anda dapat menggunakan tingkat harga gratis (F0) untuk percobaan, lalu meningkatkannya ke tingkat berbayar untuk produksi.

Membuat variabel lingkungan

Dalam contoh ini, Anda akan menulis kredensial Anda ke variabel lingkungan pada komputer lokal yang menjalankan aplikasi.

Buka portal Microsoft Azure. Jika sumber daya Custom Vision yang Anda buat di bagian Prasyarat berhasil disebarkan, pilih tombol Buka Sumber Daya di bawah Langkah Berikutnya. Anda dapat menemukan kunci dan titik akhir di halaman kunci dan titik akhir sumber daya, di bawah manajemen sumber daya. Anda harus mendapatkan kunci untuk sumber daya pelatihan dan prediksi Anda, bersama dengan titik akhir API.

Anda dapat menemukan ID sumber daya prediksi pada tab Properti sumber daya prediksi di portal Azure, yang tercantum sebagai ID Sumber Daya.

Tip

Anda juga menggunakan https://www.customvision.ai/ untuk mendapatkan nilai-nilai ini. Setelah masuk, pilih ikon Pengaturan di kanan atas. Pada halaman Pengaturan , Anda dapat melihat semua kunci, ID sumber daya, dan titik akhir.

Perhatian

Jangan sertakan kunci langsung dalam kode Anda, dan jangan pernah mempostingnya secara publik. Lihat artikel keamanan layanan Azure AI untuk opsi autentikasi lainnya seperti Azure Key Vault.

Untuk mengatur variabel lingkungan, buka jendela konsol dan ikuti instruksi untuk sistem operasi dan lingkungan pengembangan Anda.

  1. Untuk mengatur VISION_TRAINING KEY variabel lingkungan, ganti your-training-key dengan salah satu kunci untuk sumber daya pelatihan Anda.
  2. Untuk mengatur VISION_TRAINING_ENDPOINT variabel lingkungan, ganti your-training-endpoint dengan titik akhir untuk sumber daya pelatihan Anda.
  3. Untuk mengatur VISION_PREDICTION_KEY variabel lingkungan, ganti your-prediction-key dengan salah satu kunci untuk sumber daya prediksi Anda.
  4. Untuk mengatur VISION_PREDICTION_ENDPOINT variabel lingkungan, ganti your-prediction-endpoint dengan titik akhir untuk sumber daya prediksi Anda.
  5. Untuk mengatur VISION_PREDICTION_RESOURCE_ID variabel lingkungan, ganti your-resource-id dengan ID sumber daya untuk sumber daya prediksi Anda.
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

Setelah menambahkan variabel lingkungan, Anda mungkin perlu memulai ulang program yang sedang berjalan yang akan membaca variabel lingkungan, termasuk jendela konsol.

Menyiapkan

Membuat aplikasi Node.js baru

Di jendela konsol (seperti cmd, PowerShell, atau Bash), buat direktori baru untuk aplikasi Anda, dan buka direktori tersebut.

mkdir myapp && cd myapp

Jalankan perintah npm init untuk membuat aplikasi node dengan file package.json.

npm init

Memasang pustaka klien

Untuk menulis aplikasi analisis gambar dengan Visi Kustom untuk Node.js, Anda memerlukan paket NPM Visi Kustom. Untuk menginstalnya, jalankan perintah berikut ini di PowerShell:

npm install @azure/cognitiveservices-customvision-training
npm install @azure/cognitiveservices-customvision-prediction

File package.json aplikasi Anda akan diperbarui dengan dependensi.

Buat file bernama index.js dan impor pustaka berikut ini:

const util = require('util');
const fs = require('fs');
const TrainingApi = require("@azure/cognitiveservices-customvision-training");
const PredictionApi = require("@azure/cognitiveservices-customvision-prediction");
const msRest = require("@azure/ms-rest-js");

Tip

Ingin menampilkan seluruh file kode mulai cepat sekaligus? Anda dapat menemukannya di GitHub, yang berisi contoh kode dalam mulai cepat ini.

Buat variabel untuk titik akhir dan kunci Azure sumber daya Anda.

// 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"];

Tambahkan juga bidang untuk nama proyek Anda dan parameter waktu habis untuk panggilan asinkron.

const publishIterationName = "classifyModel";
const setTimeoutPromise = util.promisify(setTimeout);

Model objek

Nama Deskripsi
TrainingAPIClient Kelas ini menangani pembuatan, pelatihan, dan penerbitan model Anda.
PredictionAPIClient Kelas ini menangani kueri model Anda untuk prediksi klasifikasi gambar.
prediksi Antarmuka ini mendefinisikan prediksi tunggal pada satu gambar. Ini termasuk properti untuk ID dan nama objek, serta skor keyakinan.

Contoh kode

Cuplikan kode ini memperlihatkan kepada Anda cara melakukan tugas berikut dengan pustaka klien Visi Kustom untuk JavaScript:

Mengautentikasi klien

Inisiasi objek klien dengan titik akhir dan kunci Anda. Buat objek ApiKeyCredentials dengan kunci Anda, dan gunakan dengan titik akhir Anda untuk membuat objek TrainingAPIClient dan PredictionAPIClient.

const credentials = new msRest.ApiKeyCredentials({ inHeader: { "Training-key": trainingKey } });
const trainer = new TrainingApi.TrainingAPIClient(credentials, trainingEndpoint);
const predictor_credentials = new msRest.ApiKeyCredentials({ inHeader: { "Prediction-key": predictionKey } });
const predictor = new PredictionApi.PredictionAPIClient(predictor_credentials, predictionEndpoint);

Membuat proyek Custom Vision baru

Mulai fungsi baru untuk berisi semua panggilan fungsi Visi Kustom Anda. Tambahkan kode berikut untuk membuat proyek layanan Visi Kustom baru.

(async () => {
    console.log("Creating project...");
    const sampleProject = await trainer.createProject("Sample Project");

Menambahkan tag ke proyek

Untuk membuat tag klasifikasi ke proyek Anda, tambahkan kode berikut ke fungsi Anda:

const hemlockTag = await trainer.createTag(sampleProject.id, "Hemlock");
const cherryTag = await trainer.createTag(sampleProject.id, "Japanese Cherry");

Mengunggah dan menandai gambar

Pertama, unduh gambar sampel untuk proyek ini. Simpan konten folder gambar sampel ke perangkat lokal Anda.

Untuk menambahkan gambar sampel ke proyek, sisipkan kode berikut setelah pembuatan tag. Kode ini mengunggah setiap gambar dengan tag yang sesuai.

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);

Penting

Anda harus mengubah jalur ke gambar (sampleDataRoot) berdasarkan tempat Anda mengunduh repositori Sampel Python SDK layanan Azure AI.

Melatih proyek

Kode ini membuat perulangan pertama model prediksi.

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);

Menerbitkan perulangan saat ini

Kode ini menerbitkan perulangan terlatih ke titik akhir prediksi. Nama yang diberikan pada perulangan yang dipublikasikan dapat digunakan untuk mengirim permintaan prediksi. Perulangan tidak tersedia di titik akhir prediksi hingga diterbitkan.

// Publish the iteration to the end point
await trainer.publishIteration(sampleProject.id, trainingIteration.id, publishIterationName, predictionResourceId);

Menguji titik akhir prediksi

Untuk mengirim gambar ke titik akhir prediksi dan mengambil prediksi, tambahkan kode berikut ke fungsi Anda.

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)}%`);
});

Kemudian, tutup fungsi Visi Kustom Anda lalu lakukan panggilan.

})()

Jalankan aplikasi

Jalankan aplikasi dengan perintah node pada file mulai cepat Anda.

node index.js

Output aplikasi harus mirip dengan teks berikut:

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%

Kemudian Anda dapat memverifikasi bahwa gambar pengujian (yang ditemukan di <sampleDataRoot>/Test/) diberi tag dengan benar. Anda juga dapat kembali ke situs web Custom Vision dan melihat status terbaru proyek Anda yang baru saja dibuat.

Jika Anda ingin menerapkan proyek klasifikasi gambar Anda sendiri (atau mencoba proyek deteksi objek), hapus proyek identifikasi pohon dari contoh ini. Langganan gratis memungkinkan untuk dua proyek Custom Vision.

Di situs web Custom Vision, navigasi ke Proyek dan pilih tempat sampah di bawah Proyek Baru Saya.

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

Langkah berikutnya

Sekarang Anda telah melihat bagaimana setiap langkah proses deteksi objek dapat dilakukan dalam kode. Sampel ini menjalankan perulangan pelatihan tunggal, tetapi sering kali Anda harus melatih dan menguji model Anda beberapa kali untuk membuatnya lebih akurat.

Mulai menggunakan pustaka klien Custom Vision untuk Python. Ikuti langkah-langkah ini untuk memasang paket dan mencoba contoh kode untuk membangun model klasifikasi gambar. Anda akan membuat proyek, menambahkan tag, melatih proyek, dan menggunakan URL titik akhir prediksi proyek untuk mengujinya secara terprogram. Gunakan contoh ini sebagai templat untuk membuat aplikasi pengenalan gambar Anda sendiri.

Catatan

Jika Anda ingin membangun dan melatih model klasifikasi tanpa menulis kode, lihat panduan berbasis browser.

Gunakan pustaka klien Custom Vision untuk Python untuk:

  • Membuat proyek Custom Vision baru
  • Menambahkan tag ke proyek
  • Mengunggah dan menandai gambar
  • Melatih proyek
  • Menerbitkan perulangan saat ini
  • Menguji titik akhir prediksi

Dokumentasi referensi | Kode sumber pustaka | Paket (PyPi) | Sampel

Prasyarat

  • Langganan Azure - Buat langganan secara gratis
  • Python 3.x
    • Penginstalan Python Anda harus menyertakan pip. Anda dapat memeriksa apakah pip terinstal dengan menjalankan pip --version pada baris perintah. Dapatkan pip dengan menginstal versi terbaru Python.
  • Setelah Anda memiliki langganan Azure, buat sumber daya Custom Vision di portal Azure untuk membuat sumber daya pelatihan dan prediksi.
    • Anda dapat menggunakan tingkat harga gratis (F0) untuk percobaan, lalu meningkatkannya ke tingkat berbayar untuk produksi.

Membuat variabel lingkungan

Dalam contoh ini, Anda akan menulis kredensial Anda ke variabel lingkungan pada komputer lokal yang menjalankan aplikasi.

Buka portal Microsoft Azure. Jika sumber daya Custom Vision yang Anda buat di bagian Prasyarat berhasil disebarkan, pilih tombol Buka Sumber Daya di bawah Langkah Berikutnya. Anda dapat menemukan kunci dan titik akhir di halaman kunci dan titik akhir sumber daya, di bawah manajemen sumber daya. Anda harus mendapatkan kunci untuk sumber daya pelatihan dan prediksi Anda, bersama dengan titik akhir API.

Anda dapat menemukan ID sumber daya prediksi pada tab Properti sumber daya prediksi di portal Azure, yang tercantum sebagai ID Sumber Daya.

Tip

Anda juga menggunakan https://www.customvision.ai/ untuk mendapatkan nilai-nilai ini. Setelah masuk, pilih ikon Pengaturan di kanan atas. Pada halaman Pengaturan , Anda dapat melihat semua kunci, ID sumber daya, dan titik akhir.

Perhatian

Jangan sertakan kunci langsung dalam kode Anda, dan jangan pernah mempostingnya secara publik. Lihat artikel keamanan layanan Azure AI untuk opsi autentikasi lainnya seperti Azure Key Vault.

Untuk mengatur variabel lingkungan, buka jendela konsol dan ikuti instruksi untuk sistem operasi dan lingkungan pengembangan Anda.

  1. Untuk mengatur VISION_TRAINING KEY variabel lingkungan, ganti your-training-key dengan salah satu kunci untuk sumber daya pelatihan Anda.
  2. Untuk mengatur VISION_TRAINING_ENDPOINT variabel lingkungan, ganti your-training-endpoint dengan titik akhir untuk sumber daya pelatihan Anda.
  3. Untuk mengatur VISION_PREDICTION_KEY variabel lingkungan, ganti your-prediction-key dengan salah satu kunci untuk sumber daya prediksi Anda.
  4. Untuk mengatur VISION_PREDICTION_ENDPOINT variabel lingkungan, ganti your-prediction-endpoint dengan titik akhir untuk sumber daya prediksi Anda.
  5. Untuk mengatur VISION_PREDICTION_RESOURCE_ID variabel lingkungan, ganti your-resource-id dengan ID sumber daya untuk sumber daya prediksi Anda.
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

Setelah menambahkan variabel lingkungan, Anda mungkin perlu memulai ulang program yang sedang berjalan yang akan membaca variabel lingkungan, termasuk jendela konsol.

Menyiapkan

Memasang pustaka klien

Untuk menulis aplikasi analisis gambar dengan Custom Vision untuk Python, Anda memerlukan pustaka klien Custom Vision. Setelah menginstal Python, jalankan perintah berikut di PowerShell atau jendela konsol:

pip install azure-cognitiveservices-vision-customvision

Membuat aplikasi Python baru

Membuat file Python baru dan mengimpor pustaka berikut.

from azure.cognitiveservices.vision.customvision.training import CustomVisionTrainingClient
from azure.cognitiveservices.vision.customvision.prediction import CustomVisionPredictionClient
from azure.cognitiveservices.vision.customvision.training.models import ImageFileCreateBatch, ImageFileCreateEntry, Region
from msrest.authentication import ApiKeyCredentials
import os, time, uuid

Tip

Ingin menampilkan seluruh file kode mulai cepat sekaligus? Anda dapat menemukannya di GitHub, yang berisi contoh kode dalam mulai cepat ini.

Buat variabel untuk titik akhir dan kunci Azure sumber daya Anda.

# 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"]

Model objek

Nama Deskripsi
CustomVisionTrainingClient Kelas ini menangani pembuatan, pelatihan, dan penerbitan model Anda.
CustomVisionPredictionClient Kelas ini menangani kueri model Anda untuk prediksi klasifikasi gambar.
ImagePrediction Kelas ini menentukan satu prediksi objek pada satu gambar. Ini mencakup properti untuk ID dan nama objek, lokasi kotak batas objek, serta skor keyakinan.

Contoh kode

Cuplikan kode ini menunjukkan cara melakukan hal berikut ini dengan pustaka klien Custom Vision untuk Python:

Mengautentikasi klien

Beri contoh klien pelatihan dan prediksi dengan titik akhir dan kunci Anda. Buat objek ApiKeyServiceClientCredentials dengan kunci Anda dan gunakan dengan titik akhir Anda untuk membuat objek CustomVisionTrainingClient dan CustomVisionPredictionClient.

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)

Membuat proyek Custom Vision baru

Tambahkan kode berikut ke skrip Anda untuk membuat proyek layanan Custom Vision baru.

Lihat metode create_project untuk menentukan opsi lain saat Anda membuat proyek (yang dijelaskan dalam panduan portal web Membuat pengklasifikasi).

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)

Menambahkan tag ke proyek

Untuk menambahkan tag klasifikasi ke proyek Anda, tambahkan kode berikut:

# Make two tags in the new project
hemlock_tag = trainer.create_tag(project.id, "Hemlock")
cherry_tag = trainer.create_tag(project.id, "Japanese Cherry")

Mengunggah dan menandai gambar

Pertama, unduh gambar sampel untuk proyek ini. Simpan konten folder gambar sampel ke perangkat lokal Anda.

Untuk menambahkan gambar sampel ke proyek, sisipkan kode berikut setelah pembuatan tag. Kode ini mengunggah setiap gambar dengan tag yang sesuai. Anda dapat mengunggah hingga 64 gambar dalam satu batch.

base_image_location = os.path.join (os.path.dirname(__file__), "Images")

print("Adding images...")

image_list = []

for image_num in range(1, 11):
    file_name = "hemlock_{}.jpg".format(image_num)
    with open(os.path.join (base_image_location, "Hemlock", file_name), "rb") as image_contents:
        image_list.append(ImageFileCreateEntry(name=file_name, contents=image_contents.read(), tag_ids=[hemlock_tag.id]))

for image_num in range(1, 11):
    file_name = "japanese_cherry_{}.jpg".format(image_num)
    with open(os.path.join (base_image_location, "Japanese_Cherry", file_name), "rb") as image_contents:
        image_list.append(ImageFileCreateEntry(name=file_name, contents=image_contents.read(), tag_ids=[cherry_tag.id]))

upload_result = trainer.create_images_from_files(project.id, ImageFileCreateBatch(images=image_list))
if not upload_result.is_batch_successful:
    print("Image batch upload failed.")
    for image in upload_result.images:
        print("Image status: ", image.status)
    exit(-1)

Catatan

Anda harus mengubah jalur ke gambar berdasarkan tempat Anda mengunduh repositori Sampel Python SDK layanan Azure AI.

Melatih proyek

Kode ini membuat perulangan pertama model prediksi.

print ("Training...")
iteration = trainer.train_project(project.id)
while (iteration.status != "Completed"):
    iteration = trainer.get_iteration(project.id, iteration.id)
    print ("Training status: " + iteration.status)
    print ("Waiting 10 seconds...")
    time.sleep(10)

Tip

Berlatih dengan tag yang dipilih

Secara opsional, Anda dapat berlatih hanya dengan subkumpulan tag yang Anda terapkan. Anda mungkin ingin melakukannya jika belum cukup menerapkan tag tertentu, tetapi Anda memiliki cukup banyak tag lain. Dalam panggilan train_project, atur parameter selected_tags ke daftar string ID tag yang ingin Anda gunakan. Model akan dilatih untuk hanya mengenali tag dalam daftar itu.

Menerbitkan perulangan saat ini

Perulangan tidak tersedia di titik akhir prediksi hingga diterbitkan. Kode berikut membuat perulangan model saat ini tersedia untuk kueri.

# 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!")

Menguji titik akhir prediksi

Untuk mengirim gambar ke titik akhir prediksi dan mengambil prediksi, tambahkan kode berikut ke akhir file:

# 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))

Jalankan aplikasi

Jalankan CustomVisionQuickstart.py.

python CustomVisionQuickstart.py

Output aplikasi harus mirip dengan teks berikut:

Creating project...
Adding images...
Training...
Training status: Training
Training status: Completed
Done!
        Hemlock: 93.53%
        Japanese Cherry: 0.01%

Kemudian, Anda dapat memastikan bahwa gambar percobaan (yang ditemukan di <base_image_location>/images/Test/) diberi tag dengan benar. Anda juga dapat kembali ke situs web Custom Vision dan melihat status terbaru proyek Anda yang baru saja dibuat.

Membersihkan sumber daya

Jika Anda ingin menerapkan proyek klasifikasi gambar Anda sendiri (atau mencoba proyek deteksi objek), hapus proyek identifikasi pohon dari contoh ini. Langganan gratis memungkinkan untuk dua proyek Custom Vision.

Di situs web Custom Vision, navigasi ke Proyek dan pilih tempat sampah di bawah Proyek Baru Saya.

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

Langkah berikutnya

Sekarang Anda telah melihat bagaimana setiap langkah proses klasifikasi gambar dapat dilakukan dalam kode. Sampel ini menjalankan perulangan pelatihan tunggal, tetapi sering kali Anda harus melatih dan menguji model Anda beberapa kali untuk membuatnya lebih akurat.

Mulailah dengan Custom Vision REST API. Ikuti langkah-langkah ini untuk memanggil API dan membangun model klasifikasi gambar. Anda akan membuat proyek, menambahkan tag, melatih proyek, dan menggunakan URL titik akhir prediksi proyek untuk mengujinya secara terprogram. Gunakan contoh ini sebagai templat untuk membuat aplikasi pengenalan gambar Anda sendiri.

Catatan

Visi Kustom paling mudah digunakan melalui SDK pustaka klien atau melalui panduan berbasis browser.

Gunakan pustaka klien Custom Vision untuk .NET untuk:

  • Membuat proyek Custom Vision baru
  • Menambahkan tag ke proyek
  • Mengunggah dan menandai gambar
  • Melatih proyek
  • Menerbitkan perulangan saat ini
  • Menguji titik akhir prediksi

Prasyarat

  • Langganan Azure - Buat langganan secara gratis
  • Setelah Anda memiliki langganan Azure, buat sumber daya Custom Vision di portal Azure untuk membuat sumber daya pelatihan dan prediksi dan mendapatkan kunci dan titik akhir Anda. Tunggu hingga itu menyebar dan klik tombol Buka sumber daya.
    • Anda akan memerlukan kunci dan titik akhir dari sumber daya yang Anda buat untuk menghubungkan aplikasi Anda ke Custom Vision. Anda akan menempelkan kunci dan titik akhir ke dalam kode di bawah ini di mulai cepat.
    • Anda dapat menggunakan tingkat harga gratis (F0) untuk percobaan, lalu meningkatkannya ke tingkat berbayar untuk produksi.
  • PowerShell versi 6.0+, atau aplikasi baris perintah serupa.

Membuat proyek Custom Vision baru

Anda akan menggunakan perintah seperti berikut ini untuk membuat proyek klasifikasi gambar. Proyek yang dibuat akan muncul di situs web Custom Vision.

curl -v -X POST -H "Training-key: {subscription key}" "https://{endpoint}/customvision/v3.3/Training/projects?name={name}"

Salin perintah ke editor teks dan buat perubahan berikut:

  • Ganti {subscription key} dengan kunci langganan Wajah yang valid.
  • Ganti {endpoint} dengan titik akhir yang sesuai dengan kunci Anda.

    Catatan

    Sumber daya baru yang dibuat setelah 1 Juli 2019, akan menggunakan nama subdomain kustom. Untuk informasi selengkapnya dan daftar lengkap titik akhir regional, lihat Nama subdomain kustom untuk layanan Azure AI.

  • Ganti {name} dengan nama proyek Anda.
  • Secara opsional atur parameter URL lain untuk mengonfigurasi jenis model apa yang akan digunakan proyek Anda. Lihat CreatProject API untuk opsi.

Anda akan menerima respons JSON seperti berikut ini. Simpan "id" nilai proyek Anda ke lokasi sementara.

{
  "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"
}

Menambahkan tag ke proyek

Gunakan perintah berikut untuk menentukan tag yang akan Anda latih modelnya.

curl -v -X POST -H "Training-key: {subscription key}" "https://{endpoint}/customvision/v3.3/Training/projects/{projectId}/tags?name={name}"
  • Sekali lagi, masukkan URL kunci dan titik akhir Anda sendiri.
  • Ganti {projectId} dengan ID proyek Anda sendiri.
  • Ganti {name} dengan nama tag yang ingin Anda gunakan.

Ulangi proses ini untuk semua tag yang ingin Anda gunakan dalam proyek Anda. Jika Anda menggunakan contoh gambar yang disediakan, tambahkan tag "Hemlock" dan "Japanese Cherry".

Anda akan menerima respons JSON seperti berikut ini. Simpan "id" nilai setiap tag ke lokasi sementara.

{
  "id": "00000000-0000-0000-0000-000000000000",
  "name": "string",
  "description": "string",
  "type": "Regular",
  "imageCount": 0
}

Mengunggah dan menandai gambar

Pertama, unduh gambar sampel untuk proyek ini. Simpan konten folder gambar sampel ke perangkat lokal Anda.

Gunakan perintah berikut untuk mengunggah gambar dan menerapkan tag; sekali untuk gambar "Hemlock", dan secara terpisah untuk gambar "Cherry Jepang". Lihat Buat Gambar Dari API Data untuk opsi lainnya.

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}"
  • Sekali lagi, masukkan URL kunci dan titik akhir Anda sendiri.
  • Ganti {projectId} dengan ID proyek Anda sendiri.
  • Ganti {tagArray} dengan ID tag.
  • Kemudian, isi permintaan dengan data biner gambar yang ingin Anda tandai.

Melatih proyek

Metode ini melatih model pada gambar yang ditandai yang telah Anda unggah dan mengembalikan ID untuk iterasi proyek saat ini.

curl -v -X POST -H "Content-Type: application/json" -H "Training-key: {subscription key}" "https://{endpoint}/customvision/v3.3/Training/projects/{projectId}/train"
  • Sekali lagi, masukkan URL kunci dan titik akhir Anda sendiri.
  • Ganti {projectId} dengan ID proyek Anda sendiri.
  • Ganti {tagArray} dengan ID tag.
  • Kemudian, isi permintaan dengan data biner gambar yang ingin Anda tandai.
  • Secara opsional gunakan parameter URL lainnya. Lihat APILatih Proyek API untuk opsi.

Tip

Berlatih dengan tag yang dipilih

Secara opsional, Anda dapat berlatih hanya dengan subkumpulan tag yang Anda terapkan. Anda mungkin ingin melakukannya jika belum cukup menerapkan tag tertentu, tetapi Anda memiliki cukup banyak tag lain. Tambahkan konten JSON opsional ke isi permintaan Anda. Isi "selectedTags" array dengan ID tag yang ingin Anda gunakan.

{
  "selectedTags": [
    "00000000-0000-0000-0000-000000000000"
  ]
}

Respons JSON berisi informasi tentang proyek terlatih Anda, termasuk ID iterasi ("id"). Simpan nilai ini untuk langkah berikutnya.

{
  "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"
}

Menerbitkan perulangan saat ini

Metode ini membuat perulangan model saat ini tersedia untuk kueri. Anda dapat menggunakan nama model sebagai referensi untuk mengirim permintaan prediksi.

curl -v -X POST -H "Training-key: {subscription key}" "https://{endpoint}/customvision/v3.3/Training/projects/{projectId}/iterations/{iterationId}/publish?publishName={publishName}&predictionId={predictionId}"
  • Sekali lagi, masukkan URL kunci dan titik akhir Anda sendiri.
  • Ganti {projectId} dengan ID proyek Anda sendiri.
  • Ganti {iterationId} dengan ID yang dikembalikan di langkah sebelumnya.
  • Ganti {publishedName} dengan nama yang ingin Anda tetapkan ke model prediksi Anda.
  • Ganti {predictionId} dengan ID sumber daya prediksi Anda sendiri. Anda dapat menemukan ID sumber daya prediksi pada tab Properti sumber daya di portal Azure, yang tercantum sebagai ID Sumber Daya.
  • Secara opsional gunakan parameter URL lainnya. Lihat Terbitkan perulangan API.

Menguji titik akhir prediksi

Terakhir, gunakan perintah ini untuk menguji model terlatih Anda dengan mengunggah gambar baru untuk diklasifikasikan dengan tag. Anda dapat menggunakan gambar di folder "Uji" dari file sampel yang Anda unduh sebelumnya.

curl -v -X POST -H "Training-key: {subscription key}" "https://{endpoint}/customvision/v3.3/Training/projects/{projectId}/iterations/{iterationId}/publish?publishName={publishName}&predictionId={predictionId}"
  • Sekali lagi, masukkan URL kunci dan titik akhir Anda sendiri.
  • Ganti {projectId} dengan ID proyek Anda sendiri.
  • Ganti {publishedName} dengan nama yang Anda gunakan di langkah sebelumnya.
  • Tambahkan data biner gambar lokal Anda ke body permintaan.
  • Secara opsional gunakan parameter URL lainnya. Lihat Klasifikasikan API Gambar.

Respons JSON yang dikembalikan akan mencantumkan setiap tag yang diterapkan model pada gambar Anda, bersama dengan skor probabilitas untuk setiap tag.

{
  "id": "00000000-0000-0000-0000-000000000000",
  "project": "00000000-0000-0000-0000-000000000000",
  "iteration": "00000000-0000-0000-0000-000000000000",
  "created": "string",
  "predictions": [
    {
      "probability": 0.0,
      "tagId": "00000000-0000-0000-0000-000000000000",
      "tagName": "string",
      "boundingBox": {
        "left": 0.0,
        "top": 0.0,
        "width": 0.0,
        "height": 0.0
      },
      "tagType": "Regular"
    }
  ]
}

Jika Anda ingin menerapkan proyek klasifikasi gambar Anda sendiri (atau mencoba proyek deteksi objek), hapus proyek identifikasi pohon dari contoh ini. Langganan gratis memungkinkan untuk dua proyek Custom Vision.

Di situs web Custom Vision, navigasi ke Proyek dan pilih tempat sampah di bawah Proyek Baru Saya.

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

Langkah berikutnya

Kini Anda telah menyelesaikan setiap langkah proses klasifikasi gambar menggunakan REST API. Sampel ini menjalankan perulangan pelatihan tunggal, tetapi sering kali Anda harus melatih dan menguji model Anda beberapa kali untuk membuatnya lebih akurat.