Anda di halaman 1dari 10

LAPORAN PROJECT AUGMENTED CNN DAN PROJECT PREDICTION

Disusun oleh
KHAMDAN ANNAS FAKHRYZA
MTE 20602300012

PROGRAM STUDI MAGISTER TEKNIK ELEKTRO


UNIVERSITAS ISLAM SULTAN AGUNG
SEMARANG
2024
LAPORAN PENJELASAN KODE: CONVOLUTIONAL NEURAL NETWORK (CNN)
UNTUK PENGENALAN BAHASA ISYARAT (AMERICAN SIGN LANGUAGE - ASL)
PROGRAM BISA DI CEK (DISINI)

import tensorflow.keras as keras


import pandas as pd
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import (
Dense,
Conv2D,
MaxPooling2D,
Flatten,
Dropout,
BatchNormalization,
)
from tensorflow.keras.utils import to_categorical
from tensorflow.keras.preprocessing.image import ImageDataGenerator
import matplotlib.pyplot as plt
import numpy as np
Gambar1.1 Library yang di pakai dan di panggil kedalam google colab
Penjelasan:
1 Pemanggilan Library:
 ‘import tensorflow.keras as keras’: Mengimpor pustaka TensorFlow dan modul Keras
untuk pembuatan dan pelatihan model neural network.
 ‘import pandas as pd’: Mengimpor pustaka Pandas untuk manipulasi dan analisis data.
2 Pembuatan Model Sequential:
`Sequential()` digunakan untuk membuat model neural network dengan susunan lapisan-lapisan
yang berurutan.
3 Pemanggilan Lapisan-lapisan:
 Lapisan-lapisan yang dibutuhkan untuk model CNN diimpor dari Keras.
a) `Dense`: Lapisan neuron densely-connected.
b) `Conv2D`: Lapisan konvolusi 2D untuk ekstraksi fitur dari gambar.
c) `MaxPooling2D`: Lapisan pemadatan maksimal untuk mengurangi dimensi spasial data.
d) `Flatten`: Lapisan yang digunakan untuk meratakan output ke dalam vektor.
e) `Dropout`: Lapisan dropout untuk mencegah overfitting.
f) `BatchNormalization`: Lapisan normalisasi batch untuk mempercepat pelatihan dan
meningkatkan stabilitas.
4 Pemuatan Data:
a) Google Drive di-mount untuk mengakses data yang tersimpan di dalamnya.
b) Path file CSV untuk data pelatihan dan validasi ditentukan.
c) Data dari file CSV di-load menggunakan Pandas.
5 Persiapan Data:
a) Label diambil dari dataframe dan diubah menjadi representasi kategori biner menggunakan
`to_categorical`.
b) Data gambar dinormalisasi dengan membagi setiap nilai piksel dengan 255.
c) Data gambar diubah bentuk agar sesuai dengan input yang dibutuhkan oleh model CNN.
6 Pembuatan Model CNN:
a) Arsitektur model CNN dibangun menggunakan `Sequential`.
b) Model terdiri dari lapisan-lapisan konvolusi, normalisasi batch, dropout, dan pemadatan
maksimal.
c) Model diakhiri dengan dua lapisan Dense untuk pemadatan dan keluaran klasifikasi.
7 Augmentasi Data:
a) `ImageDataGenerator` digunakan untuk melakukan augmentasi data pada gambar
pelatihan.
b) Berbagai transformasi seperti rotasi, zoom, dan flip horizontal diterapkan untuk
meningkatkan variasi data pelatihan.
8 Visualisasi Augmentasi Data:
Satu batch gambar augmented dihasilkan menggunakan generator dan diplot menggunakan
matplotlib untuk memvisualisasikan proses augmentasi.

# Mount Google Drive


from google.colab import drive
drive.mount('/content/drive')

Gambar 1.2 Mount Google Drive

Mount Google Drive: Program dimulai dengan melakukan mounting Google Drive. Hal ini dilakukan
untuk mengakses file-file yang disimpan di Google Drive.

# Load data from CSV files


train_path = '/content/drive/MyDrive/KULIAH MTE/kecerdasan buatan/modul
03 Project 02/data/asl_data/train.csv'
# Ganti dengan path yang sesuai
valid_path = '/content/drive/MyDrive/KULIAH MTE/kecerdasan buatan/modul
03 Project 02/data/asl_data/valid.csv'

# Separate out our target values


y_train = train_df['label']
y_valid = valid_df['label']
del train_df['label']
del valid_df['label']

# Pisahkan vektor gambar kita


x_train = train_df.values
x_valid = valid_df.values

# Ubah target skalar menjadi kategori biner


num_classes = 24
y_train = to_categorical(y_train, num_classes)
y_valid = to_categorical(y_valid, num_classes)

