Anda di halaman 1dari 14

Artificial Intelligence

Computer Vision

Nama : Chintya Ang


NIM : 2155301027
Kelas : 2 TI A
Dosen Pengampu : Dr. Juni Nurma Sari, S.Kom., M.MT

Program Studi Teknik Informatika


Politeknik Caltex Riau
T.A 2022/2023
Computer Vision
Fire Detection
Sumber : https://www.kaggle.com/code/delllectron/fire-detection-computer-vision/notebook

Mengimpor beberapa modul yang diperlukan untuk pemrosesan data, visualisasi, dan
pembuatan model menggunakan Keras dan scikit-learn.
Penjelasan :
• Import datetime as dt : Modul datetime digunakan untuk bekerja dengan tanggal dan
waktu. Di sini, modul ini diberi alias dt.
• Import numpy as np : Modul numpy adalah salah satu modul inti untuk komputasi
numerik dalam Python. Di sini, modul ini diberi alias np.
• Import pandas as pd : Modul pandas digunakan untuk manipulasi dan analisis data.
Di sini, modul ini diberi alias pd.
• Import matplotlib.pyplot as plt : Modul matplotlib.pyplot digunakan untuk
membuat visualisasi grafik dan plot. Di sini, modul ini diberi alias plt.
• Import seaborn as sns : Modul seaborn adalah sebuah library yang dibangun di atas
matplotlib untuk membuat visualisasi data yang lebih menarik dan informatif. Di sini,
modul ini diberi alias sns.
• Import os : Modul os menyediakan fungsi-fungsi untuk berinteraksi dengan sistem
operasi, seperti mengakses file dan direktori. Modul ini digunakan di sini untuk
berbagai keperluan seperti membuat folder, menggabungkan path, dll.
• from keras.applications import xception : Modul keras.applications menyediakan
berbagai arsitektur model yang sudah dilatih sebelumnya untuk penggunaan pada
transfer learning. Di sini, arsitektur model Xception diimpor dari modul ini.
• from keras.preprocessing import image : Modul keras.preprocessing.image
menyediakan fungsi-fungsi untuk memproses gambar sebelum digunakan dalam
pelatihan model. Di sini, fungsi-fungsi terkait pemrosesan gambar diimpor dari modul
ini.
• from mpl_toolkits.axes_grid1 import ImageGrid : Modul mpl_toolkits.axes_grid1
menyediakan kelas ImageGrid yang memungkinkan penempatan gambar-gambar
dalam grid subplot pada plot matplotlib.
• from sklearn.linear_model import LogisticRegression : Modul
sklearn.linear_model menyediakan kelas-kelas untuk model regresi linier.
• from sklearn.metrics import accuracy_score, confusion_matrix,
classification_report : Modul sklearn.metrics menyediakan berbagai metrik evaluasi
untuk melakukan evaluasi kinerja model. Di sini, beberapa metrik seperti
accuracy_score, confusion_matrix, dan classification_report diimpor dari modul ini.
• Import cv2 : Modul cv2 adalah modul OpenCV yang menyediakan berbagai fungsi
dan metode untuk pemrosesan gambar dan komputer visi. Modul ini sering digunakan
dalam pemrosesan gambar, seperti membaca gambar, menerapkan filter, dan
melakukan operasi lainnya.
• from scipy.stats import uniform : Fungsi uniform dari modul scipy.stats digunakan
untuk menghasilkan variabel acak yang mengikuti distribusi seragam (uniform
distribution). Fungsi ini berguna dalam beberapa algoritma pembelajaran mesin yang
membutuhkan inisialisasi bobot acak.
• from tqdm import tqdm : Modul tqdm digunakan untuk membuat bar progres
(progress bar) saat melakukan iterasi melalui loop. Bar progres ini memberikan
visualisasi tentang sejauh mana iterasi telah berjalan dan perkiraan waktu yang
dibutuhkan untuk menyelesaikannya.
• from glob import glob : Fungsi glob dari modul glob digunakan untuk mencocokkan
pola dengan nama file/direktori dalam sistem file. Fungsi ini berguna untuk
mendapatkan daftar file yang sesuai dengan pola tertentu, seperti semua file gambar
dengan ekstensi tertentu.
• from keras.models import Model, Sequential : Modul keras.models menyediakan
kelas Model dan Sequential untuk membangun dan mengkonfigurasi model neural
networks dalam Keras. Kelas Model digunakan untuk membangun model dengan
arsitektur yang lebih kompleks, sedangkan Sequential digunakan untuk model dengan
arsitektur berurutan (sequential).
• from keras.layers import LSTM, Activation, Dense, Dropout, Input, Embedding,
Masking : Modul keras.layers menyediakan berbagai kelas lapisan yang digunakan
dalam membangun model neural networks dalam Keras.
• from keras.utils import np_utils, to_categorical : Modul keras.utils menyediakan
berbagai fungsi utilitas dalam Keras. Di sini, np_utils digunakan untuk beberapa
fungsi utilitas untuk memproses array NumPy, dan to_categorical digunakan untuk
mengubah label menjadi format one-hot encoding.
• from IPython.core.interactiveshell import InteractiveShell : Modul
IPython.core.interactiveshell mengatur interaktivitas shell IPython. Di sini,
InteractiveShell.ast_node_interactivity diatur ke "all" untuk mengaktifkan tampilan
output untuk setiap ekspresi dalam sel.

Penjelasan :
Mengimpor dataset, dalam hal ini fire_dataset berupa file zip yang diupload dari local drive ke
Google Colab. Data di dalamnya berupa image.

Penjelasan :
Mengekstrak file zip yang telah diimpor sebelumnya di direktori yang sedang digunakan di
Google Colab.

Penjelasan :
• Variabel base_folder merupakan path (lokasi) dari direktori utama dataset yang
digunakan. Dalam kasus ini, direktori utama dataset berada di
"../content/fire_dataset".
• Variabel train_data_folder merupakan path (lokasi) dari direktori yang berisi data
latihan (train data). Dalam kasus ini, direktori tersebut berada di
"../content/fire_dataset/fire_images".
• Variabel test_data_folder merupakan path (lokasi) dari direktori yang berisi data uji
(test data).
• Variabel categories merupakan sebuah list yang berisi nama-nama kategori yang ada
dalam dataset. Dalam kasus ini, terdapat dua kategori yaitu "fire_images" dan
"non_fire_images".
• Variabel len_categories merupakan panjang (jumlah elemen) dari list categories.

Penjelasan :
• Variabel image_count merupakan sebuah dictionary yang akan digunakan untuk
menghitung jumlah gambar dalam setiap kategori.
• Variabel train_data merupakan sebuah list kosong yang akan digunakan untuk
menyimpan informasi tentang setiap gambar dalam dataset. Setiap elemen dalam list
ini akan berisi path relatif gambar, indeks kategori, dan nama kategori.
• (Line 4) Melalui loop ini, kita melakukan iterasi melalui setiap elemen dalam list
categories. Variabel i akan menyimpan indeks kategori, dan category akan
menyimpan nama kategori.
• (Line 9) Melalui loop ini, kita melakukan iterasi melalui setiap file dalam folder
class_folder. os.listdir() digunakan untuk mendapatkan daftar file dalam folder
tersebut.

Penjelasan :
Mencetak jumlah gambar dalam setiap kategori, dengan format "nama_kategori ->
jumlah_gambar".

Penjelasan :
• Membuat sebuah dataframe dengan nama df menggunakan data yang ada dalam list
train_data. Setiap elemen dalam list train_data berisi informasi tentang sebuah
gambar, yaitu path relatif gambar, indeks kategori, dan nama kategori. Kolom-kolom
dataframe akan diberi nama 'file', 'id', dan 'label' sesuai dengan urutan data yang
disimpan.
• shape digunakan untuk mendapatkan informasi tentang jumlah baris dan kolom dalam
dataframe.

Penjelasan :
Menampilkan 5 baris data teratas dari dataframe df.
Penjelasan :
• create_mask_for_plant(image) : Fungsi ini menerima input gambar (image) dan
menghasilkan mask (masking) yang digunakan untuk menyorot area tanaman dalam
gambar. Masking adalah proses penggunaan mask atau penghalang untuk memilih
atau menyoroti bagian tertentu dalam gambar, sementara bagian lainnya diabaikan
atau diberi nilai nol.
• segment_image(image) : Fungsi ini menerima input gambar (image) dan
menghasilkan gambar yang telah disegmentasi, dengan fokus pada area tanaman.
• sharpen_image(image) : Fungsi ini menerima input gambar (image) dan
menghasilkan gambar yang telah diperhalus (diperjelas).
• read_img(filepath, size) : Fungsi ini menerima input path relatif gambar (filepath)
dan ukuran target (size) yang diinginkan, dan menghasilkan gambar yang telah dibaca
dan diubah menjadi array.
Penjelasan :
• from tensorflow.keras.preprocessing import image : Mengimpor modul image dari
paket keras.preprocessing dalam framework TensorFlow. Modul ini menyediakan
berbagai utilitas untuk memproses gambar.
• (Line 5) Membuat sebuah objek gambar (figure) dan sejumlah sumbu (axes) sesuai
dengan jumlah baris dan kolom yang ditentukan sebelumnya. Objek gambar tersebut
akan memiliki ukuran (figsize) 10x5.
• (Line 11) Menampilkan gambar acak dari dataset. Gambar tersebut dibaca
menggunakan fungsi read_img() dengan mengambil path relatif gambar dari kolom
'file' dalam dataframe df. Gambar tersebut akan diubah ukurannya menjadi (255, 255)
menggunakan read_img(). Kemudian, gambar tersebut akan ditampilkan pada sumbu
yang sesuai dalam grid. Piksel gambar akan dinormalisasi menjadi rentang [0, 1]
dengan membaginya dengan 255.
• (Line 12) Menampilkan grid gambar yang telah dibuat.
Penjelasan :
• (Line 1) Membaca gambar dari dataset menggunakan fungsi read_img(). Gambar
yang dibaca adalah gambar yang berada pada indeks ke-102 dari kolom 'file' dalam
dataframe df. Gambar tersebut akan diubah ukurannya menjadi (255, 255)
menggunakan read_img().
• (Line 4) Menerapkan fungsi create_mask_for_plant() pada gambar img yang telah
dibaca sebelumnya. Fungsi ini akan menghasilkan mask yang menyoroti area tanaman
dalam gambar.
• (Line 6) Menerapkan fungsi segment_image() pada gambar img yang telah dibaca
sebelumnya. Fungsi ini akan menghasilkan gambar yang telah disegmentasi, yaitu
hanya mempertahankan area tanaman dan mengabaikan bagian lainnya.
• (Line 8) Menerapkan fungsi sharpen_image() pada gambar yang telah disegmentasi
(image_segmented). Fungsi ini akan mempertajam gambar dengan menggunakan
teknik Gaussian blur dan penjumlahan berbobot.
• (Line 10) Membuat sebuah objek gambar (figure) dengan 1 baris dan 4 kolom untuk
menampilkan gambar hasil pemrosesan. Ukuran gambar tersebut adalah (10, 5).
• (Line 14-17) : Menetapkan judul pada masing-masing sumbu pada gambar yang akan
ditampilkan.
• (Line 20-23) : Menampilkan gambar pada masing-masing sumbu pada grid.
Penjelasan :
Gambar-gambar dalam dataset akan diubah ukurannya, dilakukan segmentasi, pemertajaman,
dan preprocessing menggunakan model Xception. Hasil preprocessing akan disimpan dalam
array X_train untuk digunakan dalam pelatihan model.

Penjelasan :
• Bentuk (shape) dari array X_train: (999, 255, 255, 3)
Jumlah data latih: 999
Ukuran gambar: 255x255 piksel
Jumlah saluran (channels): 3 (merupakan representasi warna dalam format RGB)
• Ukuran (size) dari array X_train: 194879925
Ukuran ini mencerminkan total jumlah elemen dalam array, yaitu 999 x 255 x 255 x
3.

Penjelasan :
Setelah code program dieksekusi maka akan menghasilkan variabel berikut :
• train_x: Subset data latih (80% dari X_train) yang akan digunakan untuk melatih
model.
• train_val: Subset data validasi (20% dari X_train) yang akan digunakan untuk menguji
kinerja model.
• y_train: Subset label (80% dari y) yang sesuai dengan data latih.
• y_val: Subset label (20% dari y) yang sesuai dengan data validasi.
Penjelasan :
• (Line 1) Menghitung jumlah gambar dengan label "FIRE IMAGES" pada data latih
(y_train) dan mencetak hasilnya. Pernyataan y_train == 0 digunakan untuk memfilter
label yang bernilai 0 (mewakili "FIRE IMAGES"), kemudian shape[0] digunakan
untuk mengambil jumlah baris (jumlah gambar) yang memenuhi kondisi tersebut.
• (Line 2) Menghitung jumlah gambar dengan label "NON-FIRE IMAGES" pada data
latih (y_train) dan mencetak hasilnya. Pernyataan y_train == 1 digunakan untuk
memfilter label yang bernilai 1 (mewakili "NON-FIRE IMAGES"), kemudian
shape[0] digunakan untuk mengambil jumlah baris (jumlah gambar) yang memenuhi
kondisi tersebut.

Penjelasan :
• bertujuan untuk mendapatkan fitur-fitur (features) dari data latih (train_x) dan data
validasi (train_val) menggunakan model Xception yang telah dilatih sebelumnya.
• (Line 2) Membuat model Xception dengan menggunakan parameter
weights='imagenet' untuk mengambil bobot pralahir dari ImageNet,
include_top=False untuk mengabaikan lapisan teratas (fully-connected layer) dari
model, dan pooling='avg' untuk melakukan pooling rata-rata pada output lapisan
terakhir.
• (Line 3) Menggunakan model Xception yang telah dilatih untuk memprediksi fitur-
fitur (features) dari data latih (train_x). Metode predict digunakan untuk melakukan
prediksi menggunakan model, dengan train_x sebagai input. Argumen batch_size=32
menentukan jumlah sampel yang akan diproses sekaligus, dan verbose=1 digunakan
untuk menampilkan progres pemrosesan.
• (Line 4) Menggunakan model Xception yang telah dilatih untuk memprediksi fitur-
fitur (features) dari data validasi (train_val). Metode predict digunakan untuk
melakukan prediksi menggunakan model, dengan train_val sebagai input. Argumen
batch_size=32 menentukan jumlah sampel yang akan diproses sekaligus, dan
verbose=1 digunakan untuk menampilkan progres pemrosesan.
Penjelasan :
Hasil tersebut menunjukkan bahwa:
• Fitur-fitur dari data latih (bf_train_x) memiliki bentuk (shape) (799, 2048), yang
berarti terdapat 799 sampel dengan masing-masing memiliki 2048 fitur.
• Ukuran (size) dari fitur-fitur data latih (bf_train_x) adalah 1636352.
• Fitur-fitur dari data validasi (bf_train_val) memiliki bentuk (shape) (200, 2048), yang
berarti terdapat 200 sampel dengan masing-masing memiliki 2048 fitur.
• Ukuran (size) dari fitur-fitur data validasi (bf_train_val) adalah 409600.

Penjelasan :
• (Line 2) Membuat objek model Sequential.
• (Line 3) Lapisan Dense pertama memiliki 256 unit dengan fungsi aktivasi ReLU.
input_dim=bf_train_x.shape[1] menentukan dimensi input dari lapisan ini, yang
sesuai dengan jumlah fitur dari bf_train_x.
• (Line 4) Lapisan Dense kedua memiliki 64 unit dengan fungsi aktivasi ReLU.
• (Line 5) Lapisan Dense output memiliki 1 unit dengan fungsi aktivasi sigmoid. Karena
ini adalah masalah klasifikasi biner, fungsi sigmoid digunakan untuk menghasilkan
probabilitas kelas positif.
• (Line 6) Menggunakan algoritma optimizer Adam untuk mengoptimasi model dengan
fungsi loss binary_crossentropy untuk masalah klasifikasi biner. Metric yang dihitung
adalah akurasi.
• (Line 7) menampilkan ringkasan dari arsitektur model yang telah dibuat, termasuk
jumlah parameter yang perlu di-train.

dst
Penjelasan :
Digunakan untuk melatih model dengan data latih (bf_train_x) dan label latih (y_train) selama
100 epoch dengan ukuran batch sebesar 32.
Selama proses pelatihan, model akan memperbarui bobotnya berdasarkan perbedaan antara
prediksi yang dihasilkan oleh model dengan label yang sebenarnya. Epoch adalah satu iterasi
melalui seluruh data latih.
Setelah pelatihan selesai, informasi tentang performa pelatihan akan disimpan dalam objek
history, yang dapat digunakan untuk menganalisis metrik pelatihan seperti loss dan akurasi.

Penjelasan :
• Pada subplot pertama (ax[0]), plot digunakan untuk menampilkan perubahan loss
(kehilangan) selama pelatihan. Loss mengukur seberapa baik model memprediksi
label yang benar. Semakin rendah nilai loss, semakin baik model dalam mempelajari
pola pada data latih. Plot menggunakan warna "salmon" dan memiliki lebar garis 2.
• Pada subplot kedua (ax[1]), plot digunakan untuk menampilkan perubahan akurasi
selama pelatihan. Akurasi mengukur seberapa baik model dalam memprediksi label
secara benar. Semakin tinggi nilai akurasi, semakin baik model dalam mempelajari
pola pada data latih. Plot menggunakan warna "green" dan memiliki lebar garis 2.

Penjelasan :
Hasil laporan klasifikasi akan mencakup metrik untuk setiap kelas yang ada dalam data validasi
(y_val) dibandingkan dengan prediksi yang dihasilkan oleh model (predictions). Metrik
evaluasi ini memberikan gambaran tentang kinerja model dalam memprediksi label kelas pada
data validasi.
Laporan klasifikasi ini akan mencakup informasi seperti presisi, recall, F1-score, dan jumlah
sampel yang terklasifikasi dengan benar untuk setiap kelas.

Penjelasan :
Confusion matrix menunjukkan perbandingan antara label sebenarnya (Y_TRUE) dengan
prediksi yang dihasilkan oleh model (PREDICTIONS). Hasilnya adalah sebuah plot heatmap
yang menampilkan matriks kebingungan dengan label sumbu y dan x yang sesuai, serta nilai
matriks kebingungan di setiap sel heatmap.

Output :

Anda mungkin juga menyukai