Klasifikasi Olahraga dengan Random Forest dan CNN

Radifan Naufal Zhafiri

Sosial Media


2 orang menyukai ini
Suka

Summary

Pada pryek ini akan dilakukan klasifikasi gambar / foto sesuai dengan olahraga yang dimainkan. Data yang digunakan bersumber dari kaggle yaitu:

  1. https://www.kaggle.com/datasets/sovitrath/sports-image-dataset
  2. https://www.kaggle.com/datasets/gpiosenka/sports-classification

Dimana dari 2 dataset tersebut akan digabungkan pada olahraga yang sama saja, didapat 11 olahraga yang terdapat dalam kedua dataset yaitu:

  1. Baseball
  2. Basketball
  3. Boxing
  4. Cricket
  5. Fencing
  6. Football
  7. Hockey
  8. Swimming
  9. Table Tennis
  10. Tennis
  11. Volleyball

Disini akan dibandingkan antara hasil dari algoritma machine learning yaitu Random Forest dengan algoritma deep learning yaitu CNN.

Description

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:

  1. Baseball
  2. Basketball
  3. Boxing
  4. Cricket
  5. Fencing
  6. Football
  7. Hockey
  8. Swimming
  9. Table Tennis
  10. Tennis
  11. Volleyball

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:

Text

Description automatically generated

 

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:

Text

Description automatically generated

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:

Text

Description automatically generated

Train Model Random Forest

Setelah data siap digunakan tahapan berikutnya yaitu membangun model Random Forest. Untuk membuat model dapat dilakukan seperti berikut:

Graphical user interface, application, website

Description automatically generated

Untuk melihat hasil prediksi dari model pada data test dapat dilakukan juga dengan cara seperti berikut:

Text

Description automatically generated

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

Text

Description automatically generated

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

A screenshot of a computer

Description automatically generated with medium confidence

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.

Text

Description automatically generated

Setelah itu kita dapat menggunakan datagenarator dan melakukan augmentasi seperti rotasi, shifting, flip, shear dan zoom. Proses augmentasi hanya dilakukan pada data training saja.

Text

Description automatically generated

 

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:

Text

Description automatically generated

 

Training Model

Setelah membangun arsitektur model berikutnya adalah proses pelatihan model. Disini model akan dilatih dengan 20 epoch (jumlah epoch dapat disesuaikan).

A screenshot of a computer

Description automatically generated with medium confidence

 

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:

Table

Description automatically generated with low confidence

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:

  1. Algoritma Machine Learning (Random Forest) kurang sesuai untuk keperluan klasifikasi gambar.
  2. CNN memiliki kemampuan yang baik dalam melakukan klasifikasi gambar meskipun gambar memiliki variasi yang cukup banyak.
  3. Transfer Learning dapat meningkatkan peforma model CNN yang dihasilkan dibandingkan melatih model dari nol.

 

Informasi Course Terkait
  Kategori: Artificial Intelligence
  Course: Deep Learning Dengan Keras Python