Radifan Naufal Zhafiri
Pada pryek ini akan dilakukan klasifikasi gambar / foto sesuai dengan olahraga yang dimainkan. Data yang digunakan bersumber dari kaggle yaitu:
Dimana dari 2 dataset tersebut akan digabungkan pada olahraga yang sama saja, didapat 11 olahraga yang terdapat dalam kedua dataset yaitu:
Disini akan dibandingkan antara hasil dari algoritma machine learning yaitu Random Forest dengan algoritma deep learning yaitu CNN.
Tentang Dataset
Dataset yang digunakan bersumber dari kaggle dengan nama dataset 100 Sports Image Classification dengan spesifikasi data terdapat 100 jenis olahraga (class) dengan tiap jenis olahraga terdapat sekitar 120 gambar. Karena data dalam dataset sedikit maka ditambahkan dataset kedua yang bernama Sports Image Dataset yang terdiri dari 23 jensi olahraga dengan tiap jenis olahraganya terdapat sekitar 700 gambar. Karena perbedaan jenis olahraga yang terdapat dalam dataset maka data yang digunakan adalah data olahraga yang terdapat pada kedua dataset saja yaitu:
Setelah penggabungan didapat dataset dengan 11 jenis olahraga dengan tiap jenis olahraga memiliki data latih sekitar 700 gambar.
Membuat Model Klasifikasi dengan Random Forest
Pada tahap ini akan dilakukan pembangunan model klasifikasi gambar olahraga dengan menggunakan algoritma Machine Learning Random Forest. Berikut adalah tahapan – tahapanya.
Import Library
Tahap pertama adalah import library yang dibutuhkan. Library yang dibutuhkan adalah sebagai berikut:
Konversi Dataset
Karena data yang dimiliki masih dalam bentuk gambar di dalam directory – directory label. Maka perlu dilakukan konversi data gambar menjadi array gambar dan nama directory menjadi array label. Proses ini dikarenakan proses pelatihan model Random Forest hanya menerima data array sebagai inputnya. Proses konversi dilakukan dengan cara berikut:
Setelah proses konversi didapatkan array 4 dimensi untuk data gambar dan array 2 dimensi untuk data label. Hal yang sama juga akan dilakukan ke data testing. Hasil array 4 dimensi ini tidak dapat digunakan untuk membangun model Random Forest karena modle Random Forest membutuhkan input dalam bentuk 2 dimensi sehingga array 4 dimensi ini perlu dirubah menjadi 2 dimensi yaitu dengan cara mengkalikan channel gambar dengan dimensi ukuran gambar seperti berikut:
Train Model Random Forest
Setelah data siap digunakan tahapan berikutnya yaitu membangun model Random Forest. Untuk membuat model dapat dilakukan seperti berikut:
Untuk melihat hasil prediksi dari model pada data test dapat dilakukan juga dengan cara seperti berikut:
Dari hasil diatas kita tidak dapat mengetahui apakah model bekerja dengan baik ataupun tidak sehingga kita perlu tahap evaluasi peforma untuk menilai bagaiman peforma model pada data yang belum pernah dilihat oleh model.
Evaluasi Peforma
Pada tahap ini akan dilakukan penilaian peforma model dengan menggunakan matriks Accuracy, preceission, recall dan f1 score untuk mengetahui bagaimana peforma model pada data test. Berikut adalah hasil evaluasi peforma pada model Random Forest.
Dapat dilihat hasi yang didapat kurang baik karena akurasi yang didapat hanya 44% dan nilai dari matriks lain juga dibwah 50% sehingga model kurang baik untuk digunakan dan perlu ditingkatkan lebih lanjut.
Membangun Model Klasifikasi Olahraga dengan CNN
Pada tahap ini akan dilakukan pelatihan model klasifikasi data olahraga dengan CNN dengan metode transfer learning menggunakan pretrained model MobileNet. Transfer Learning ini dilakukan dengan harapan model mampu memiliki peforma lebih baik dengan memanfaatkan pengetahuan yang dimiliki model pretrained yang telah dilatih pada data ImageNet. Tahapan yang dilakukan adalah seperti berikut.
Import Library
Tahapan pertama yaitu import library yang dibutuhkan seperti Tensorflow dan Numpy
Import Dataset dan Augmentasi Dataset
Tahapan berikutnya yaitu load dataset dan melakukan augmentasi terhadap dataset. Tahapan ini dilakukan menggunakan datagenerator dari tensorflow, datagenerator memungkinkan untuk memberi label otomatis kepada gambar berdasarkan nama directory dimana gambar itu berada. Sehingga ini akan memudahkan kita dalam pelabelan. Sebelum mengunakan data generator, kita perlu mendefinisikan directory data training, testing dan validation dan beberapa parameter lain terlebih dahulu seperti berikut.
Setelah itu kita dapat menggunakan datagenarator dan melakukan augmentasi seperti rotasi, shifting, flip, shear dan zoom. Proses augmentasi hanya dilakukan pada data training saja.
Membangun Model
Berikutnya adalah tahapan membangun arsitektur model untuk klasifikasi. Arsitektur ini dibangun dengan memodifikasi arsitektur mobilenet dengan mengganti classification layer dan melakukan freeze pada beberapa layer sehingga bobot dari layer tersebut tidak berubah. Implementasinya adalah sebagai berikut:
Training Model
Setelah membangun arsitektur model berikutnya adalah proses pelatihan model. Disini model akan dilatih dengan 20 epoch (jumlah epoch dapat disesuaikan).
Evaluasi Peforma
Setelah tahapan training selesai didapat model klasifikasi gambar, tahapan berikutnya adalah melakukan evaluasi peforma untuk mengetahui apakah model dapat bekerja dengan baik atau tidak dalam mengklasifikasikan kegiatan olahraga. Metriks yang digunakan sama seperti evaluasi peforma sebelumnya. Hasil yang didapat adalah seperti berikut:
Dapat dilihat hasil yang didapat sangat baik mencapai 96%. Jika dibandingkan dengan Random Forest maka model CNN memiliki peforma 2 kali lebih baik secara akurasi ataupun metriks – metriks lainnya.
Kesimpulan
Dari proyek klasifikasi kegiatan olahraga yang dilakukan dapat diambil kesimpulan seperti berikut: