Membuat model deteksi objek dengan cara yang efisien – Menuju AI — Teknologi, Sains, dan Teknik Terbaik

Pengarang: Michelangiolo Mazzeschi

Visi Komputer

Panduan mendalam tentang cara membuat model deteksi objek catur. Data pelatihan tersedia di repo saya.

Antarmuka tanpa kode merevolusi cara engineer ML mengerjakan tugas tersulit yang ditawarkan oleh teknologi Machine Learning. Salah satu tugas pengkodean terberat yang pernah saya temui adalah pengkodean struktur yang diperlukan untuk memecahkan masalah visi komputer, seperti klasifikasi atau deteksi objek. Antarmuka yang akan saya gunakan untuk melakukan eksperimen pendeteksian objek di seluruh artikel ini disebut Datature (tersedia di tautan ini).

Kencan spanduk

Pada artikel ini, saya akan menggunakan kumpulan gambar papan catur yang telah diberi label sebelumnya untuk membuat model deteksi objek saya. Setiap bidak catur pada gambar telah diberi label yang sesuai.

Deteksi objek

Deteksi objek adalah salah satu tugas yang mungkin dari visi komputer. Model deteksi objek dapat menemukan objek dalam gambar dan kemudian memberi mereka label yang benar. Namun, ini adalah salah satu solusi tersulit untuk dibuat dengan menggunakan kode, apa pun pustaka yang kami gunakan.

Hard-coding solusinya

Masalah pertama dalam hard-coding solusi ini adalah bahwa kode itu sendiri cukup sulit, terutama tahap pra-pemrosesan untuk gambar. Gambar harus diimpor dalam bentuk yang benar, kemudian diproses sebelumnya dan ditambah, dan akhirnya dimasukkan ke dalam model jaringan saraf untuk pelatihan. Dibutuhkan berjam-jam untuk menyiapkan jaringan saraf convolutional, model yang digunakan untuk tugas visi komputer, untuk tugas tertentu.

Masalah yang paling membuat frustrasi dalam menggunakan model terbaru dan lebih canggih untuk deteksi gambar adalah bahwa ada begitu banyak hal yang bisa salah. Saya ingat bahwa pertama kali saya menggunakan ResNet untuk deteksi objek, saya tidak dapat menginstal versi perpustakaan kereta sebelumnya karena bertentangan dengan versi TensorFlow terbaru.

Masalah terbaru dalam menggunakan kode untuk visi komputer adalah persyaratan dalam daya komputasi. Sederhananya, versi notebook gratis atau komputer Anda sendiri (bahkan dengan GPU yang sangat kuat) tidak memiliki daya komputasi yang cukup untuk melatih model deteksi objek yang menantang (dengan set pelatihan 200 gambar) dalam satu hari. Ini menjadikannya mimpi buruk, dan satu-satunya solusi yang Anda inginkan adalah menggunakan mesin virtual.

Perhubungan

Dalam mencari alternatif untuk menjalankan algoritma deteksi objek saya sendiri, saya menemukan nexus. Platform tanpa kode yang memungkinkan Anda mengatur algoritme visi komputer dengan mudah. Platform telah dibuat untuk diintegrasikan dengan proses MLOps Anda, oleh karena itu, setelah model Anda dilatih, model tersebut dapat diekspor sebagai artefak untuk diterapkan menggunakan layanan penampung seperti Kubernetes.

Sebagaimana diuraikan dalam masalah dengan menggunakan hard-coding untuk solusi visi komputer, platform ini memungkinkan personalisasi tingkat besar untuk algoritme Anda, termasuk beberapa opsi untuk prapemrosesan, dan memberi Anda juga daya komputasi yang diperlukan untuk beban kerja intensif.

Tingkat gratis memberi Anda daya komputasi gratis selama 500 menit, yang cukup untuk menjalankan beberapa model, terutama jika Anda ingin bereksperimen dengan deteksi objek. Model saya yang berisi 230 gambar membutuhkan waktu 14 menit untuk dilatih.

MLOps: Buat atau Hancurkan tim ML Anda

MLOps adalah alur kerja yang telah diadopsi oleh industri untuk pembuatan dan pengembangan model Pembelajaran Mesin. Keuntungan menggunakan platform untuk mengikuti proses ini adalah kita dapat dengan mudah membuat pipeline yang terintegrasi dengan alat Cloud lainnya dan cukup fleksibel untuk mempertahankan perubahan cepat di masa mendatang. Ini mungkin tidak terdengar penting saat Anda menangani model sendirian, tetapi bayangkan bekerja dengan beberapa model di beberapa tim — masing-masing dengan “praktik terbaik” mereka sendiri. Saat itulah keadaan menjadi kacau.

