TUGAS AKHIR
i
ABSTRAK
Tidur yang cukup merupakan salah faktor yang mampu meningkatkan performa seseorang.
Akan tetapi, akhir – akhir ini sangat banyak orang yang mengalami kekurangan tidur. Lebih
buruknya, banyak orang yang tidak menyadari, dan mengabaikan kekurangan tidur. Tujuan dari
penulisan tugas akhir ini adalah untuk membuat sistem deteksi kualitas tidur pengguna yang
kemudian ditampilkan pada Smart Mirror. Algoritma yang digunakan pada tugas akhir ini adalah
algoritma CNN (Convolutional Neural Network). Algoritma CNN adalah salah satu jenis Neural
Network yang mulai populer untuk melakukan pemrosesan gambar. Hasil yang didapat adalah
produk berupa sistem yang mampu mendeteksi kualitas tidur secara otomatis, yang kemudian
diimplementasikan pada Smart Mirror. Pada penelitian ini dilakukan pengujian akurasi untuk
melihat kemampuan Convolutional Neural Network dalam mendeteksi kualitas tidur seseorang.
Kata kunci: Kualitas Tidur, Convolutional Neural Network, Cermin Cerdas
ABSTRACT
Having enough sleep is one of many factors that can improve someone’s performance.
However, lately there are a lot of people that suffer from sleep deprivation. Even worse, there are a
lot of people that don’t notice or even ignore their sleep deprivation. The goal of this final project is
to create a system that could detect the user’s sleep quality, and then show the result on a Smart
Mirror. This final project used CNN (Convolutional Neural Network) algorithm. CNN algorithm is
a kind of Neural Network that is getting popular to do Image Processing. The final product of this
final project is a system that can detect the user’s sleep quality automatically, and then implemented
in the Smart Mirror. In this research, accuracy test will be done to see the performance of
Convolutional Neural Network to detect the quality of sleep from a person.
Keywords: Sleep Quality, Convolutional Neural Network, Smart Mirror
ii
DETEKSI KUALITAS TIDUR PADA SMART MIRROR
DENGAN CONVOLUTIONAL NEURAL NETWORK
Tugas Akhir
Sebagai salah satu syarat untuk memperoleh gelar Sarjana Komputer pada
Program Studi Informatika
DISUSUN OLEH :
iii
LEMBAR PENGESAHAN
Judul Tugas Akhir : Deteksi Kualitas Tidur pada Smart Mirror dengan
Convolutional Neural Network
Nama : Poh Steven Sean Davin
NIM : 1400910044
Dewan Penguji
Pembimbing 1:
Pembimbing 2:
Penguji:
Penguji:
iv
PRAKATA
Puji dan syukur penulis panjatkan kepada Tuhan Yang Maha Esa atas segala
karunia-Nya yang besar sehingga penulis dapat menyelesaikan tugas akhir yang
berjudul Deteksi Kualitas Tidur pada Smart Mirror dengan Convolutional Neural
Network, (Subsistem: Pemanfaatan Smart Mirror untuk Meningkatkan Penampilan).
Adapun tugas akhir ini dibuat dalam rangka memenuhi persyaratan untuk meraih
gelar Sarjana Komputer pada Program Studi Informatika, Fakultas Ilmu Hayati,
Universitas Surya.
Dalam proses pengejaan tugas akhir ini penulis mendapatkan banyak dukungan.
Oleh karena itu pengulis mengucapkan terima kasih kepada:
1. Ibu Anggy Eka Pratiwi M. Eng. Dan Ibu Meirista Wulandari, M. Eng.
selaku dosen pembimbing yang telah memberikan bimbingan, arahan serta
dukungan.
2. Darren Kent Jeremy dan Tan Halim Supranata sebagai teman satu proyek
dalam pengerjaan tugas akhir ini yang selalu memberikan dukungan dan
banyak bantuan selama proses pengerjaan tugas akhir ini.
3. Orang tua dan keluarga penulis yang selalu memberikan dukungan dan
semangat dalam proses pengerjaan tugas akhir ini.
4. Filbert Anthony Wibisono selaku penyedia berbagai sarana dan prasarana
pendukung yang membantu penyelesaian tugas akhir ini.
5. Seluruh sukarelawan yang telah bersedia untuk menjadi subjek tes sistem
ini.
Penulis berharap tugas akhir ini dapat bermanfaat bagi banyak pihak dan
juga dapat meningkatkan penampilan pembaca.
v
DAFTAR ISI
vi
BAB IV ANALISIS DAN PEMBAHASAN ........................................................ 14
4.1. Perancangan Sistem ................................................................................ 14
4.1.1. Analisis Kebutuhan ......................................................................... 14
4.1.2. Desain Sistem .................................................................................. 15
4.2. Implementasi Sistem .............................................................................. 20
4.2.1. Implementasi Sistem Training Data ................................................ 20
4.2.2. Implementasi Sistem Prediksi ......................................................... 29
4.3. Pengujian Sistem .................................................................................... 33
4.4. Pembahasan Sistem ................................................................................ 38
BAB V KESIMPULAN DAN SARAN ................................................................ 40
5.1. Kesimpulan ............................................................................................. 40
5.2. Saran ....................................................................................................... 40
DAFTAR PUSTAKA ........................................................................................... 41
LAMPIRAN .......................................................................................................... 43
vii
DAFTAR GAMBAR
Gambar 1. Proses Convolutional Neural Network .................................................. 7
Gambar 2. Data Augmentation ............................................................................... 8
Gambar 3. Contoh data wajah ................................................................................. 9
Gambar 4. Contoh foto yang telah dipotong ......................................................... 10
Gambar 5. Tampilan Jupyter Notebook ................................................................ 11
Gambar 6. Tampilan Anaconda Navigator ........................................................... 12
Gambar 7. Smart Mirror ........................................................................................ 13
Gambar 8. Metode Agile ....................................................................................... 14
Gambar 9. Flowchart proses training .................................................................... 16
Gambar 10. Flowchart Convolutiona Neural Network ......................................... 17
Gambar 11. Flowchart aplikasi deteksi kualitas tidur ........................................... 18
Gambar 12. Instruksi pengguna ............................................................................ 18
Gambar 13. Hasil output ....................................................................................... 19
Gambar 14. Inisialisasi awal program ................................................................... 21
Gambar 15. Penentuan variabel ............................................................................ 22
Gambar 16. Pembuatan Network .......................................................................... 24
Gambar 17. Data Augmentation ........................................................................... 26
Gambar 18. Proses Shear ...................................................................................... 26
Gambar 19. Proses training ................................................................................... 28
Gambar 20. Hasil proses training .......................................................................... 28
Gambar 21. Code untuk menampilkan instruksi ................................................... 29
Gambar 22. Tampilan instruksi pada Smart Mirror .............................................. 29
Gambar 23. Pengambilan gambar pengguna ........................................................ 30
Gambar 24. Resize dan crop ................................................................................. 31
Gambar 25. Proses prediksi ................................................................................. 32
Gambar 26. Tampilan hasil pada Smart Mirror .................................................... 32
Gambar 27. Contoh penggunaan sistem................................................................ 33
Gambar 28. Contoh hasil foto 1 ............................................................................ 34
Gambar 29. Contoh hasil foto 2 ............................................................................ 34
Gambar 30. Contoh hasil pemotongan .................................................................. 34
Gambar 31. Data testing manual ........................................................................... 35
viii
Gambar 32. Contoh output testing ........................................................................ 35
Gambar 33. Foto pengujian pertama yang salah ................................................... 37
Gambar 34. Foto pengujian kedua yang salah ...................................................... 38
DAFTAR TABEL
ix
DAFTAR LAMPIRAN
x
BAB I
PENDAHULUAN
Karena masalah di atas, tugas akhir ini memiliki tujuan untuk mendeteksi
kualitas tidur seseorang. Hasil deteksi ini kemudian disajikan kepada pengguna.
Cara yang dipilih untuk menyajikan hasil deteksi kepada pengguna adalah
menggunakan Smart Mirror atau cermin cerdas.
1
digunakan untuk Image Processing misalnya untuk mendeteksi umur dan jenis
kelamin, deteksi tulisan, deteksi benda, dan lain – lain. [3]
1. Untuk Pengguna
a. Mendapatkan pemberitahuan mengenai kualitas tidurnya.
b. Mendapatkan notifikasi setiap menggunakan smart mirror sehingga user
selalu diingatkan untuk menjaga kualitas tidurnya.
2. Untuk Peneliti
2
a. Meningkatkan pengetahuan teknologi di bidang Machine Learning dan
Image Processing.
b. Menjadi tugas akhir sebagai salah satu syarat memperoleh gelar Sarjana
Komputer dari Program Studi Informatika, Universitas Surya.
3
BAB II
TINJAUAN PUSTAKA
4
Rangkuman
Kekurangan tidur menyebabkan banyak gangguan metabolisme misalnya obesitas
dan diabetes. Penelitian ini menggunakan kromatografi cairan untuk mengamati
pengaruh kekurangan tidur terhadap perubahan ritme plasma. Subjek pada
penelitian ini adalah 12 laki – laki muda. Terdapat perubahan metabolisme yang
terjadi pada kebanyakan subjek. [5]
5
No Judul Metode Data Research Gap
2 Effect of sleep Kromatografi Data Memerlukan
deprivation on the cairan tubuh metabolisme peralatan
human 12 laki – laki laboratorium untuk
metabolome muda. mendeteksi perubahan
metabolisme
seseorang.
3 Very Deep Convolutional ILSVRC Memerlukan jumlah
Convolutional Neural dataset (1.2 data yang sangat besar
Networks for Networks juta gambar, untuk melakukan
Large-Scale Image 1000 klasifikasi.
Recognition kategori)
6
2.2.1. Convolutional Neural Networks
Convolutional Neural Network adalah sebuah pengembangan dari Neural
Network. Neural Network sendiri adalah pemrosesan yang saling terhubung, yang
terinspirasi dari neuron otak. Neural Network menyimpan weight yang berguna
untuk menentukan seberapa penting sebuah data. Weight didapatkan dari training.
Neural Network banyak digunakan untuk memproses data, gambar, maupun suara.
Convolutional Neural Network merupakan pengembangan dari Neural Network
yang banyak digunakan untuk melakukan pemrosesan gambar. Convolutional
Neural Network menyimpan weight dalam bentuk filter yang digeser di setiap
bagian gambar, untuk kemudian menemukan array untuk bisa diproses di Neural
Network. [7]
7
fitur baru atau perbaikan jika dibandingkan dengan gambar aslinya. Pengolahan
citra dapat digunakan untuk peningkatan kualitas gambar, pemulihan gambar, atau
representasi gambar. [11]
8
BAB III
METODOLOGI PENELITIAN
9
Gambar 4. Contoh foto yang telah dipotong
10
Python dipilih sebagai bahasa pemrograman untuk pengembangan sistem
ini karena fleksibilitas-nya. Bahasa python sering digunakan untuk
pengembangan sistem Machine Learning karena memiliki library yang sangat
luas untuk membantu pengguna membuat aplikasi – aplikasi Machine Learning.
c. Tensorflow
Tensorflow adalah backend library yang banyak digunakan di penelitian ini.
Tensorflow merupakan library yang memiliki banyak fungsi yang bisa
membantu pembuatan Machine Learning.
d. Keras
Keras merupakan library yang menggunakan tensorflow sebagai backend-
nya. Banyak fungsi yang ada pada tensorflow standar sulit dipahami dan
digunakan oleh pengguna. Keras dapat membantu pengguna untuk memakai
tensorflow dengan lebih mudah dengan cara menggunakan fungsi – fungsi
keras untuk memanggil fungsi – fungsi tensorflow.
e. Jupyter Notebook
Jupyter Notebook merupakan sebuah IDE (Integrated Development
Environment) yang digunakan di penelitian ini. Jupyter Notebook merupakan
sebuah IDE yang unik, karena dapat menampilkan hasil output code sesuai
dengan bagian – bagian code yang ditentukan sendiri oleh pengguna. Jupyter
Notebook bekerja pada browser untuk memberi tampilan output secara mudah.
f. Anaconda Navigator
11
Anaconda Navigator adalah sebuah program manajemen Environment.
Environment mampu mengurangi error yang sering terjadi pada code dengan
cara membuat sebuah lingkungan Python sendiri yang tertutup.
g. Adobe Photoshop
Adobe Photoshop merupakan aplikasi yang digunakan untuk melakukan
preprocessing (pemotongan) gambar yang sudah didapatkan sebelumnya.
2. Smart Mirror
a. Microsoft Windows
Microsoft Windows merupakan sistem operasi yang digunakan pada Smart
Mirror.
b. Python
Python digunakan untuk menjalankan sistem deteksi kualitas tidur pada
Smart Mirror.
12
a. Laptop Lenovo Core i5, 8Gb ram, dan VGA Radeon R5 M230
Smart Mirror bekerja menggunakan laptop Lenovo dengan processor Core
i5, 8Gb ram, dan VGA Radeon R5 M230 untuk menjalankan aplikasi deteksi
kualitas tidur. Laptop bisa diganti menggunakan jenis lainnya, atau bisa
menggunakan mini PC.
b. Webcam
Webcam berguna untuk mengambil gambar pengguna untuk bisa diolah dan
dideteksi kualitas tidurnya untuk kemudian ditampilkan pada Smart Mirror.
c. Monitor
Monitor berguna untuk menampilkan program pada pengguna. Monitor
diletakkan di belakang cermin satu arah untuk bisa menampilkan ilusi kepada
pengguna seolah – olah cermin menampilkan informasi. Informasi yang
ditampilkan antara lain garis posisi peletakan mata, dan hasil deteksi kualitas
tidur.
13
BAB IV
ANALISIS DAN PEMBAHASAN
14
4.1.1.2. Pengguna Sistem
Pengguna sistem ini adalah pengguna – pengguna Smart Mirror yang
memerlukan sistem pemberi peringatan otomatis mengenai kualitas tidurnya.
Pengguna dari sistem ini tidak menggunakan make up yang berlebihan dan
kacamata (softlens diperbolehkan). Make up sederhana misalnya eyeshadow dan
eyeliner diperbolehkan.
15
training misalnya lokasi data, jumlah sampel, banyaknya epochs dan lain – lain.
Setelah itu dilakukan augmentasi data. Kemudian, dilakukan proses convolutional
neural network, perhitungan loss, optimisasi, dan nilai performa model. Hasil akhir
yang didapat adalah model yang bisa digunakan untuk melakukan prediksi.
16
Gambar 10. Flowchart Convolutiona Neural Network
17
Gambar 11. Flowchart aplikasi deteksi kualitas tidur
18
Setelah pengguna memulai program, maka aplikasi mulai memproses foto
pengguna, dan setelah proses selesai, program memunculkan tampilan sederhana
pada smart mirror yang berisi status kualitas tidur pengguna.
19
2. Monitor
Monitor berguna untuk menampilkan berbagai informasi kepada
pengguna dari balik cermin. Monitor yang digunakan adalah Dell
E2213HB berukuran 22 inch. Monitor ini memiliki resolusi 1920 x 1080
piksel. Tetapi monitor menggunakan resolusi 1366 x 768 karena laptop
yang digunakan sebagai sumber tampilan monitor hanya mensupport
resolusi sebesar 1366 x 768. Monitor diletakkan di belakang kaca.
3. Webcam
Webcam berfungsi untuk mendapatkan foto wajah pengguna. Webcam
yang digunakan adalah Logitech Pro 9000 dengan resolusi 1600 x 1200.
Webcam diletakkan di dalam bingkai cermin dengan ketinggian 127cm
dari atas lantai. Jarak pengguna dari Webcam saat menggunakan program
adalah 15cm.
20
4.2.1.1. Inisialisasi Awal
Untuk memulai training, sistem harus melakukan beberapa langkah. Langkah
pertama yang perlu dilakukan adalah memanggil library – library yang digunakan
pada program.
Code pertama yaitu memanggil library yang memiliki fungsi manipulasi image
yaitu ImageDataGenerator. Library ini nantinya bertugas membantu melakukan
Data Augmentation dan beberapa pemrosesan gambar lainnya.
Code berikutnya adalah memanggil fungsi Sequential. Fungsi ini berguna untuk
menentukan bentuk Neural Network yang digunakan selanjutnya.
Berikutnya adalah pemanggilan fungsi Conv2D, dan MaxPooling2D. Fungsi
Conv2D adalah fungsi yang berguna untuk membantu membuat layer convolutional
pada neural network yang dibuat. Fungsi MaxPooling2D adalah fungsi yang
digunakan untuk melakukan Max Pooling. Max Pooling adalah salah satu bagian
yang penting dalam operasi convolutional karena mampu memperkecil parameter
– parameter yang sudah didapatkan di layer convolutional. Jika tidak dilakukan
pooling, hasil convolutional akan menjadi sangat besar dan bisa berakibat pada
overfitting. Bagian 2D pada fungsi – fungsi di atas berarti dilakukan proses pada
data 2D, pada kasus ini adalah image.
Bagian berikutnya adalah pemanggilan fungsi – fungsi pembantu pada neural
network. Fungsi pertama yang bekerja adalah Activation Function. Fungsi ini
berguna untuk menentukan apakah sebuah neuron diaktivasi atau tidak. Tanpa
fungsi ini, semua neuron akan diaktifkan dan berakibat neural network tidak bisa
bekerja dengan baik.
21
Dropout adalah fungsi yang berguna untuk mengabaikan sejumlah kecil data
saat dilakukan training. Fungsi ini berguna untuk menjaga neural network dari
overfitting.
Flatten berfungsi untuk menyatukan seluruh output yang didapatkan dari proses
convolutional. Saat melakukan proses convolutional, normalnya didapatkan hasil
output berupa data yang terdiri dari banyak channel. Data – data ini tidak bisa
dilanjutkan ke neural network standar tanpa melalui proses flatten terlebih dahulu.
Flatten bertugas menyatukan seluruh data ini menjadi satu buah array yang mampu
diproses neural network.
Dense adalah fungsi yang berguna untuk membuat network yang telah dibuat
menjadi fully connected. Fully connected artinya setiap neuron dihubungkan
dengan neuron di layer setelahnya, dan seterusnya.
Img_width, dan img_height merupakan pengaturan tinggi dan lebar gambar yang
diproses oleh program. Semua image yang didapat, berapapun ukurannya kemudian
diubah menjadi ukuran yang telah ditentukan di sini. Hal ini membuat akurasi
menjadi lebih baik karena setiap image memiliki ukuran yang sama. Selain itu
gambar dengan ukuran kecil bisa mempercepat proses training. Sebenarnya untuk
22
mendapatkan hasil yang lebih baik, dapat digunakan gambar yang lebih besar, dan
convolutional layer yang lebih banyak. Tetapi hal ini memerlukan kekuatan
komputasi yang sangat besar yang tidak dimiliki di penelitian ini.
Berikutnya adalah penentuan letak data training dan validation. Bagian ini
berguna untuk memberitahu program di mana letak data disimpan. Bagian ini bebas
diubah sesuai dengan di mana letak penyimpanan data – data yang diperlukan. Data
training adalah data yang digunakan oleh program untuk mempelajari fitur – fitur
yang berguna. Karena program ini merupakan supervised learning maka
diperlukan validation data yang berguna sebagai acuan pembelajaran oleh program.
Kemudian harus ditentukan berapa jumlah data training yang diproses oleh
program. Pada penelitian ini digunakan 160 data training dan 40 data validation.
Jumlah data yang digunakan di penelitian ini cukup kecil jika dibandingkan dengan
image classifier standar. Jika ingin meningkatkan akurasi program, bisa
ditambahkan jumlah data di sini.
Tetapi jumlah data yang besar akan menambah lamanya waktu komputasi.
Selain itu jumlah training data dan validation data haruslah seimbang untuk
mencegah overfitting dan underfitting. Perbandingan yang cukup populer
digunakan adalah 4 training data dibanding 1 validation data.
Epochs merupakan jumlah dilakukannya pengulangan training. Setiap training
yang dilakukan bertugas mengubah weight yang sudah didapatkan sebelumnya.
Dilakukan sedikit demi sedikit pengubahan weight sampai ditemukan weight yang
optimal. Pada convolutional neural network, weight biasa dikenal sebagai filter.
Biasanya semakin banyak epochs yang dilakukan dapat meningkatkan akurasi
program. Tetapi akan ada satu titik di mana pelatihan tidak berfungsi lagi karena
weight sudah sangat optimal.
Batch_size berguna untuk mengumpulkan beberapa data menjadi satu untuk
mempercepat proses training. Misalnya, jika digunakan ukuran batch_size sebesar
10, maka digunakan10 data sekaligus untuk 1 kali training.
23
model = Sequential()
model.add(Conv2D(32, (3, 3), input_shape=input_shape))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(64))
model.add(Activation('relu'))
model.add(Dropout(0.1))
model.add(Dense(1))
model.add(Activation('sigmoid'))
model.compile(loss='binary_crossentropy',
optimizer='rmsprop',
metrics=['accuracy'])
24
Kemudian dilakukan pooling untuk membuat data menjadi lebih kecil. Pada
penelitian ini digunakan 2-layer convolutional karena jumlah training data yang
tidak besar dan tidak terlalu rumit. Jumlah layer yang terlalu banyak bisa
memperlambat proses training.
Setelah convolutional layer selesai, maka network berlanjut ke fully connected
layer yang sebenarnya merupakan neural network standar. Fungsi flatten berguna
untuk menyatukan data seperti yang sudah dijelaskan sebelumnya. Dense
merupakan jumlah neuron, activation berguna untuk mengaktifkan neuron, dan
dropout untuk mengurangi jumlah neuron untuk mengurangi overfitting.
Bagian terakhir adalah menentukan loss function, optimizer, dan metrics. Loss
function berguna untuk menemukan besarnya loss di setiap epoch. Loss function
yang digunakan di sini adalah binary crossentropy. Pada dasarnya function ini
bekerja dengan cara membandingkan hasil prediksi dengan hasil yang diinginkan.
Keterangan:
p = probabilitas yang diinginkan
q = probabilitas yang sebenarnya
25
data augmentation, data bisa ditambah menjadi beberapa kali lipat tergantung
berapa jenis augmentation yang dilakukan.
train_datagen = ImageDataGenerator(
rescale=1. / 255,
shear_range=0.2,
zoom_range=0.2,
horizontal_flip=True)
26
Proses augmentasi berikutnya adalah melakukan zooming. Foto – foto yang ada
dilakukan zoom sehingga sistem bisa mendeteksi fitur yang diinginkan seandainya
ukuran tidak tepat seperti data training.
Terakhir adalah melakukan horizontal flip. Hal ini merupakan augmentasi yang
terpenting pada sistem ini. Dengan melakukan augmentasi ini, foto mata kiri bisa
sekaligus menjadi training data untuk mata kanan.
Semua augmentasi ini terjadi saat dilakukan training. Program secara otomatis
menyimpan hasil – hasil augmentasi di penyimpanan sementara yang tidak terlihat
oleh pengguna selama melakukan training. Untuk data testing hanya dilakukan
normalisasi warna.
validation_generator = test_datagen.flow_from_directory(
validation_data_dir,
target_size=(img_width, img_height),
batch_size=batch_size,
class_mode='binary')
model.fit_generator(
train_generator,
steps_per_epoch=nb_train_samples // batch_size,
epochs=epochs,
validation_data=validation_generator,
validation_steps=5)
27
model.save('modelgen5.h5')
28
4.2.2. Implementasi Sistem Prediksi
4.2.2.1. Tampilan Instruksi Pengguna
Untuk membuat tampilan instruksi kepada pengguna, digunakan image yang
sudah dibuat sebelumnya. Untuk menampilkan image kepada pengguna, digunakan
perintah python sederhana.
29
4.2.2.2. Pengambilan Gambar Pengguna
Pengambilan gambar dilakukan dengan bantuan library OpenCV. Berikut adalah
code yang digunakan untuk melakukan pengambilan gambar melalui Webcam.
import cv2
cam = cv2.VideoCapture(0)
cv2.namedWindow("test")
img_counter = 0
while True:
ret, frame = cam.read()
if not ret:
break
k = cv2.waitKey(1)
if k%256 == 27:
#Tekan Esc untuk keluar
print("Keluar dari program")
break
elif k%256 == 13:
#Tekan Enter untuk mengambil foto
img_name = "opencv_frame_{}.png".format(img_counter)
cv2.imwrite(img_name, frame)
print("{} diambil!".format(img_name))
img_counter += 1
cam.release()
cv2.destroyAllWindows()
30
Setelah operasi selesai, program perlu mematikan kamera. Hal ini dilakukan
melalui perintah cam.release().
import cv2
image = cv2.imread("opencv_frame_0.png")
cv2.imwrite("test.jpg", cropped)
cv2.waitKey(0)
Pada awalnya gambar diresize menjadi berukuran 1600 x 1200. Hal ini
dilakukan karena OpenCV hanya mampu menerima dan memproses gambar sebesar
1600 x 1200. Setelah diresize, dilakukan cropping pada gambar untuk memotong
bagian mata pengguna, yang kemudian digunakan untuk prediksi.
31
model = load_model('nama model')
model.compile(loss='binary_crossentropy',
optimizer='rmsprop',
metrics=['accuracy'])
classes = model.predict_classes(img)
if classes[0] == 0:
print ("Kurang Tidur")
else:
print ("Normal")
Pada bagian ini dilakukan load.model untuk menggunakan model yang sudah
ditrain sebelumnya. Kemudian model harus dicompile kembali menggunakan
fungsi loss, optimizer, dan metrics yang sama dengan saat training. Kemudian
gambar yang sudah diproses sebelumnya harus diambil. Lalu harus dilakukan
reshape gambar menjadi 4 dimensi sehingga sama dengan model. Dan langkah
akhir adalah melakukan prediksi, dan menampilkan hasi prediksi pada pengguna.
32
4.3. Pengujian Sistem
Pada penelitian ini, pengujian dilakukan dengan menghitung akurasi dari
kualitas tidur pengguna sebenarnya dengan kualitas tidur pengguna yang diprediksi
oleh aplikasi. Pengujian dilakukan dengan 2 cara, yaitu dengan cara menggunakan
sistem secara langsung, dan menggunakan data yang diinput kepada sistem secara
manual.
Pengujian langsung dibantu oleh 5 relawan di Perumahan Bolsena Gading
Serpong. Pengguna meletakkan wajah dengan jarak 15cm dari Smart Mirror, dan
dengan posisi yang telah ditentukan sebelumnya.
Pertama relawan meletakkan wajahya dengan jarak 15cm dari Smart Mirror, di
posisi yang telah ditentukan. Kemudian, pengguna harus menekan tombol “enter”
untuk mendapatkan fotonya yang kemudian diproses oleh program. Hasil foto dapat
dilihat pada gambar di bawah.
33
Gambar 28. Contoh hasil foto 1
34
Kemudian hasil ditampilkan pada Smart Mirror. Selain pengujian secara
langsung, juga dilakukan pengujian secara input data manual. Pengujian kedua ini
dilakukan untuk mendapatkan data akurasi secara lebih cepat dan lebih banyak.
Berikut adalah contoh data – data yang digunakan untuk pengujian kedua ini.
Jumlah data yang digunakan untuk pengujian kedua ini berjumlah 40 data.
Sebanyak 40 data dipilih karena dinilai cukup mewakili 160 data training. Berikut
adalah hasil pengujian kedua:
35
Hasil dari pengujian ini dihitung akurasinya menggunakan rumus sederhana
𝑥
𝐴𝑘𝑢𝑟𝑎𝑠𝑖 = . 100% (4-2)
𝑦
Sumber: Accuracy assessment - A user's perspective [19]
Keterangan:
x = data benar
y = data total
Hasil pengujian dapat dilihat pada dabel di bawah. Tabel pertama adalah
pengujian dengan cara melakukan input image secara langsung.
36
Normal Normal Benar
Kurang tidur Kurang tidur Benar
Kurang tidur Kurang tidur Benar
Kurang tidur Kurang tidur Benar
Kurang tidur Kurang tidur Benar
Normal Kurang tidur Salah
Kurang tidur Kurang tidur Benar
Kurang tidur Kurang tidur Benar
Normal Normal Benar
Normal Normal Benar
Normal Normal Benar
Normal Normal Benar
Normal Normal Benar
Normal Normal Benar
Normal Normal Benar
Kurang tidur Normal Salah
Normal Normal Benar
Normal Normal Benar
Normal Normal Benar
Normal Normal Benar
Normal Normal Benar
Dari tabel pengujian pertama, terlihat terjadi 2 kesalahan dari 40 prediksi.
Akurasi pengujian pertama adalah 95%. Berikut adalah gambar – gambar yang
mengalami kesalahan prediksi.
37
Tabel 3. Hasil prediksi pengujian langsung
Pada tabel percobaan kedua, terlihat bahwa terjadi 2 kesalahan dari 10 kali
percobaan. Akurasi dari pengujian kedua adalah 80%. Berikut gambar – gambar
yang mengalami kesalahan.
38
Akurasi yang didapatkan oleh pengujian pertama dipengaruhi oleh beberapa
faktor, antara lain: tingkat kecerahan image dan tingkat kemiripan kategori image
tersebut dengan kategori lainnya. Seperti dapat terlihat di subbab sebelumnya,
gambar pertama merupakan foto mata normal, tapi terdeteksi sebagai foto
kekurangan tidur karena pekatnya bagian bawah mata orang tersebut. Pada foto
kedua, image terlalu gelap sehingga akan menyamarkan warna hitam pada bagian
bawah mata orang tersebut. Akibatnya foto kedua ini terdeteksi sebagai mata
normal, padahal seharusnya foto tersebut termasuk mata kekurangan tidur.
Pada pengujian dunia nyata, selain faktor di atas, terdapat beberapa faktor lain
yang berpengaruh, antara lain: tingkat pencahayaan saat pengambilan foto dan
posisi pengguna. Pada contoh foto pertama terjadi kesalahan deteksi karena
pencahayaan yang terlalu terang. Hal ini berakibat pada lingkaran hitam di bawah
mata menjadi terang dan terlihat seperti mata normal. Pada gambar kedua, dapat
dilihat posisi pengguna yang tidak tepat. Posisi pengguna terlalu jauh, dan tidak
tepat di tengah – tengah kamera. Hal ini berakibat mata tidak terdeteksi dan hasil
menjadi tidak akurat.
39
BAB V
KESIMPULAN DAN SARAN
5.1. Kesimpulan
Sistem deteksi kualitas tidur yang diajukan telah cukup memenuhi tujuan
penelitian ini, yaitu membuat sistem deteksi kualitas tidur otomatis menggunakan
algoritma Convolutional Neural Network. Sistem ini juga telah menunjukkan
bahwan algoritma Convolutional Neural Network merupakan sebuah algoritma
yang sangat baik untuk digunakan pada permasalahan image classification. Dengan
jumlah data yang tidak terlalu besar, Convolutional Neural Network mampu
memberikan tingkat akurasi yang cukup bisa diterima.
Pembuatan Smart Mirror dapat menggunakan bahan kaca transparan dan stiker
satu arah. Tampilan untuk pengguna dapat dibuat dengan meletakkan monitor pada
bagian belakang kaca. Bagian monitor yang menyala terang akan mampu dilihat
dari bagian depan Smart Mirror.
Tampilan kepada pengguna bisa dibuat dengan menggunakan bahasa
pemrograman python. Dengan tampilan yang cukup sederhana, pengguna telah
mampu menggunakan sistem deteksi kualitas tidur dan membaca hasil deteksi
kualitas tidur dengan cukup baik.
5.2. Saran
Terdapat beberapa saran untuk pengembangan purwarupa sistem deteksi kualitas
tidur pada smart mirror ini, antara lain:
1. Perlunya pengembangan sistem deteksi mata otomatis sehingga pengguna
tidak perlu menyesuaikan posisinya untuk menggunakan sistem ini.
2. Meningkatkan jumlah data yang digunakan untuk training sehingga akurasi
sistem juga akan meningkat.
40
DAFTAR PUSTAKA
[2] F. Freitag dan T. Cestari, “What Causes Dark Circles Under the Eyes?,”
Journal of Cosmetic Dermatology, vol. 6, pp. 211-215, 2007.
[4] L. Jin, Q. Niu, Y. Jiang, H. Xian, Y. Qin dan M. Xu, “Driver Sleepiness
Detection System Based on Eye Movements Variables,” Hindawi
Publishing Corporation, pp. 1-7, 2013.
41
[12] D. Forsyth dan J. Ponce, “Finding Templates Using Classifiers,” dalam
Computer Vision: A Modern Approach, New Jersey, Prentice Hall, 2003, pp.
581-622.
[13] A. Hossain dan A. Saddik, “Smart Mirror for Ambient Home Environment,”
Intelligent Environments, pp. 589-596, 2007.
42
LAMPIRAN
43
Lampiran 2. Data foto sukarelawan untuk pengujian
44