Tutorial: Mendeteksi gambar berhenti masuk dengan Model Builder
Pelajari cara membuat model deteksi objek menggunakan ML.NET Model Builder dan Azure Machine Learning untuk mendeteksi dan menemukan gambar yang berhenti masuk.
Dalam tutorial ini, Anda akan mempelajari cara:
- Menyiapkan dan memahami data
- Membuat file konfigurasi Model Builder
- Pilih skenario
- Pilih lingkungan pelatihan
- Muat data
- Latih model
- Mengevaluasi model
- Menggunakan model untuk prediksi
Prasyarat
Untuk daftar prasyarat dan instruksi penginstalan, kunjungi panduan penginstalan Model Builder.
Gambaran umum deteksi objek Model Builder
Deteksi objek adalah masalah visi komputer. Meskipun terkait erat dengan klasifikasi gambar, deteksi objek melakukan klasifikasi gambar pada skala yang lebih terperinci. Deteksi objek menemukan dan mengategorikan entitas dalam gambar. Model deteksi objek umumnya dilatih menggunakan pembelajaran mendalam dan jaringan neural. Lihat Pembelajaran mendalam vs pembelajaran mesin untuk informasi selengkapnya.
Gunakan deteksi objek saat gambar berisi beberapa objek dari berbagai jenis.
Beberapa kasus penggunaan untuk deteksi objek meliputi:
- Mobil Self-Driving
- Robotika
- Deteksi wajah
- Keamanan Tempat Kerja
- Penghitungan Objek
- Pengenalan Aktivitas
Sampel ini membuat aplikasi konsol C# .NET Core yang mendeteksi gambar berhenti masuk menggunakan model pembelajaran mesin yang dibangun dengan Model Builder. Anda dapat menemukan kode sumber untuk tutorial ini di repositori GitHub dotnet/machinelearning-samples .
Menyiapkan dan memahami data
Himpunan data Stop Sign terdiri dari 50 gambar yang diunduh dari Unsplash, yang masing-masing berisi setidaknya satu tanda berhenti.
Membuat proyek VoTT baru
Unduh himpunan data 50 hentikan gambar tanda tangan dan unzip.
Unduh VoTT (Alat Penandaan Objek Visual).
Buka VoTT dan pilih Proyek Baru.
Di Pengaturan Proyek, ubah Nama Tampilan menjadi "StopSignObjDetection".
Ubah Token Keamanan untuk Menghasilkan Token Keamanan Baru.
Di samping Koneksi Sumber, pilih Tambahkan Koneksi.
Di Pengaturan Koneksi, ubah Nama Tampilan untuk koneksi sumber menjadi "StopSignImages", dan pilih Sistem File Lokal sebagai Penyedia. Untuk Jalur Folder, pilih folder Stop-Signs yang berisi 50 gambar pelatihan, lalu pilih Simpan Koneksi.
Di Pengaturan Proyek, ubah Koneksi Sumber menjadi StopSignImages (koneksi yang baru saja Anda buat).
Ubah Koneksi Target menjadi StopSignImages juga. Pengaturan Proyek Anda sekarang akan terlihat mirip dengan cuplikan layar ini:
Pilih Simpan Proyek.
Menambahkan tag dan gambar label
Sekarang Anda akan melihat jendela dengan gambar pratinjau semua gambar pelatihan di sebelah kiri, pratinjau gambar yang dipilih di tengah, dan kolom Tag di sebelah kanan. Layar ini adalah editor Tag.
Pilih ikon pertama (berbentuk plus) di toolbar Tag untuk menambahkan tag baru.
Beri nama tag "Stop-Sign" dan tekan Enter di keyboard Anda.
Klik dan seret untuk menggambar persegi panjang di sekitar setiap tanda berhenti dalam gambar. Jika kursor tidak memungkinkan Anda menggambar persegi panjang, coba pilih alat Gambar Persegi panjang dari toolbar di bagian atas, atau gunakan pintasan keyboard R.
Setelah menggambar persegi panjang Anda, pilih tag Stop-Sign yang Anda buat di langkah-langkah sebelumnya untuk menambahkan tag ke kotak pembatas.
Klik gambar pratinjau untuk gambar berikutnya dalam himpunan data dan ulangi proses ini.
Lanjutkan langkah 3-4 untuk setiap tanda berhenti di setiap gambar.
Mengekspor JSON VoTT Anda
Setelah memberi label semua gambar pelatihan, Anda dapat mengekspor file yang akan digunakan oleh Model Builder untuk pelatihan.
Pilih ikon keempat di toolbar kiri (ikon dengan panah diagonal dalam kotak) untuk masuk ke Pengaturan Ekspor.
Biarkan Penyedia sebagai VoTT JSON.
Ubah Status Aset menjadi Hanya Aset yang diberi tag.
Hapus centang Sertakan Gambar. Jika Anda menyertakan gambar, gambar pelatihan akan disalin ke folder ekspor yang dihasilkan, yang tidak diperlukan.
Pilih Simpan Pengaturan Ekspor.
Kembali ke editor Tag (ikon kedua di toolbar kiri berbentuk seperti pita). Di toolbar atas, pilih ikon Ekspor Proyek (ikon terakhir berbentuk seperti panah dalam kotak), atau gunakan pintasan keyboard Ctrl+E.
Ekspor ini akan membuat folder baru yang disebut vott-json-export di folder Stop-Sign-Images Anda dan akan menghasilkan file JSON bernama StopSignObjDetection-export di folder baru tersebut. Anda akan menggunakan file JSON ini di langkah berikutnya untuk melatih model deteksi objek di Model Builder.
Membuat aplikasi konsol
Di Visual Studio, buat aplikasi konsol C# .NET Core yang disebut StopSignDetection.
Membuat mbconfig
file
- Di Penjelajah Solusi, klik kanan proyek StopSignDetection, dan pilih Tambahkan>Model Pembelajaran Mesin... untuk membuka UI Pembangun Model.
- Dalam dialog, beri nama proyek Pembangun Model StopSignDetection, dan klik Tambahkan.
Memilih skenario
Untuk sampel ini, skenarionya adalah deteksi objek. Dalam langkah Skenario Pembuat Model, pilih skenario Deteksi Objek .
Jika Anda tidak melihat Deteksi Objek dalam daftar skenario, Anda mungkin perlu memperbarui versi Model Builder Anda.
Pilih lingkungan pelatihan
Saat ini, Model Builder mendukung model deteksi objek pelatihan hanya dengan Azure Machine Learning, sehingga lingkungan pelatihan Azure dipilih secara default.
Untuk melatih model menggunakan Azure ML, Anda harus membuat eksperimen Azure ML dari Model Builder.
Eksperimen Azure ML adalah sumber daya yang merangkum konfigurasi dan hasil untuk satu atau beberapa eksekusi pelatihan pembelajaran mesin.
Untuk membuat eksperimen Azure ML, Anda harus terlebih dahulu mengonfigurasi lingkungan Anda di Azure. Eksperimen memerlukan hal berikut untuk dijalankan:
- Langganan Azure
- Ruang kerja: sumber daya Azure ML yang menyediakan tempat terpusat untuk semua sumber daya dan artefak Azure ML yang dibuat sebagai bagian dari eksekusi pelatihan.
- Komputasi: komputasi Azure Machine Learning adalah VM Linux berbasis cloud yang digunakan untuk pelatihan. Pelajari selengkapnya tentang jenis komputasi yang didukung oleh Model Builder.
Menyiapkan ruang kerja Azure ML
Untuk mengonfigurasi lingkungan Anda:
Pilih tombol Siapkan ruang kerja .
Dalam dialog Buat eksperimen baru , pilih langganan Azure Anda.
Pilih ruang kerja yang sudah ada atau buat ruang kerja Azure ML baru.
Saat Anda membuat ruang kerja baru, sumber daya berikut disediakan:
- Ruang kerja Azure Machine Learning
- Azure Storage
- Azure Application Insights
- Azure Container Registry
- Azure Key Vault
Akibatnya, proses ini mungkin memakan waktu beberapa menit.
Pilih komputasi yang sudah ada atau buat komputasi Azure ML baru. Proses ini mungkin akan memakan waktu beberapa menit.
Biarkan nama eksperimen default dan pilih Buat.
Eksperimen pertama dibuat, dan nama eksperimen terdaftar di ruang kerja. Setiap eksekusi berikutnya (jika nama eksperimen yang sama digunakan ) dicatat sebagai bagian dari eksperimen yang sama. Jika tidak, eksperimen baru dibuat.
Jika Anda puas dengan konfigurasi Anda, pilih tombol Langkah berikutnya di Pembuat Model untuk berpindah ke langkah Data .
Muat data
Dalam langkah Data Pembuat Model, Anda akan memilih himpunan data pelatihan Anda.
Penting
Model Builder saat ini hanya menerima format JSON yang dihasilkan oleh VoTT.
Pilih tombol di dalam bagian Input dan gunakan File Explorer untuk menemukan
StopSignObjDetection-export.json
yang harus terletak di direktori Stop-Signs/vott-json-export.Jika data Anda terlihat benar di Pratinjau Data, pilih Langkah berikutnya untuk melanjutkan ke langkah Latih .
Latih model
Langkah selanjutnya adalah melatih model Anda.
Di layar Pelatihan Pembangun Model, pilih tombol Mulai pelatihan .
Pada titik ini, data Anda diunggah ke Azure Storage dan proses pelatihan dimulai di Azure ML.
Proses pelatihan membutuhkan waktu, dan jumlah waktu dapat bervariasi tergantung pada ukuran komputasi yang dipilih serta jumlah data. Pertama kali model dilatih di Azure, Anda dapat mengharapkan waktu pelatihan yang sedikit lebih lama karena sumber daya harus disediakan. Untuk sampel 50 gambar ini, pelatihan membutuhkan waktu sekitar 16 menit.
Anda dapat melacak kemajuan eksekusi Anda di portal Azure Machine Learning dengan memilih tautan Pantau eksekusi saat ini di portal Azure di Visual Studio.
Setelah pelatihan selesai, pilih tombol Langkah berikutnya untuk melanjutkan ke langkah Evaluasi .
Mengevaluasi model
Di layar Evaluasi, Anda mendapatkan gambaran umum hasil dari proses pelatihan, termasuk akurasi model.
Dalam hal ini, akurasi mengatakan 100%, yang berarti bahwa model lebih dari kemungkinan overfit karena terlalu sedikit gambar dalam himpunan data.
Anda dapat menggunakan pengalaman Coba model Anda untuk memeriksa dengan cepat apakah model Anda berfungsi seperti yang diharapkan.
Pilih Telusuri gambar dan berikan gambar pengujian, sebaiknya gambar yang tidak digunakan model sebagai bagian dari pelatihan.
Skor yang ditampilkan pada setiap kotak pembatas yang terdeteksi menunjukkan keyakinan objek yang terdeteksi. Misalnya, pada cuplikan layar di atas, skor pada kotak pembatas di sekitar tanda berhenti menunjukkan bahwa model 99% yakin bahwa objek yang terdeteksi adalah tanda berhenti.
Ambang skor, yang dapat ditingkatkan atau dikurangi dengan penggeser ambang batas, akan menambahkan dan menghapus objek yang terdeteksi berdasarkan skornya. Misalnya, jika ambang adalah .51, maka model hanya akan menampilkan objek yang memiliki skor keyakinan .51 atau lebih tinggi. Saat Anda meningkatkan ambang batas, Anda akan melihat objek yang kurang terdeteksi, dan saat Anda mengurangi ambang batas, Anda akan melihat objek yang lebih terdeteksi.
Jika Anda tidak puas dengan metrik akurasi Anda, salah satu cara mudah untuk mencoba meningkatkan akurasi model adalah dengan menggunakan lebih banyak data. Jika tidak, pilih tautan Langkah berikutnya untuk melanjutkan ke langkah Konsumsi di Pembuat Model.
(Opsional) Mengonsumsi model
Langkah ini akan memiliki templat proyek yang dapat Anda gunakan untuk menggunakan model. Langkah ini bersifat opsional dan Anda dapat memilih metode yang paling sesuai dengan kebutuhan Anda tentang cara melayani model.
- Aplikasi Konsol
- API Web
Aplikasi Konsol
Saat menambahkan aplikasi konsol ke solusi, Anda akan diminta untuk memberi nama proyek.
Beri nama proyek konsol StopSignDetection_Console.
Klik Tambahkan ke solusi untuk menambahkan proyek ke solusi Anda saat ini.
Jalankan aplikasi.
Output yang dihasilkan oleh program akan terlihat mirip dengan cuplikan di bawah ini:
Predicted Boxes: Top: 73.225296, Left: 256.89764, Right: 533.8884, Bottom: 484.24243, Label: stop-sign, Score: 0.9970765
API Web
Saat menambahkan API web ke solusi Anda, Anda akan diminta untuk memberi nama proyek.
Beri nama StopSignDetection_API proyek API Web.
Klik Tambahkan ke solusi untuk menambahkan proyek ke solusi Anda saat ini.
Jalankan aplikasi.
Buka PowerShell dan masukkan kode berikut di mana PORT adalah port yang didengarkan aplikasi Anda.
$body = @{ ImageSource = <Image location on your local machine> } Invoke-RestMethod "https://localhost:<PORT>/predict" -Method Post -Body ($body | ConvertTo-Json) -ContentType "application/json"
Jika berhasil, output akan terlihat mirip dengan teks di bawah ini.
boxes labels scores boundingBoxes ----- ------ ------ ------------- {339.97797, 154.43184, 472.6338, 245.0796} {1} {0.99273646} {}
- Kolom
boxes
memberikan koordinat kotak pembatas objek yang terdeteksi. Nilai di sini masing-masing milik koordinat kiri, atas, kanan, dan bawah. labels
adalah indeks dari label yang diprediksi. Dalam hal ini, nilai 1 adalah tanda berhenti.scores
mendefinisikan seberapa yakin model adalah bahwa kotak pembatas milik label tersebut.
Catatan
(Opsional) Koordinat kotak pembatas dinormalisasi untuk lebar 800 piksel dan tinggi 600 piksel. Untuk menskalakan koordinat kotak pembatas untuk gambar Anda dalam pasca-pemrosesan lebih lanjut, Anda perlu:
- Kalikan koordinat atas dan bawah dengan tinggi gambar asli, dan kalikan koordinat kiri dan kanan dengan lebar gambar asli.
- Bagi koordinat atas dan bawah dengan 600, dan bagi koordinat kiri dan kanan dengan 800.
Misalnya, mengingat dimensi gambar asli,
actualImageHeight
danactualImageWidth
, dan yangModelOutput
disebutprediction
, cuplikan kode berikut menunjukkan cara menskalakanBoundingBox
koordinat:var top = originalImageHeight * prediction.Top / 600; var bottom = originalImageHeight * prediction.Bottom / 600; var left = originalImageWidth * prediction.Left / 800; var right = originalImageWidth * prediction.Right / 800;
Gambar mungkin memiliki lebih dari satu kotak pembatas, sehingga proses yang sama perlu diterapkan ke setiap kotak pembatas dalam gambar.
- Kolom
Selamat! Anda berhasil membangun model pembelajaran mesin untuk mendeteksi berhenti masuk gambar menggunakan Model Builder. Anda dapat menemukan kode sumber untuk tutorial ini di repositori GitHub dotnet/machinelearning-samples .
Sumber Daya Tambahan:
Untuk mempelajari selengkapnya tentang topik yang disebutkan dalam tutorial ini, kunjungi sumber daya berikut: