Evaluation Metrics pada Computer Vision dari Klasifikasi hingga Deteksi Objek

Kristian Wilianto
Data Folks Indonesia
11 min readOct 22, 2021
https://ainewgeneration.com/classification-metrics-in-machine-learning/

“Precision? Recall? F1? AUC-ROC? Average Precision? Mean Average Precision? Apa sih itu semua dan gimana sih cara ngitungnya?” Mungkin pertanyaan tersebut sering kita pikirkan ketika sedang mengembangkan dan ingin mengukur performa model kita. Jadi semua itu dalam dunia Machine Learning dinamakan Evaluation Metrics atau biasa disebut Metrics saja.

Pada Machine Learning terutama di bidang Computer Vision, Metrics dapat diartikan sebagai sebuah nilai yang dapat digunakan untuk merepresentasikan performa model yang dihasilkan.

Mungkin beberapa dari kita ada yang bingung perbedaan dari metrics dengan loss karena keduanya sama-sama digunakan untuk mengukur performa model. Memang sekilas metrics dan loss cukup mirip tetapi sebenarnya kedua hal tersebut berbeda. Secara kasar, metrics datang dari perspektif bisnis, sedangkan loss adalah fungsi obyektif bahwa algoritma pembelajaran (pengoptimal) mencoba untuk meminimalkan dari perspektif matematika.

Sesuai dengan definisinya, metrics berfungsi dan memiliki manfaat untuk mengukur seberapa baik model yang sudah kita buat. Dengan metrics kita dapat menentukan apakah model tersebut sudah layak untuk dipublish atau belum, menentukan apakah model tersebut overfit atau tidak, bahkan dengan metrics kita juga dapat mengatasi permasalahan hasil model yang ditrain dengan data yang tidak seimbang (imbalanced data). Oleh karena itu pada artikel ini saya akan membahas semua tentang metrics pada klasifikasi dan objek deteksi mulai dari jenis-jenis metrics yang ada hingga tips dalam pemilihan metrics saat mengembangkan model kita.

Metrics pada Klasifikasi

Pada pemodelan klasifikasi, output model berupa label/kelas. Dari output prediksi model tersebut kita dapat menghitung metricsnya. Kemudian dalam klasifikasi terdapat beberapa metrik yang umum digunakan. Oleh sebab itu, penting untuk memahami setiap metrik tersebut, sehingga kita dapat menggunakannya dengan tepat sesuai dengan karakteristik masalah yang sedang kita modelkan. Tetapi sebelum kita masuk ke metricsnya, ada perlunya kita mengetahui tentang Confusion Matrix karena Confusion Matrix merupakan konsep fundamental dalam klasifikasi yang darinya lah semua metric yang akan kita bahas dalam artikel ini diturunkan.

Confusion matrix juga sering disebut error matrix. Pada dasarnya confusion matrix memberikan informasi perbandingan hasil klasifikasi yang dilakukan oleh sistem (model) dengan hasil klasifikasi sebenarnya. Confusion matrix berbentuk tabel matriks yang menggambarkan kinerja model klasifikasi pada serangkaian data uji yang nilai sebenarnya diketahui.

https://ksnugroho.medium.com/confusion-matrix-untuk-evaluasi-model-pada-unsupervised-machine-learning-bc4b1ae9ae3f

Dari gambar diatas bisa dilihat bahwa True Positive adalah data positif yang diprediksi benar. True Negatif adalah data negatif yang diprediksi benar. False Positive adalah data negatif yang diprediksi sebagai data positif. Contohnya, pasien tidak menderita covid tetapi dari model yang telah memprediksi pasien tersebut menderita covid. False Negative adalah data negatif yang diprediksi benar. Contohnya, pasien menderita kanker tetapi dari model yang dibuat memprediksi pasien tersebut tidak menderita kanker.

Dengan variabel-variabel tadi yang kita dapatkan dari confusion matrix, kita dapat masuk ke metrics untuk mengukur performa model ktia. Berikut adalah beberapa metrics yang umum digunakan pada kasus klasifikasi.

