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.
- Anda dapat menggunakan tingkat harga gratis (
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.
- Untuk mengatur
VISION_TRAINING KEY
variabel lingkungan, gantiyour-training-key
dengan salah satu kunci untuk sumber daya pelatihan Anda. - Untuk mengatur
VISION_TRAINING_ENDPOINT
variabel lingkungan, gantiyour-training-endpoint
dengan titik akhir untuk sumber daya pelatihan Anda. - Untuk mengatur
VISION_PREDICTION_KEY
variabel lingkungan, gantiyour-prediction-key
dengan salah satu kunci untuk sumber daya prediksi Anda. - Untuk mengatur
VISION_PREDICTION_ENDPOINT
variabel lingkungan, gantiyour-prediction-endpoint
dengan titik akhir untuk sumber daya prediksi Anda. - Untuk mengatur
VISION_PREDICTION_RESOURCE_ID
variabel lingkungan, gantiyour-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.
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.
- Apa itu Custom Vision?
- Kode sumber untuk sampel ini dapat ditemukan di GitHub
- Dokumentasi referensi SDK
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.
- Anda dapat menggunakan tingkat harga gratis (
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.
- Untuk mengatur
VISION_TRAINING KEY
variabel lingkungan, gantiyour-training-key
dengan salah satu kunci untuk sumber daya pelatihan Anda. - Untuk mengatur
VISION_TRAINING_ENDPOINT
variabel lingkungan, gantiyour-training-endpoint
dengan titik akhir untuk sumber daya pelatihan Anda. - Untuk mengatur
VISION_PREDICTION_KEY
variabel lingkungan, gantiyour-prediction-key
dengan salah satu kunci untuk sumber daya prediksi Anda. - Untuk mengatur
VISION_PREDICTION_ENDPOINT
variabel lingkungan, gantiyour-prediction-endpoint
dengan titik akhir untuk sumber daya prediksi Anda. - Untuk mengatur
VISION_PREDICTION_RESOURCE_ID
variabel lingkungan, gantiyour-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.
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
- Langganan Azure - buat langganan gratis
- Versi saat ini dari Java Development Kit (JDK)
- Alat build Gradle, atau manajer dependensi lainnya.
- 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.
- Anda dapat menggunakan tingkat harga gratis (
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.
- Untuk mengatur
VISION_TRAINING KEY
variabel lingkungan, gantiyour-training-key
dengan salah satu kunci untuk sumber daya pelatihan Anda. - Untuk mengatur
VISION_TRAINING_ENDPOINT
variabel lingkungan, gantiyour-training-endpoint
dengan titik akhir untuk sumber daya pelatihan Anda. - Untuk mengatur
VISION_PREDICTION_KEY
variabel lingkungan, gantiyour-prediction-key
dengan salah satu kunci untuk sumber daya prediksi Anda. - Untuk mengatur
VISION_PREDICTION_ENDPOINT
variabel lingkungan, gantiyour-prediction-endpoint
dengan titik akhir untuk sumber daya prediksi Anda. - Untuk mengatur
VISION_PREDICTION_RESOURCE_ID
variabel lingkungan, gantiyour-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:
- Autentikasi klien
- Membuat proyek Custom Vision baru
- Menambahkan tag ke proyek
- Mengunggah dan memberi tag pada gambar
- Melatih proyek
- Menerbitkan perulangan saat ini
- Menguji titik akhir prediksi
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.
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.
- Apa itu Custom Vision?
- Kode sumber untuk sampel ini dapat ditemukan di GitHub
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.
- Anda dapat menggunakan tingkat harga gratis (
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.
- Untuk mengatur
VISION_TRAINING KEY
variabel lingkungan, gantiyour-training-key
dengan salah satu kunci untuk sumber daya pelatihan Anda. - Untuk mengatur
VISION_TRAINING_ENDPOINT
variabel lingkungan, gantiyour-training-endpoint
dengan titik akhir untuk sumber daya pelatihan Anda. - Untuk mengatur
VISION_PREDICTION_KEY
variabel lingkungan, gantiyour-prediction-key
dengan salah satu kunci untuk sumber daya prediksi Anda. - Untuk mengatur
VISION_PREDICTION_ENDPOINT
variabel lingkungan, gantiyour-prediction-endpoint
dengan titik akhir untuk sumber daya prediksi Anda. - Untuk mengatur
VISION_PREDICTION_RESOURCE_ID
variabel lingkungan, gantiyour-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:
- Autentikasi klien
- Membuat proyek Custom Vision baru
- Menambahkan tag ke proyek
- Mengunggah dan memberi tag pada gambar
- Melatih proyek
- Menerbitkan perulangan saat ini
- Menguji titik akhir prediksi
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.
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.
- Apa itu Custom Vision?
- Kode sumber untuk sampel ini dapat ditemukan di GitHub
- Dokumentasi referensi SDK (pelatihan)
- Dokumentasi referensi SDK (prediksi)
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.
- Penginstalan Python Anda harus menyertakan pip. Anda dapat memeriksa apakah pip terinstal dengan menjalankan
- 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.
- Anda dapat menggunakan tingkat harga gratis (
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.
- Untuk mengatur
VISION_TRAINING KEY
variabel lingkungan, gantiyour-training-key
dengan salah satu kunci untuk sumber daya pelatihan Anda. - Untuk mengatur
VISION_TRAINING_ENDPOINT
variabel lingkungan, gantiyour-training-endpoint
dengan titik akhir untuk sumber daya pelatihan Anda. - Untuk mengatur
VISION_PREDICTION_KEY
variabel lingkungan, gantiyour-prediction-key
dengan salah satu kunci untuk sumber daya prediksi Anda. - Untuk mengatur
VISION_PREDICTION_ENDPOINT
variabel lingkungan, gantiyour-prediction-endpoint
dengan titik akhir untuk sumber daya prediksi Anda. - Untuk mengatur
VISION_PREDICTION_RESOURCE_ID
variabel lingkungan, gantiyour-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:
- Autentikasi klien
- Membuat proyek Custom Vision baru
- Menambahkan tag ke proyek
- Mengunggah dan memberi tag pada gambar
- Melatih proyek
- Menerbitkan perulangan saat ini
- Menguji titik akhir prediksi
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.
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.
- Apa itu Custom Vision?
- Kode sumber untuk sampel ini dapat ditemukan di GitHub
- Dokumentasi referensi SDK
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.
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.