Adaptasi siklus MLOps yang sangat umum diadopsi disebut CD4ML (pengiriman berkelanjutan untuk Machine Learning), sebuah kerangka kerja yang memiliki tujuan untuk memaksimalkan efisiensi MLOps.

Proses MLOps mengikuti CD4ML

Ini setara dengan pipeline CD4ML yang menggunakan Platform Nexus.

Membuat model deteksi objek

Sekarang saya akan memberi Anda petunjuk yang diperlukan untuk membangun model deteksi objek Anda sendiri menggunakan Platform Nexus.

Membuat GIF proyek baru

Manajemen proyek

Setelah Anda masuk ke Nexus, Anda akan dapat membuat proyek pertama Anda. Platform ini memungkinkan Anda untuk memiliki beberapa proyek yang mungkin berguna jika Anda mengelola banyak kumpulan data yang berbeda dan memiliki anggota tim tertentu yang mengerjakannya (ini juga merupakan cara yang baik untuk bereksperimen dengan parameter yang berbeda saat Anda melatih model).

Tangkapan layar platform Nexus

File

Dalam repo saya, Anda akan menemukan folder dengan semua file yang telah saya gunakan untuk percobaan ini:

Mengunggah gambar

Proses mengunggah gambar ke platform cukup mudah. Dalam kasus saya, saya akan memilih 231 gambar yang terdapat dalam folder pelatihan. Seluruh proses mungkin memerlukan beberapa menit untuk diselesaikan. Platform akan memungkinkan saya untuk membagi set gambar menjadi set pelatihan dan pengujian dengan proporsi terpisah pilihan saya (secara default adalah .3 untuk set pengujian).

Mengunggah antarmuka gambar

Mengunggah label

Sejauh ini, saya dapat mengunggah gambar di platform, tetapi saya belum memberi label. Jika gambar tetap tidak berlabel, tidak mungkin melatih algoritme pembelajaran yang diawasi, karena keduanya memerlukan fitur dan label untuk berjalan dengan sukses.

Unggah antarmuka anotasi

Untuk kumpulan data ini, label akan disimpan dalam file CSV yang berisi nama gambar yang sesuai. Ini adalah format umum untuk pemrosesan gambar, platform, pada kenyataannya, akan memungkinkan Anda untuk mengimpor label dari beberapa topeng objek yang masing-masing menunjukkan bidak catur, dan juga dapat diekspor jika diperlukan.

Setelah label diimpor, kami memiliki disposisi kami Analisis Data Eksplorasi sederhana (operasi penghitungan nilai) yang memberi kami wawasan tentang distribusi label dalam kumpulan data. Kita dapat melihat bahwa hanya 2 gambar yang tidak mengandung label apa pun, maka kita akan melanjutkan dan memberi label pada mereka.

EDA dari proses pelabelan

Jika kita ingin memvalidasi model pada data yang belum pernah dilihat sebelumnya, berhati-hatilah dalam mengunggah set validasi, karena platform tidak akan membedakan gambar pelatihan Anda (validasi model dilakukan di Portal, yang saya tulis di bawah) .

Annotator bawaan

Jika kita ingin menjelajahi setiap gambar secara detail, bagian annotator memungkinkan kita untuk memeriksa semua label yang relevan di setiap gambar dan mengubah label jika diperlukan. Mereka memiliki berbagai alat tetapi karena saya hanya melatih model deteksi objek, kotak pembatas akan berfungsi.

Tangkapan layar dari annotator platform
GIF dari annotator platform manual

Melatih model

Fase pelatihan inilah yang membuat platform ini menarik. Seperti yang ditentukan, jumlah upaya yang diperlukan untuk menyiapkan seluruh proses pelatihan adalah minimal. Ini akan menghemat dari 1 hingga 5 jam (terutama jika ini pertama kalinya Anda mengkode CNN yang kompleks) pekerjaan. Platform merampingkan proses pembuatan model dengan menghapus kode kompleks hanya dalam hitungan klik sambil tetap memberi Anda fleksibilitas dalam memilih metode pra-pemrosesan dan augmentasi.

Ada banyak sekali metode pra-pemrosesan yang dapat Anda pilih. Biasanya, proses augmentasi gambar diperlukan ketika dataset pelatihan cukup kecil, atau memiliki sedikit varians. Tujuannya adalah untuk membuat model Anda lebih fleksibel terhadap kemungkinan variasi yang ditemukan dalam gambar dunia nyata.

