BAB III METODOLOGI PENELITIAN
D. Target dan Luaran Penelitian
Target yang diharapkan melalui penelitian ini yaitu:
1. Memudahkan pihak pimpinan atau pihak lainnya yang bertanggungjawab dalam mengawasi dan mengontrol kebersihan lingkungan kampus agar tercipta lingkungan yang nyaman, asri dan sehat.
2. Memudahkan pengelolaan kebersihan lingkungan secara cepat, mudah, efektif dan efisien karena pihak pimpinan atau pihak lainnya yang bertanggung jawab dapat melakukan fungsi pengawasan dari jarak jauh.
Adapun luaran yang diharapkan melalui penelitian ini yaitu:
1. Pimpinan dan penanggungjawab kebersihan dapat menggunakan aplikasi monitoring kebersihan lingkungan secara otomatis yang berbasis kecerdasan buatan dan Internet of Things.
2. Universitas dapat mewujudkan kampus asri dan green campus dengan adanya sistem manajemen sampah secara otomatis dan real time.
BAB IV
HASIL DAN PEMBAHASAN
A. Kebutuhan Sistem
Kebutuhan utama yang diperlukan untuk membangun sistem adalah dataset berupa gambar lingkungan yang digunakan untuk melatih model. Dataset berupa gambar lingkungan diperoleh dengan melakukan pengambilan gambar secara langsung di lingkungan sekitar Fakultas Sains dan Teknologi, UIN Alauddin Makassar. Jumlah gambar yang diambil adalah sekitar 200 gambar.
Gambar-gambar tersebut selanjutnya diseleksi, yaitu memilih gambar yang jernih dan tidak blur.
Gambar yang telah diseleksi selanjutnya dikelompokkan ke dalam tiga kategori yaitu gambar lingkungan yang bersih, kurang bersih, dan kotor. Total gambar yang digunakan setelah proses seleksi adalah 120 gambar yang terdiri dari masing-masing 40 gambar pada setiap kategori. Berikut adalah contoh gambar pada masing-masing kategori:
Gambar 4.1 Contoh Lingkungan Bersih
Gambar 4.2 Contoh Lingkungan Kurang Bersih
Gambar 4.3 Contoh Lingkungan Kotor
Pada penelitian ini, dataset yang terdiri dari 120 gambar dibagi menjadi 80% gambar (90 gambar) untuk pelatihan dan 20%
(30 gambar) untuk pengujian.
B. Desain Sistem
1. Alur Pelatihan Model
Pelatihan bertujuan untuk membangun model yang bisa digunakan untuk memprediksi kelas dari data uji nantinya. Alur dari tahap pelatihan dapat dilihat pada Gambar 4.3.
Gambar 4.3 Alur Pelatihan Model Pengklasifikasi
Input citra merupakan gambar lingkungan yang berukuran 224x224 piksel. Input citra tersebut digunakan untuk melatih model sesuai dengan parameter yang telah ditentukan. Adapun output dari tahap pelatihan model berupa sebuah model pengklasifikasi yang dapat digunakan mengklasifikasi sebuah input citra baru yang belum diketahui kelasnya.
2. Alur Pengujian Model
Tahap pengujian dilakukan untuk menguji tingkat keakuratan model yang telah dibangun dalam mendeteksi kondisi kebersihan lingkungan. Pada tahap ini, model yang telah dibangun pada tahap pelatihan digunakan untuk memprediksi kelas dari data pengujian. Output pada tahap ini adalah hasil prediksi kelas dari data input dalam hal ini kelas berupa kategori kebersihan lingkungan. Pada tahap pengujian dilakukan evaluasi terhadap
Start Input Citra (224x224)
hasil prediksi yang diberikan oleh pengklasifikasi. Alur dari tahap pengujian dapat dilihat pada Gambar 4.4.
Gambar 4.4 Alur Pengujian Model
3. Alur Impelementasi Model
Model yang telah dilatih dan diuji selanjutnya diimplementasikan pada perangkat mobile agar dapat digunakan secara real-time. Pada penelitian ini, TensorFlow Lite digunakan untuk menjalankan model yang telah dilatih sehingga model tersebut harus dikonversi terlebih dahulu ke dalam format .tflite.
Berikut adalah alur implementasi model ke dalam perangkat mobile berbasis Android.
Start Input Citra (224x224)
Prediksi menggunakan trained-model
Prediksi Label
End
Evaluasi Hasil
Evaluasi
Gambar 4.5 Alur Implementasi Model
4. Arsitektur MobileNet
Arsitektur jaringan MobileNet yang digunakan dalam penelitian ini dilatih dengan menggunakan parameter berikut:
• Nilai learning rate: 0.001
• Batch size: 32
• Jumlah epoch: 25
• 64 Dense layer pada layer terakhir
• Dropout: 0.7
• Optimizer: Adam dan SGD (Stochastic Gradient Descent)
5. Desain Tampilan Sistem
Tampilan sistem menggunakan tampilan asli dari TensorFlow Lite yaitu sebagai berikut:
Start Trained
Model
Konversi ke Format TFLite
model.tflite
End Integrasi ke
perangkat mobile
Status Kebersihan Lingkungan
Gambar 4.6 Tampilan Sistem pada Perangkat Mobile
C. Testing dan Integrasi
Hasil pengujian terhadap model yang telah dilatih dapat dilihat pada Tabel 4.1 berikut:
Tabel 4.1 Perbandingan Nilai Akurasi
Optimizer Dropout Akurasi (%)
SGD Tanpa Dropout 0.38
Menggunakan Dropout 0.75
Adam Tanpa Dropout 0.71
Menggunakan Dropout 0.83
Dalam penelitian ini dilakukan evaluasi terhadap dua jenis optimizer yang paling popular pada arsitektur deep learning yaitu SGD (Stochastic Gradient Descent) dan Adam optimizer. Selain itu, pada layer terakhir juga ditambahkan droput layer untuk mencegah overfitting. Berdasarkan Tabel 4.1 menunjukkan bahwa hasil akurasi terbaik diperoleh dengan menggunakan Adam sebagai
Tampilan real-time dari kamera
Hasil deteksi status kebersihan lingkungan
optimizer dan menggunakan dropout. Hasil akurasi terbaik yang diperoleh adalah 83%. Adapun pada model dengan menggunakan SGD sebagai optimizer tetapi tidak menggunakan dropout layer hanya memperoleh akurasi sebesar 38%. Nilai tersebut masih rendah sehingga masih perlu ditingkatkan. Adapun model dengan menggunakan SGD sebagai optimizer serta menggunakan dropout layer memperoleh akurasi yang cukup tinggi yaitu sekitar 75%.
Pada Adam optimizer, meskipun tidak menggunakan dropout layer, model mampu memberikan akurasi yang cukup baik, namun dengan menggunakan droput layer dapat meningkatkan akurasi hingga di atas 80%. Model dengan akurasi terbaik nantinya akan diimplementasikan pada perangkat mobile, embedded ataupun IoT sehingga dapat digunakan secara real-time.
Nilai presisi dan recall pada model yang terbaik dapat dilihat pada Tabel 2.
Tabel 4.2 Nilai Presisi dan Recall
Kelas Presisi (%) Recall (%)
Kurang Bersih/Less_Clean 0.75 0.75
Bersih/Clean 0.88 0.88
Kotor/Dirty 0.88 0.88
Table 4.2 menunjukkan bahwa nilai presisi dan recall untuk kelas atau kategori lingkungan Bersih dan Kotor adalah 88%
sedangkan untuk kelas Kurang Bersih adalah sebesar 75%. Nilai presisi 75% menunjukkan bahwa pada kelas Kurang Bersih hanya 75% kelas Kurang Bersih yang benar merupakan kelas tersebut dari keseluruhan data yang diprediksi sebaga kelas Kurang Bersih atau dengan kata lain terdapat data dari kelas lain yang salah diklasifikasi sebagai kelas Kurang Bersih. Sedangkan nilai presisi pada kelas Bersih dan kelas Kotor menunjukkan bahwa pada kelas tersebut terdapat 88% data dari kelas Bersih dan juga kelas Kotor yang benar merupakan kelas tersebut dari keseleuruhan data yang diprediksi sebagai kelas tersebut.
Recall atau sensitivitas menunjukkan tingkat kepercayaan terhadap hasil prediksi artinya pada kelas Kurang Bersih, tingkat kepercayaan kelas Kurang Bersih diprediksi sebagai kelas tersebut adalah 75% sedangkan tingkat kepercayaan kelas Bersih dan kelas Kotor diprediksi sebagai kelas tersebut adalah 88%. Adapun grafik
perolehan akurasi pada setiap epoch pada tahap pelatihan dapat dilihat pada Gambar 4.7.
Gambar 4.7 Grafik Akurasi Pelatihan pada Setiap Epoch
Model yang telah dilatih selanjutnya dapat diintegrasikan pada perangkat mobile, embedded, atau perangkat IoT agar dapat digunakan secara real-time. Pada penelitian ini, model yang telah dibangun diintegrasikan pada perangkat mobile berbasis Android untuk memudahkan pengujian secara real-time.
Pengujian dilakukan secara langsung di lingkungan Fakultas Sains dan Teknologi UIN Alauddin Makassar. Pengujian dilakukan pada lingkungan dengan kondisi Bersih, Kurang Bersih, dan Kotor. Adapun hasil pengujian dapat dilihat pada Gambar 4.8 sampai Gambar 4.10.
Gambar 4.8. Contoh Hasil Pengujian pada Lingkungan Bersih
Berdasarkan Gambar 4.8 dapat dilihat bahwa sistem yang dikembangkan mampu memberikan hasil deteksi yang sesuai dengan kondisi lingkungan yaitu pada kondisi nyata menunjukkan halaman yang bersih dan sistem juga berhasil mendeteksi dengan memberikan kelas Bersih/Clean dengan tingkat akurasi yang sangat tinggi yaitu sebesar 90.08%.
Pengujian selanjutnya dilakukan pada kondisi lingkungan yang Kurang Bersih dalam hal ini pada halaman terdapat sampah berupa daun namun jumlahnya tidak banyak. Hasil deteksi dapat dilihat pada Gambar 4.9.
Gambar 4.9. Contoh Hasil Pengujian pada Lingkungan Kurang Bersih
Berdasarkan Gambar 4.9 dapat dilihat bahwa sistem yang dikembangkan mampu memberikan hasil deteksi yang sesuai dengan kondisi lingkungan yaitu pada kondisi nyata menunjukkan halaman yang kurang bersih dan sistem juga berhasil mendeteksi dengan memberikan kelas Kurang Bersih/Less_Clean dengan tingkat akurasi yang sangat tinggi yaitu sebesar 99.93%.
Pengujian selanjutnya dilakukan pada kondisi lingkungan yang Kotor dalam hal ini pada halaman terdapat sampah berupa
daun dengan volume yang banyak. Hasil deteksi dapat dilihat pada Gambar 4.10
Gambar 4.10. Contoh Hasil Pengujian pada Lingkungan Kotor
Berdasarkan Gambar 4.10 dapat dilihat bahwa sistem yang dikembangkan mampu memberikan hasil deteksi yang sesuai dengan kondisi lingkungan yaitu pada kondisi nyata menunjukkan halaman yang kotor dan sistem juga berhasil mendeteksi dengan memberikan kelas Kotor/Dirty walaupun tingkat akurasi yang diberikan hanya sebsar 52.46%.
Pada Gambar 4.10 sistem juga menganggap kondisi lingkungan tersebut kurang bersih dengan tingkat akurasi sebesar 40.16%. Hal tersebut dikarenakan pada gambar tersebut terdapat sebagian area yang bersih dan sebagian lagi terdapat sampah
sehingga sistem mengidentifikasi bahwa lingkungan tidak sepenuhnya kotor.
BAB V PENUTUP
A. Kesimpulan
Pada penelitian ini telah dikembangkan sebuah model yang dapat digunakan mendeteksi kondisi kebersihan lingkungan.
Secara keseluruhan performa model yang telah dikembangkan sudah cukup baik yaitu memiliki tingkat akurasi di atas 80%.
Model yang telah dikembangkan selanjutnya dapat dimanfaatkan oleh pihak kampus untuk melakukan monitoring kebersihan lingkungan secara otomatis. Model yang telah dikembangkan dapat dintegrasikan pada perangkat embedded atau IoT
B. Saran
Model yang telah dikembangkan dalam penelitian ini perlu diintegrasikan ke perangkat embedded terlebih dahulu jika ingin digunakan untuk memantau kondisi kebersihan lingkungan pada seluruh area atau lingkungan universitas. Selain itu untuk meningkatkan performa sistem, diperlukan data atau sampel gambar lingkungan yang lebih banyak dan lebih variatif misalnya kondisi lingkungan dengan berbagai jenis sampah seperti sampah plastik, kertas dan lain-lain.
PUSTAKA ACUAN
Amrizal, V., & Aini, Q. (2013). Kecerdasan Buatan. Halaman Moeka Publishing.
Arafat. (2016). SISTEM PENGAMANAN PINTU RUMAH BERBASIS Internet Of Things ( IoT ) Dengan ESP8266. Jurnal Ilmiah Fakultas Teknik “Technologia,” 7(4), 262–268.
Dewanto, I. J. (2004). System Development Life Cycle Dengan Beberapa Pendekatan. Jurnal FASILKOM, 2(1).
Efendi, Y. (2018). Internet Of Things (IoT) Sistem Pengendalian Lampu Menggunakan Raspberry Pi Berbasis Mobile. Jurnal Ilmiah Ilmu Komputer, 4(19–26).
Faisal. (2017). APLIKASI SMART TRASH CAN DALAM MENGATASI PERSOALAN SAMPAH SECARA MOBILE BERBASIS ANDROID. Informatika Sains Dan Teknologi, 2(2), 1–
10.
Fei, T. P., Kasim, S., Hassan, R., Ismail, M. N., Salikon, M. Z. M., Ruslai, H., Jahidin, K., & Arshad, M. S. (2017). SWM: Smart waste management for green environment. 2017 6th ICT International Student Project Conference (ICT-ISPC), 1–5.
https://doi.org/10.1109/ICT-ISPC.2017.8075303
Galina, M., & Umar, U. D. (2016). Smart Trash Bin With Solar Cell.
Journal of Electrical and Electronics Engineering, 1(2), 46–51.
Howard, A. G., Zhu, M., Chen, B., Kalenichenko, D., Wang, W., Weyand, T., Andreetto, M., & Adam, H. (2017). MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications.
Peraturan Presiden Republik Indonesia Nomor 59 Tahun 2017 Tentang Pelaksanaan Pencapaian Tujuan Pembangunan Berkelanjutan, (2017).
Keerthana B, Raghavendran, S. M., Kalyani S, Suja P, & Kalaiselvi, V. K.
G. (2017). Internet of Bins: Trash Management in India. 2017 2nd International Conference on Computing and Communications
Technologies (ICCCT), 248–251.
https://doi.org/10.1109/ICCCT2.2017.7972277 Keras. (n.d.). https://keras.io/
Lecun, Y., Bengio, Y., & Hinton, G. (2015). Deep Learning. Macmillan Publishers Limited.
Riyanto, V., Rosyida, S., Ariyati, I., & Ridwansyah. (2019). Smart Trash Early Warning System Based on Internet of Things. 2019 7th International Conference on Cyber and IT Service Management
(CITSM), 7, 1–5.
https://doi.org/10.1109/CITSM47753.2019.8965365
Romero, M., Interian, Y., Solberg, T., & Valdes, G. (2020). Targeted transfer learning to improve performance in small medical physics datasets. Medical Physics, 47(12), 6246–6256.
https://doi.org/10.1002/mp.14507
Russell, S. J., & Norvig, P. (2016). Artificial Intelligence A Modern Approach: Third Edition.
Sandler, M., Howard, A., Zhu, M., Zhmoginov, A., & Chen, L.-C. (2019).
MobileNetV2: Inverted Residuals and Linear Bottlenecks.
TensorFlow Lite. (2021). https://www.tensorflow.org/lite/guide
Weiss, K., Khoshgoftaar, T. M., & Wang, D. (2016). A survey of transfer learning. Journal of Big Data, 3(1), 9.
https://doi.org/10.1186/s40537-016-0043-6
LAMPIRAN
Lampiran 1: Dataset Kategori: Lingkungan Bersih
Kondisi Lingkungan Kurang Bersih
Kondisi Lingkungan Kurang Kotor
Lampiran 2: Arsitektur Jaringan MobileNet
Lampiran 3: Kode Program Pengembangan Model (Menggunakan Google Colab)
# Load the Drive helper and mount from google.colab import drive
# This will prompt for authorization.
drive.mount('/content/drive/')
from keras.preprocessing.image import ImageDataGenerator from tensorflow.keras.optimizers import Adam
from keras.preprocessing.image import img_to_array from keras.preprocessing.image import load_img from sklearn.preprocessing import LabelBinarizer from sklearn.model_selection import train_test_split import matplotlib.pyplot as plt
import numpy as np import argparse
return list_files(basePath, validExts=(".jpg",
".jpeg", ".png", ".bmp", ".tif", ".tiff"), contains=contains)
def list_files(basePath, validExts=(".jpg", ".jpeg",
".png", ".bmp", ".tif", ".tiff"), contains=None):
# loop over the directory structure filename does not contain
# the supplied string, then ignore the file filename).replace(" ", "\\ ")
yield imagePath import cv2
import numpy as np from skimage import io
from skimage.transform import rotate, AffineTransform, warp
import matplotlib.pyplot as plt import random
from skimage import img_as_ubyte import os
from skimage.util import random_noise import os, re, glob, cv2, numpy as np
for i in dirs: #loop all directory
count = 0
for pic in glob.glob('/content/drive/My
Drive/UINAM/Penelitian/Deteksi_Sampah_2/Dataset2/Trainin g/'+i+'/*'):
im = cv2.imread(pic)
im = cv2.cvtColor(im,cv2.COLOR_BGR2RGB) im = cv2.resize(im,(224,224))
print("Jumlah "+str(i)+" : "+str(count)) label = label + 1
lb_arr.append(i) X = np.array(X)/255 y = np.array(y)
from sklearn.model_selection import train_test_split from tensorflow.keras.utils import to_categorical from sklearn.preprocessing import LabelBinarizer lb = LabelBinarizer()
y = lb.fit_transform(y)
X_train, X_test, y_train, y_test =
train_test_split(X,y,test_size=0.20, stratify=y, random_state = 24)
from keras.models import Sequential
from keras.layers import Conv2D, AveragePooling2D, Dropout, Flatten, Dense, Input
from keras.models import Model
from keras.preprocessing.image import ImageDataGenerator from keras.applications.mobilenet_v2 import MobileNetV2
baseModel = MobileNetV2(weights="imagenet",
include_top=False, input_tensor=Input(shape=(224, 224, 3)))
model = baseModel.output
model = AveragePooling2D(pool_size = (4,4))(model) model = Flatten(name = 'flatten')(model)
model = Dense(128, activation = 'relu')(model) model = Dropout(0.5)(model)
model = Dense(64, activation = 'relu')(model) model = Dropout(0.2)(model)
model = Dense(3, activation = 'softmax')(model) model = Model(inputs=baseModel.input, outputs=model)
for layer in baseModel.layers:
layer.trainable = False
from keras.preprocessing.image import ImageDataGenerator
trainAug = ImageDataGenerator(
rotation_range=15, fill_mode="nearest")
from tensorflow.keras.optimizers import Adam from tensorflow.keras.optimizers import SGD from keras.callbacks import ModelCheckpoint
init_lr = 0.0001 epoch = 35
BS = 8
opt = Adam(lr=init_lr, decay=init_lr / epoch) model.compile(loss="categorical_crossentropy",
history = model.fit_generator(
trainAug.flow(X_train, y_train, batch_size=BS), steps_per_epoch=len(X_train) // BS,
validation_data=(X_test, y_test), callbacks=[save_model],
epochs=epoch)
from sklearn.metrics import classification_report from keras.models import load_model
best_model = load_model('/content/drive/My
Drive/UINAM/Penelitian/Deteksi_Sampah_2/MobileNett_25.hd f5')
predIdxs = best_model.predict(X_test, batch_size=BS) predIdxs = np.argmax(predIdxs, axis=1)
print(classification_report(y_test.argmax(axis=1), predIdxs))
import matplotlib.pyplot as plt N = epoch plt.title("Training Loss and Accuracy")
plt.xlabel("Epoch #")
plt.ylabel("Loss/Accuracy") plt.legend(loc="lower left")
import tensorflow as tf
model2 = tf.keras.models.load_model('/content/drive/My Drive/UINAM/Penelitian/Deteksi_Sampah_2/MobileNett_25.hd f5')
converter =
tf.lite.TFLiteConverter.from_keras_model(model2)
tflmodel = converter.convert()
file = open( 'MobileNet.tflite' , 'wb' ) file.write( tflmodel )
Lampiran 4: Kode Program (Android)
/* Copyright 2019 The TensorFlow Authors. All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and limitations under the License.
====================================================
==========================*/
package org.tensorflow.lite.examples.classification.tflite;
import android.app.Activity;
import java.io.IOException;
/** This TensorFlowLite classifier works with the float MobileNet model.
*/
public class ClassifierFloatMobileNet extends Classifier {
/** MobileNet requires additional normalization of the used input. */
private static final float IMAGE_MEAN = 127.5f;
private static final float IMAGE_STD = 127.5f;
/**
* An array to hold inference results, to be feed into Tensorflow Lite as outputs. This isn't part
* of the super class, because we need a primitive array here.
*/
private float[][] labelProbArray = null;
/**
* Initializes a {@code ClassifierFloatMobileNet}.
*
* @param activity */
public ClassifierFloatMobileNet(Activity activity, Device device, int numThreads)
throws IOException {
super(activity, device, numThreads);
labelProbArray = new float[1][getNumLabels()];
}
@Override
public int getImageSizeX() { return 224;
}
@Override
public int getImageSizeY() { return 224;
}
@Override
protected String getModelPath() { // you can download this file from
// see build.gradle for where to obtain this file. It should be auto // downloaded into assets.
return "model.tflite";
}
@Override
protected String getLabelPath() { return "labels.txt";
}
@Override
protected int getNumBytesPerChannel() { return 4; // Float.SIZE / Byte.SIZE;
}
@Override
protected void addPixelValue(int pixelValue) {
imgData.putFloat((((pixelValue >> 16) & 0xFF) - IMAGE_MEAN) / IMAGE_STD);
imgData.putFloat((((pixelValue >> 8) & 0xFF) - IMAGE_MEAN) / IMAGE_STD);
imgData.putFloat(((pixelValue & 0xFF) - IMAGE_MEAN) / IMAGE_STD);
}
@Override
protected float getProbability(int labelIndex) { return labelProbArray[0][labelIndex];
}
@Override
protected void setProbability(int labelIndex, Number value) { labelProbArray[0][labelIndex] = value.floatValue();
}
@Override
protected float getNormalizedProbability(int labelIndex) { return labelProbArray[0][labelIndex];
}
@Override
protected void runInference() { tflite.run(imgData, labelProbArray);
} }