Klasifikasi Gambar Gunting Batu Kertas Menggunakan Algoritma CNN

Amalia Rachmadana Ismail
Jurusan Statistika UII
5 min readFeb 6, 2023
sumber

Hai Data Enthusiast!

Project ini merupakan tugas akhir dari mata kuliah Artifical Intelligence yang akan berbicara tentang pembelajaran mesin yang bertujuan untuk mengembangkan sistem pengklasifikasian citra gunting-batu-kertasmenggunakan algoritma CNN di platform Google Colab. Project ini menggunakan metode pembelajaran mesin supervised learning, di mana model yang dikembangkan di uji cobakan terlebih dahulu dengan menggunakan data train dan kemudian diuji dengan menggunakan data test.

Introduction

Kecerdasan buatan (Artificial Intelligence) telah dipelajari bertahun-tahun oleh para filsuf. Hal ini membuat Artificial Intelligence (AI) berusaha membangun entitas-entitas cerdas yang sesuai dengan pemahaman manusia (Prahartiningsyah & Kurniawan, 2021). Artificial Intelligence (AI) terbagi menjadi beberapa cabang, salah satunya adalah deep learning. Deep learning berfokus pada penggunaan data dan algoritma untuk meniru cara manusia belajar, secara bertahap meningkatkan akurasinya (Anggeli et al., 2021). Metode Convolutional Neural Network sangat popular di kalangan deep learning, karena CNN mengekstrak fitur dari input yang berupa gambar lalu mengubah dimensi gambar tersebut menjadi lebih kecil tanpa merubah karakteristik gambar tersebut (Omori & Shima, 2020).

Problem Statement

Sebagai seorang Data Enthusiast, tentu saja kita akan selalu mengolah berbagai data untuk mendapatkan informasi penting terkait data tersebut. Tapi bagaimana jika data yang akan diolah merupakan sebuah data gambar? Klasifikasi gambar adalah salah satu contoh pengolahan data dengan pengenalan pola dan diperlukan analisis mendalam sehingga menjadi salah satu tantangan utama saat ini. Sebagai seorang ahli data, tentunya tujuan utama dari project ini yaitu menciptakan model klasifikasi yang akurat untuk mengidentifikasi setiap jenis objek dengan tepat.

Dataset

Dataset yang digunakan adalah sampel gambar rock, paper, scissor yang diperoleh dari kaggle. Dataset terdiri dari kumpulan gambar kelas gunting sebanyak 750 citra, kelas batu sebanyak 726 citra, dan kelas kertas sebanyak 722 citra .

Pengambilan data dilakukan dengan cara mengunduh dataset yang kemudian disimpan ke dalam google drive. Untuk menggunakan dataset tersebut, perlu menghubungkan google colab dengan google drive.

Menyiapkan Folder untuk Data Gambar Gunting, Batu, Kertas

Setelah google drive berhasil terhubung, selanjutnya menyiapkan folder training untuk data gambar gunting, batu, dan kertas menggunakan perintah os.path.join .

jumlah total gambar dan nama file

Menampilkan Gambar Gunting, Batu, Kertas dalam Satu Tampilan

Menampilkan contoh sampel gambar acak sebanyak 4 citra dari tiap kelas gunting, batu, dan kertas dalam satu tampilan.

sampel gambar acak tiap kelas

Import Modul

Mengimpor beberapa modul yang akan digunakan.

Melakukan Augmentasi & Pemisahan Data menjadi Training dan Validation

Dilakukan augmentasi gambar dengan ImageDataGenerator menggunakan beberapa parameter yang bisa dilihat pada baris ke 5–24. Dilakukan juga pemisahan dataset menjadi 80% data training dan 20% data validation.

Pelabelan data menggunakan Image Data Generator berdasarkan Folder

Pada saat menggunakan generator data training dan generator data validation, parameter subset juga ditetapkan sebagai ‘training’ dan ‘validation’ masing-masing untuk pelabelan data.

1751 gambar training & 437 gambar validation

Membangun Model Jaringan Saraf Tiruan

Algoritma CNN (Convolutional Neural Network) merupakan salah satu jenis jaringan saraf terpampang yang sangat efektif untuk mengolah citra. CNN merupakan pilihan yang tepat untuk digunakan dalam proyek pengklasifikasian citra rockpaperscissors karena mampu menangani data citra dengan baik dan dapat mengekstrak fitur-fitur yang relevan dari citra tersebut.