Akurasi

Akurasi merupakan salah satu metrics yang paling sering diketahui pada pemodelan klasifikasi. Jadi akurasi adalah persentase model memprediksi benar dibanding dengan seluruh prediksinya. Jadi rumusnya adalah sebagai berikut.

https://towardsdatascience.com/metrics-to-evaluate-your-machine-learning-algorithm-f10ba6e38234

Akurasi memang baik sebagai metrics awal untuk melihat performa model secara singkat dan membantu kita ketika membuat model karena akurasi juga dapat mendeteksi jika model kita mulai overfit saat dilatih. Tetapi masalah muncul ketika data yang dilatih tidak seimbang dan juga kasus yang diklasifikasikan merupakan kasus yang jarang terjadi. Sehingga misalkan model mendeteksi 99 class A dengan benar dan salah mendeteksi 1 false negative pada class B akurasi yang didapatkan tetap 99%. Padahal bisa saja class B merupakan kasus yang sangat penting tetapi memang jarang terjadi. Contohnya ketika model ditugaskan untuk mendeteksi citra kanker, tentunya data citra kanker tidaklah banyak tetapi sangatlah fatal jika model salah memprediksi.

Oleh karena itu akurasi diyakini kurang baik jika menghadapi imbalanced data dan class yang sedikit memiliki value yang sangat tinggi jika salah diprediksi. Hal itu menuntun kita kepada metrics berikutnya yaitu F1-Score.

F1-Score

Skor F1 adalah Harmonic Mean antara presisi dan recall. Kisaran Skor F1 adalah [0, 1]. Ini memberi tahu kita seberapa tepat pengklasifikasi Anda (berapa banyak instance yang diklasifikasikan dengan benar), serta seberapa robust model kita (tidak melewatkan sejumlah besar instance).

Presisi tinggi tetapi recall yang lebih rendah, akan memberi hasil yang sangat akurat, tetapi kemudian dapat menimbulkan banyak false positive yang terjadi terutama jika recallnya sangat rendah. Persamaannya dapat dilihat pada persamaan ini. Sebaliknya jika recall tinggi tetapi presisi yang lebih rencah, akan melewatkan beberapa kejadian yang kita inginkan tetapi lebih mengurangi kejadian false positive. Secara matematis dinyatakan sebagai. Untuk ilustrasi dari trade-off presisi dan recall dapat dilihat pada figur di bawah ini.

https://en.wikipedia.org/wiki/Precision_and_recall

Oleh karena itu yang paling ideal untuk mengukur modelnya adalah F1-Score. Secara matematis, dapat dinyatakan sebagai:

https://towardsdatascience.com/metrics-to-evaluate-your-machine-learning-algorithm-f10ba6e38234

Bisa dilihat bahwa F1 score berusaha menyeimbangkan nilai precision dan recallnya.

Sensitivity, Specificity, dan False Positive Rate

Sensitivitas (True Positive Rate) dan spesifisitas (True Negative Rate) adalah dua metrik populer lainnya yang banyak digunakan dalam bidang medis dan biologi terkait, sedangkan FPR atau False Positive Rate sering digunakan pada metrics yang akan dijelaskan nanti yaitu ROC Curve, dan didefinisikan sebagai:

https://towardsdatascience.com/metrics-to-evaluate-your-machine-learning-algorithm-f10ba6e38234

ROC Curve

Receiver Operating Characteristic (ROC) curve adalah plot yang menunjukkan kinerja pengklasifikasi biner sebagai fungsi dari ambang batasnya. Ini pada dasarnya menunjukkan grafik antara True Positive Rate (TPR) terhadap False Positive Rate (FPR) untuk berbagai nilai threshold.

