Setelah melatih model, Deteksi Objek AutoML Vision menggunakan gambar dari set TEST untuk mengevaluasi kualitas dan akurasi model baru.
Deteksi Objek AutoML Vision menyediakan kumpulan metrik evaluasi gabungan (output proses evaluasi) yang menunjukkan performa model secara keseluruhan, serta metrik evaluasi untuk setiap label kategori yang menunjukkan performa model untuk label tersebut.
Ringkasan evaluasi
Input proses evaluasi
batas IoU : Intersection over Union, nilai yang digunakan dalam deteksi objek untuk mengukur tumpang-tindih antara kotak pembatas yang diprediksi dengan kotak pembatas yang sebenarnya untuk sebuah objek. Semakin dekat nilai kotak pembatas yang diprediksi dengan nilai kotak pembatas yang sebenarnya, semakin besar perpotongan dan semakin besar nilai IoU-nya.
Batas skor: Metrik output (di bawah) dihitung dengan asumsi bahwa model tidak pernah menampilkan prediksi dengan skor yang lebih rendah dari nilai ini.
Output proses evaluasi
AuPRC : Area di bawah kurva Presisi/Perolehan, juga disebut sebagai "presisi rata-rata". Umumnya antara 0,5 dan 1,0. Nilai yang lebih tinggi menunjukkan model yang lebih akurat.
Kurva batas keyakinan: menunjukkan bagaimana batas keyakinan yang berbeda akan memengaruhi tingkat presisi, perolehan, serta tingkat positif benar dan salah. Baca hubungan antara presisi dan perolehan.
Skor F1: Rata-rata harmonis dari presisi dan perolehan. F1 adalah metrik yang berguna jika Anda ingin menemukan keseimbangan antara presisi dan perolehan. F1 juga berguna ketika Anda memiliki distribusi kelas yang tidak merata dalam data pelatihan Anda.
Gunakan data ini untuk mengevaluasi kesiapan model Anda. Kebingungan yang tinggi, skor AUC yang rendah, atau skor presisi dan perolehan yang rendah dapat menunjukkan bahwa model Anda memerlukan data pelatihan tambahan atau memiliki label yang tidak konsisten. Skor AUC yang sangat tinggi serta presisi dan perolehan yang sempurna dapat menunjukkan bahwa data terlalu "mudah" dan mungkin tidak digeneralisasi dengan baik: AUC yang tinggi dapat mengindikasikan bahwa model tersebut dilatih pada data yang ideal sehingga tidak akan merepresentasikan inferensi di masa mendatang dengan baik.
Mengelola evaluasi model
Membuat daftar evaluasi model
Setelah melatih model, Anda dapat mencantumkan metrik evaluasi untuk model tersebut.
UI web
Buka Deteksi Objek AutoML Vision UI lalu klik tab Model (dengan ikon bohlam) di menu navigasi sebelah kiri untuk menampilkan model yang tersedia.
Untuk melihat model project yang berbeda, pilih project dari menu drop-down di kanan atas panel judul.
Klik baris untuk model yang ingin dievaluasi.
Jika perlu, klik tab Evaluasi tepat di bawah panel judul.
Jika pelatihan untuk model telah selesai, Deteksi Objek AutoML Vision akan menampilkan metrik evaluasinya.
Untuk melihat metrik untuk label tertentu, pilih nama label dari daftar label di bagian bawah halaman.
REST
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- project-id: Project ID GCP Anda.
- model-id: ID model Anda, dari
respons saat membuat model. ID adalah elemen terakhir dari nama model Anda.
Misalnya:
- nama model:
projects/project-id/locations/location-id/models/IOD4412217016962778756
- id model:
IOD4412217016962778756
- nama model:
Metode HTTP dan URL:
GET https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/models/MODEL_ID/modelEvaluations
Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:
curl
Jalankan perintah berikut:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: project-id" \
"https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/models/MODEL_ID/modelEvaluations"
PowerShell
Jalankan perintah berikut:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "project-id" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/models/MODEL_ID/modelEvaluations" | Select-Object -Expand Content
Anda akan menerima respons JSON yang mirip dengan contoh berikut. Kolom khusus deteksi objek utama
dicetak tebal dan jumlah entri boundingBoxMetricsEntries
yang bervariasi
ditampilkan agar lebih jelas:
{ "modelEvaluation": [ { "name": "projects/PROJECT_ID/locations/us-central1/models/MODEL_ID/modelEvaluations/MODEL_EVAL_ID", "annotationSpecId": "6342510834593300480", "createTime": "2019-07-26T22:28:56.890727Z", "evaluatedExampleCount": 18, "imageObjectDetectionEvaluationMetrics": { "evaluatedBoundingBoxCount": 96, "boundingBoxMetricsEntries": [ { "iouThreshold": 0.15, "meanAveragePrecision": 0.6317751, "confidenceMetricsEntries": [ { "confidenceThreshold": 0.101631254, "recall": 0.84375, "precision": 0.2555205, "f1Score": 0.3922518 }, { "confidenceThreshold": 0.10180253, "recall": 0.8333333, "precision": 0.25316456, "f1Score": 0.3883495 }, ... { "confidenceThreshold": 0.8791167, "recall": 0.020833334, "precision": 1, "f1Score": 0.040816326 }, { "confidenceThreshold": 0.8804436, "recall": 0.010416667, "precision": 1, "f1Score": 0.020618558 } ] }, { "iouThreshold": 0.8, "meanAveragePrecision": 0.15461995, "confidenceMetricsEntries": [ { "confidenceThreshold": 0.101631254, "recall": 0.22916667, "precision": 0.06940063, "f1Score": 0.10653753 }, ... { "confidenceThreshold": 0.8804436, "recall": 0.010416667, "precision": 1, "f1Score": 0.020618558 } ] }, { "iouThreshold": 0.4, "meanAveragePrecision": 0.56170964, "confidenceMetricsEntries": [ { "confidenceThreshold": 0.101631254, "recall": 0.7604167, "precision": 0.23028392, "f1Score": 0.3535109 }, ... { "confidenceThreshold": 0.8804436, "recall": 0.010416667, "precision": 1, "f1Score": 0.020618558 } ] }, ... ], "boundingBoxMeanAveragePrecision": 0.4306387 }, "displayName": "Tomato" }, { "name": "projects/PROJECT_ID/locations/us-central1/models/MODEL_ID/modelEvaluations/MODEL_EVAL_ID", "annotationSpecId": "1730824816165912576", "createTime": "2019-07-26T22:28:56.890727Z", "evaluatedExampleCount": 9, "imageObjectDetectionEvaluationMetrics": { "evaluatedBoundingBoxCount": 51, "boundingBoxMetricsEntries": [ { ... } ], "boundingBoxMeanAveragePrecision": 0.29565892 }, "displayName": "Cheese" }, { "name": "projects/PROJECT_ID/locations/us-central1/models/MODEL_ID/modelEvaluations/MODEL_EVAL_ID", "annotationSpecId": "7495432339200147456", "createTime": "2019-07-26T22:28:56.890727Z", "evaluatedExampleCount": 4, "imageObjectDetectionEvaluationMetrics": { "evaluatedBoundingBoxCount": 22, "boundingBoxMetricsEntries": [ { "iouThreshold": 0.2, "meanAveragePrecision": 0.104004614, "confidenceMetricsEntries": [ { "confidenceThreshold": 0.1008248, "recall": 0.36363637, "precision": 0.08888889, "f1Score": 0.14285715 }, ... { "confidenceThreshold": 0.47585258, "recall": 0.045454547, "precision": 1, "f1Score": 0.08695653 } ] }, ... ], "boundingBoxMeanAveragePrecision": 0.057070773 }, "displayName": "Seafood" } ] }
Go
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan untuk bahasa ini di halaman Library Klien.
Java
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan untuk bahasa ini di halaman Library Klien.
Node.js
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan untuk bahasa ini di halaman Library Klien.
Python
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan untuk bahasa ini di halaman Library Klien.
Bahasa tambahan
C# : Ikuti Petunjuk penyiapan C# di halaman library klien, lalu kunjungi Dokumentasi referensi Deteksi Objek Vision AutoML untuk .NET.
PHP : Ikuti petunjuk penyiapan PHP di halaman library klien, lalu kunjungi dokumentasi referensi Deteksi Objek AutoML Vision untuk PHP.
Ruby : Ikuti petunjuk penyiapan Ruby di halaman library klien, lalu kunjungi dokumentasi referensi Deteksi Objek AutoML Vision untuk Ruby.
Mendapatkan evaluasi model
Anda juga dapat mendapatkan evaluasi model tertentu untuk label (displayName
) menggunakan
ID evaluasi.
UI Web
Dalam Deteksi Objek AutoML Vision UI, operasi yang setara tersedia dengan membuka halaman Model, lalu memilih model Anda. Setelah memilih model, buka tab Evaluasi, lalu pilih label untuk melihat evaluasi khusus label.
REST
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- project-id: Project ID GCP Anda.
- model-id: ID model Anda, dari
respons saat membuat model. ID adalah elemen terakhir dari nama model Anda.
Misalnya:
- nama model:
projects/project-id/locations/location-id/models/IOD4412217016962778756
- id model:
IOD4412217016962778756
- nama model:
- model-evaluation-id: nilai ID evaluasi
dari model. Anda dapat mendapatkan ID evaluasi model dari operasi evaluasi model
list
.
Metode HTTP dan URL:
GET https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/models/MODEL_ID/modelEvaluations/MODEL_EVALUATION_ID
Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:
curl
Jalankan perintah berikut:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: project-id" \
"https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/models/MODEL_ID/modelEvaluations/MODEL_EVALUATION_ID"
PowerShell
Jalankan perintah berikut:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "project-id" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/models/MODEL_ID/modelEvaluations/MODEL_EVALUATION_ID" | Select-Object -Expand Content
Anda akan menerima respons JSON yang mirip dengan contoh berikut. Kolom khusus deteksi objek utama
dicetak tebal dan versi entri boundingBoxMetricsEntries
yang disingkat ditampilkan
agar lebih jelas:
{ "name": "projects/PROJECT_ID/locations/us- central1/models/MODEL_ID/modelEvaluations/MODEL-EVALUATION- ID", "annotationSpecId": "6342510834593300480", "createTime": "2019-07-26T22:28:56.890727Z", "evaluatedExampleCount": 18, "imageObjectDetectionEvaluationMetrics": { "evaluatedBoundingBoxCount": 96, "boundingBoxMetricsEntries": [ { "iouThreshold": 0.15, "meanAveragePrecision": 0.6317751, "confidenceMetricsEntries": [ { "confidenceThreshold": 0.101631254, "recall": 0.84375, "precision": 0.2555205, "f1Score": 0.3922518 }, ... { "confidenceThreshold": 0.8804436, "recall": 0.010416667, "precision": 1, "f1Score": 0.020618558 } ] }, { "iouThreshold": 0.8, "meanAveragePrecision": 0.15461995, "confidenceMetricsEntries": [ { "confidenceThreshold": 0.101631254, "recall": 0.22916667, "precision": 0.06940063, "f1Score": 0.10653753 }, ... { "confidenceThreshold": 0.8804436, "recall": 0.010416667, "precision": 1, "f1Score": 0.020618558 } ] }, { "iouThreshold": 0.4, "meanAveragePrecision": 0.56170964, "confidenceMetricsEntries": [ { "confidenceThreshold": 0.101631254, "recall": 0.7604167, "precision": 0.23028392, "f1Score": 0.3535109 }, ... { "confidenceThreshold": 0.8804436, "recall": 0.010416667, "precision": 1, "f1Score": 0.020618558 } ] }, ... ], "boundingBoxMeanAveragePrecision": 0.4306387 }, "displayName": "Tomato" }
Go
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan untuk bahasa ini di halaman Library Klien.
Java
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan untuk bahasa ini di halaman Library Klien.
Node.js
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan untuk bahasa ini di halaman Library Klien.
Python
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan untuk bahasa ini di halaman Library Klien.
Bahasa tambahan
C# : Ikuti Petunjuk penyiapan C# di halaman library klien, lalu kunjungi Dokumentasi referensi Deteksi Objek Vision AutoML untuk .NET.
PHP : Ikuti petunjuk penyiapan PHP di halaman library klien, lalu kunjungi dokumentasi referensi Deteksi Objek AutoML Vision untuk PHP.
Ruby : Ikuti petunjuk penyiapan Ruby di halaman library klien, lalu kunjungi dokumentasi referensi Deteksi Objek AutoML Vision untuk Ruby.
Positif Benar, Negatif Palsu, dan Positif Palsu (khusus UI)
Di antarmuka pengguna, Anda dapat mengamati contoh spesifik performa model yaitu instance positif benar (TP), negatif palsu (FN), dan positif palsu (FP) dari set TRAINING dan VALIDATION Anda.
UI web
Anda dapat mengakses tampilan TP, FN, dan FP di UI dengan memilih tab Evaluasi, lalu memilih label tertentu.
Dengan melihat tren dalam prediksi ini, Anda dapat mengubah set pelatihan untuk meningkatkan performa model.
Gambar positif benar adalah kotak validasi yang disediakan untuk model terlatih yang dianotasikan dengan benar oleh model:
Gambar negatif palsu juga diberikan kepada model terlatih, tetapi model gagal untuk memberi anotasi pada instance objek dengan benar:
Terakhir, gambar positif palsu adalah gambar yang diberikan kepada model terlatih yang memberi anotasi pada instance objek yang tidak diberi anotasi di area yang ditentukan:
Model ini memilih corner case yang menarik yang memberikan peluang untuk mempertajam definisi dan label Anda guna membantu model memahami interpretasi label Anda. Misalnya, definisi yang lebih ketat akan membantu model memahami apakah Anda menganggap paprika isi sebagai "salad" (atau tidak). Dengan label berulang, melatih, dan mengevaluasi loop, model Anda akan memunculkan ambiguitas lain dalam data Anda.
Anda juga dapat menyesuaikan batas skor pada tampilan ini di antarmuka pengguna, dan gambar TP, FN, dan FP yang ditampilkan akan mencerminkan perubahan batas:
Menafsirkan metrik evaluasi
Model deteksi objek menghasilkan banyak kotak pembatas untuk gambar input; setiap kotak dilengkapi dengan 1) label dan 2) skor atau keyakinan. Metrik evaluasi akan membantu Anda menjawab beberapa pertanyaan performa utama tentang model Anda:
- Apakah saya mendapatkan jumlah kotak yang tepat?
- Apakah model tersebut cenderung memberikan skor yang lebih rendah pada kasus-kasus marginal?
- Seberapa dekat kotak yang diprediksi cocok dengan kotak kebenaran nyata saya?
Perlu diperhatikan bahwa metrik ini, seperti metrik dalam klasifikasi multi-label, tidak akan menunjukkan kebingungan kelas selain skor yang lebih rendah secara umum.
Saat memeriksa output model per gambar, Anda memerlukan cara untuk memeriksa sepasang kotak (kotak kebenaran nyata dan kotak yang diprediksi), serta menentukan seberapa baik kecocokan antara keduanya. Anda harus mempertimbangkan hal-hal berikut:
- Apakah kedua kotak memiliki label yang sama?
- Seberapa baik kotak-kotak tersebut saling tumpang tindih?, dan
- Seberapa yakin model dapat memprediksi kotak tersebut?
Untuk mengatasi persyaratan kedua, kami memperkenalkan pengukuran baru yang disebut intersection-over-union, atau IoU.
IoU dan Batas IoU
Intersection over union menentukan seberapa erat kecocokan dua kotak. Nilai IoU berkisar dari 0 (tidak ada tumpang-tindih) hingga 1 (kotak-kotak identik) dan dihitung dengan membagi luas area yang sama di antara dua kotak dengan luas area yang tercakup dalam setidaknya salah satu kotak. Layanan AutoML memungkinkan Anda memeriksa performa model pada beberapa batas IoU.
Mengapa Anda perlu mengubah batas IoU?
Pertimbangkan kasus penggunaan untuk menghitung mobil di tempat parkir. Anda tidak perlu peduli apakah koordinat kotak sudah sangat akurat, cukup pastikan Anda memiliki jumlah kotak total yang tepat. Dalam kasus ini, batas IoU yang rendah sudah sesuai.
Sebagai alternatif, pertimbangkan untuk mencoba mengukur ukuran noda pada kain. Dalam hal ini, Anda memerlukan koordinat yang sangat tepat sehingga batas IoU yang jauh lebih tinggi sudah sesuai.
Perhatikan bahwa Anda tidak perlu melatih ulang model jika Anda berubah pikiran terkait batas yang tepat untuk kasus penggunaan Anda; Anda sudah memiliki akses ke metrik evaluasi pada berbagai batas IoU.
Skor dan Batas Skor
Serupa dengan model klasifikasi, output model deteksi objek (sekarang dalam kotak) dilengkapi dengan skor. Selain itu, seperti klasifikasi gambar, terdapat batas skor yang dapat Anda tentukan setelah pelatihan untuk menentukan kecocokan yang "baik". Dengan mengubah batas skor, Anda dapat menyesuaikan rasio positif palsu dan positif benar sesuai kebutuhan model tertentu. Pengguna yang menginginkan perolehan yang sangat tinggi biasanya akan menggunakan batas skor yang lebih rendah dalam pemrosesan output model mereka.
Melakukan Iterasi pada model Anda
Jika tidak puas dengan tingkat kualitasnya, Anda dapat kembali ke langkah-langkah sebelumnya untuk meningkatkan kualitasnya:
- Pertimbangkan untuk menambahkan lebih banyak gambar ke label kotak pembatas apa pun dengan kualitas rendah.
- Anda mungkin perlu menambahkan berbagai jenis gambar (misalnya sudut yang lebih lebar, resolusi yang lebih tinggi atau lebih rendah, sudut pandang yang berbeda).
- Pertimbangkan untuk menghapus label kotak pembatas jika Anda tidak memiliki cukup gambar pelatihan.
- Algoritma pelatihan kami tidak menggunakan nama label Anda. Jika Anda memiliki satu label yang bertuliskan "door" dan label lainnya yang bertuliskan "door_with_knob", algoritma tidak dapat mengetahui nuansa selain gambar yang Anda berikan.
- Tingkatkan data Anda dengan lebih banyak contoh positif dan negatif benar. Contoh yang sangat penting adalah contoh yang mendekati batas keputusan (misalnya kemungkinan akan menimbulkan kebingungan, tetapi masih diberi label dengan benar).
- Tentukan pembagian TRAIN, TEST, VALIDATE Anda sendiri. Alat ini secara acak menetapkan gambar, tetapi gambar yang hampir sama dapat berakhir di TRAIN dan VALIDATE yang dapat menyebabkan overfitting dan kemudian performa yang buruk pada set TEST.
Setelah membuat perubahan, latih dan evaluasi model baru hingga mencapai tingkat kualitas yang cukup tinggi.