Arsitektur jaringan CNN biasanya terdiri dari beberapa layer yaitu layer konvolusi, layer max-pooling, dan layer fully connected. Layer konvolusi berfungsi untuk mengekstrak fitur-fitur dari citra dengan menggunakan kernel(filter) yang bergerak secara parsial pada citra. Layer max-pooling merupakan layer yang berfungsi untuk mengurangi dimensi data dengan cara mengambil nilai terbesar dari setiap kelompok pixel pada citra. Layer fully connected merupakan layer yang terdiri dari neuron-neuron yang terhubung ke semua neuron di layer sebelumnya, dan berfungsi untuk mengklasifikasikan citra ke dalam kelas-kelas yang telah ditentukan.

Arsitektur CNN (sumber)

Model yang digunakan adalah model Sequential. Lapisan pertama merupakan input layer gambar dengan ukuran 150x150 dengan 3 byte warna. Pada layer konvolusi 2D pertama dengan 16 node, filter 3x3 dan fungsi aktivasi ReLU. Baris berikutnya 2D Max-pooling dengan ukuran 2x2. Kemudian gambar-gambar tersebut di proses lebih lanjut ke layer konvolusi selanjutnya dengan layer max-pooling sampai layer ketiga. Pada layer fully-connected digunakan aktivasi ReLU dengan layer pertama sebanyak 128 neuron dan layer kedua sebanyak 512 neuron. Pada layer output digunakan aktivasi softmax dengan jumlah output nodes sesuai dengan banyak kelas yaitu 3.

Melakukan Kompilasi Model

Dari model yang telah terbentuk, dilakukan kompilasi model dan menentukan loss function, optimizer, dan evaluation metrics.

Training Model Jaringan Saraf Tiruan

Melatih model dengan menggunakan data training dan mengevaluasi model menggunakan data validation dengan total epoch sebanyak 150 dan diperoleh akurasi validasi lebih dari 90%.

hasil training model

Ploting Akurasi Training dan Validasi

Import modul matplotlob.pyplot untuk melihat pergerakan besaran nilai akurasi training dan validation dalam bentuk line chart.

plot akurasi training dan validasi

Uji Coba Model Klasifikasi Gambar Tangan Gunting, Batu, Kertas

Akhirnya model klasifikasi gambar sudah siap digunakan! Dilakukan uji coba dengan mengunggah gambar baru dan membiarkan model memprediksi kelas dari gambar.

hasil prediksi gambar

Model yang telah dibuat berhasil memprediksi gambar baru dengan benar pada kelas gambar yang sesuai.

Program Klasifikasi Gambar dengan Kriteria Henti (Callback)

Terakhir, bisa digunakan fungsi callback untuk menghentikan training secara otomatis jika model klasifikasi gambar telah mencapai akurasi lebih dari 90%. Hal ini berguna untuk mengurangi kecenderungan model overfitted.

Demikian sedikit penjelasan mengenai Klasifikasi Gambar Menggunakan Algoritma CNN. Dengan kemampuan CNN yang sangat baik dalam mengenali pola citra atau gambar, kita dapat menciptakan sebuah model yang mampu melakukan klasifikasi dengan akurasi tinggi. Semoga bermanfaat!

Referensi

Anggeli, P., Agung, Mz., Teknik Elektro Program Studi Teknik Telekomunikasi, J., Negeri Sriwijaya Palembang, P., Jl Srijaya Negara, I., Besar, B., Ilir Barat, K. I., Palembang, K., & Selatan, S. (2021). Klasifikasi Alat Musik Tradisional dengan Metode Machine Learning dengan Librosa dan Tensorflow pada Python. In Jurnal Sains Komputer & Informatika (J-SAKTI (Vol. 5, Issue 2).

Omori, Y., & Shima, Y. (2020). Image Augmentation for Eye Contact Detection Based on Combination of Pre-trained Alex-Net CNN and SVM. Journal of Computers, 15(3), 85–97. https://doi.org/10.17706/jcp.15.3

Prahartiningsyah, A. A., & Kurniawan, T. B. (2021). Pengenalan Pola Angka Menggunakan Pendekatan Optimisasi Sistem Kekebalan Buatan (Artificial Immune System). JURNAL MEDIA INFORMATIKA BUDIDARMA, 5(3), 856. https://doi.org/10.30865/mib.v5i3.2997

--

--