Anda di halaman 1dari 36

DROWSINESSLAB: APLIKASI DESKTOP DETEKSI KANTUK BERBASIS

FACIAL LANDMARK MENGGUNAKAN OPENCV, DLIB DAN TKINTER

Nama : Ririn Herawati


NIM : 1177070080
Dosen Pembimbing 1 : Eki Ahmad Zaki H., S.T., M.T.
Dosen Pembimbing 2 : Dr. Ing. Eueung Mulyana, S.T., M.Sc.
TABLE OF CONTENTS

01 PENDAHULUAN
02 TEORI DASAR

03 METODOLOGI PENELITIAN

04 PERANCANGAN DAN IMPLEMENTASI

05 PENGUJIAN DAN ANALISIS

06 PENUTUP
01 LATAR BELAKANG

Kelelahan saat bekerja memiliki dampak buruk bagi performa kerja dan
1 keselamatan Pekerja

Perancangan sistem deteksi kantuk berbasis kecerdasan buatan dan metode


2 pengenalan wajah lebih unggul dalam hal deteksi wajah dibandingkan otentikasi
biometrik lainnya

Sistem deteksi kantuk yang didesain menggunakan bahasa pemrograman


3 Python dapat membantu monitoring Pekerja ketika bekerja
01
STATE OF THE ART

Judul Tahun Deskripsi

Real-Time Eye Blink 2017 Sistem deteksi kantuk berbasis EAR dan SVM Aplikasi Desktop Deteksi Kantuk
Detection using Facial menggunakan input real time video
Landmarks Berbasis Facial Landmark
Menggunakan OpenCV, Dlib dan
Drowsiness Detection of a 2020 Sistem deteksi kantuk berbasis computer
Driver using Conventional vision berdasarkan kecepatan kedipan mata Tkinter
Computer Vision dan menguap • Input: Real Time Video
Application
• Output: Tulisan
Deteksi Kantuk 2020 Sistem deteksi kantuk berbasis CNN peringatan & bunyi
Menggunakan Kombinasi menggunakan kombinasi Haar Cascade
Haar Cascade dan alarm
Convolutional Neural • Metode deteksi wajah:
Network
1. Computer Vision
A Score based Approach to 2020 Sistem deteksi kantuk menggunakan bahasa 2. Haar cascade classifier
Detect Drowsiness using pemrograman python dengan library OpenCV, 3. Dlib’s facial landmark
OpenCV PyGame, file Haar Cascade
4. Eye Aspect Ration (EAR)
• Desain: Python 3.8
Using Tkinter of Python to 2016 Tkinter digunakan untuk membangun GUI
Create Graphical User pada skrip Python untuk mengontrol operasi
Interface (GUI) for Scripts beamlines LNLS
in LNLS
01 RUMUSAN MASALAH & TUJUAN

Rumusan Masalah

• Bagaimana rancang bangun aplikasi Drowsinesslab berbasis facial landmark


menggunakan OpenCV, Dlib dan Tkinter?

• Bagaimana kinerja aplikasi Drowsinesslab tersebut?

Tujuan

• Merancang dan membangun aplikasi deteksi kantuk berbasis facial


landmark menggunakan OpenCV, Dlib dan Tkinter.

• Mengetahui nilai akurasi menggunakan machine learning dan konsumsi


daya, CPU dan memori dari aplikasi deteksi kantuk
01
MANFAAT

Memperkaya khazanah salah satu bidang ilmu


pengetahuan yaitu Bahasa Pemrograman, khususnya
01 Bidang Akademis Python yang dapat dipakai untuk membangun sistem
kecerdasan buatan

Dengan menggunakan aplikasi deteksi kantuk ini


02 Praktis memberikan peringatan dini kepada seseorang ketika
sedang mengantuk agar terhindar dari kekeliruan dan
masalah kesehatan saat bekerja
01 BATASAN MASALAH

1. Jarak kamera dengan manusia adalah < 1 meter.


2. Aplikasi dapat bekerja dengan maksimal pada PC yang telah dilengkapi HD web camera.
3. Aplikasi dapat digunakan pada PC dengan OS Windows.
4. Tidak ada penghalang mata ketika kamera bekerja mendeteksi wajah kecuali kacamata bening atau transparan.
5. Intensitas cahaya yang cukup mendukung kinerja maksimal dari sistem yaitu sekitar 300-500 Lumen.
6. Dapat mendeteksi lebih dari satu orang, bersifat OR yaitu ketika satu orang mengantuk dan yang lainnya tidak mengantuk maka sistem akan memberi peringatan.
7. Untuk menutup layar kamera menggunakan tombol q pada keyboard.
8. Suara alarm dapat diperbesar sesuai volume PC.
9. Evaluasi kinerja menggunakan Machine Learning, parameter yang diukur berupa akurasi, error rate, recall, specificity, precision dan F1 score.
10. Evaluasi resource PC menggunakan Task Manager dan Open Hardware Monitor, parameter yang diukur berupa penggunaan CPU, Memory dan Power.
11. Metode deteksi wajah menggunakan computer vision, haar cascade classifier untuk lokalisasi wajah, dlib’s facial landmark untuk lokalisasi mata, dan Eye
Aspect Ratio (EAR) mengukur keterbukaan mata
12. Desain aplikasi menggunakan Python, OpenCV untuk mengolah gambar dan video, Tkinter membuat GUI, dan Pygame sebagai pustaka suara alarm
01 KERANGKA BERFIKIR

Masalah Kesempatan Pengujian


Kelelahan saat bekerja Aplikasi deteksi kantuk Dilakukan secara
memiliki dampak untuk monitoring langsung dan cara lain
buruk Pekerja

Pendekatan Analisis
• Deteksi kantuk berdasarkan Desain Evaluasi kinerja dan
durasi kedipan mata berbasis Python 3.8, Dlib, OpenCV, penggunaan resource
EAR Tkinter, webcam, PC OS
• Algoritma viola-jones dan fitur Windows
dlib untuk deteksi mata
• OpenCV mengolah gambar dan
video Hasil
• Tkinter membangun aplikasi Aplikasi deteksi kantuk
desktop Implementasi Drowsinesslab
• PC dengan OS Windows Mendeteksi pada ruangan
dengan intensitas cahaya
300-500 Lumen
02 METODE DETEKSI WAJAH

01. Dlib’s facial landmark detection


Dlib merupakan library yang memiliki 68 titik face landmark detection. 68 titik ini dapat dibagi menjadi
beberapa area tertentu seperti mata kiri, mata kanan, alis kiri, alis kanan, mulut, hidung dan rahang

02. Haar Cascade Classifier


Merupakan salah satu dari sedikit metode deteksi objek dengan kemampuan mendeteksi wajah yang
menawarkan komputasi kecepatan tinggi

03. Eye Aspect Ratio (EAR)   | 𝑝 2− 𝑝 6|+| 𝑝 3 − 𝑝 5|


Formula sebagai perkiraan status keterbukaan mata.
𝐸𝐴𝑅=
2 | 𝑝 1 − 𝑝 4|

04. Computer Vision


Kombinasi dari pemrosesan gambar dan pengenalan pola, output dari proses computer vision adalah pemahaman
citra. Bekerja dengan menggunakan algoritma dan sensor optik untuk merangsang visualisasi manusia untuk
secara otomatis mengekstrak informasi berharga dari suatu objek
02
TOOL & LIBRARY

PYTHON PYGAME

Merupakan bahasa pemrograman yang memiliki Sebuah grafik komputer dan pustaka suara yang
fungsi utilitas yang membantu dalam pemrosesan dirancang untuk digunakan dengan bahasa
awal. Pemrosesannya cepat dan didukung di hampir pemrograman Python.
semua platform.

OPENCV TKINTER

OpenCV adalah sebuah library yang digunakan untuk Paket GUI (Graphical User Interface) standar pada
mengolah gambar dan video sehingga mampu meng- Python. Memiliki beberapa widget diantaranya
ekstrak informasi didalamnya. Label Widget, Button Widget, Entry Widget, Radio
Button Widget, CheckBox Widget, Scale Widget dan
lainnya.
03
METODOLOGI PENELITIAN