Banyak dari model klasifikasi yang outputnya berupa probabilistik, misalnya ingin memprediksi kemungkinan sampel menjadi kucing. Model kemudian membandingkan probabilitas output dengan beberapa nilai threshold dan jika lebih besar dari ambang batas mereka memprediksi labelnya sebagai kucing, sebaliknya sebagai non-kucing.Contoh kita memiliki model yang mengeluarkan output seperti ini dari 4 contoh gambar: [0.45, 0.6, 0.7, 0.3]. Dengan nilai threshold yang berbeda tentu kita juga akan mendapat hasil yang berbeda. Berikut ilustrasinya.

https://towardsdatascience.com/20-popular-machine-learning-metrics-part-1-classification-regression-evaluation-metrics-1ca3e282a2ce

Dapat dilihat dengan memvariasikan nilai threshold, kita akan mendapatkan label yang sama sekali berbeda. Oleh karena itu bisa dibayangkan bahwa masing-masing skenario ini akan menghasilkan tingkat presisi dan recall (serta TPR, FPR) yang berbeda.

Kurva ROC pada dasarnya menemukan TPR dan FPR untuk berbagai nilai threshold dan setelah itu diplot satu sama lain.

Dari grafik di atas bisa dilihat jika threshold TPR semakin tinggi akan membuat FPR juga semakin tinggi. Idealnya untuk menentukan model tersebut bagus melalui ROC curve adalah ketika FPR masih rendah tetapi TPRnya sudah sangat tinggi. Dan untuk mengukur hal tersebut kita dapat menggunakan nilai Area Under Curve (AUC). AUC akan mengkalkulasi area di bawah kurva ROC dan juga memiliki nilai di antara 0 dan 1. Secara umum semakin tinggi nilai AUC maka semakin baik model tersebut.

Tetapi dari semua metrics yang sudah dipaparkan, semua itu kembali lagi ke business/problem requirement pada model yang sedang kita kembangkan dan tentunya kita sendiri juga harus paham apa yang model kita butuhkan dan apa yang harus dioptimisasi dari model kita. Oleh karena itu pemahaman yang dalam tentang metrics juga sangat-sangat dibutuhkan untuk pemodelan machine learning.

Metrics pada Deteksi Objek

Pada pemodelan deteksi objek, output dari model tidak hanya berupa class dari objeknya tetapi terdapat juga output lain yaitu anotasi bounding box dari objek yang dideteksi oleh model. Oleh karena itu metrics yang digunakan pada deteksi objek cukup berbeda dengan metrics yang ada pada klasifikasi.

Sebelum masuk ke metrics yang ada, ada juga hal penting yang perlu diketahui dalam mengukur metrics dari pemodelan deteksi objek, yaitu Intersection of Union (IoU). Simpelnya IoU adalah adalah ukuran berdasarkan Indeks Jaccard yang mengevaluasi irisan antara bounding box. Yaitu antara bounding box yang diprediksi dan bounding box asli atau ground truth-nya. Dengan mengetahui nilai IoU kita dapat menentukan apakah prediksi tersebut berupa True Positive atau False Positive. Berikut adalah cara perhitungannya beserta ilustrasinya.

https://github.com/rafaelpadilla/Object-Detection-Metrics

Precision-Recall Curve

Precision-recall (PR) curve adalah plot precision sebagai fungsi recall. Ini menunjukkan adanya trade-off antara dua metrics tersebut untuk berbagai nilai confidence pada hasil prediksi model. Jika FP rendah, precisionnya tinggi tetapi lebih banyak instance objek mungkin terlewatkan sehingga menghasilkan FN tinggi — recall rendah. Sebaliknya, jika seseorang menerima lebih banyak positif dengan menurunkan ambang batas IoU, , recall akan meningkat tetapi FP juga dapat meningkat, dan menurunkan nilai precision. Untuk model yang baik, precision dan recall keduanya harus tetap tinggi meskipun nilai thresholdnya bervariasi. Contoh dari Precision-Recall Curve seperti gambar ini.

https://www.statology.org/precision-recall-curve-python/

Average Precision (AP)

