NASKAH PUBLIKASI DETEKSI WAJAH DENGAN METODE VIOLA JONES PADA OPENCV MENGGUNAKAN PEMROGRAMAN PYTHON
Disusun untuk Memenuhi Tugas dan Syarat-syarat Guna Memperoleh Gelar Sarjana Strata Satu Jurusan Teknik Elektro \Fakultas Teknik Uni\\versitas Muhammadiyah Surakarta
Disusun Oleh: IMAM NURVIYANTO D 400 080 019
JURUSAN TEKNIK ELEKTRO FAKULTAS TEKNIK UNIVERSITAS MUHAMMADIYAH SURAKARTA 2012
DETEKSI WAJAH DENGAN METODE VIOLA JONES PADA OPENCV MENGGUNAKAN PEMROGRAMAN PYTHON Imam Nurviyanto Teknik Elektro Fakultas Teknik Universitas Muhammadiyah Surakarta Email:
[email protected] ABSTRAKSI Sistem pendeteksian dan pengenalan wajah semakin banyak. Walaupun semakin banyak, bukan berarti penelitian mengenai hal ini sudah selesai. Tuntutan akan efektifitas, baik kecepatan maupun tingkat keakuratan dalam sebuah sistem pendeteksian semakin diperhitungkan. Banyak dari beberapa sistem pendeteksian wajah menggunakan metode Viola Jones sebagai metode pendeteksi objek. Metode Viola Jones dikenal memiliki kecepatan dan keakuratan yang tinggi karena menggabungkan beberapa konsep (Haar Features, Integral Image, AdaBoost, dan Cascade Classifier) menjadi sebuah metode utama untuk mendeteksi objek. Banyak dari sistem deteksi tersebut menggunakan C atau C++ sebagai bahasa pemrograman, dan OpenCV sebagai librari deteksi objek. Hal ini dikarenakan librari OpenCV menerapkan metode Viola Jones kedalam sistem deteksinya, sehingga memudahkan dalam pembuatan sistem. Penelitian ini bertujuan untuk mengimplementasikan Viola Jones ke dalam sistem deteksi wajah sederhana dengan memanfaatkan OpenCV dan Python sebagai pondasi sistem. Setelah sistem selesai dibuat, dilakukan pengujian sistem terhadap karakteristik wajah yang dapat dideteksi. Metode penelitian ini dimulai dari studi literatur, pengumpulan data, perancangan sistem, kemudian menganalisis data. Dari hasil pengujian, batasan jarak wajah yang dapat dideteksi antara ± 134 dan ± 21 cm dari kamera, batasan kecerahan antara ± 50 nilai mean maksimal gelap dan ± 200 nilai mean maksimal terang. Ketika dilakukan pengujian wajah manusia dalam keadaan frontal, sistem mampu mendeteksi dengan akurasi 100% dan waktu deteksi kurang dari 0.5 detik. Sedangkan ketika wajah dalam keadaan non-frontal, kemiringan maksimal wajah yang dapat dideteksi sebesar ± 74°. Sistem dapat mendeteksi adanya beberapa (lebih dari satu) wajah dalam suatu citra. Sistem juga dapat mendeteksi objek yang menyerupai wajah ketika objek tersebut memilki kontur yang sama dengan kontur wajah manusia (kontur wajah pada template), misalnya, wajah boneka dan topeng Hulk. Kata Kunci: Deteksi Wajah, Viola Jones, Integral Image, Haar Features, AdaBoost, Cascade Classifier, OpenCV, Python.
1. PENDAHULUAN Deteksi wajah merupakan salah satu teknologi yang banyak dikembangkan seiring dengan berkembangnya teknologi komputer. Deteksi wajah merupakan satu tahapan awal yang sangat penting dalam pengenalan wajah. Saat ini, penelitian mengenai pengenalan wajah dengan cepat berkembang. Aplikasi komersial tentang ini telah banyak diimplementasikan (Fraser, 2003), namun pada dasarnya teknologi ini belum sempurna (Woodward et al., 2003). Penelitian perlu
terus dikembangkan untuk memperoleh hasil yang diinginkan. Satu hal yang dapat ditambah atau diimplementasikan dalam pengembangan teknologi pengenalan wajah yaitu dengan menambah tingkat kecepatan dan akurasi dalam pendeteksian wajah. Banyak dari sistem pendeteksian tersebut menggunakan metode Viola Jones sebagai metode pendeteksi objek. Metode Viola Jones dikenal memiliki kecepatan dan keakuratan yang cukup tinggi karena menggabungkan beberapa konsep (Fitur Haar, Citra Integral, AdaBoost, Cascade
Classifier) menjadi sebuah metode utama untuk mendeteksi objek. Penelitian tentang Game Tic Tac Toe dengan Gerakan Jari Menggunakan Metode Viola And Jones (Raditya, 2011), menyimpulkan bahwa semakin banyak cahaya di sekitar ruangan, menghasilkan deteksi jari yang sangat baik. Jarak terbaik antara jari dengan kamera adalah berjarak 10-15 cm, posisi jari paling mudah terdeteksi pada posisi 0° dan 45°. Aplikasi ini dibangun dengan Visual C++. Penelitian Studi Pendeteksian Wajah dengan Metode Viola Jones (Devy Chandra, dkk, 2011), menyimpulkan metode Viola Jones adalah benar, mampu mendeteksi secara realtime dan mempunyai keakuratan yang tinggi. Pada penelitian ini akan dijelaskan mengenai cara kerja Viola Jones, serta mengaplikasikannya dalam sistem deteksi wajah sederhana dengan memanfaatkan librari OpenCV dan Python. Setelah sistem selesai dibuat, akan dibahas mengenai cara kerja sistem deteksi mulai dari akuisisi citra, pengolahan citra, pengenalan pola, dan analisis citra. Kemudian dilakukan pengujian mengenai karakter wajah yang dapat dideteksi. a. Akuisisi Citra Proses ketika citra non-digital diubah ke citra digital. Citra digital diperoleh dari hasil digitisasi citra analog. Digitisasi citra melibatkan dua proses, yaitu sampling dan kuatisasi. Sampling menunjukkan banyaknya pixel/blok untuk mendefinisikan suatu gambar. Kuantisasi menunjukkan banyaknya derajat nilai pada setiap pixel (menunjukkan jumlah bit pada gambar digital, black/white dengan 2 bit, grayscale dengan 8 bit, true color dengan 24 bit). b. Pengolahan citra Kegiatan memperbaiki kualitas citra agar mudah untuk diinterpretasi oleh manusia/komputer. Masukannya adalah citra
dan keluarannya juga citra, tetapi dengan kualitas lebih baik daripada citra masukan. Operasi pengolahan citra yang berhubungan dalam deteksi wajah: grayscaling, neighborhood operation, thresholding, histogram equalization, resizing. c. Pengenalan Pola Mengelompokkan data numerik dan simbolik citra secara otomatis oleh komputer. Tujuan dari pengelompokkan adalah untuk mengenali suatu objek di dalam citra. d. Analisis Citra Proses analisis citra, dimulai dari pencitraan, sampai proses terakhir, sehingga didapat sebuah keputusan untuk maksud atau tujuan tertentu, misalnya, memandu robot, dll. Pada penelitian ini, keputusannya adalah menentukan wajah manusia di antara background. e. Fitur Haar Pendeteksian objek menggolongkan gambar berdasarkan pada nilai dari fitur sederhana seperti Gambar 1. Operasi dasar dari suatu fitur jauh lebih cepat dibandingkan dengan pengolahan pixel. Sejumlah Fitur Haar mewakili wilayah persegi pada citra dan menjumlahkan semua piksel pada daerah tersebut. Viola Jones mengklasifikasikan citra dari nilai fitur-fitur sederhana dan menggunakan tiga jenis fitur. Seperti terlihat pada Gambar 1., (A) dan (B) merupakan fitur dua persegi, (C) merupakan fitur tiga persegi, dan (D) merupakan fitur empat persegi. Nilai dari fitur-fitur tersebut adalah selisih antara daerah hitam dan putih.
Gambar 1. Macam-macam Fitur Haar
f. Citra Integral
Gambar 2. Citra Integral
Seperti yang terlihat pada Gambar 2. (a), nilai integral masing-masing piksel adalah jumlah dari semua piksel-piksel dari atas sampai bawah. Dimulai dari kiri atas sampai kanan bawah, keseluruhan gambar tersebut dapat dijumlahkan dengan operasi bilangan bulat per-piksel. Menghitung segi empat D Gambar 2. (b), dapat dengan menggabungkan jumlah piksel pada area segi empat A+B+C+D, dikurangi jumlah segi empat A+B dan A+C, ditambah jumlah piksel di dalam A. A+B+C+D adalah nilai dari citra integral pada lokasi 4, A+B adalah nilai lokasi 2, A+C adalah nilai lokasi 3, dan A pada lokasi 1. Sehingga hasil dari D = (A+B+C+D)(A+B)-(A+C)+A. g. AdaBoost Metode untuk membangun suatu pengklasifikasian dengan menyeleksi sejumlah fitur penting. Di dalam tiap subwindow image, jumlah total dari Fitur Haar sangat besar, jauh lebih besar jika dibandingkan dengan jumlah pixel. Untuk memastikan pengklasifikasian dapat dilakukan secara cepat, proses pembelajaran harus menghilangkan fitur-fitur mayoritas yang tersedia, dan memusatkan pada sekumpulan kecil fitur yang perlu. AdaBoost bertujuan untuk membentuk template wajah. h. Cascade Classifier subwindow
T
C1
F non-face
F
T
TT
C2
F non-face
F
T T face
Cn
F
F
non-face
Gambar 3. Diagram Proses Cascade Classifier
Suatu metode klasifikasi yang menggunakan beberapa tingkatan dalam penyeleksian. Ditiap tingkatan dilakukan penyeleksian menggunakan algoritma AdaBoost yang telah di-training dengan menggunakan Fitur Haar. Penyeleksian berguna untuk memisahkan antara subwindow yang mengandung positif objek (gambar yang terdeteksi memiliki objek yang diinginkan) dengan negatif objek (gambar yang terdeteksi tidak memiliki objek yang diinginkan). Seperti Gambar 3., input dari setiap tingkatan merupakan output dari tingkatan sebelumnya. Pada classifier tingkat pertama, yang menjadi input-an adalah seluruh citra sub-window. Semua citra sub-window yang berhasil melewati tahapan classifier pertama akan dilanjutkan ke classifer kedua, dan seterusnya. i. Template Pada OpenCV Template merupakan suatu Cascade Classifier yang berisi hasil training terhadap sejumlah data-data berupa citra positif (berisi wajah) dan citra negatif. Hasil training ini merupakan template dari bentuk objek yang akan dideteksi, misalnya, wajah, mata, hidung, mulut, dan tubuh. Cascade Classifier ini telah disediakan oleh OpenCV dalam bentuk file *.xml, sehingga dapat langsung diimpor ke dalam sistem. j. OpenCV Open Computer Vision (OpenCV) merupakan library open source yang tujuannya dikhususkan untuk melakukan pengolahan citra. Maksudnya adalah agar komputer mempunyai kemampuan yang mirip dengan cara pengolahan visual pada manusia. OpenCV telah menyediakan banyak algoritma visi komputer dasar. OpenCV juga menyediakan modul pendeteksian objek yang menggunakan algoritma Viola Jones (Augusto, 2006, p4).
k. Python Python adalah salah satu bahasa pemograman tingkat tinggi yang bersifat interpreter, interactive, object-oriented, dan dapat beroperasi hampir di semua platform: Mac, Linux, dan Windows. Python termasuk bahasa pemograman yang mudah dipelajari karena sintaks yang jelas, dapat dikombinasikan dengan penggunaan modulmodul siap pakai, dan struktur data tingkat tinggi yang efisien. Distribusi Python dilengkapi dengan suatu fasilitas seperti shell di Linux. Lokasi penginstalan Python biasa terletak di “/usr/bin/Python”, dan bisa berbeda. Menjalankan Python, cukup dengan mengetikan “Python”, tunggu sebentar lalu muncul tampilan “>>>”, berarti Python telah siap menerima perintah. Ada juga tanda “...” yang berarti baris berikutnya dalam suatu blok prompt '>>>'. Text editor digunakan untuk modus skrip. l. wxPython wxPython adalah toolkit GUI untuk bahasa pemrograman Python. wxPython memungkinkan programmer Python untuk membuat aplikasi dengan pondasi kuat, grafis antarmuka dengan pengguna yang sangat fungsional, sederhana, dan mudah. wxPython diimplementasikan sebagai modul ekstensi oleh Python (kode asli). wxPython membungkus wxWidget sebagai salah satu GUI library populer yang ditulis dalam bahasa C++. m. Boa Constructor Boa Constructor adalah Integrated Development Environment (IDE) untuk Python dan wxPython GUI Builder yang cross-platform. Boa Constructor mampu membuat, memanipulasi frame secara visual (tanpa skrip), dan ada banyak object inspector seperti: browser objek, hirarki warisan, debugger yang canggih, dan bantuan yang sudah terintegrasi.
2. METODE PENELITIAN Suatu prosedur penelitian dibutuhkan agar pekerjaan dapat dilaksanakan secara berurutan dan berkelanjutan tanpa harus mengganggu jenis pekerjaan lainnya. Persiapan meliputi segala sesuatu yang berhubungan dengan proses perancangan, yakni: mempelajari dan memahami cara Viola Jones bekerja, perancangan untuk algoritma dan flowchart, pembuatan sistem, kemudian menganalisis sistem. Alur penelitian ini meliputi: studi literatur, pengumpulan data, perancangan sistem (dimulai dari merancang algoritma, flowchart, dan interface), analisis data, dan pembuatan laporan. Diagram alur penelitian dapat dilihat pada Gambar 4. Mulai
Studi Literatur
Pengumpulan Data
Perancangan Sistem
Perbaikan Sistem
T
Sistem Berhasil?
Y
Analisis Data
Selesai
Gambar 4. Flowchart Penelitian
Mulai
Akuisisi Citra Citra Dibuat Grayscale, Resize Ukuran Citra, Ekualisasi Histogram
T Mendeteksi Wajah?
Y Penggambaran Persegi Pada Wajah
T Keluar? Y Selesai
Gambar 5. Flowchart Sistem Deteksi Wajah
Sistem yang akan dibuat mengacu flowchart Gambar 5. Sistem, setelah dijalankan akan mengaktifkan webcam untuk mengakuisisi citra, lalu dilakukan pengolahan citra: grayscaling, resizing, eqaulization. Wajah dicari menggunakan Viola Jones. Jika wajah terdeteksi, akan dilakukan penggambaran garis persegi pada wajah tersebut. 3. HASIL DAN PEMBAHASAN PENELITIAN a. Hasil dan Pembahasan Sistem
Gambar 6. Sistem Deteksi Wajah
Gambar 6. merupakan screenshot dari sistem deteksi wajah dengan OpenCV dan Python. Sistem akan mencari wajah ke berbagai lokasi citra. Awalnya, citra masukan di-scan per-sub-window, dimulai dari kiri atas dengan ukuran minimal 20x20, diulangi secara iterasi dengan skala perbesaran 1.1. Proses ini diulangi dengan pergeseran Δx dan Δy sampai kanan bawah. Setiap sub-window yang di-scan, diterapkan Fitur Haar. Karena banyaknya fitur haar pada tiap sub-window, dilakukan penyeleksian fitur dengan AdaBoost. Penyeleksian fitur akan melibatkan nilai fitur, nilai fitur tersebut dihitung dengan Integral Image. Jumlah subwindow pada suatu citra terlalu banyak, maka dilakukan penyeleksian sub-window oleh Cascade Classifier (template). Sub-window yang lolos seluruh tahapan seleksi Classifier akan dideskripsikan sebagai wajah. b. Hasil dan Pembahasan Pengujuan Sistem Pengujian dilakukan dengan notebook yang ber-webcam dengan resolusi 1.3 MP, dilakukan di kamar dengan bersumberkan cahaya matahari yang masuk. Ada beberapa macam pengujian yang dilakukan: berdasarkan pencahayaan, jarak, kemiringan, wajah terhalang objek lain, beberapa wajah, dan berdasarkan karakter objek yang menyerupai wajah. Gambar 6. juga merupakan contoh pengujian berdasarkan kemiringan wajah 0° (frontal). Terlihat sistem dapat mendeteksi wajah dengan akurat ketika posisi wajah dalam keadaan frotal. Akurat maksudnya, pendeteksian benar-benar 100% pada citra wajah tanpa ada false positive dan false negative. Telah dilakukan beberapa pengujian terhadap karakteristik wajah yang dapat dideteksi. Dari beberapa pengujian itu, didapat tabel hasil pengujian seperti pada Tabel 1.
Tabel 1. Hasil Pengujian
No.
Pengujian
Hasil
1
Berdasarkan Pencahayaan
2
Berdasarkan Jarak Wajah dan Kamera
3
Berdasarkan Kemiringan
Ketika frontal akurasi deteksi mencapai 100%, waktu untuk deteksi kurang dari 0.5 detik, ketika non-frontal kemiringan terbesar yang dapat dideteksi mencapai ± 74°
4
Berdasarkan Wajah yang Terhalang
Sistem mampu mendeteksi wajah yang terhalang selama konturnya sama dengan kontur wajah pada template (misal, terhalang kacamata dan topi), dan sebaliknya
5
Berdasarkan Adanya Beberapa Wajah
Sistem mampu mendeteksi adanya beberapa wajah
6
Berdasarkan Objek yang Menyerupai
Sistem mampu mendeteksi objek yang menyerupai wajah selama konturnya sama dengan kontur wajah pada template (misal, wajah boneka dan topeng Hulk), dan sebaliknya
± 50 nilai mean untuk maksimal gelap, ± 200 nilai mean untuk maksimal terang, pencahayaan harus merata pada wajah ± 134 cm maksimal terjauh, ± 21 cm maksimal terdekat
4. KESIMPULAN Berdasarkan hasil uji coba yang dilakukan: a. Sistem dapat mendeteksi wajah manusia dengan batasan jarak antara ± 134 dan ± 21 cm dari kamera, serta batasan kecerahan antara ± 50 nilai mean untuk maksimal gelap dan ± 200 nilai mean untuk maksimal terang. b. Sistem dapat mendeteksi wajah manusia dalam keadaan frontal dengan akurasi 100% dan waktu deteksi kurang dari 0.5 detik. c. Sistem dapat mendeteksi wajah manusia dalam keadaan non-frontal (tercatat mampu mendeteksi wajah dengan kemiringan ± 74°). d. Sistem dapat mendeteksi adanya beberapa wajah dalam suatu citra. e. Sistem dapat mendeteksi objek yang menyerupai wajah ketika objek tersebut memilki kontur yang sama dengan kontur wajah manusia (kontur wajah pada template), misalnya, wajah boneka, topeng Hulk.
DAFTAR PUSTAKA Arihutomo, Mukhlas. 2010. Rancang Bangun Sistem Penjejakan Objek Menggunakan Metode Viola Jones Untuk APlikasi EyeBot. ITS. Ariyan, Peb. 2011. Mengintegrasikan OpenCV 2.x dengan wxPython. http://pebbie.wordpress.com/2011/02 /10/mengintegrasikan-opencv-2-xdengan-wxpython/. Diakses pada tanggal 12 April 2012. Chandra, Devy. Prajnagaja, Nagarjuna. Nugroho, Lintang Agung. (2011). Studi Pendeteksian Wajah dengan Metode Viola Jones. BINUS. Eka, Aditya. 2011. Perangkat Lunak Untuk Mengendalikan Pointer dengan Mata Menggunakan Metode Haar Cascade Dan Eye Tracking. UNIKOM.
Hestiningsih, Idhawati. 2008. Pengolahan Citra. Universitas Dian Nuswantoro. Hewitt, Robin. 2007. How Face Detection Work. http://www.cognotics.com/ opencv/servo_2007_series/part_2/ sidebar.html. Diakses pada tanggal 10 April 2012. Kadir, Abdul. 2005. Dasar Pemrograman Python. Yogyakarta: Andi Offset. Luca. 2011. Computer vision: OpenCV realtime face detection in Python. http://www.lucaamore.com/?p=638. Diakses pada tanggal 10 April 2012. Nugraha, Raditya. 2011. Game TicTacToe dengan Gerakan Jari Menggunakan Metode Viola And Jones. Politeknik Elektronika Negri Surabaya. ITS.
Parkkila, Janne. 2010. Detecting Eyes With Python & OpenCv. http://japskua.wordpress.com/2010 /08/04/detecting-eyes-with-pythonopencv/. Diakses pada tanggal 10 April 2012. Ridho,
Mahdi. 2006. Python Yogyakarta:___________.
++.
Seo,
Naotoshi. 2007. OpenCV Haartraining (Rapid Object Detection With A Cascade of Boosted Classifiers Based on Haar-like Features). http://note.sonots.com/SciSoftware /Haartraining.html. Diakses pada tanggal 10 April 2012.
Viola, Paul. & Jones, Michaels. (2001). Rapid Object Detection using boosted Cascade of Simple Features. IEEE CVPR.