# Normalisasikan data gambar kita


x_train = x_train / 255
x_valid = x_valid / 255

# Bentuk ulang data gambar untuk jaringan konvolusional


x_train = x_train.reshape(-1, 28, 28, 1)
x_valid = x_valid.reshape(-1, 28, 28, 1)

Gambar 1.3 Load data dan prepare data


a) Path file CSV untuk data pelatihan dan validasi diatur sesuai dengan struktur file yang ada di
Google Drive.
b) Data pelatihan dan validasi di-load menggunakan Pandas dari file CSV.
c) Label diambil dari dataframe dan diubah menjadi representasi kategori biner menggunakan
`to_categorical`.
d) Data gambar dinormalisasi dengan membagi setiap nilai piksel dengan 255.
e) Data gambar diubah bentuk agar sesuai dengan input yang dibutuhkan oleh model CNN.

# Build the model


model = Sequential()
model.add(Conv2D(75, (3, 3), strides=1, padding="same",
activation="relu", input_shape=(28, 28, 1)))
model.add(BatchNormalization())
model.add(MaxPooling2D((2, 2), strides=2, padding="same"))
model.add(Conv2D(50, (3, 3), strides=1, padding="same",
activation="relu"))
model.add(Dropout(0.2))
model.add(BatchNormalization())
model.add(MaxPooling2D((2, 2), strides=2, padding="same"))
model.add(Conv2D(25, (3, 3), strides=1, padding="same",
activation="relu"))
model.add(BatchNormalization())
model.add(MaxPooling2D((2, 2), strides=2, padding="same"))
model.add(Flatten())
model.add(Dense(units=512, activation="relu"))
model.add(Dropout(0.3))
model.add(Dense(units=num_classes, activation="softmax"))
Gambar 1.4 Struktur Model CNN

Struktur Model CNN:


a. Model Sequential dibangun dengan arsitektur CNN yang terdiri dari lapisan-lapisan konvolusi,
normalisasi batch, dropout, dan pemadatan maksimal.
b. Konfigurasi model melibatkan tiga lapisan konvolusi dengan jumlah filter yang berbeda, fungsi
aktivasi ReLU, normalisasi batch, dropout, dan pemadatan maksimal.
c. Pada akhirnya, terdapat dua lapisan Dense, yaitu lapisan pemadatan dengan aktivasi ReLU dan
lapisan keluaran dengan aktivasi softmax.

# Data augmentation
datagen = ImageDataGenerator
(
rotation_range=10,
zoom_range=0.1,
width_shift_range=0.1,
height_shift_range=0.1,
horizontal_flip=True,
vertical_flip=False,
)
# Generate augmented images
batch_size = 32
img_iter = datagen.flow(x_train, y_train, batch_size=batch_size)
x, y = img_iter.next()

Gambar 1.4 Augmentasi Data dan Images


Augmentasi Data:
a. `ImageDataGenerator` digunakan untuk melakukan augmentasi data pada gambar pelatihan.
b. Augmentasi termasuk rotasi, zoom, pergeseran horizontal dan vertikal, serta flip horizontal.
c. Batch augmented images dihasilkan menggunakan `flow` dari generator.

# Plot augmented images


fig, ax = plt.subplots(nrows=4, ncols=8)
for i in range(batch_size):
image = x[i]
ax.flatten()[i].imshow(np.squeeze(image))
plt.show()
Gambar 1.5 Visualisasi Augmentasi Data
Visualisasi Augmentasi Data:
a. Dilakukan pengambilan satu batch gambar augmented dari generator dan diplot dalam matriks
4x8 menggunakan matplotlib.
b. Matriks tersebut menampilkan visualisasi beberapa gambar yang telah mengalami augmentasi.

Gambar 1.6 Hasil Coding

Program ini merupakan implementasi CNN untuk pengenalan bahasa isyarat dengan
menggunakan TensorFlow dan Keras. Data pelatihan di-enhance dengan augmentasi untuk
meningkatkan variasi data. Model CNN dibangun dan kemudian dilatih menggunakan data yang
telah di-augmentasi. Visualisasi augmentasi data membantu untuk memahami variasi tambahan yang
diperoleh dari proses augmentasi. Program ini dapat digunakan sebagai dasar untuk pengembangan
lebih lanjut dalam proyek pengenalan bahasa isyarat.

datagen.fit(x_train)
model.compile(loss='categorical_crossentropy', metrics=['accuracy'])
model.fit(img_iter,
epochs=20,
steps_per_epoch=len(x_train)/batch_size,
validation_data=(x_valid, y_valid))

Gambar 1.7 ImageDataGenerator


