• Tidak ada hasil yang ditemukan

Target dan Luaran Penelitian

Dalam dokumen LAPORAN PENELITIAN PEMBINAAN KAPASITAS (Halaman 21-0)

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);

} }

Dalam dokumen LAPORAN PENELITIAN PEMBINAAN KAPASITAS (Halaman 21-0)

Dokumen terkait