Mulai

Integrasi Pengujian
Sistem Sistem
Studi
Literatur

Implementasi
Perumusan Sistem
Masalah Apakah Sistem
Ya
sesuai dan dapat Analisis Hasil
dijalankan?

Analisis Kebutuhan
dan Spesifikasi
Perancangan
Sistem Aplikasi Tidak

Selesai
04 PERANCANGAN SISTEM DETEKSI
KANTUK DROWSINESSLAB

PERSIAPAN • Install:
 Anaconda3
 Jupyter Notebook
 Python 3.8
• Membuat virtual environment. Install
library:
 Dlib
 OpenCV
 Pygame
 Tkinter, dll
• Unduh:
 Haarcascade_frontalface_default.xml
 Shape_predictor_68_face_landmark.dat Dirancang dan dibangun
 Icon menggunakan bahasa
 Alert.wav pemrograman Python 3.8
• Membuat desain: pada Laptop dengan RAM
 Background window 8GB yang terinstal
 Tombol Windows 10
04 PRINSIP KERJA SISTEM DETEKSI
KANTUK DROWSINESSLAB
Tidak
Start

Alarm OFF Ya Alarm OFF


Counter = 0
EAR < 0.3 ? Counter=Counter+1
Counter = 0
C

Wajah
Tidak
terdeteksi 𝐸𝐴𝑅=
 
| 𝑝 2 − 𝑝 6|+| 𝑝 3 − 𝑝 5|
Counter > 50 ?
2| 𝑝 1 − 𝑝 4 |
?

Ya
Ambil koordinat Ya
Ambil
mata
frame
Alarm ON

Ya Facial Landmark
Break Key “q”?
Detection

Tidak
Stop C
04
PERANCANGAN SOFTWARE

PERANCANGAN TAMPILAN
root=Tk()
root.title("Drowsiness Detector")
root.iconbitmap(r'icon.ico')
root.geometry('1366x768')
frame=Frame(root,bg="red")
frame.pack(fill=BOTH,expand=True)
img=PhotoImage(file="BACKGROUND_WINDOW.PNG")
label=ttk.Label(frame,image=img)
label.pack(fill=BOTH,expand=True)
btnImg=PhotoImage(file="TOMBOL.png")
button=tk.Button(root, image=btnImg,
command=generate)
button.place(relx=0.40,rely=0.85,relwidth=0.2
0,relheight=0.08 )
04
PERANCANGAN SOFTWARE

MENGATUR NILAI THRESHOLD


def generate():
pygame.mixer.init()
pygame.mixer.music.load('audio/alert.wav')
EYE_ASPECT_RATIO_THRESHOLD = 0.3
EYE_ASPECT_RATIO_CONSEC_FRAMES = 50
COUNTER = 0
face_cascade = cv2.CascadeClassifier("haarcascades/haarcascade_frontalface_default.xml")

KALKULASI NILAI EAR


def eye_aspect_ratio(eye):
A = distance.euclidean(eye[1],
eye[5])
B = distance.euclidean(eye[2],
eye[4])
C = distance.euclidean(eye[0],
eye[3])
ear = (A+B) / (2*C)
04
PERANCANGAN SOFTWARE

KONVERSI DARI FILE .PY MENJADI .EXE


Microsoft Windows [Version 10.0.19041.746]
(c) 2020 Microsoft Corporation. All rights
reserved. TAMPILAN AWAL
C:\Users\ASUS>activate env_dlib
 
(env_dlib) C:\Users\ASUS>pyinstaller
Drowsinesslab.py
--icon=C:/Users/ASUS/Downloads/Drowsinesslab/
icon.ico
04
INTEGRASI SOFTWARE DENGAN HARDWARE

Aplikasi Drowsinesslab dirancang pada sebuah Laptop ASUS VivoBook Ultra A413FA dengan

sistem operasi Windows 10 dan prosesor Intel Core i5-8265U/8GB/512G PCIe. Webcam yang

digunakan adalah kamera webcam dengan resolusi HD 720p. Aplikasi Drowsinesslab dapat

digunakan secara langsung tanpa perlu instalasi yang rumit pada PC atau Laptop lain.
04
IMPLEMENTASI