Program ini melibatkan augmentasi data pada gambar pelatihan menggunakan
`ImageDataGenerator`, yang di-fit pada data pelatihan untuk menghitung statistik augmentasi. Model
Convolutional Neural Network (CNN) kemudian dikompilasi dengan fungsi kerugian kategori silang
dan metrik akurasi. Proses pelatihan dilakukan selama 20 epoch menggunakan generator gambar
augmented sebagai data pelatihan, dengan evaluasi kinerja pada data validasi yang tidak di-
augmentasi. Langkah-langkah ini menyusun bagian pelatihan dan evaluasi model untuk tugas
pengenalan bahasa isyarat.

model.save('asl_model')
import IPython
app = IPython.Application.instance()
app.kernel.do_shutdown(True)
{'status': 'ok', 'restart': True}
Gambar 1.8 menyimpan dan menutup kernel
Berfungsi menyimpan model Keras ke dalam direktori 'asl_model', memungkinkan
penggunaan kembali model tanpa pelatihan ulang, dan menutup kernel IPython saat ini setelah
menyimpan model. Perlu diperhatikan bahwa ini mungkin diperlukan terutama dalam konteks
notebook Jupyter untuk membersihkan eksekusi dan memastikan model tersimpan sebelum menutup
notebook.
LAPORAN IMPLEMENTASI PENGGUNAAN MODEL PENGENALAN HURUF
ISYARAT (AMERICAN SIGN LANGUAGE - ASL) YANG TELAH DILATIH. PROGRAM
BISA DI CEK DISINI

from tensorflow import keras


import matplotlib.pyplot as plt
import matplotlib.image as mpimg
from tensorflow.keras.preprocessing import image as image_utils
import numpy as np

# Mount Google Drive


from google.colab import drive
drive.mount('/content/drive')

