Syarif Hilmi Ramadhani-Fst
Syarif Hilmi Ramadhani-Fst
Skripsi
Oleh :
Syarif Hilmi Ramadhani
NIM: 11170910000036
vi
Penulis : Syarif Hilmi Ramadhani (11170910000036)
Program Studi : Teknik Informatika
Judul : PENGEMBANGAN ALAT PENDETEKSI
PENGGUNAAN MASKER DENGAN SSDLITE MOBILENETV3
SMALL BERBASIS RASPBERRY PI 4
ABSTRAK
vii
Writer : Syarif Hilmi Ramadhani (11170910000036)
Study Program : Teknik Informatika
Title : DEVELOPMENT OF MASK USE DETECTION
TOOL WITH SSDLITE MOBILENETV3 SMALL BASED ON
RASPBERRY PI 4
ABSTRACT
The use of masks is needed to reduce the spread of COVID-19. The single-stage
object detection method is faster than the two-stage detection method. The
disadvantage of the one-stage object detection method is that it has a level of
accuracy that is not as good as the two-stage detection method. SSDLite
MobilenetV3 Small is a model with a single-stage detection method. MobilenetV3
has higher accuracy than MobilenetV2 with 20-40 ms latency. SSDLite is an
efficient version of SSD. The purpose of this study is to develop a mask detection
tool with SSDLite MobilenetV3 Small based on Raspberry Pi 4. The method used
in this research is a system development method, namely the prototype method.
with systems using SSDLite MobilenetV3 Large, SSDLite MobilenetV2, SSD
MobilenetV2, SSDLite Mobileedets, and SSDMNV2 models. While the model
with the best detection is the SSDLite Mobilenet V2 model, the system with the
SSDLite MobilenetV3 Small model is still able to detect the use of masks.
viii
KATA PENGANTAR
ix
4. Dr. Imam Marzuki Shofi, MT selaku Ketua Program Studi Teknik
Informatika sekaligus menjadi Dosen Pembimbing Akademik penulis, yang
senantiasa membimbing dan meluangkan waktu dalam mengurus akademik
perkuliahan penulis.
5. Seluruh dosen dan staff UIN Jakarta, khususnya Fakultas Sains dan
Teknologi yang telah memberikan ilmu serta pengalaman yang berharga.
6. Teman – teman teknik Informatika 2017, khususnya kelas B, yang tidak bisa
disebutkan satu per satu.
7. Seluruh pihak yang tidak dapat disebutkan satu persatu yang secara
langsung maupun tidak langsung telah membantu dalam menyelesaikan
skripsi ini.
Penulisan skripsi ini masih jauh dari kata sempurna. Untuk itu, sangat
diperlukan kritik dan saran yang membangun bagi penulis. Akhir kata, semoga
laporan skripsi ini dapat bermanfaat bagi penulis dan orang lain.
Wassalamualaikum, Wr. Wb.
x
DAFTAR ISI
xi
2.6 MobilenetV3 .................................................................................................... 10
2.7 Mobiledets ....................................................................................................... 12
2.8 SSDMNV2....................................................................................................... 14
2.9 Raspberry Pi 4 Model B.................................................................................. 15
2.10 Raspberry Pi Cam V.1.................................................................................... 16
2.11 Tensorflow ...................................................................................................... 17
2.12 Keras................................................................................................................ 18
2.13 OpenCV ........................................................................................................... 18
2.14 Membuat Prototipe........................................................................................ 19
BAB 3 METODOLOGI PENELITIAN ........................................................................ 25
3.1 Metode Studi Literatur dan Pustaka ........................................................... 25
3.2 Metode Pengembangan Sistem ..................................................................... 29
3.2.1 Komunikasi ................................................................................................ 29
3.2.2 Perencanaan cepat .................................................................................... 29
3.2.3 Pemodelan cepat ........................................................................................ 30
3.2.4 Konstruksi.................................................................................................. 30
3.2.5 Penerapan dan Evaluasi ........................................................................... 31
3.3 Dataset ............................................................................................................ 32
3.4 Alur Penelitian ............................................................................................... 33
BAB 4 ANALISIS, PERANCANGAN SISTEM, IMPLEMENTASI DAN
PENGUJIAN SISTEM ................................................................................................... 34
4.1 Komunikasi .................................................................................................... 34
4.2 Perencanaan Cepat ........................................................................................ 34
4.2.1 Analisis Klasifikasi Peggunaan Masker .................................................. 35
4.2.2 Analisis Dataset ......................................................................................... 35
4.2.5 Analisis Kebutuhan Fungsional Sistem ................................................... 37
4.2.6 Analisis Kebutuhan Perangkat Keras ..................................................... 38
4.2.7 Analisis Kebutuhan Perangkat Lunak .................................................... 38
4.3 Pemodelan Cepat ........................................................................................... 39
4.4.1 Kamera ....................................................................................................... 40
4.4.2 Tombol Daya dan Tombol Program........................................................ 40
4.4.3 Kipas ........................................................................................................... 41
4.4.4 Monitor dan Sumber Daya ....................................................................... 42
4.4 Konstruksi ...................................................................................................... 42
xii
4.4.1 Model Deteksi ............................................................................................ 42
4.4.2 Alat ............................................................................................................. 47
4.5 Penerapan dan Evaluasi................................................................................ 50
BAB 5 HASIL DAN PEMBAHASAN ........................................................................... 63
5.1 Hasil Evaluasi Deteksi Penggunaan Masker ............................................... 63
5.2 Hasil Evaluasi FPS ........................................................................................ 67
5.3 Hasil Evaluasi Daya ....................................................................................... 67
5.4 Pengujian Akurasi Model ............................................................................. 68
5.5 Pengujian Jarak Deteksi ............................................................................... 79
5.6 Pengujian Jumlah Deteksi ............................................................................ 80
5.7 Pengujian Kondisi Pencahayaan .................................................................. 81
BAB 6 KESIMPULAN DAN SARAN ........................................................................... 83
6.1 Kesimpulan .................................................................................................... 83
6.2 Saran ............................................................................................................... 83
DAFTAR PUSTAKA ...................................................................................................... 84
LAMPIRAN..................................................................................................................... 86
xiii
DAFTAR GAMBAR
Gambar 2.1 Perbedaan image classfication dengan object detection ................................. 7
Gambar 2.2 SSD ................................................................................................................. 9
Gambar 2.3 Layer pada MobilenetV2 ............................................................................... 10
Gambar 2.4. Layer pada MobilenetV3 .............................................................................. 11
Gambar 2.5 Perbedaan Latensi MobilenetV3 Large dan Small ........................................ 11
Gambar 2.6 Perbedaan blok MobilenetV2 dengan MobilenetV3 ...................................... 12
Gambar 2.7 Arsitektur Mobiledets .................................................................................... 13
Gambar 2.8 Algoritma SSDMNV2 .................................................................................... 14
Gambar 2.9 Raspberry Pi 4 Model B ................................................................................ 15
Gambar 2.10 Pin GPIO raspberry pi 4 model b ............................................................... 16
Gambar 2.11 Paradigma prototipe .................................................................................... 19
Gambar 3.1 Alur Penelitian .............................................................................................. 33
Gambar 4.1 Contoh dataset yang digunakan oleh (Nagrath et al., 2 2021) ...................... 36
Gambar 4.2 Contoh dataset MaskedFace-Net .................................................................. 37
Gambar 4.3 Flowchart program........................................................................................ 37
Gambar 4.4 Blok diagram alat .......................................................................................... 39
Gambar 4.5 Port CSI ......................................................................................................... 40
Gambar 4.6 Rangkaian tombol ......................................................................................... 41
Gambar 4.7 Rangkaian kipas ............................................................................................ 41
Gambar 4.8 Port USB Type-C, micro HDMI .................................................................... 42
Gambar 4.9 Tahapan pembuatan model deteksi satu tahap .............................................. 43
Gambar 4.10 Tahapan pembuatan model klasifikasi penggunaan masker ....................... 47
Gambar 5.1 Hasil pengujian jarak..................................................................................... 80
Gambar 5.2 Hasil pengujian jumlah deteksi ..................................................................... 81
Gambar 5.3 Hasil pengujian saat cahaya redup ................................................................ 81
Gambar 5.4 Hasil pengujian saat gelap............................................................................. 82
Gambar 5.5 Hasil pengujian saat gelap dengan bantuan lampu........................................ 82
xiv
DAFTAR TABEL
Tabel 2.1 Perbandingan SSD dengan SSDLite .................................................................... 9
Tabel 2.2 Perbandingan Mobiledets dengan model lain ................................................... 12
Tabel 2.3 Perbandingan Mobiledets gpu dengan model lain ............................................ 13
Tabel 2.4 Spesifikasi Raspberry Pi Cam V.1 .................................................................... 16
Tabel 3.1 Kelebihan dan kekurangan literatur sejenis ...................................................... 27
Tabel 3.2 Perbedaan penelitian ......................................................................................... 29
Tabel 4.1 Kebutuhan perangkat keras ............................................................................... 38
Tabel 4.2 Kebutuhan perangkat lunak .............................................................................. 38
Tabel 4.3 Pelatihan tanpa Fine Tuning ............................................................................. 44
Tabel 4.4 Pelatihan dengan fine tuning ............................................................................. 45
Tabel 4.5 Tabel penampakan alat ..................................................................................... 48
Tabel 4.6 Percobaan SSDLite MobilenetV3 Small Menggunakan Fine Tuning .............. 51
Tabel 4.7 Percobaan SSDLite MobilenetV3 Small Tanpa Fine Tuning ........................... 52
Tabel 4.8 Percobaan SSDLite MobilenetV3 Large Menggunakan Fine Tuning .............. 53
Tabel 4.9 Percobaan SSDLite MobilenetV3 Large Tanpa Menggunakan Fine Tuning ... 54
Tabel 4.10 Percobaan SSD MobilenetV2 Menggunakan Fine Tuning ............................. 55
Tabel 4.11 Percobaan SSD MobilenetV2 Tanpa Menggunakan Fine Tuning .................. 56
Tabel 4.12 Percobaan SSDLite MobilenetV2 Menggunakan Fine Tuning ...................... 57
Tabel 4.13 Percobaan SSDLite MobilenetV2 Tanpa Menggunakan Fine Tuning ........... 58
Tabel 4.14 Percobaan SSDLite Mobiledets Menggunakan Fine Tuning ......................... 59
Tabel 4.15 Percobaan SSDLite Mobiledets Tanpa Menggunakan Fine Tuning ............... 60
Tabel 4.16 Percobaan SSDMNV2 .................................................................................... 61
Tabel 5.1 Rekap hasil evaluasi.......................................................................................... 65
Tabel 5.2 Hasil evaluasi fps .............................................................................................. 67
Tabel 5.3 Hasil evaluasi daya ........................................................................................... 68
Tabel 5.4 Pengujian Confusion Matrix ............................................................................. 69
Tabel 5.5 Hasil pengujian ................................................................................................. 78
xv
BAB 1
PENDAHULUAN
1
2
Ferdiansyah, 2020), dan (Militante & Dionisio, 2020). Ini membuktikan bahwa
Raspberry Pi dapat digunakan untuk penelitian pendeteksi penggunaan masker
dengan mengandalkan kemampuan komputasi SoC yang dimiliki oleh Raspberry
Pi. Raspberry Pi 3 Model B dengan SoC Quad Core 1.2GHz Broadcom BCM2837
64-bit dan versi selanjutnya, yaitu Raspberry Pi 4 dengan SoC Broadcom
BCM2711, Quad core Cortex-A72 (ARM v8) 64-bit. Pada penelitian (Abdul et al.,
2020) tidak terdapat keterangan seberapa cepat deteksi yang didapatkan saat
program objek deteksi dilakukan.
Pada algoritma SSDMNV2 terdapat dua tahapan untuk mendeteksi
penggunaan masker. Menurut (Elgendy, 2020), metode deteksi objek terbagi
menjadi 2 jenis, yaitu dua tahap dan satu tahap. Deteksi objek dua tahap memiliki
tingkat akurasi yang tinggi namun kecepatan deteksinya lebih lambat dari objek
deteksi satu tahap. Sedangkan deteksi objek satu tahap memiliki tingkat akurasi
yang lebih rendah, namun memiliki kecepatan deteksi yang lebih cepat
dibandingkan dengan metode objek deteksi dua tahap. Berdasarkan hasil studi
literatur, terdapat model deteksi satu tahap SSDLite MobilenetV3 Small. Menurut
(Howard et al., 2019), MobilenetV3 Small memiliki tingkat akurasi yang lebih
tinggi dari MoblinetV2 dengan latensi 20 – 40 ms saat diuji coba pada Pixel 1. Dan
pada penelitian (Sandler et al., 2019) diperkenalkan SSDLite yaitu versi yang lebih
efisien daripada SSD, pada SSDLite mengganti semua regular convolutions dengan
separable convolutions. Diharapkan dengan menggunakan SSDLite MobilenetV3
Small pada Raspberry Pi dapat meningkatkan kecepatan deteksi pada alat
pendeteksi penggunaan masker.
Berdasarkan uraian latar belakang yang telah dijelaskan, penulis ingin
membuat penelitian mengenai “Pengembangan Alat Pendeteksi Penggunaan
Masker dengan Ssdlite MobilenetV3 Small Berbasis Raspberry Pi 4” untuk
melihat apakah benar kecepatan deteksinya meningkat dan kemampuan deteksinya.
1.3.2 Proses
Berikut adalah proses yang terdapat pada skripsi ini, yaitu :
1. Studi Literatur.
2. Membuat model deteksi.
3. Membuat alat dan program dengan Raspberry Pi 4 Model B.
4. Melakukan evaluasi dengan model yang sudah dibuat
sebelumnya, dengan mencoba diterapkan pada alat, evaluasi
meliputi ; evaluasi deteksi, evaluasi fps, dan evaluasi daya
untuk mendapatkan data yang akan digunakan sebagai
pembanding dengan SSDLite MobilenetV3 Small. Model yang
ikut dievaluasin adalah ; SSDLite MobilenetV3 Large,
SSDLite MobilenetV2, SSDLite Mobiledets, SSD
MobilenetV2, dan SSDMNV2.
BAB I PENDAHULUAN
Dalam bab ini akan dibahas mengenai latar belakang, Batasan
masalah, tujuan, dan manfaat serta sistematika penulisan.
BAB II TINJAUAN PUSTAKA DAN LANDASAN TEORI
Dalam bab ini akan dibahas mengenai berbagai teori yang
mendasari analisis permasalahan dan berhubungan dengan
topik yang dibahas.
BAB III METODOLOGI PENELITIAN
7
8
(a) SSD hanya membutuhkan gambar masukan dan kotak kebenaran dasar
untuk setiap objek selama pelatihan. Dalam mode konvolusi, kami mengevaluasi
set kecil (misalnya 4) kotak default dengan rasio aspek yang berbeda di setiap lokasi
di beberapa peta fitur dengan skala yang berbeda (misalnya 8 × 8 dan 4 × 4 di (b)
dan (c)). Untuk setiap kotak default, kami memprediksi baik offset bentuk dan
kepercayaan untuk semua kategori objek ((c1, c2, · · · , cp)). Pada waktu pelatihan,
pertama-tama kami mencocokkan kotak standar ini dengan kotak kebenaran dasar.
Untuk contoh, kami telah mencocokkan dua kotak default dengan kucing dan satu
dengan anjing, yang diperlakukan sebagai positif dan sisanya sebagai negatif.
Kerugian model adalah jumlah tertimbang antara kehilangan lokalisasi (misalnya
Smooth L1 [6]) dan kehilangan kepercayaan (misalnya Softmax).
2.4 SSDLite
SSDLite merupakan varian yang lebih efisien daripada SSD. SSDLite
diperkenalkan pada penelitian MobilenetV2. Mengganti semua regular
convolutions dengan separable convolutions. Dengan perubahan tersebut membuat
penurunan pada jumlah parameter dan tingkat komputasi, seperti yang ditunjukkan
pada tabel di bawah : (Sandler et al., 2019)
Tabel 2.1 Perbandingan SSD dengan SSDLite
Params MAdds
SSD 14.8M 1.25B
SSDLite 2.1M 0.35B
2.5 MobilenetV2
Berdasarkan jurnal (Sandler et al., 2019). MobilenetV2 adalah penerus dari
MobilenetV1. Dalam arstitektur model penerusnya ini meningkatkan kinerja model
pada model mobile pada pengujian banyak tugas dengan spektrum yang berbeda
beda. Arsitektur MobilenetV2 terdiri atas 32 filter convolution layer, diikuti dengan
19 residual botteleneck layer. Berikut adalah arsitektur dari MobilenetV2.
Pada grafik di atas, terlihat bahwa model MobilenetV3 baik yang versi large dan
small unggul dari model lainnya. Dan MobilenetV3-small memiliki tingkat akurasi
yang lebih kecil daripada MobilenetV3-large, namun memiliki latensi yang lebih
kecil dari pada MobilenetV3-large. Perbedaan blok MobilenetV3 dengan
MobilenetV2 dapat dilihat pada gambar di bawah ini :
2.7 Mobiledets
Mobiledets merupakan paket mobile object detection model yang memiliki
kelebihan pada latensi dengan hanya menurunkan sedikit akurasi. Model ini sudah
teruji pada CPU, EdgeTPU, DSP, dan edge GPU. Pada penelitian (Xiong et al.,
2020) menggunakan metode nerual architecture search (NAS) secara substansial
dapat mengambil manfaat dari diperbesarnya ruang pencarian untuk mencapai hasil
dari pertukaran hasil akurasi dan latensi yang lebih baik. Berikut adalah hasil dari
pengujian Mobiledets dengan model pendeteksi objek lainnya berdasarkan
pengujian pada dataset COCO.
Kalau diperhatikan dari tabel di atas, terdapat CPU, EdgeTPU, serta DSP pada
target perangkat kerasnya. Karena pada Mobiledets memiliki arsitektur yang
berbeda sesuai dengan target dari perangkat kerasnya. Satu arstitektur yang tidak
Berikut adalah arsitektur dari masing – masing perangkat keras pada model
Mobiledets berdasarkan penelitian (Xiong et al., 2020)
arsitektur EdgeTPU, mendapatkan 25.5 mAP dengan latensi 6.8 ms. Perangkat
Pixel-4 DSP pada arsitektur DSP, mendapatkan 28.5 mAP dengan latensi 12.3 ms.
Dan perangkat Jetson Xavier GPU pada arsitektur GPU, mendapatkan 28.0 mAP
dengan latensi 3.2 ms. Pada penelitian ini, mobiledets akan diuji juga untuk melihat
perbandingan kinerja dengan metode SSDMNV2.
2.8 SSDMNV2
Pada penelitan (Nagrath et al., 2021) menjelaskan bahwa SSDMNV2 adalah
sebuah metode pendeteksi masker yang menggunakan OpenCV Deep Neural
Network berbasis Single Shot Multibox Detector sebagai pendeteksi wajah manusia
dan arsitektur MobilenetV2 sebagai pengklasifikasi penggunaan masker. Berikut
adalah algoritma dari proses pembuatan hingga implementasi pendeteksi wajah
pada SSDMNV2.
Ukuran Around 25 × 24 × 9 mm
Berat 3g
Resolusi 5 Megapixels
Mode Video 1080p30, 720p60 and 640 × 480p60/90
2.11 Tensorflow
Berdasarkan jurnal Tensorflow (Abadi et al., 2016). Tensorflow adalah
antarmuka untuk mengekspresikan algoritma pembelajaran mesin dan
implementasi untuk mengeksekusi algoritma tersebut. Perhitungan yang
diekspresikan menggunakan Tensorflow dapat dijalankan dengan sedikit atau tanpa
perubahan pada sistem heterogenus, mulai dari perangkat seluler seperti telepon
dan tablet hingga sistem terdistribusi berskala besar hingga ratusan mesin dan
ribuan perangkat komputasi seperti GPU.
Sistemnya fleksibel dan dapat digunakan untuk mengekspresikan berbagai
macam algoritma, termasuk pelatihan dan inferensi algortima untuk model neural
networ dan telah melakukan penelitian dan menerapkan pembelajaran mesin ke
banyak area ilmu computer dan bidang lainnya. Seperti pengenalan suara, computer
ini mememiliki antar muka C++, Python, Java, dan MATLAB dan mendukung
Windows, Linux, Android, dan Mac OS.
Model pendeteksi wajah yang digunakan dari pustaka OpenCV adalah
model dengan nama res10_300x300_ssd_iter_140000.caffemodel yang terdapat
pada laman github OpenCV.
25
27
Tahun
No Judul Penelitian Penulis Asal Universitas Penelitian Kelebihan Kekurangan
Deteksi Penggunaan Masker Universitas Islam
Menggunakan Xception Transfer Negeri Alauddin
1 Learning Darmatasia Makassar 2020 Memiliki 3 klasifkasi Deteksi tidak real-time
Dicky Giancini, Universitas - Pada proses uji cobanya
Identifikasi Penggunaan Masker Eva Yulia Pembangunan Terdapat menggunakan satu tipe
Menggunakan Algoritma Cnn Puspaningrum, Nasional “Veteran” Melakukan proses augmentasi masker
2 Yolov3-tiny Yisti Vita Via Jawa Timur 2020 data - Terdapat 2 klasifikasi
- Jenis masker yang ada gambar
- Mengintegrasikan deteksi mulut dan hidung memiliki
Prototipe Pendeteksi Masker Muhammad masker dengan kendali pintu akurasi yang rendah
Pada Ruangan Wajib Masker Abdul Rahman - Melakukan banyak ujicoba - Benda lain selain masker yang
Untuk Kendali Pintu Otomatis Irham Harfi Universitas terhadap alat menutupi sebagian wajah masuk
Berbasis Deep Learning Sebagai ,Dedi Ari Muhammadiyah - Program sudah diaplikasikan ke deteksi
3 Pencegahan Penularan Covid-19 Prasetya Surakarta 2020 di Raspberry Pi 4 Model B - Terdapat 2 klasifikasi
- Mengintegrasikan pendeteksi
Rancang Bangun New Normal Musakkarul masker dengan notifikasi
Covid-19 Masker Detektor Mu’minim telegram
Dengan Notifikasi Telegram Lambacing, Universitas Budi - Program sudah diaplikasikan - Streaming video sedikit lambat
4 Berbasis Internet Of Things Ferdiansyah Luhur 2020 di Raspberry Pi 4 Model B - Terdapat 2 klasifikasi
Sammy V.
Real-time Facemask Recognition Militante,
With Alarm System Using Deep Nanette V. University of Mengintegrasikan pendeteksi
5 Learning Dionisio Antique 2020 masker dengan notifikasi suara Terdapat 2 klasifikasi
Perbedaan Penelitian
Tabel 3.2 Perbedaan penelitian
3.2.1 Komunikasi
Pada tahapan ini komunikasi yang dilakukan adalah dengan mencari
informasi terkait, melalui referensi jurnal tentang deteksi penggunaan masker.
Kemudian dikomunikasikan kepada dosen pembimbing
3.2.4 Konstruksi
Pada tahap ini, dibagi menjadi dua. Pertama konstruksi model
klasifikasi penggunaan masker memanfaatkan GPU yang disediakan oleh
Google Colab. Untuk pelatihan model deteksi satu tahap, setelah melakukan
pelatihan model, penulis melakukan perhitungan F-Score berdasarkan nilai
precission dan recall yang didapatkan saat pelatihan. Sementara, untuk model
deteksi dua tahap, yang dilakukan pelatihan oleh penulis hanya MobilenetV2
untuk klasifikasinya saja, sehingga tidak ikut dihitung F-Score -nya. Tahap
berikutnya adalah konstruksi sistem pada Raspberry Pi 4 Model B. Tahap ini
meliputi pembuatan alat dan pembuatan program.
et al., 2020) yang menguji dengan setiap objek percobaan sebanyak 10 kali.
Sementara untuk menghitung tingkat akurasinya, pada pengujian ini penulis
menggunakan confusion matrix yang nantinya akan dihitung dengan rumus
akurasi.
Pengujian jarak deteksi dilakukan dengan mencari titik terjauh dari
deteksi alat. Selanjutnya penulis akan menandai titik jarak tersebut dan
mengukurnya. Pengujian dengan kondisi pencahayaan dilakukan dengan
mencoba melakukan deteksi dengan kondisi cahaya yang kurang memadai.
Dan yang terakhir adalah pengujian jumlah deteksi yang dapat dideteksi
dalam satu frame. Pada pengujian ini penulis mencoba mengarahkan alat ke
layar monitor, pada layar monitor terdapat foto dari penulis yang sudah
disatukan, sejumlah 8 foto. Hal ini dilakukan untuk mensimulasikan input
dengan banyak wajah.
3.3 Dataset
Dataset yang digunakan dalam penelitian ini terbagi menjadi dua,
pertama, dataset (Jiang et al., 2021) yang digunakan untuk pelatihan deteksi
objek. Dataset ini sudah terbagi menjadi dataset latih dan dataset uji.
Dataset latih memiliki 7385 gambar yang terdiri atas 6702 anotasi
menggunakan masker (withmask), 9680 anotasi tanpa masker
(without_mask) dan 320 anotasi menggunakan masker yang salah
(incorrect_mask). Sementara itu, dataset uji memiliki 1820 gambar yang
terdiri atas 993 anotasi menggunakan masker (withmask), 791 anotasi tanpa
masker (without_mask) dan 46 anotasi menggunakan masker yang salah
(incorrect_mask).
Kedua, dataset (Nagrath et al., 2021) sejumlah 5521 gambar
menggunakan masker dan 5521 gambar tidak menggunakan yang masker,
ditambahkan dengan dataset (Cabani et al., 2021) sejumlah 5521 gambar
menggunakan masker yang salah. Dataset ini digunakan untuk pelatihan
model klasifikasi gambar yang nantinya akan digunakan pada program yang
menggunakan model SSDMNV2.
BAB 4
ANALISIS, PERANCANGAN SISTEM, IMPLEMENTASI DAN
PENGUJIAN SISTEM
4.1 Komunikasi
Pada tahap ini penulis melakukan pengumpulan data terkait dengan dasar
teori. Metodologi penulisan, metodologi proses, dan acuan penelitian sejenis.
Dalam penelitan ini metdoe pengumpulan data yang dilakukan adalah studi
literatur.
Komunikasi dilakukan dengan dosen pembimbing untuk
mengkonsultasikan data yang didapatkan serta mengetahui gambaran sistem yang
diperlukan, untuk selanjutnya dijadikan bahan pertimbangan dalam membangun
sistem yang dibutuhkan.
4.2 Perencanaan Cepat
Pada tahap ini penulis membuat rencana sistem bekerja dengan
menggunakan beberapa analisis sebagaimana di bawah ini :
Gambar 4.1 Contoh dataset yang digunakan oleh (Nagrath et al., 2 2021)
4.4.3 Kipas
Menghubungkan kipas dengan Raspberry Pi 4 Model B
memerlukan perangkat pendukung, yaitu, resistor, dioda, dan transistor.
Hubungkan kabel positif kipas dengan pin 4 pada papan Raspberry Pi 4
Model B dan kutub katoda diode.
Untuk kabel negative kipas, akan dihubungkan dengan
collector transistor. Base dari transistor akan terhubung dengan resistor
sebelum menyambung dengan pin GPIO 14. Untuk emitter transistor
akan terhubung dengan pin 6 pada papan Raspberry Pi 4 Model B.
1 2
4.4 Konstruksi
Tahapan selanjutnya adalah konstruksi, pada tahap ini penulis bagi menjadi
2, yaitu pembuatan model deteksi di mana model ini nanti akan digunakan sistem
untuk mendeteksi penggunaan masker.
Dan berikut adalah hasil dari pealtihan model dengan menggunakan fine
tuning yang ditunjukkan pada tabel 4.4
Tabel 4.4 Pelatihan dengan fine tuning
Pada tabel 4.3 dan 4.4 Terlihat ada beberapa nilai langkah yang
kosong, itu dikarenakan tidak ada titik langkah pada grafik pasca pelatihan
yang mendekati checkpoint tersedia. Untuk SSDLite MobilenetV2 pada
pelatihan tanpa fine tuning menggunakan model dengan nilai F-Score yang
nomer dua tertinggi. Hal ini dikarenakan karena untuk nilai yang
tertingginya, antara titik langkah pada grafik dan checkpointnya berbeda
dan cenderung menurun grafiknya sampai ke titik langkah 20.000.
Pada gambar 4.10 dijelaskan mengenai tahapan pembuatan model
deteksi dua tahap. Pada pembuatan model deteksi dua tahap, dalam
penelitian ini hanya membuat bagian untuk mengklasifikasikan
penggunaan masker. Jadi pada model deteksi dua tahap, tahap pertama
adalah mengenali wajah manusia terlebih dahulu. Setelah wajah manusia
dikenali, nantinya akan diambil daerah dari wajah tersebut yang
selanjutnya akan dilakukan proses klasifikasi pada daerah tersebut. Proses
dua tahap ini terjadi pada Raspberry Pi. Pada penelitian ini menggunakan
SSD sebagai pendeteksi wajah yang sudah ada modelnya. Dan
MobilenetV2 untuk mengklasifikasikan penggunaan masker yang pada
penelitian ini penulis membuatnya sendiri.
Posisi Tampak
Atas
Depan
Bawah
Belakang
Kanan
Kiri
Dalam
minimal FPS 8.67 FPS. Serta konsumsi daya yang digunakan adalah 7.4 – 8.0 Watt.
Pada tabel 4.6 di bawah ini adalah hasil dari evaluasi kemampuan deteksinya.
3.33 FPS. Serta konsumsi daya yang digunakan adalah 7.3 – 8.0 Watt. Pada tabel
4.13 di bawah ini adalah hasil dari evaluasi kemampuan deteksinya.
BAB 5
HASIL DAN PEMBAHASAN
Berdasarkan tabel hasil evaluasi deteksi pada bab 4, setiap model dengan
konfigurasi pelatihan yang berbeda memiliki hasil evaluasi deteksi yang berbeda.
Dari evaluasi deteksi, dapat dilihat pada tabel 4.12 Model SSDLite Mobilenet V2
dengan pelatihan menggunakan finet tuning memiliki kemampuan deteksi yang
lebih baik daripada model lainnya yang diuji dalam penelitian ini. Namun, dalam
penelitian ini model ini memiliki kemampuan deteksi yang lebih baik daripada
model lainnya karena mampu mendeteksi semua input dengan mudah. Sementara,
dengan tipe model yang sama namun melakukan pelatihan tanpa fine tuning
mendapatkan hasil masih terdapat kesalahan deteksi pada saat diuji coba
menggunakan masker dengan cara yang salah. Kesalahan saat mendeteksi
menggunakan masker dengan penggunaan yang salah juga ditemui di model
lainnya selain model SSDLite Mobilenet V2 dengan fine tuning. Namun, untuk
model SSDLite Mobiledets menggunakan fine tuning mendapatkan hasil mudah
mendeteksi penggunaan masker yang salah ketika menggunakan masker kain, serta
model dengan SSDMNV2 berhasil mendeteksi penggunaan masker yang salah
namun sulit.
Terdapat ketidakmampuan deteksi saat diuji coba menggunakan input
menutup wajah dengan kain dan koran pada model SSDLite Mobiledets tanpa fine
tuning dan model SSD Mobilenet V2 dengan fine tuning. Serta kesalahan deteksi
saat diuji coba input menutup wajah dengan koran pada model SSD Mobiledets
dengan fine tuning dan model dengan SSDMNV2.
Untuk model yang dijadikan tujuan penelitian pada penelitian ini sendiri,
adalah SSDLite MobilenetV3 Small. Terdapat dua konfigurasi penelitian pada
penelitian ini, pelatihan dengan fine tuning dan pelatihan tanpa fine tuning. Kedua
model sama-sama tidak berhasil dalam mendeteksi penggunaan masker yang salah.
Namun saat evaluasi, ditemukan model dengan pelatihan tanpa fine tuning memiliki
kesulitan deteksi saat dicoba dengan input menutup wajah dengan tangan dan
koran. Oleh karena itu, untuk pengujian lanjutan akan menggunakan SSDLite
MobilenetV3 Small dengan fine tuning.
Pada penelitian ini dapat mengklasifikasikan menutup wajah dengan koran
dengan tidak menggunakan masker, sementara pada penelitian (Abdul et al., 2020)
saat menutup wajah dengan hal lain seperti buku dan tisu masih diklasifikasikan
sebagai menggunakan masker.
Perlu dijadikan catatan bahwa setiap pelatihan dengan konfigurasi yang
berbeda dapat menghasilkan hasil akhir model yang berbeda juga. Hasil evaluasi
deteksi ini tidak dapat menjadikan patokan model A lebih baik kemampuan
deteksinya daripada model B secara keseluruhan, karena setiap pelatihan bisa
dengan konfigurasi tertentu dapat menghasilkan hasil akhir model yang berbeda.
Adapun rekap hasil evaluasi deteksi pada penelitian ini ditunjukkan pada tabel 5.1
Di bawah ini.
7. SSD Mudah terdeteksi Terkadang Mudah terdeteksi Mudah terdeteksi Terdeteksi tanpa Tidak Tidak terdeteksi
MobilenetV2 terdeteksi salah, masker, terdeteksi
Fine Tuning terkadang seharusnya
tereteksi benar, terdeteksi salah
terkadang tidak
terdeteksi
8. SSD Mudah terdeteksi Terdeteksi Mudah terdeteksi Mudah terdeteksi Mudah terdeteksi Mudah terdeteksi Mudah terdeteksi
MobilenetV2 benar,
Tanpa Fine seharusnya
Tuning terdeteksi salah
9. SSDLite Mudah terdeteksi Terkadang Mudah terdeteksi Mudah terdeteksi Mudah terdeteksi Mudah terdeteksi Terdeteksi
Mobiledets terdeteksi benar, benar,
Fne Tuning terkadang seharusnya
terdeteksi salah terdeteksi tanpa
masker
10. SSDLite Mudah terdeteksi Terdeteksi tanpa Mudah terdeteksi Mudah terdeteksi Terdeteksi benar, Tidak Tidak terdeteksi
Mobiledets masker, seharusnya salah terdeteksi
Tanpa Fine seharusnya salah
Tuning
11. SSDMNV2 Mudah terdeteksi Harus Mudah terdeteksi Mudah terdeteksi Berhasil terdeteksi Mudah terdeteksi Terdeteksi benar,
mendekatkan namun sulit seharusnya
wajah ke kamera terdeteksi tanpa
masker
No Percobaan FPS
1. SSDLite MobilenetV3 Small Fine Tuning 8.67 – 9.79 FPS
2. SSDLite MobilenetV3 Small Tanpa Fine 8.83 – 10.0 FPS
Tuning
3. SSDLite MobilenetV3 Large Fine Tuning 3.81 – 4.26 FPS
4. SSDLite MobilenetV3 Large Tanpa Fine 4.01 – 4.21 FPS
Tuning
5. SSDLite MobilenetV2 Fine Tuning 3.43 – 3.57 FPS
6. SSDLite MobilenetV2 Tanpa Fine Tuning 3.33 – 3.49 FPS
7. SSD MobilenetV2 Fine Tuning 3.21 – 3.42 FPS
8. SSD MobilenetV2 Tanpa Fine Tuning 3.27 – 3.42 FPS
9. SSDLite Mobiledets Fine Tuning 3.59 – 3.81 FPS
10. SSDLite Mobiledets Tanpa Fine Tuning 3.40 – 3.83 FPS
11. SSDMNV2 0.78 – 1.42 FPS
No Percobaan Daya
1. SSDLite MobilenetV3 Small Fine Tuning 7.4 – 8.0 W
2. SSDLite MobilenetV3 Small Tanpa Fine 7.4 – 8.1 W
Tuning
3. SSDLite MobilenetV3 Large Fine Tuning 7.3 – 8.0 W
4. SSDLite MobilenetV3 Large Tanpa Fine 7.3 – 8.0 W
Tuning
5. SSDLite MobilenetV2 Fine Tuning 7.2 – 7.9 W
6. SSDLite MobilenetV2 Tanpa Fine Tuning 7.3 – 8.0 W
7. SSD MobilenetV2 Fine Tuning 7.3 – 8.0 W
8. SSD MobilenetV2 Tanpa Fine Tuning 7.7 – 8.1 W
9. SSDLite Mobiledets Fine Tuning 7.3 – 8.1 W
10. SSDLite Mobiledets Tanpa Fine Tuning 7.3 – 8.0 W
11. SSDMNV2 8.1 – 9.2 W
Berdasarkan hasil evaluasi pada tabel 5.3, model deteksi satu tahap memiliki
konsumsi daya sedikit lebih kecil dibandingkan dengan model deteksi dua tahap.
Model deteksi satu tahap memiliki konsumsi daya antara 7,3 W – 8,1 W. Sementara
model deteksi dua tahap memiliki konsumsi daya anatara 8.1 W – 9,6 W. Perbedaan
daya yang dibutuhkan tidak begitu berbeda jauh.
Aktual Salah 0 0 0
Aktual Tanpa 1 6 30
Masker
Aktual dengan hasil deteksi yang tidak tepat ditemukan saat melakukan pengujian
untuk prediksi salah. Tidak ada hasil prediksi salah yang memiliki aktual salah juga.
Sementara, untuk prediksi tanpa masker memiliki hasil deteksi yang tepat untuk
semua pengujiannya. Dan prediksi benar memiliki satu hasil aktual yang tidak
salah, ini ketika mencoba menggunakan input dengan menundukkan wajah ke
kamera, dan menghasilkan hasil aktual tanpa masker. Berdasarkan hasil tersebut
dapat diketahui bahwa yang berbeperan besar sehingga nilai akurasi pengujian
model ini menjadi 70% karena ketidakmampuan model dalam mendeteksi
penggunaan masker yang salah.
Selanjutnya, saat keadaan gelap tanpa pencahayaan, alat tidak mampu mendeteksi
apapun.
Saat dalam keadaan gelap namun menggunakan pencahayaan tambahan, alat dapat
mendeteksi tidak menggunakan masker dan saat menggunakan masker medis,
sementara, saat menggunakan masker kain dengan warna biru tua, terdeteksi tanpa
masker
Dari pengujian ini, dapat terlihat kalau alat membutuhkan pencahayaan yang
memadai untuk mendapatkan hasil deteksi yang maksimal
BAB 6
KESIMPULAN DAN SARAN
6.1 Kesimpulan
Dari penelitian ini dapat ditarik kesimpulan, bahwa SSDLite MobilenetV3
Small, memiliki kecepatan deteksi yang lebih tinggi daripada model lain yang diuji
dalam penelitian ini. Model SSDLite MobilenetV3 Small dapat mengklasifikasikan
menutup wajah dengan koran dengan tidak menggunakan masker. Namun, untuk
kemampuan deteksinya masih kalah dibandingkan model SSDLite MobilenetV2
saat mendeteksi penggunaan masker yang salah. Nilai akurasi yang didapatkan
berada di angka 70%. Serta, karena SSDLite MobilenetV3 Small termasuk model
deteksi satu tahap, konsumsi daya yang dihasilkan sedikit lebih kecil daripada
program dengan model deteksi dua tahap. Walaupun demikian, konsumsi daya
yang sedikit lebih kecil tersebut juga dapat terjadi karena program untuk
menjalankan model deteksi satu tahap dan deteksi dua tahap berbeda. Alat memiliki
keterbatasan dalam hal jarak deteksi, kemampuan deteksi saat kondisi cahaya yang
kurang memadai, serta jumlah deteksi yang dapat terdeteksi maksimal 7 objek.
6.2 Saran
Adapun untuk mengembangkan penelitian ini lebih jauh, penulis memiliki
beberapa saran, yaitu :
1. Dapat melakukan penelitian dengan menggunakan dataset atau konfigurasi
pelatihan model yang berbeda dari yang penelitian ini gunakan. Dan dilihat
apakah ada perbedaan hasil kemampuan deteksi yang dihasilkan.
2. Dapat melakukan penelitian dengan menggunakan tipe kamera yang berbeda
dari penelitian ini. Pada penelitian ini menggunakan kamera Raspberry Pi
Cam V.1. Dengan menggunakan tipe kamera yang berbeda apakah dapat
meningkatkan kemampuan deteksi alat atau tidak.
3. Dapat dikembangkan lebih lanjut untuk penggunaan terhadap objek orang
yang mengenakan jilbab, pada penelitian ini belum melakukan
pengembangan ke arah itu.
DAFTAR PUSTAKA
Abadi, M., Agarwal, A., Barham, P., Brevdo, E., Chen, Z., Citro, C., Corrado, G.
S., Davis, A., Dean, J., Devin, M., Ghemawat, S., Goodfellow, I., Harp, A.,
Irving, G., Isard, M., Jia, Y., Jozefowicz, R., Kaiser, L., Kudlur, M., …
Zheng, X. (2016). TensorFlow: Large-Scale Machine Learning on
Heterogeneous Distributed Systems. Distributed, Parallel, and Cluster
Computing (Cs.DC), 2. http://arxiv.org/abs/1603.04467
Abdul, M., Irham, R., & Prasetya, D. A. (2020). PROTOTIPE PENDETEKSI
MASKER PADA RUANGAN WAJIB MASKER UNTUK KENDALI
PINTU OTOMATIS BERBASIS DEEP LEARNING SEBAGAI
PENCEGAHAN PENULARAN COVID-19. Simposium Nasional RAPI XIX
Tahun 2020 FT UMS, 47–55. http://hdl.handle.net/11617/12377
Aprilian Anarki, G., Auliasari, K., & Orisa, M. (2021). Penerapan Metode Haar
Cascade Pada Aplikasi Deteksi Masker. JATI (Jurnal Mahasiswa Teknik
Informatika), 5(1), 179–186. https://doi.org/10.36040/jati.v5i1.3214
Cabani, A., Hammoudi, K., Benhabiles, H., & Melkemi, M. (2021). MaskedFace-
Net – A dataset of correctly/incorrectly masked face images in the context of
COVID-19. Smart Health, 19(November 2020), 100144.
https://doi.org/10.1016/j.smhl.2020.100144
Darmasita. (2020). Deteksi Penggunaan Masker Menggunakan Xception Transfer
Learning. JURNAL INSTEK (Informatika Sains Dan Teknologi), 5, 279–288.
https://doi.org/https://doi.org/10.24252/instek.v5i2.20132
Elgendy, M. (2020). Deep Learning for Vision Systems. Manning Publications Co.
Giancini, D., Puspaningrum, E. Y., & Via, Y. V. (2020). Identifikasi Penggunaan
Masker Menggunakan Algoritma CNN YOLOv3-Tiny. Seminar Nasional
Informatika Bela Negara (SANTIKA), 1, 153–159.
Howard, A., Sandler, M., Chen, B., Wang, W., Chen, L. C., Tan, M., Chu, G.,
Vasudevan, V., Zhu, Y., Pang, R., Le, Q., & Adam, H. (2019). Searching for
mobileNetV3. Proceedings of the IEEE International Conference on
Computer Vision, 2019-Octob, 1314–1324.
https://doi.org/10.1109/ICCV.2019.00140
Huang, J., Rathod, V., Sun, C., Zhu, M., Korattikara, A., Fathi, A., Fischer, I.,
Wojna, Z., Song, Y., Guadarrama, S., & Murphy, K. (2017). Speed/accuracy
trade-offs for modern convolutional object detectors. Proceedings - 30th
IEEE Conference on Computer Vision and Pattern Recognition, CVPR 2017,
2017-Janua, 3296–3305. https://doi.org/10.1109/CVPR.2017.351
Jiang, X., Gao, T., Zhu, Z., & Zhao, Y. (2021). Real-time face mask detection
method based on yolov3. Electronics (Switzerland), 10(7), 1–17.
https://doi.org/10.3390/electronics10070837
Kaidong Li, Ma, W., Sajid, U., Wu, Y., & Wang, G. (2019). Object Detection
with Convolutional Neural Networks. Computer Vision and Pattern
Recognition, 1. https://doi.org/https://doi.org/10.48550/arXiv.1912.01844
Kementrian Kesehatan. (2020). QnA : Pertanyaan dan Jawaban Terkait COVID-
19. https://infeksiemerging.kemkes.go.id/uncategorized/qna-pertanyaan-dan-
jawaban-terkait-covid-19
Keras. (2021a). About Keras. https://keras.io/about/
Keras. (2021b). Keras Applications. https://keras.io/api/applications/
LAMPIRAN
Script saat membuat pemodelan MobilenetV2 di Colab
Warna, menandakan beda cell
57.
58. model.compile(optimizer=tf.optimizers.Adam(),
59. loss='categorical_crossentropy',
60. metrics = ['accuracy'])
61.
62. with tf.device('/device:GPU:0'):
63. history = history = model.fit(train_generator,
64. validation_data=validation_generator,
65. validation_steps= validation_generator.samples // batch_size,
66. steps_per_epoch = train_generator.samples // batch_size,
67. epochs=10,
68. verbose=2)
69.
70. import matplotlib.pyplot as plt
71. plt.plot(history.history['accuracy'])
72. plt.plot(history.history['val_accuracy'])
73. plt.title('Akurasi Model')
74. plt.ylabel('accuracy')
75. plt.xlabel('epoch')
76. plt.legend(['train', 'test'], loc='upper left')
77. plt.show()
78.
79. plt.plot(history.history['loss'])
80. plt.plot(history.history['val_loss'])
81. plt.title('Loss Model')
82. plt.ylabel('loss')
83. plt.xlabel('epoch')
84. plt.legend(['train', 'test'], loc='upper left')
85. plt.show()
86.
87. model.save("masker_polos1.h5")
1. %tensorflow_version 1.x
2.
3. %cd models/research
4. ! protoc object_detection/protos/*.proto --python_out=.
5. ! cp object_detection/packages/tf1/setup.py .
6. ! python -m pip install .
7. ! python object_detection/builders/model_builder_test.py
8.
9. from google.colab import drive
10. drive.mount('/content/gdrive')
11.
12. test_record_fname = '/content/gdrive/MyDrive/semangat1/test.record'
13. train_record_fname = '/content/gdrive/MyDrive/semangat1/train.record'
14. label_map_pbtxt_fname = '/content/gdrive/MyDrive/semangat1/label_map.pbtxt'
15.
27. faces = []
28. locs = []
29. preds = []
30.
31. # loop over the detections
32. for i in range(0, detections.shape[2]):
33. # extract the confidence (i.e., probability) associated with
34. # the detection
35. confidence = detections[0, 0, i, 2]
36.
37. # filter out weak detections by ensuring the confidence is
38. # greater than the minimum confidence
39. if confidence > MIN_CONF:
40. # compute the (x, y)-coordinates of the bounding box for
41. # the object
42. box = detections[0, 0, i, 3:7] * np.array([w, h, w, h])
43. (startX, startY, endX, endY) = box.astype("int")
44.
45. # ensure the bounding boxes fall within the dimensions of
46. # the frame
47. (startX, startY) = (max(0, startX), max(0, startY))
48. (endX, endY) = (min(w - 1, endX), min(h - 1, endY))
49.
50. # extract the face ROI, convert it from BGR to RGB channel
51. # ordering, resize it to 224x224, and preprocess it
52. face = frame[startY:endY, startX:endX]
53. face = cv2.cvtColor(face, cv2.COLOR_BGR2RGB)
54. face = cv2.resize(face, (224, 224))
55. face = img_to_array(face)
56. face = preprocess_input(face)
57.
58. # add the face and bounding boxes to their respective
59. # lists
60. faces.append(face)
61. locs.append((startX, startY, endX, endY))
62.
63. # only make a predictions if at least one face was detected
64. if len(faces) > 0:
65. # for faster inference we'll make batch predictions on *all*
66. # faces at the same time rather than one-by-one predictions
67. # in the above `for` loop
68. faces = np.array(faces, dtype="float32")
69. preds = maskNet.predict(faces, batch_size=32)
70. return (locs, preds)
71.
72. # return a 2-tuple of the face locations and their corresponding
73. # locations
74. # construct the argument parser and parse the arguments
75. MODEL = "model.h5"
76. MIN_CONF = 0.5
77. # load our serialized face detector model from disk
78. print("[INFO] loading face detector model...")
79. faceNet = cv2.dnn.readNet("face_detector/deploy.prototxt", "face_detector/res10_300x300_ssd_iter
_140000.caffemodel")
80.
81. # load the face mask detector model from disk
82. print("[INFO] loading face mask detector model...")
83. maskNet = load_model(MODEL)
84.
85. # initialize the video stream and allow the camera sensor to warm up
86. print("[INFO] starting video stream...")
87. #vs = VideoStream(src=0).start()
88. vs = VideoStream(resolution=(1980,1080),framerate=30).start()
89. time.sleep(2.0)
90. frame_rate_calc = 1
91. freq = cv2.getTickFrequency()
92. counter = 0
93. min_fps = 0
94. max_fps = 0
95. # loop over the frames from the video stream
96. while True:
97. # grab the frame from the threaded video stream and resize it
98. # to have a maximum width of 400 pixels
99. t1 = cv2.getTickCount()
100. frame = vs.read()
101. frame = imutils.resize(frame, width=1080)
102. # detect faces in the frame and determine if they are wearing a
103. # face mask or not
104. (locs, preds) = detect_and_predict_mask(frame, faceNet, maskNet)
105. # Calculate framerate
106.
107. # loop over the detected face locations and their corresponding
108. # locations
109. for (box, pred) in zip(locs, preds):
110. # unpack the bounding box and predictions
111. counter = counter + 1
112. (startX, startY, endX, endY) = box
113. ( mask_worn_incorrectly, with_mask,without_mask ) = pred
114.
115. # determine the class label and color we'll use to draw
116. # the bounding box and text
117. if with_mask > without_mask and with_mask > mask_worn_incorrectly:
118. label = "benar"
119. color = (0, 255, 0)
120. else:
121. if without_mask > mask_worn_incorrectly:
122. label = "tanpa masker"
123. color = (0,0,255)
124. elif without_mask < mask_worn_incorrectly:
125. label = "salah"
126. color = (255,0,0)
127.
128.
129. # include the probability in the label
130. label = "{}: {:.2f}%".format(label, max(mask_worn_incorrectly, with_mask, without_mask) *
100)
131.
132. # display the label and bounding box rectangle on the output
133. # frame
134. cv2.putText(frame, label, (startX-50, startY - 10),
135. cv2.FONT_HERSHEY_SIMPLEX, 0.7, color, 2)
136. cv2.rectangle(frame, (startX, startY), (endX, endY), color, 2)
137. if counter > 20:
138. if frame_rate_calc > max_fps:
139. max_fps = frame_rate_calc
140. if frame_rate_calc < min_fps or min_fps == 0:
141. min_fps = frame_rate_calc
142.
143. cv2.putText(frame,'MAX FPS: {0:.2f}'.format(max_fps),(30,85),cv2.FONT_HERSHEY_SIMPLE
X,1,(255,255,0),2,cv2.LINE_AA)
144. cv2.putText(frame,'MIN FPS: {0:.2f}'.format(min_fps),(30,115),cv2.FONT_HERSHEY_SIMPLE
X,1,(255,255,0),2,cv2.LINE_AA)
145. cv2.putText(frame,'FPS: {0:.2f}'.format(frame_rate_calc),(30,50),cv2.FONT_HERSHEY_SIMPLE
X,1,(255,255,0),2,cv2.LINE_AA)
stream.py
1. import cv2
2. from threading import Thread
3. # Define VideoStream class to handle streaming of video from webcam in separate processing threa
d
4. # Source - Adrian Rosebrock, PyImageSearch: https://www.pyimagesearch.com/2015/12/28/increas
ing-raspberry-pi-fps-with-python-and-opencv/
5. class VideoStream:
6. """Camera object that controls video streaming from the Picamera"""
7. def __init__(self,resolution=(1280,720),framerate=30):
8. # Initialize the PiCamera and the camera image stream
9. self.stream = cv2.VideoCapture(0)
10. ret = self.stream.set(cv2.CAP_PROP_FOURCC, cv2.VideoWriter_fourcc(*'MJPG'))
11. ret = self.stream.set(3,resolution[0])
12. ret = self.stream.set(4,resolution[1])
13.
14. # Read first frame from the stream
15. (self.grabbed, self.frame) = self.stream.read()
16.
17. # Variable to control when the camera is stopped
18. self.stopped = False
19.
20. def start(self):
21. # Start the thread that reads frames from the video stream
22. Thread(target=self.update,args=()).start()
23. return self
24.
25. def update(self):
26. # Keep looping indefinitely until the thread is stopped
27. while True:
app.py
1. import cv2
2. import os
3. import argparse
4. import numpy as np
5. import sys
6. import time
7. from threading import Thread
8. import importlib.util
9. from stream import VideoStream
10. from datetime import datetime
11.
12. MODEL_NAME = 'fix_polos'
13. min_fps = 0
14. max_fps = 0
15. GRAPH_NAME = 'detect.tflite'
16. LABELMAP_NAME = 'labelmap.txt'
17. min_conf_threshold = float(0.55)
18. imW, imH = 1280, 720
19.
20. # Import TensorFlow libraries
21. # If tflite_runtime is installed, import interpreter from tflite_runtime, else import from regular tenso
rflow
22. # If using Coral Edge TPU, import the load_delegate library
23. pkg = importlib.util.find_spec('tflite_runtime')
24. if pkg:
25. from tflite_runtime.interpreter import Interpreter
26. else:
27. from tensorflow.lite.python.interpreter import Interpreter
28. # Get path to current working directory
29. CWD_PATH = os.getcwd()
30.
31. # Path to .tflite file, which contains the model that is used for object detection
32. PATH_TO_CKPT = os.path.join(CWD_PATH,MODEL_NAME,GRAPH_NAME)
33.
34. # Path to label map file
35. PATH_TO_LABELS = os.path.join(CWD_PATH,MODEL_NAME,LABELMAP_NAME)
36.
37. # Load the label map
38. with open(PATH_TO_LABELS, 'r') as f:
39. labels = [line.strip() for line in f.readlines()]
40.
41. # Load the Tensorflow Lite model.
99. # Interpreter can return coordinates that are outside of image dimensions, need to force
them to be within image using max() and min()
100. ymin = int(max(1,(boxes[i][0] * imH)))
101. xmin = int(max(1,(boxes[i][1] * imW)))
102. ymax = int(min(imH,(boxes[i][2] * imH)))
103. xmax = int(min(imW,(boxes[i][3] * imW)))
104.
105. # Draw label
106. object_name = labels[int(classes[i])] # Look up object name from "labels" array using c
lass index
107. if object_name == "with_mask" :
108. klasifikasi = "benar"
109. color = (0, 255, 0)
110. elif object_name == "without_mask" :
111. klasifikasi = "tanpa masker"
112. color = (0,0,255)
113. elif object_name == "incorrect_mask":
114. klasifikasi = "salah"
115. color = (255,0,0)
116.
117. label ='%s: %d%%' % (klasifikasi, int(scores[i]*100))
118. labelSize, baseLine = cv2.getTextSize(label, cv2.FONT_HERSHEY_SIMPLEX, 0.7, 2
) # Get font size
119. label_ymin = max(ymin, labelSize[1] + 10) # Make sure not to draw label too close to t
op of window
120. cv2.rectangle(frame, (xmin,ymin), (xmax,ymax), color, 2)
121. #cv2.rectangle(frame, (xmin, label_ymin-labelSize[1]-
10), (xmin+labelSize[0], label_ymin+baseLine-
10), color, cv2.FILLED) # Draw white box to put label text in
122. cv2.putText(frame, label, (xmin, label_ymin-
7), cv2.FONT_HERSHEY_SIMPLEX, 0.7, color , 2) # Draw label text
123.
124. #label = '%s'% (object_name) # Example: 'person: 72%'
125. #cv2.rectangle(frame, (startX, startY), (endX, endY), color, 2)
126.
127.
128. cv2.putText(frame,'MAX FPS: {0:.2f}'.format(max_fps),(30,85),cv2.FONT_HERSHEY_SI
MPLEX,1,(255,255,0),2,cv2.LINE_AA)
129. cv2.putText(frame,'MIN FPS: {0:.2f}'.format(min_fps),(30,115),cv2.FONT_HERSHEY_SI
MPLEX,1,(255,255,0),2,cv2.LINE_AA)
130. # Draw framerate in corner of frame
131. cv2.putText(frame,'FPS: {0:.2f}'.format(frame_rate_calc),(30,50),cv2.FONT_HERSHEY_S
IMPLEX,1,(255,255,0),2,cv2.LINE_AA)
132.
133. # All the results have been drawn on the frame, so it's time to display it.
134. cv2.imshow('Object detector', frame)
135.
136. # Calculate framerate
137. t2 = cv2.getTickCount()
138. time1 = (t2-t1)/freq
139. frame_rate_calc= 1/time1
140.
141. if counter > 20:
142. if frame_rate_calc > max_fps:
143. max_fps = frame_rate_calc
144. if frame_rate_calc < min_fps or min_fps == 0:
145. min_fps = frame_rate_calc
146. # Press 'q' to quit
147. if cv2.waitKey(1) == ord('q'):
148. break
149. except KeyboardInterrupt:
150. pass
151. finally:
152. videostream.stop()
153. cv2.destroyAllWindows()
154.