1. Buka folder aplikasi Drowsinesslab

2. Buka file Drowsinesslab.exe


Langkah-Langkah Penggunaan
Aplikasi Drowsinesslab 3. Klik tombol START

4. Akan muncul tampilan video

5. Menangkap frame

6. Mendeteksi kantuk

7. Menutup tampilan video menggunakan key “q”

8. Mengakhiri aplikasi dengan mengklik tombol X atau close pada window


04
ILUSTRASI PENGGUNAAN APLIKASI DROWSINESSLAB

Kondisi Tidak Mengantuk Kondisi Mengantuk


04
IMPLEMENTASI

Directory Tampilan Awal

Mendeteksi
START
Kantuk
05
SKENARIO PENGUJIAN
1. Pengujian Machine Learning
• Mengumpulkan dataset, eksplorasi data, pemodelan, melatih model, evaluasi model
• Hasil: nilai akurasi model lebih besar dari 0.91

2. Pengujian Algoritma Program


• Menyusun program deteksi kantuk dengan input gambar, menguji data test, mencatat hasil deteksi, memuat hasil ke dalam
confusion matrix dan menghitung nilai parameter confusion matrix

• Hasil: nilai akurasi, tingkat kesalahan (error rate), sensitifitas (recall), spesifikasi, presisi dan nilai F1

3. Pengujian Real-Time
• Mengumpulkan sampel, menguji sampel, mencatat hasil pengujian, membuat dan menghitung parameter confusion matrix

• Hasil: nilai akurasi, tingkat kesalahan (error rate), sensitifitas (recall), spesifikasi, presisi dan nilai F1

4. Pengamatan Penggunaan Resources


• Menggunakan Task Manager untuk mengamati konsumsi CPU dan memori saat aplikasi digunakan
• Menggunakan Open Hardware Monitor untuk mengamati konsumsi daya
05
PENGUJIAN MACHINE LEARNING

DATA TEST DAN DATA TRAIN Pengujian


Memuat dataset
Machine Learning
Nama Folder Kategori Jumlah Gambar

Train Sleep 800 Mengimpor library


Not_sleep 800

Test Sleep 200 Membuat label


pada dataset
Not_sleep 200

Mendesain model

Melatih model

Menampilkan hasil
akurasi dan loss
05
PENGUJIAN MACHINE LEARNING

Grafik Nilai Akurasi Model Grafik Nilai Loss Model

Accuracy = 0.98 Loss = 0.038


Val_accuracy = 0.96 Val_loss = 0.18
05
PENGUJIAN ALGORITMA PROGRAM

HASIL PENGUJIAN ALGORITMA PROGRAM


No. Data Test Hasil Deteksi Nilai

1 Sleep Sleep True


2 Sleep Sleep True DATA TEST
3 Sleep Sleep True
4 Sleep Sleep True
5 Sleep Sleep True
6 Not Sleep Sleep False
7 Not Sleep Not sleep True
8 Not Sleep Not Sleep True
9 Not Sleep Not Sleep True
10 Not Sleep Not Sleep True
HASIL
DETEKSI
05 PENGUJIAN ALGORITMA PROGRAM

VARIABEL CONFUSION MATRIX NILAI VARIABEL CONFUSION MATRIX


05
PENGUJIAN ALGORITMA PROGRAM

HASIL PERHITUNGAN VARIABEL CONFUSION MATRIX

Parameter Hasil
0.96
0.035
0.035
1
1
0.93
0.93
0.96
0.93

0.96
05
PENGUJIAN REAL-TIME

RESPONDEN TIDAK MENGANTUK RESPONDEN MENGANTUK


Pengujian real-time
dilakukan pada 10
responden yang
memberikan input wajah
mengantuk dan tidak
mengantuk
05
PENGUJIAN REAL-TIME

No. Sampel Kondisi Uji Hasil Deteksi Nilai