# Load model
model = keras.models.load_model('/content/drive/MyDrive/KULIAH
MTE/kecerdasan buatan/modul 03 Project 02/asl_model')
Mounted at /content/drive
WARNING:tensorflow:SavedModel saved prior to TF 2.5 detected when loading Keras model. Please ensure
that you are saving the model with model.save() or tf.keras.models.save_model(), *NOT*
tf.saved_model.save(). To confirm, there should be a file named "keras_metadata.pb" in the SavedModel
directory.
Gambar 2. 1 Library yang di pakai dan di panggil kedalam google colab

Program di atas adalah implementasi untuk memuat model pengenalan huruf isyarat
(American Sign Language - ASL) yang telah dilatih sebelumnya. Dalam program ini, model tersebut
dimuat menggunakan TensorFlow, dan kemudian dilakukan visualisasi ringkasan arsitektur model.
Selain itu, program menyertakan fungsi untuk menampilkan gambar dari suatu lokasi file, serta fungsi
untuk memuat, merescale, dan menampilkan gambar secara praktis. Contoh penggunaan model untuk
memprediksi huruf isyarat dari gambar yang telah dimuat juga disajikan, di mana gambar tersebut
diambil sebagai contoh dari dataset huruf isyarat ASL. Program ini memberikan gambaran singkat
tentang bagaimana menggunakan model yang telah dilatih untuk aplikasi praktis dalam pengenalan
huruf isyarat ASL.

model.summary()

Gambar 2.2 model.summary


`model.summary()` adalah perintah yang digunakan untuk menampilkan ringkasan arsitektur dari
model neural network yang telah dibangun. Dalam konteks program di atas, model tersebut adalah
model pengenalan huruf isyarat ASL (American Sign Language) yang telah dibuat menggunakan
TensorFlow. Perintah ini mencetak informasi tentang setiap layer dalam model beserta jumlah
parameter yang dapat disesuaikan (trainable parameters) pada masing-masing layer. Informasi ini
mencakup jenis layer, ukuran output dari setiap layer, jumlah parameter yang dapat disesuaikan, dan
tipe aktivasi yang digunakan. Ringkasan ini membantu dalam memahami struktur keseluruhan dari
model neural network, yang merupakan langkah penting dalam pengembangan dan evaluasi model.

# Fungsi untuk menampilkan gambar


def tampilkan_gambar(lokasi_gambar):
gambar = mpimg.imread(lokasi_gambar)
plt.imshow(gambar, cmap='gray')
plt.show()
# Contoh: menampilkan gambar
tampilkan_gambar('/content/drive/MyDrive/KULIAH MTE/kecerdasan
buatan/modul 03 Project 02/data/asl_images/b.png')

Gambar 2.3 Fungsi untuk menampilkan gambar


Program di atas mendefinisikan fungsi `tampilkan_gambar` yang digunakan untuk
menampilkan gambar dari suatu lokasi file. Fungsi ini memanfaatkan modul `matplotlib.image`
untuk membaca gambar dari path yang diberikan, dan kemudian menggunakan `matplotlib.pyplot`
untuk menampilkan gambar tersebut dalam format skala keabuan (grayscale). Dalam contoh
penggunaan program, fungsi ini dipanggil untuk menampilkan gambar huruf "b" dari lokasi file
tertentu. Dengan menggunakan fungsi ini, pengguna dapat dengan mudah menampilkan dan
memeriksa gambar yang terletak pada path yang diinginkan.

# Fungsi untuk memuat dan merescale gambar


def muat_dan_ukur_gambar(lokasi_gambar):
gambar = image_utils.load_img(lokasi_gambar,
color_mode="grayscale", target_size=(28, 28))
gambar = image_utils.img_to_array(gambar)
gambar = gambar.reshape(1, 28, 28, 1)
gambar = gambar / 255.0
return gambar

# Memuat dan menampilkan gambar


lokasi_gambar = '/content/drive/MyDrive/KULIAH MTE/kecerdasan
buatan/modul 03 Project 02/data/asl_images/b.png'
image = muat_dan_ukur_gambar(lokasi_gambar)
plt.imshow(image.reshape(28, 28), cmap='gray')
plt.show()

Gambar 2.4 Fungsi untuk memuat dan merescale gambar

Program di atas mendefinisikan fungsi `muat_dan_ukur_gambar` yang digunakan untuk


memuat dan merescale gambar dari suatu lokasi file. Fungsi ini menggunakan modul
`tensorflow.keras.preprocessing.image` untuk memuat gambar dalam format skala keabuan
(grayscale) dengan ukuran target 28x28 piksel. Selanjutnya, gambar diubah menjadi array dan
direshape sesuai dengan format yang diterima oleh model (1, 28, 28, 1). Akhirnya, nilai piksel dalam
gambar dinormalisasi dengan pembagian oleh 255.0. Dalam contoh penggunaan program, fungsi ini
dipanggil untuk memuat dan menampilkan gambar huruf "b" dari lokasi file tertentu. Fungsi ini
mempersiapkan gambar agar sesuai dengan format yang dapat digunakan oleh model pengenalan
huruf isyarat ASL (American Sign Language).

# Contoh: memprediksi huruf untuk sebuah gambar


huruf_terprediksi = prediksi_huruf('/content/drive/MyDrive/KULIAH
MTE/kecerdasan buatan/modul 03 Project 02/data/asl_images/b.png')
print("Huruf Terprediksi:", huruf_terprediksi)

Gambar 2.5 memprediksi huruf untuk sebuah gambar


Program di atas merupakan contoh penggunaan fungsi `prediksi_huruf` yang telah
didefinisikan sebelumnya. Fungsi ini memprediksi huruf isyarat ASL (American Sign Language) dari
suatu gambar dengan menggunakan model yang telah di-load sebelumnya. Contoh penggunaan
program ini mencakup pemanggilan fungsi `prediksi_huruf` dengan memberikan path file gambar
huruf "b". Hasil prediksi huruf tersebut kemudian dicetak menggunakan perintah `print`. Dengan
demikian, program ini memberikan contoh bagaimana menggunakan model untuk memprediksi huruf
isyarat ASL dari gambar yang diberikan.

# Contoh: memprediksi huruf untuk sebuah gambar


huruf_terprediksi = prediksi_huruf('/content/drive/MyDrive/KULIAH
MTE/kecerdasan buatan/modul 03 Project 02/data/asl_images/a.png')
print("Huruf Terprediksi:", huruf_terprediksi)

Gambar 2.6 memprediksi huruf untuk sebuah gambar a

Program di atas merupakan contoh penggunaan fungsi `prediksi_huruf` yang telah


didefinisikan sebelumnya. Fungsi ini memprediksi huruf isyarat ASL (American Sign Language) dari
suatu gambar dengan menggunakan model yang telah di-load sebelumnya. Contoh penggunaan
program ini mencakup pemanggilan fungsi `prediksi_huruf` dengan memberikan path file gambar
huruf "a". Hasil prediksi huruf tersebut kemudian dicetak menggunakan perintah `print`. Dengan
demikian, program ini memberikan contoh bagaimana menggunakan model untuk memprediksi huruf
isyarat ASL dari gambar yang diberikan.

# Matikan kernel IPython (jika diperlukan)


import IPython
app = IPython.Application.instance()
app.kernel.do_shutdown(True)
{'status': 'ok', 'restart': True}
Gambar 2.7 Matikan kernel IPython
Berfungsi menyimpan model Keras ke dalam direktori 'asl_model', memungkinkan
penggunaan kembali model tanpa pelatihan ulang, dan menutup kernel IPython saat ini setelah
menyimpan model. Perlu diperhatikan bahwa ini mungkin diperlukan terutama dalam konteks
notebook Jupyter untuk membersihkan eksekusi dan memastikan model tersimpan sebelum menutup
notebook.

Anda mungkin juga menyukai