GIF dari pembuatan alur kerja
Tangkapan layar alur kerja pelatihan lengkap

Dalam kasus saya, saya akan memilih teknik augmentasi data sederhana, menetapkan probabilitas 0,5 untuk setiap gambar untuk flip vertikal yang dapat dipratinjau. Augmentasi ini kemudian dilakukan dengan cepat saat model berlatih.

pratinjau augmentasi

Setelah alur kerja saya diatur dengan benar, saya akan dapat melihat pratinjau augmentasi saya dan memilih hyperparameter yang diperlukan seperti jumlah epoch/ukuran batch dan bahkan strategi pos pemeriksaan (saya memilih kehilangan validasi terendah untuk model ini).

Memulai pelatihan

Setelah pemeriksaan cepat parameter, saya akan memulai pelatihan. Perhatikan bahwa saat menggunakan kode, kecuali Anda dapat menghubungkannya ke mesin virtual yang ada, Anda harus menunggu hingga 24 jam agar model deteksi objek dilatih dengan benar. Platform ini memungkinkan saya untuk melatihnya dalam waktu kurang dari 15 menit, menggunakan GPU-nya.

Kinerja Model

Total kerugian atas jumlah zaman

Seperti yang dapat kita lihat dari fungsinya, tampak bahwa akurasi model terus meningkat perlahan seiring dengan jumlah epoch. 1000 Epoch tampaknya merupakan angka yang sangat masuk akal, mengingat, sebagai perbandingan, hilangnya model di atas Epoch 400 hampir terpotong setengahnya.

Klasifikasi dan Lokalisasi Rugi

Kami selalu dapat mengakses statistik tersebut melalui model terlatih kami, yang sekarang muncul di bagian khusus untuk referensi mudah di seluruh anggota tim.

Mengekspor artefak

Setelah model dilatih dengan benar, apa yang ada di tangan saya disebut artefak. Model harus terintegrasi dalam pipeline yang membentuk seluruh proses MLOps sehingga dapat dengan mudah digunakan dalam produksi setelah validasi yang tepat. Misalnya, kita mungkin ingin menggunakan Kubernetes sebagai langkah selanjutnya dalam proses MLOps.

Tangkapan layar tentang cara membuat Model TensorFlow

Memvalidasi model

Menjelajahi gambar setelah validasi

Hal yang keren tentang Datature adalah tidak hanya berhenti pada pelatihan model, banyak tim berpikir bahwa pelatihan dan anotasi model adalah cerita lengkapnya, tetapi itu hanya setengahnya. Saya menggunakan platform sumber terbuka (Portal) untuk memvalidasi bagaimana model membuat prediksi.

Yang harus saya lakukan adalah memuat model dan gambar saya ke Portal dan model akan membuat kesimpulan berdasarkan posisi dan jenis bidak catur di papan. Dan di sana kita pergi! Kami baru saja melatih model Deteksi Catur dengan mulus.

Bagaimana dengan Segmentasi Instance?

Salah satu dari sedikit pemikiran yang saya miliki adalah bagaimana ini diterjemahkan ke dalam proyek segmentasi instan. Pertama, anotasi harus diperbarui secara individual sebagai segmentasi/poligon — tetapi ini adalah tugas yang sangat memakan waktu. Untungnya, saya adalah bagian dari Akses Awal IntelliBrush Datature dan mempermainkannya selama eksperimen saya.

Pratinjau IntelliBrush (annotator sekali klik)

Premis IntelliBrush adalah bahwa pengguna hanya perlu memilih wilayah yang “di dalam”, yaitu, mengklik tubuh manusia, atau hewan — dan poligon akan secara otomatis dibuat untuk mengikatnya. Lebih menarik lagi, pengguna juga dapat memilih wilayah yang “di luar” dari wilayah yang diinginkan untuk menyempurnakan pemilihan poligonal objek. Ini sangat membantu dalam memberi anotasi pada objek yang dikemas secara rapat, di mana objek yang berbeda cenderung tumpang tindih.

Jika Anda yakin bahwa IntelliBrush akan membantu alur kerja anotasi Anda, pertimbangkan untuk mencobanya!

Membuat model deteksi objek dengan cara yang disederhanakan awalnya diterbitkan di Towards AI on Medium, di mana orang-orang melanjutkan percakapan dengan menyoroti dan menanggapi cerita ini.

Diterbitkan melalui Menuju AI