Skip to content

Semi-Automatic Labelling

🤔 Why we need Semi-Automatic Labelling?

Tidak dapat kita pungkiri, proses anotasi data (citra/gambar) menjadi proses penting dalam development model AI. Tidak jarang proses ini memakan waktu dan biaya yang tidak sedikit, beberapa sumber juga mencatat proses ini bertanggung jawab terhadap 60-70% dari total proses development model AI.

Kita tahu model AI dalam inference tidak lain digunakan untuk menganotasi gambar di production. Kita juga dapat menggunakan model ini untuk meng-anotasi data untuk keperluan training. Ini adalah tujuan dari Semi-Automatic Labelling yaitu menggunakan model AI untuk meng-anotasi data training.

Tentu, model AI sendiri tidak sempurna untuk meng-anotasi data. Oleh karena itu, kita sebagai manusia dapat dilibatkan untuk kolaborasi. Dengan menggunakan model AI untuk anotasi awal, selanjutnya kita (manusia) hanya bertugas untuk mengoreksi anotasi tersebut. Skema ini dirasa akan mempercepat proses anotasi data, sehingga dapat mengurangi beban biaya dan waktu.

🗿 The Architecture

Gambar di bawah menampilkan arsitektur framework semi-automatic labelling yang penulis dan tim buat. Arsitektur ini bertumpu pada beberapa framework dan library seperti: Computer Vision Annotation Tools (CVAT), Nuclio, FiftyOne, Jupyter Notebook, GIT (GitHub, GitLab), Data Version Control (DVC) dan Streamlit.

architecture

💽 Dataset Upload

CVAT menyediakan fungsi dataset upload secara manual atau otomatis (menggunakan API). Mengacu pada gambar arsitektur, kita dapat menggunakan dua fitur tersebut. Fitur manual dapat diguankan jika user hendak mengupload data secara secara manual dari komputer local. Dilain sisi, fitur API dapat digunakan jika kita mendapat data otomatis dari production. API Swagger dari cvat dapat diakses disini.

🗃️ Model Registry

Model registry merupakan fitur yang penulis buat dengan tujuan agar user mempunyai registry model yang terpusat. Hal ini akan memudahkan proses deployment model ke CVAT (melalui Nuclio) nantinya. Dalam semua fitur yang dibuat, framework Streamlit digunakan sebagai user interface untuk mempermudah user menggunakan framework ini.

model-regisry

Model registry memanfaatkan Github Repository dan Cloud Storage (Azure, S3) masing-masing sebagai tempat menyimpan konfigurasi (source code) dan weights model. Untuk dapat menggunakan fitur ini, Github Repository dan Cloud Storage harus user inisiasi terlebih dahulu.

Saat user mengunggah weights model melalui streamlit, fungsi akan mengupload weights ke cloud storage dan tagging release pada github repo. Penulis menggunakan DVC untuk mencapai tujuan tersebut, dengan DVC penulis dapat dengan mudah melakukan versioning model di cloud storage dan github repo.

🌱 Model Deployment

Model deployment merupakan fitur untuk mendeploy model pada CVAT (melalui Nuclio). Model yang sudah dideploy dan running pada service Nuclio dapat digunakan oleh user untuk keperluan anotasi gambar menggunakan model AI.

model-deployment

Fitur model deployment akan memanfaatkan github repo dan cloud storage yang sudah dibuat oleh fitur model registry. Konfigurasi dan weights model akan digunakan untuk membuat model container pada service Nuclio. Model container yang telah dibuat akan digunakan oleh CVAT/user untuk proses anotasi gambar.

🔬 Dataset Quality Check

Dataset quality check merupakan fitur untuk mengukur tingkat keakuratan anotasi annotator baik yang menggunakan AI atau manual atau gabungan keduanya.

dataset-quality-check

Fitur dataset quality check mempunyai dua buah masukan, yaitu berupa: dataset ground-truth dan dataset predictions. Dataset ground-truth dijadikan sebagai dataset acuan dalam menilai keakuratan anotasi. Penulis menggunakan pustaka FiftyOne untuk evaluasi dataset predictions. Hasilnya penilaian adalah berupa metrik mAP atau metrik lainnya yang dapat disesuaikan sesuai task.

🏷️ Label Evaluator

Label evaluator merupakan fitur untuk mengevaluasi label deteksi dari hasil anotasi dataset. Label deteksi tidak jarang mengalami kekeliruan kelas ataupun ukurannya, sehingga fitur ini dibuat.

label-evalutor

Fitur label evaluator mempunyai masukan berupa dataset predictions. FiftyOne kembali digunakan untuk proses eksplorasi data, komputasi embeddings, dan komputasi uniqueness. User selanjutnya dapat menandai hasil deteksi yang keliru dengan label yang sesuai. Hasil label evaluator selanjutnya akan dikembalikan ke platform CVAT untuk proses anotasi ulang.

⚗️ Dataset Versioning

Dataset versioning merupakan fitur untuk membuat versi dari dataset. Dataset untuk keperluan pelatihan model AI harus senantiasa ditingkatkan kualitas dan kuantitasnya. Sehingga fitur ini akan diperlukan saat rollback ke dataset lama atau merging dataset baru dengan dataset lama.

label-evalutor

Dataset yang akan di versioning merupakan dataset final yang sudah lolos evaluasi. Dataset ini akan dikonversi dengan format yang ditentukan oleh user menggunakan FiftyOne. Selanjutnya, dataset dapat langsung diunggah ke cloud storage dan di-tagging pada dataset repository. Pada fungsi ini juga, diimengimplementasikan fungsi dataset merging. Fungsi ini dapat digunakan untuk menggabungkan satu atau lebih dataset yang mempunyai karakteristik yang sama.

⚠️ Note

Saya menyadari bahwa mungkin akan membingungkan dalam membaca page ini, oleh karena itu pada update setelahnya saya akan mencoba menambahkan gambar/video yang lebih baik. So, please be patien for the update.