Average Precision (AP) adalah metrics yang paling sering digunakan pada tugas deteksi objek menurut pengalaman saya sendiri. Secara mudahnya cara menghitung AP adalah dengan menghitung AUC (Area Under Curve) dari Precision-Recall Curve yang sudah disebutkan sebelumnya, tetapi karena Precision-Recall Curve seringkali merupakan kurva zigzag yang naik dan turun, membandingkan kurva yang berbeda (detektor yang berbeda) di plot yang sama biasanya bukanlah tugas yang mudah — karena kurva cenderung sering saling bersilangan. Itulah sebabnya metrics ini juga dapat membantu model dalam mengukur performanya. Dalam prakteknya AP adalah presisi rata-rata di semua nilai recall antara 0 dan 1.

11-Point Interpolation

Dikarenakan menghitung AuC pada kurva yang berbentuk zigzag lumayan sulit, cara menghitung AP yang paling mudah adalah dengan menggunakan metode 11 Point Interpolation. Metodenya adalah dengan menginterpolasi nilai precision yang terdekat pada 11 titik recall yang terdiri dari : [0.0, 0.1, 0.2, 0.3, … , 1.0].

dengan

Artinya ketimbang mengambil nilai precision sebenarnya pada titik r, kita mengambil nilai precision tertinggi yang terdekat dengan r tetapi hanya mengambil titik setelah r saja. Contoh misalnya terdapat nilai precision 0.56 pada recall 0.09 dan nilai precision 0.75 pada recall 0.12, maka nilai yang dipilih untuk menginterpolasi nilai precision pada titik r = 0.1 adalah 0.75 karena merupakan nilai maksimal dan berada di sebelah kanan titik r.

Interpolating all points

Metode ini dikenalkan sejak tahun 2010an oleh lomba PASCAL VOC. Jadi metode ini menginterpolasi semua titik recall yang ada seperti persamaan di bawah.

dengan

Dalam hal ini, alih-alih menggunakan presisi yang diamati hanya pada beberapa titik, AP sekarang diperoleh dengan menginterpolasi presisi pada setiap level, r mengambil presisi maksimum yang nilai recallnya lebih besar atau sama dengan r+1. Dengan cara ini kita dapat menghitung perkiraan area di bawah kurva.

Mungkin dengan teori dan persamaan matematis di atas beberapa dari kita ada yang masih bingung dan tidak mengerti secara jelas. Oleh karena itu saya memberi contoh kasus yang bersumber dari artikel ini untuk menghitung AP dengan kedua metode tersebut.

Contoh Kasus

https://towardsdatascience.com/on-object-detection-metrics-with-worked-example-216f173ed31e

Misalnya model memprediksi 3 gambar dan mengeluarkan output seperti ini. Kemudian kita akan menghitung AP dari output-output tersebut dengan threshold IoU di 50%. Perlu diingat bahwa menghitung AP hanya menghitung pada 1 class saja. Jadi misalnya model mendeteksi objek lain yang bukan modelnya akan langsung terhitung False Positive seperti pada deteksi I. Berikut saya akan breakdown cara menghitung AP dalam 3 langkah sebagai berikut.

  1. Buat tabel rekapitulasi

Pertama untuk menghitung AP kita dapat mendefinisikan semua dahulu dalam tabel dan diurutkan dari confidence tertinggi ke terendah. Hasilnya akan seperti ini.

Dari tabel tersebut terdapat beberapa hal penting yang dapat diinformasikan.

  • Deteksi c ,d, dan h terdeteksi sebagai FP karena IoU-nya masih belum mencukupi threshold yang kita tentukan yaitu 50%.
  • Terdapat deteksi yang tumpang tindih seperti g & f dan i & k. Untuk menghadapi hal tersebut menurut Paper PASCAL VOC 2012 yang diambil sebagai TP adalah yang memiliki confidence lebih tinggi dan mencukupi nilai threshold IoU yang ditentukan sedangkan yang lainnya menjadi FP. Dalam hal ini yang menjadi TP adalah g dan i karena confidence mereka lebih tinggi daripada f dan k.

Multiple detections of the same object in an image were considered false detections e.g. 5 detections of a single object counted as 1 correct detection and 4 false detections — Source: PASCAL VOC 2012 paper.

Some detectors can output multiple detections overlapping a single ground truth. For those cases the detection with the highest confidence is considered a TP and the others are considered as FP, as applied by the PASCAL VOC 2012 challenge. -Source: A Survey on Performance Metrics for Object-Detection Algorithms paper.

2. Plot & Analisa PR Curve

Jika sudah ada tabel rekapnya maka kita dapat mengplot PR Curvenya dengan nilai precision dan recallnya ini.

Karena PR Curve adalah plot precision sebagai fungsi recall, maka recall menjadi sumbu x dan precision menjadi sumbu y. Sehingga plotnya menjadi seperti berikut.

3. Menghitung AP dengan metode 11 point & All point

Jika sudah memiliki PR Curvenya maka kita dapat menghitung AP-nya dengan menghitung AUC dari PR Curvenya. Kita mulai dari menggunakan 11 Point Interpolation. Dengan menggunakan teori yang sudah dijelaskan tadi, maka plot 11 Pointnya akan seperti berikut.

Dan hasil APnya menjadi :

Kemudian jika menggunakan all point interpolation maka kita menggunakan semua titik recall yang ada pada tabel rekap kita tadi, sehingga plotnya menjadi seperti ini.

Jika diperjelas dengan mudah kita akan menemukan bentuk persegi panjang tiap areanya sehingga untuk menghitung areanya menjadi mudah sebagai berikut.

Sehingga hasil APnya dapat dihitung dengan menggabungkan 4 area dari R1 hingga R4. Perhitungannya adalah sebagai berikut.

Mean Average Precision (mAP)

Mungkin lagi-lagi beberapa dari kita ada yang bingung dengan penamaan metrics ini dan bertanya-tanya “Kok sudah rata-rata ada rata-rata lagi?”. Memang mean dan averagenya artinya adalah rata-rata dalam Bahasa Indonesia, tetapi perlu diketahui ketika menghitung AP kita hanya menghitung untuk satu class saja. Jika kita membuat model yang bisa mendeteksi lebih dari satu class maka kita juga akan menghitung AP tiap kelasnya. Oleh karena itu setiap AP yang sudah dihitung akan dirata-ratakan agar menghasilkan satu nilai akhir yang dinamakan Mean Average Precision (mAP). Berikut adalah cara untuk menghitung mAP.

https://towardsdatascience.com/on-object-detection-metrics-with-worked-example-216f173ed31e

Selain membagi nilai AP dengan jumlah class, seperti yang tadi sudah dijelaskan bahwa AP juga dihitung berdasarkan nilai threshold. Oleh karena itu mAP juga dapat dihitung dengan rata-rata dari nilai threshold IoU yang berbeda seperti yang dikenalkan oleh Microsoft COCO Challenge, yang mana metrics utamanya adalah mAP dari 80 class dan 10 threshold IoU dari 0.5 hingga 0.95 yang akhirnya dinotasikan menjadi mAP@[0.50:0.5:0.95].

Final Notes

Berikut tadi adalah sedikit dari yang saya bisa jelaskan tentang AI Metrics khususnya pada ranah Computer Vision. Dari artikel ini diharapkan pembaca sekalian dapat memahami berbagai metrics yang ada pada klasifikasi maupun pada deteksi object (object detection) bahkan dapat memahami dan mengerti konsep metrics-metrics yang cukup kompleks seperti Average Precision (AP). Karena saya juga masih belajar dalam hal ini tentunya saya juga tidak akan luput dari kesalahan. Oleh karena itu jika dirasanya ada informasi yang kurang pas atau salah, feel free untuk memberikan feedback dengan komentar atau dm langsung. Jika ingin diskusi dan sharing-sharing mungkin bisa juga join disini. Sekian dan thanks for reading!

--

--