1 Responden 1 Tidak Mengantuk Tidak Mengantuk True
Mengantuk Mengantuk True
Hasil 2 Responden 2 Tidak Mengantuk Tidak Mengantuk True
Pengujian Mengantuk Mengantuk True
Real-Time 3 Responden 3 Tidak Mengantuk Tidak Mengantuk True
pada 10 Mengantuk Tidak Mengantuk False
Responden 4 Responden 4 Tidak Mengantuk Tidak Mengantuk True
Mengantuk Mengantuk True
5 Responden 5 Tidak Mengantuk Tidak Mengantuk True
Mengantuk Tidak Mengantuk False
6 Responden 6 Tidak Mengantuk Mengantuk False
Mengantuk Mengantuk True
7 Responden 7 Tidak Mengantuk Tidak Mengantuk True
Mengantuk Mengantuk True
8 Responden 8 Tidak Mengantuk Tidak Mengantuk True
Mengantuk Mengantuk True
9 Responden 9 Tidak Mengantuk Mengantuk False
05
PENGUJIAN REAL-TIME

CONFUSION MATRIX PENGUJIAN REAL-TIME HASIL PERHITUNGAN CONFUSION MATRIX

Parameter Hasil
0.95
0.05
0.05
0.96
0.96
0.94
0.94
0.95
0.94

0.95
05
PENGUJIAN RESOURCES

Waktu (menit) Hasil Pengamatan


PENGAMATAN
PENGGUNAAN CPU 1 36.5%
2 36.8%
3 36.6%
4 36.4%
5 36.6%
6 36.6%
7 36.6%
8 36.6%
9 36.5%
10 36.6%
05
PENGUJIAN RESOURCES

Waktu (menit) Hasil Pengamatan (MB)


PENGAMATAN
PENGGUNAAN 1 156.0
MEMORY
2 157.8
3 158.1
4 158.4
5 157.5
6 157.6
7 157.2
8 158.2
9 157.5
10 158.3
05
PENGUJIAN RESOURCES

Waktu (menit) Hasil Pengamatan (W)


PENGAMATAN
1 7.7
PENGGUNAAN
DAYA 2 7.9
3 7.9
4 8.1
5 7.7
6 7.9
7 7.9
8 7.9
9 7.9
10 7.9
05
PENGUJIAN RESOURCES

RATA-RATA NILAI PENGGUNAAN CPU, MEMORY


DAN DAYA

CPU Memory Power


36.6% 157.6 MB 7.9 W
06
KESIMPULAN

• Aplikasi Drowsinesslab dibangun menggunakan Python 3.8 yang digunakan untuk mendeteksi kantuk seseorang
berdasarkan facial landmark dapat dirancang dan diimplementasikan sesuai dengan tujuan dan perancangan.

• Pengujian kinerja dari aplikasi ini memiliki nilai akurasi yang baik yaitu 96% berdasarkan hasil perhitungan
confusion matrix dan machine learning

• Pengujian aplikasi Drowsinesslab secara real time menunjukkan nilai akurasi sebesar 95% oleh karena itu dapat
dikatakan aplikasi Drowsinesslab mampu mendeteksi kantuk dengan baik.

• Konsumsi memori saat aplikasi ini digunakan tidak begitu besar yaitu 156.7 MB. Sedangkan untuk penggunaan
CPU dan konsumsi daya saat aplikasi ini digunakan cukup besar yaitu 36.6% dan 7.9 W, hal ini dapat
menyebabkan laptop menjadi panas dan boros baterai saat menggunakan aplikasi Drowsinesslab.
06
SARAN

• Aplikasi ini selanjutnya dapat dikembangkan dengan menambahkan beberapa fitur tambahan seperti display

waktu, fitur untuk menyimpan waktu saat alarm berbunyi dan fitur untuk mencari tempat istirahat terdekat

seperti restaurant, hotel atau kedai kopi.

• Tampilan GUI Aplikasi ini dapat dibuat lebih menarik menggunakan kivy atau PyQT, namun memerlukan

instalasi yang sedikit rumit

• Lingkungan aplikasi dapat diperluas, bukan hanya digunakan untuk pekerja yang bekerja di depan komputer,

namun dapat juga digunakan untuk pekerja yang bekerja di lapangan melalui kamera CCTV.
TERIMA
KASIH

Anda mungkin juga menyukai