Pada part sebelumnya kita telah memahami bagaimana proses mesin belajar dan membandingkannya manusia, sekarang kita akan mencoba membuat Machine Learning sederhana kita sendiri.


Menyiapkan Dataset


Sebelum membuat Neural Network, atau otak buatan kita sendiri, tentunya kita harus mencari pengajar atau guru untuk melatih otak buatan kita. Guru yang akan melatih otak buatan kita adalah kumpulan data yang telah diorganisir sekian rupa agar dapat dipelajari oleh Model Neural Network.

Kali ini kita akan mengambil data gambar “Batu Gunting Kertas” dari kaggle.com

“Data Rock Papper Scissors”
Dataset Rock Papper Scissors

Download datasetnya disini

Selanjutnya kita akan menggunakan Google Colaboratory (Google Colab) untuk membuat rancangan sekaligus mengeksekusi data yang telah didapatkan.

Berikut tautan link : https://colab.research.google.com/

Setelah Login menggunakan Google Account, pilih ‘File’ lalu ‘New notebook’ untuk membuat halaman baru.

“Halaman Dashboard Google Colab”
Halaman Dashboard Google Colab

Ada banyak cara untuk memasukan data ke dalam Google Colab untuk di proses, salah satunya adalah dengan menggunakan Google Drive. Kita dapat mengupload dataset yang dibutuhkan ke dalam Google Drive dan menghubungkannya dengan Google Colab untuk dapat di akses sesukanya.

Klik Icon Google Drive pada Tab Files untuk menyambungkan Google Drive dengan Google Colab. Maka pada Tab Files akan muncul folder “drive” ketika Google Drive telah terhubung

“Connect ke Google Drive”
Connect ke Google Drive


Image Preprocessing


Dataset yang telah di download masih dalam bentuk gambar, tetapi mesin tidak dapat mempelajari dalam bentuk gambar. Maka dari itu kita harus mengubah kumpulan gambar ini menjadi bentuk lain yang dapat dipelajari oleh mesin.

Image Preprocessing adalah salah satu langkah yang digunakan untuk mengolah dataset agar pelatihan mesin dapat berjalan dengan baik. Langkah ini nantinya akan membuat data yang awalnya berbentuk gambar menjadi data berbentuk kumpulan array agar dapat dipelajari oleh mesin.

Pertama, kita akan menentukan path dari dataset gambar yang sebelumnya telah di upload ke Google Drive, dengan fitur ‘Copy path’ pada Google Colab kita akan langsung mendapatkan path dari folder dataset yang akan digunakan.

“Menentukan Path Dataset”
Menentukan Path Dataset

Buat variable berisi path dari dataset.

base_path = '/content/drive/My Drive/datasets/RockPaperScissor/rps-cv-images'

Untuk mengubah data menjadi bentuk kumpulan array, kita membutuhkan ImageDataGenerator() dari library Keras. Karena kita menggunakan Google Colab, kita tidak perlu melakukan instalasi library atau fitur lain dari Python karena sudah tersedia pada Google Colab.

Import ImageDataGenerator() cukup dengan menggunakan baris dibawah.

from keras.preprocessing.image import ImageDataGenerator

Selanjutnya membuat generator kita sendiri dengan kode dibawah.

generator = ImageDataGenerator(
    horizontal_flip = True,
    vertical_flip = True,
    height_shift_range = .2,
    validation_split = 0.2
)

Terdapat code seperti, horizontal_flip, vertical_flip, dan height_shift_range adalah fungsi lain dari ImageDataGenerator() untuk memvariasikan gambar. Contohnya seperti horizontal_flip digunakan untuk membalik gambar secara horizontal.

Fungsi validation_split digunakan untuk melakukan validasi dari pelatihan, validation_split ini membagi data dari dataset sesuai yang diinginkan, pada kode diatas terdapat value 0.2 yang artinya dataset akan dibagi menjadi 80% untuk pelatihan, dan 20% untuk validasi.

Validasi ini dapat diibaratkan sebagai Ulangan yang dilakukan oleh guru kita untuk menguji pengetahuan kita saat itu.


train_image = generator.flow_from_directory(
    base_path,
    target_size=(224, 224),
    classes=['paper', 'rock', 'scissors'],
    class_mode='categorical',
    subset='training',
    shuffle=False,
)

val_image = generator.flow_from_directory(
    base_path,
    target_size=(224, 224),
    classes=['paper', 'rock', 'scissors'],
    class_mode='categorical',
    subset='validation',
    shuffle=True
)

Disini kita membagi dataset menjadi 2 yaitu, train_image untuk pelatihan dan val_image untuk validasi. Dengan menambahkan subset='validation' akan menandakan bahwa itu adalah data untuk validasi, yaitu 20% dari dataset seperti yang sudah ditentukan pada generator.


target_size=(224, 224) akan membuat gambar menjadi ukuran 224 x 224 untuk menyamakan semua gambar.

class_mode dibuat ‘categorical’ karena kita akan menentukan 3 class yaitu, batu, gunting, dan kertas. Jika hanya membutuhkan 2 class, maka lebih baik menggunakan ‘binary’.

shuffle akan mengambil data secara acak jika isinya True.


Full Code

from keras.preprocessing.image import ImageDataGenerator

generator = ImageDataGenerator(
    horizontal_flip = True,
    vertical_flip = True,
    height_shift_range = .2,
    validation_split = 0.2
)

train_image = generator.flow_from_directory(
    base_path,
    target_size=(224, 224),
    classes=['paper', 'rock', 'scissors'],
    class_mode='categorical',
    subset='training',
    shuffle=False,
)

val_image = generator.flow_from_directory(
    base_path,
    target_size=(224, 224),
    classes=['paper', 'rock', 'scissors'],
    class_mode='categorical',
    subset='validation',
    shuffle=True
)

Setelah dijalankan akan muncul keluaran seperti dibawah.

“Output Program”
Output Result Code

Artinya dataset telah diubah menjadi bentuk kumpulan array. Ketika kita coba melakukan print() dataset maka akan muncul keluaran seperti dibawah.

“Output Program”
Output Machine Learning Image Processing