KOMPUTAKI Vol. 2 No. 1 Februari 2016 FACE DETECTION MENGGUNAKAN JAVASCRIPT SEBAGAI FILTER AWAL PRESENSI BERBASIS WEB Anggy Trisnawan Putra Jurusan Ilmu Komputer, FMIPA, Universitas Negeri Semarang Email: [email protected] Abstrak Presensi berbasis web merupakan salah satu alternatif praktis diantara berbagai macam metode aplikasi presensi pegawai. Foto presensi yang diambil menggunakan webcam komputer banyak yang tidak standar, misalnya wajah tidak lurus (tampak samping), hanya tampak sebagian saja, bahkan ada yang sengaja tidak menampakkan wajah. Fakta semacam ini menyebabkan pemrosesan lanjutan berupa pengenalan wajah (face recognition) maupun monitoring pimpinan menjadi tidak efisien. Pemanfaatan javascript sebagai gerbang untuk menjaga input foto pegawai supaya lebih tertib dapat dilakukan dengan cara menerapkan algoritma face detection sebelum pengambilan foto. Foto tidak akan diambil jika posisi wajah tidak sesuai dengan ketentuan, sehingga kualitas foto pegawai yang dikirim ke server menjadi lebih baik. Kata kunci : Face detection, Javascript, Presensi web tidaklah tahan banting (mudah rusak) 1. Pendahuluan Presensi merupakan salah satu cara (Ginting, 2010). Selain itu, di beberapa untuk mendisiplinkan pegawai. Metode kasus juga ditemui bahwa alat ini tidak presensi dapat dilakukan dengan berbagai dapat mendeteksi/mengenali sidik jari cara, mulai dari cara manual (tanda tangan seseorang (Septiyaning, 2015). Selain itu, di lembar presensi) sampai dengan otomasi hasil penelitian pada (Angraini, 2009) via teknologi teknologi informasi. Beberapa mengatakan bahwa terdapat faktor-faktor dapat digunakan yang menghambat penerapan teknologi yang diantaranya adalah fingerprint, webcam, fingerprint mesin absensi retina, dsb. Dengan adanya instruksi penggunaan sistem yang minim, pemanfaatan teknologi informasi terbukti dan kecepatan waktu penggunaan sistem bahwa yang tidak efisien. kecurangan-kecurangan yang terjadi pada metode presensi manual dapat dikurangi (Angraini, 2009). Kecanggihan dari yaitu motivasi pengguna, Presensi berbasis web merupakan salah satu alternatif yang murah dan teknologi praktis untuk memenuhi kebutuhan informasi ini rupanya tidak luput dari presensi pegawai. Selain dari fakta bahwa kelemahan. Misalnya saja untuk mesin perangkatnya yang sangat terjangkau dan fingerprint, alat pemindai sidik jari ini tidak mudah rusak, implementasinya pun 1 Face Detection Menggunakan Java Script Sebagai Filter Awal Presensi Berbasis Web (Anggy Trisnawan Putra) tidak serumit metode yang sudah Proses face recognition baik disebutkan sebelumnya. Presensi ini hanya manual maupun terkomputerisasi tentunya membutuhkan webcam, komputer yang membutuhkan sumber foto yang bagus dan terkoneksi dengan jaringan internet / jelas. Padahal, pada kenyataannya di intranet, lapangan, dan browser yang akan tidak semua pegawai menampilkan antarmuka aplikasi presensi memposisikan wajahnya secara benar di untuk selanjutnya mengirim foto pegawai depan webcam. Banyak diantara foto yang ke server setiap kali presensi dilakukan. terkirim Setelah itu, sistem dapat melakukan proses misalnya saja tertutup helm, menggunakan face recognition untuk menentukan apakah masker, blur/kabur, atau bahkan tidak ada foto tersebut benar-benar foto pegawai wajah yang ada. Proses ini dapat dilakukan menghambat proses selanjutnya karena secara manual dengan melibatkan atasan presensi dengan cara ini sangat bergantung langsung dari pegawai yang bersangkutan pada input foto pegawai. Tanpa foto yang tanpa bantuan sistem. bagus, proses verifikasi sistem tidak akan ke server sama sekali. berjalan tidak Tentu memadai, saja dengan ini baik. Gambar 1. Contoh foto presensi yang tidak baik (sumber : simpeg.unnes.ac.id) Algoritma face recognition secara sia. Pada platform perangkat bergerak, realtime seperti yang sudah diteliti di misal android, (Walgamage, 2014) menggunakan server menggunakan native face detection API backend yang melakukan proses secara yang sudah tersedia sejak android versi 4.0 otomatis (Walgamage, 2014). dengan perintah antarmuka aplikasi pengambil foto. Di dalamnya juga face detection dilakukan Face detection pada platform PC dijelaskan bahwa proses face detection (personal sangatlah penting dilakukan sebelum foto browser dikirim ke server untuk menjamin bahwa menggunakan perangkat lunak openCV proses face recognition tidak berjalan sia- melalui web service. Foto dikirimkan dari 2 computer) dapat menggunakan dilakukan dengan KOMPUTAKI Vol. 2 No. 1 Februari 2016 web browser menuju server yang terinstall saat openCV, lalu diproses untuk dikembalikan kemampuannya yang dapat berjalan di sisi ke client, Javascript memiliki keunggulan web koordinat browser wajah (Rosebrock, 2015). dengan yang informasi ditemukan ini yaitu (Rosebrock, dapat 2015). memanfaatkan Dengan resource Proses ini tentu masing-masing komputer client tanpa membutuhkan resource yang tidak sedikit membebani server. Dengan memanfaatkan karena terdapat proses pengiriman ke Javascript, algoritma face detection dapat server, proses face detection, lalu dikirim diterapkan tanpa melibatkan resource kembali server untuk proses selanjutnya. sama sekali. Dengan Walaupun dapat diteruskan ke proses face kemampuannya yang interaktif, Javascript recognition yang dapat juga dilakukan dapat diatur supaya foto hanya dikirimkan oleh open CV tanpa kembali ke web pada saat Javascript dapat menemukan browser secara langsung, proses ini akan wajah pegawai yang melakukan presensi. menjadi sia-sia ketika foto yang dikirim Dengan begitu, dapat dipastikan bahwa ternyata tidak memenuhi standar foto yang foto yang terkirim ke server berkualitas baik. baik. Javascript telah dikenal sebagai 2. Kajian Pustaka bahasa pemrograman yang tertanam di Pada (Nash, 2013) dijelaskan setiap browser. Bersama HTML dan CSS, algoritma face detection menggunakan Javascript web browser yang mengakses server merupakan salah satu komponen penting di dalam teknologi web terinstall openCV. Gambar 2. Diagram algoritma face detection menggunakan openCV (Nash, 2013) Langkah-langkah dalam proses tersebut di 4. Face-detect.php membaca pesan log atas adalah sebagai berikut (Nash, 2013). yang dihasilkan dan mengirim 1. Pengguna mengunggah gambar. kembali dengan bentuk JSON untuk 2. Face-detect.php mengirim gambar dibaca di antarmuka web. yang terunggah ke face-detect.exe. 3. Face-detect.exe mendeteksi wajah dan menulis pesan log. Sama halnya dengan langkah di atas, proses serupa dilakukan di (Kurniawan, 2014), dengan menggunakan openCV, server mengolah data foto yang 3 Face Detection Menggunakan Java Script Sebagai Filter Awal Presensi Berbasis Web (Anggy Trisnawan Putra) masuk untuk diteliti apakah foto pegawai }); benar-benar sesuai dengan ID pegawai </script> yang melakukan foto. Alangkah sayangnya Setelah JFDP selesai melakukan jika proses yang sedemikian berat ini tidak proses, callback complete memiliki satu didukung dengan kualitas foto yang variabel memadai. ditemukan. Apabila memang ditemukan Tulisan ini fokus pada langkah sebelum aplikasi mengirim foto yaitu object wajah wajah, variabel ini akan berisi informasi sebagai berikut. (mengunggah gambar) ke server. Library 1. x — koordinat X wajah pada foto yang digunakan dalam tulisan ini adalah 2. y — koordinat Y wajah pada foto jQuery Face Detection Plugin (JFDP) yang 3. width — lebar wajah ditulis 4. height — tinggi wajah oleh Jay Salvat (https://github.com/jaysalvat/jquery.facede jQuery Face Detection Plugin JFDP detection 6. positionY — posisi Y relatif terhadap halaman web (JFDP) dengan 5. positionX — posisi X relatif terhadap halaman web tection). 2.1 ditulis oleh memanfaatkan Jay Salvat algoritma dari (https://github.com/liuliu/ccv). face Liu-Liu JFDP mampu mendeteksi wajah yang ada pada gambar dan video lalu memberitahu koordinat dari wajah yang ditemukan. JFDP memiliki beberapa callback, salah satunya yang akan dimanfaatkan adalah 7. offsetX — posisi X relatif terhadap induk 8. offsetY — posisi Y relatif terhadap induk 9. scaleX — rasio antara lebar foto asli dengan lebar yang ditampilkan 10. scaleY — rasio antara tinggi foto asli dengan tinggi yang ditampilkan 11. confidence — tingkat kepercayaan callback complete. Callback ini akan diri berikan ketika JFDP selesai melakukan 2.2 jQuery jQuery digunakan untuk membantu proses deteksi wajah pada foto. <script> $('#picture').faceDetection({ complete: function (faces) { console.log(faces); } 4 yang dalam proses pengiriman foto ke server secara asynchronous. Contoh pengiriman data menggunakan jQuery adalah sebagai berikut 2010): (JQuery Community Experts, KOMPUTAKI Vol. 2 No. 1 Februari 2016 $.ajax({ type: „POST‟, url: „hello-ajax.html‟, dataType: 'html', success: function(html, textStatus) { $('body').append(html); }, error: function(xhr, textStatus, errorThrown) { alert('An error occurred! ' + errorThrown); } }); (streaming) (Bidelman, 2012) di tag 2.3 HTML5 Canvas Javascript dapat digunakan untuk mengakses ditampilkan kamera secara (webcam) terus untuk HTML5 video dengan cara sebagai berikut : menerus <video autoplay></video> <script> var errorCallback = function(e) { console.log('Rejected!', e); }; // Not showing vendor prefixes. navigator.getUserMedia({video: true, audio: true}, function(localMediaStream) { var video = document.querySelector('video'); video.src = window.URL.createObjectURL(localMediaStream); // Note: onloadedmetadata doesn't fire in Chrome when using it with getUserMedia. // See crbug.com/110938. video.onloadedmetadata = function(e) { // Ready to go. Do some stuff. }; 5 Face Detection Menggunakan Java Script Sebagai Filter Awal Presensi Berbasis Web (Anggy Trisnawan Putra) }, errorCallback); </script> 6 KOMPUTAKI Vol. 2 No. 1 Februari 2016 Tampilan pada kanvas HTML5 dapat Contoh kodenya adalah sebagai berikut diambil (Jenkov, 2014) : dengan fungsi toDataURL(). var canvas = document.getElementById("ex1"); var dataUrl = canvas.toDataURL(); yang ada di tag video ke dalam tag 3. Metode Tulisan pendekatan ini menggunakan metode pengembangan penelitian (research development) dalam hal HTML5 canvas secara terus menerus dan (dalam tulisan ini dibuat setiap 33 and milidetik). Pada saat pegawai menekan pemanfaatan tombol “presensi” atau semacamnya, javascript sebagai filter foto presensi sebuah kode javascript dijalankan. Kode pegawai Javascript ini mengambil gambar pada kanvas lalu digunakan untuk menjalankan algoritma diletakkan pada tag HTML img (dibuat face hidden), selanjutnya dibaca oleh JFDP berbasis web. detection dengan manipulasi/penggabungan berbagai untuk dilakukan proses face detection. macam teknik yang sudah ada. Apabila proses face detection selesai, cek apakah wajah ditemukan. Jika 4. Hasil dan Pembahasan Penggabungan berbagai teknik di iya, lanjutkan proses presensi dengan dalam HTML5, jQuery, dan Javascript mengirim telah berhasil dilakukan dan menghasilkan menggunakan jQuery. Apabila wajah tidak aplikasi presensi berbasis web yang telah ditemukan, mengandung filter face detection. Cara menampilkan informasi supaya pegawai kerja memposisikan wajahnya dengan benar. aplikasi web presensi dapat dijabarkan dalam langkah-langkah sebagai gambar/foto aplikasi ke presensi server akan Proses presensi berbasis web yang berikut: disajikan dalam tulisan ini berfokus pada Javascript digunakan untuk mengakses proses webcam menangkap sebelum foto pegawai yang akan dikirim gambar dan ditampilkan secara terus- ke server. Dengan adanya filter ini, foto menerus video. pegawai yang terkirim ke server dapat Menggunakan teknik menggambar pada dipastikan berkualitas baik. Berikut ini sehingga pada tag dapat HTML5 face detection sebagai filter kanvas HTML5, salin dan tempel gambar 7 Face Detection Menggunakan Java Script Sebagai Filter Awal Presensi Berbasis Web (Anggy Trisnawan Putra) adalah contoh pengambilan foto pegawai yang tidak baik. Gambar 3. Presensi yang gagal karena wajah tidak tampak seluruhnya Pada gambar di atas jelas terlihat yang melakukan presensi akan berusaha bahwa wajah yang tidak tampak secara menempatkan/memposisikan wajahnya keseluruhan tidak dapat diterima oleh sampai dapat diterima oleh sistem. Berikut algoritma face detection. Jadi, pegawai ini adalah contoh presensi yang berhasil. Gambar 4. Presensi yang berhasil dilakukan karena wajah tampak jelas Pada gambar di atas terlihat bahwa baik untuk diproses presensi yang dilakukan dengan wajah kebutuhan sistem. yang lurus dan jelas dapat diterima oleh 5. Kesimpulan sesuai dengan sistem. Selanjutnya, foto akan dikirimkan Javascript telah berhasil diterapkan ke server presensi dengan kualitas yang sebagai media filter foto presensi pegawai berbasis web dengan mengaplikasikan 8 KOMPUTAKI Vol. 2 No. 1 Februari 2016 algoritma face detection. Dengan menerapkan metode ini, terbukti bahwa pegawai yang presensi tidak bisa lagi semaunya sendiri. Pegawai harus menempatkan wajahnya sedemikian rupa sehingga webcam dapat menangkap wajah secara utuh dan jelas. Dengan begitu, harapannya pegawai dapat lebih tertib di dalam melakukan presensi setiap harinya. 6. Daftar Pustaka Angraini. 2009. Audit Implementasi Biometrics Fingerprint (Studi Kasus Sistem Presensi Stmik Amikom Yogyakarta). Prosiding Seminar Nasional Aplikasi Teknologi Informasi 2009 (SNATI 2009). Yogyakarta, 20 Juni 2009 Bidelman, E. 2012. Capturing Audio & Video in HTML5. http://www.html5rocks.com/en/tutori als/getusermedia/intro/, diakses 16 Oktober 2015 Ginting, K. 2010. Mesin Absensi “Fingerprint” Rusak. http://www.kompasiana.com/korneli usginting/mesin-absensi-finger-printrusak_550058478133111918fa75e6, diakses 16 Oktober 2015 Jenkov, J. 2014. HTML5 Canvas: toDataURL(). http://tutorials.jenkov.com/html5canvas/todataurl.html, diakses 16 Oktober 2015 jQuery Community Experts. 2010. jQuery Cookbook. O‟Reilly Media, Inc., California Kurniawan, L.M. 2014. Metode Face Recognition untuk Identifikasi Personil Berdasar Citra Wajah bagi Kebutuhan Presensi Online Universitas Negeri Semarang. Scientific Journal of Informatics. Vol 1(2): 210-220. Nash. 2013. Web based interface for face detection with OpenCV. http://opencvcode.com/projects/web-basedinterface-for-face-detection-withopencv/, diakses 16 Oktober 2015. Rosebrock, A. 2015. Creating a face detection API with Python and OpenCV (in just 5 minutes). http://www.pyimagesearch.com/2015 /05/11/creating-a-face-detection-apiwith-python-and-opencv-in-just-5minutes/, diakses 16 Oktober 2015. -------. 2015. Javascript. https://en.wikipedia.org/wiki/JavaScr ipt, diakses 16 Oktober 2015 Septiyaning W., I. 2015. Mesin Presensi Minim, PNS Solo Mengeluh ke BKD. http://www.solopos.com/2015/04/10/ disiplin-pns-mesin-presensi- minimpns-solo-mengeluh-ke-bkd-593435, diakses 16 Oktober 2015 Walgamage, T., Farook, C. 2014. A Realtime Hybrid Approch for Mobile Face Recognition. 2014 Fifth International Conference on Intelligent Systems, Modelling and Simulation. Malaysia, 27 Jan-29 Jan 20 9