Professional Documents
Culture Documents
Tesis
Diajukan oleh:
Setyo Nugroho
18661/I-4/1445/02
Dengan ini saya menyatakan bahwa dalam tesis ini tidak terdapat karya
Tinggi, dan sepanjang pengetahuan saya tidak terdapat karya atau pendapat yang
pernah ditulis atau diterbitkan oleh orang lain, kecuali yang secara tertulis diacu
SETYO NUGROHO
iii
iv
KATA PENGANTAR
syukur ke hadirat Allah swt, atas rahmat, nikmat dan hidayah-Nya sehingga kami
dapat menyelesaikan penulisan tugas akhir ini. Tugas akhir ini disusun untuk
memenuhi sebagian persyaratan mencapai derajat sarjana S-2 dalam bidang Ilmu
• Drs. Agus Harjoko, M.Sc, Ph.D, selaku pembimbing tesis yang telah
lanjut dan selalu memberikan semangat kepada penulis untuk terus maju.
• Dian Farida Anies dan Nadia Fitri Zafira, istri dan anakku tercinta, yang
• Ibu bapak di Wonogiri dan di Surabaya, serta seluruh keluarga yang telah
v
• Teman-teman yang telah memberikan banyak bantuan, pelajaran dan
Nusirwan, Eman, Yudhi, Hesti, Pak Nana, Aziz, Sari, Pak Jumhadi, Joko,
Tito, Mbak Lia, Bernard, Pak Manik, Bu Umi, Pak Sugeng, Eko, Rika,
Eny, Adib, Harry, Robby, Devan, Dody, Jose, Dila, Iche, Leli, Dewi,
• Pihak-pihak lain yang tidak bisa kami sebutkan satu-persatu yang telah
Akhir kata, kami sadar bahwa kami masih memiliki keterbatasan dan
kekurangan sehingga karya ini mungkin masih jauh dari sempurna. Untuk itu
saran dan kritik yang membangun akan kami terima dengan tangan terbuka.
Setyo Nugroho
vi
DAFTAR ISI
Halaman
Pernyataan .........................................................................................................iii
Intisari ..............................................................................................................xii
Abstract ...........................................................................................................xiii
vii
BAB II. Landasan Teori...................................................................................... 6
viii
3.2.4.4. Masking .................................................................. 34
3.3.3. Resizing................................................................................ 40
Daftar Pustaka
Lampiran
ix
DAFTAR GAMBAR
Halaman
preprocessing ............................................................................ 44
Gambar 4.1. Hasil deteksi sebelum dan sesudah proses merging ................. 48
x
DAFTAR TABEL
Halaman
Tabel 4.1. Beberapa hasil deteksi pada data uji MIT-23 .................................. 49
Tabel 4.4. Pengaruh Active Learning pada Unjuk Kerja Deteksi Wajah ........ 54
xi
INTISARI
Pendeteksian wajah (face detection) adalah salah satu tahap awal yang
sangat penting dalam sistem pengenalan wajah (face recognition) yang digunakan
dalam identifikasi biometrik. Deteksi wajah juga dapat digunakan untuk pencarian
atau pengindeksan data wajah dari citra atau video yang berisi wajah dengan
berbagai ukuran, posisi, dan latar belakang. Dalam penelitian ini
diimplementasikan sistem deteksi wajah yang menggunakan jaringan syaraf tiruan
multi-layer perceptron dan algoritma Quickprop. Sistem deteksi wajah
memperoleh kemampuan deteksinya dengan cara belajar dari contoh (learning by
examples). Pelatihan dilakukan dengan metode active learning untuk
meminimalkan banyaknya data yang digunakan untuk pelatihan. Hasil penelitian
menunjukkan bahwa akurasi dari sistem deteksi wajah sangat tergantung pada
jumlah dan jenis data yang digunakan dalam pelatihan. Algoritma Quickprop dan
teknik active learning dapat dimanfaatkan untuk membantu mempercepat proses
pelatihan.
(Kata kunci: deteksi wajah, jaringan syaraf tiruan, Quickprop, active learning)
ABSTRACT
BAB I
PENDAHULUAN
untuk sistem pengenalan biometrik (di samping fitur biometrik yang lain seperti
sidik jari dan suara), sistem pencarian dan pengindeksan database citra digital dan
database video digital, sistem keamanan kontrol akses area terbatas, konferensi
Pendeteksian wajah (face detection) adalah salah satu tahap awal yang
Pada kasus seperti pemotretan untuk pembuatan KTP, SIM, dan kartu kredit, citra
yang didapatkan umumnya hanya berisi satu wajah dan memiliki latar belakang
seragam dan kondisi pencahayaan yang telah diatur sebelumnya sehingga deteksi
Namun pada kasus lain sering didapatkan citra yang berisi lebih dari satu
wajah, memiliki latar belakang yang bervariasi, kondisi pencahayaan yang tidak
tentu, dan ukuran wajah yang bervariasi di dalam citra. Contohnya adalah citra
yang diperoleh di bandara, terminal, pintu masuk gedung, pusat perbelanjaan, dan
citra yang didapatkan dari foto di media massa atau hasil rekaman video.
2
masukan sebuah citra digital sembarang, maka sistem akan mendeteksi apakah
ada wajah manusia di dalam citra tersebut. Jika ada maka sistem akan
dalam citra. Keluaran dari sistem adalah posisi subcitra berisi wajah yang berhasil
dideteksi.
Untuk menjaga fokus dari penelitian ini, maka beberapa batasan yang
(frontal), dalam posisi tegak, dan tidak terhalangi sebagian oleh objek lain.
Pentland, 1991], dengan distribusi Gaussian dan clustering [Sung dan Poggio,
1994], dengan jaringan syaraf tiruan dan arbitrasi [Rowley et al., 1998], dengan
3
support vector machine [Osuna et al., 1997], dan dengan metode statistik dan
momentum. Sedangkan pada tesis ini akan dibuat sistem pendeteksi wajah yang
1988] dengan tujuan untuk mempercepat proses training pada jaringan syaraf
tiruan.
pada kecepatan training, dan penggunaan metode active learning pada hasil
pelatihan.
citra yang berisi wajah dengan berbagai ukuran, posisi, dan latar belakang.
4
Tujuan dari penelitian ini adalah untuk membuat sistem deteksi wajah
dengan masukan berupa citra digital sembarang. Sistem ini akan menghasilkan
dengan input berupa citra masukan akan ditentukan output berupa label kelas dari
citra tersebut. Dalam hal ini terdapat dua label kelas, yaitu wajah dan non-wajah
[Sung, 1996].
menggunakan asumsi bahwa data wajah yang tersedia memiliki ukuran yang sama
dan latar belakang yang seragam. Di dunia nyata, asumsi ini tidak selalu berlaku
karena wajah dapat muncul di dalam citra dengan berbagai ukuran, berbagai
2002].
5
BAB I. Pendahuluan
Bab ini membahas dasar-dasar teori dari citra digital, deteksi wajah,
Bab ini membahas tentang data dan peralatan penelitian, perancangan dan
Bab ini membahas tentang hasil pengujian dan pembahasan dari sistem
deteksi wajah.
BAB II
LANDASAN TEORI
Citra digital adalah suatu citra f(x,y) yang memiliki koordinat spatial, dan
tingkat kecerahan yang diskrit. Citra yang terlihat merupakan cahaya yang
dengan dua unsur. Unsur yang pertama merupakan kekuatan sumber cahaya yang
f ( x, y ) = i ( x, y ) ∗ r ( x , y ) (2.1)
di mana
dimana setiap pasangan indeks baris dan kolom menyatakan suatu titik pada citra.
dinamakan sebagai elemen citra, atau pixel (picture elemen). [Gonzales and
Woods, 1992].
7
Histogram equalization
Misalkan r adalah nilai graylevel pixel citra yang akan diproses, dan pr(rk)
nk
p r (rk ) = 0 ≤ rk ≤ 1 dan k = 0,1,..., L − 1 (2.2)
n
level grayscale rk muncul di dalam citra, dan n adalah banyaknya seluruh pixel di
dalam citra.
k nj k nj
s k = T (rk ) = = 0 ≤ rk ≤ 1 dan k = 0,1,..., L − 1 (2.3)
j =0 n j =0 n
inputnya adalah citra masukan dan akan ditentukan output yang berupa label kelas
dari citra tersebut. Dalam hal ini terdapat dua label kelas, yaitu wajah dan non-
menggunakan asumsi bahwa data wajah yang tersedia memiliki ukuran yang sama
dan latar belakang yang seragam. Di dunia nyata, asumsi ini tidak selalu berlaku
karena wajah dapat muncul dengan berbagai ukuran dan posisi di dalam citra dan
Pendeteksian wajah (face detection) adalah salah satu tahap awal yang
masukan dengan suatu database wajah dan menemukan wajah yang paling
• Posisi wajah. Posisi wajah di dalam citra dapat bervariasi karena posisinya
• Komponen-komponen pada wajah yang bisa ada atau tidak ada, misalnya
• Terhalang objek lain. Citra wajah dapat terhalangi sebagian oleh objek
lokalisasi wajah.
lokalisasi wajah.
deteksi wajah.
oleh manusia untuk menentukan apa saja yang membentuk suatu wajah. Pada
pendekatan ini, metode deteksi wajah dikembangkan berdasar pada aturan (rule)
Sebagai contoh, suatu wajah di dalam citra biasanya memiliki dua buah
mata yang simetris, sebuah hidung, dan sebuah mulut. Relasi antara fitur-fitur
10
tersebut dapat direpresentasikan sebagai jarak atau posisi. Pada tahap pertama
aturannya terlalu detail (strict), maka akan sering gagal mendeteksi wajah yang
tidak memenuhi aturan tersebut. Jika aturannya terlalu umum (general), akan
menghasilkan terlalu banyak false positive. Masalahnya akan bertambah sulit jika
harus mendeteksi wajah dengan pose yang bervariasi karena aturan yang dipakai
harus dapat menghadapi semua kemungkinan yang ada. Metode ini biasanya
hanya dapat bekerja dengan baik pada wajah frontal dan tegak dengan latar
belakang sederhana.
struktural dari wajah yang tetap eksis meskipun terdapat variasi pose, sudut
pandang, dan kondisi cahaya. Pada pendekatan ini, para peneliti mencoba
menemukan fitur-fitur yang tidak berubah (invariant) pada wajah. Asumsi ini
didasarkan pada observasi bahwa manusia dapat dengan mudah mendeteksi wajah
dengan berbagai pose dan kondisi cahaya, sehingga disimpulkan bahwa pasti ada
sifat-sifat atau fitur-fitur yang bersifat invariant. Fitur wajah seperti alis, mata,
Pada metode ini akan disimpan beberapa pola wajah standar untuk
pendeteksian akan dihitung korelasi antara citra input dengan citra pola wajah
tidak berubah (invariant) pada wajah. Asumsi ini didasarkan pada observasi
bahwa manusia dapat dengan mudah mendeteksi wajah dengan berbagai pose dan
kondisi cahaya, sehingga tentunya ada sifat-sifat atau fitur-fitur yang bersifat
invariant. Fitur wajah seperti alis, mata, hidung, mulut, biasanya diekstraksi
tidaknya wajah.
12
Pada metode ini, model wajah dipelajari melalui proses training dengan
menggunakan satu set data pelatihan yang berisi contoh-contoh wajah. Kemudian
hasil training ini digunakan untuk mendeteksi wajah. Secara umum metode ini
wajah.
Yang termasuk dalam kelompok ini antara lain adalah metode Eigenfaces
jaringan syaraf tiruan [Rowley, 1998], support vector machines (SVM) [Osuna,
1997], Sparse Network of Winnows (SNoW) [Yang, 2000], Naive Bayes Classifier
lewat.
13
4. Setiap neuron memiliki fungsi aktivasi yang akan menentukan nilai sinyal
output.
lapisan input (input layer), satu atau lebih lapisan tersembunyi (hidden layer), dan
satu lapisan output (output layer). Lapisan input menerima sinyal dari luar,
sederhana yang menghitung nilai aktivasinya yaitu si terhadap input eksitasi yang
net i = s wij − θ i
j (2.4)
j∈ pred (i )
melambangkan bobot koneksi dari unit j ke unit i, dan θ i adalah nilai bias dari
digantikan dengan suatu bobot yang terhubung dengan unit bernilai 1. Dengan
sigmoid:
1
si = f log (net i ) = (2.5)
1 + e − neti
Salah satu keuntungan dari fungsi ini adalah memiliki derivatif yang mudah
dihitung:
∂si
′ (net i ) = s i * (1 − s i )
= f log (2.6)
∂net i
Nilai dari fungsi sigmoid di atas memiliki nilai output antara 0 dan 1. Jika
diinginkan nilai output antara –1 dan 1, dapat digunakan fungsi bipolar sigmoid
2
si = g log (net i ) = −1 (2.7)
1 + e − neti
Pemetaan ini ditentukan melalui satu set pola contoh atau data pelatihan (training
data set).
15
Setiap pasangan pola p terdiri dari vektor input xp dan vektor target tp.
menghasilkan nilai output tp. Besarnya perbedaan antara nilai vektor target dengan
output aktual diukur dengan nilai error yang disebut juga dengan cost function:
1
E= (t np − s np ) 2 (2.9)
2 p∈P n
di mana n adalah banyaknya unit pada output layer. Tujuan dari training ini pada
ini umumnya digunakan pada jaringan syaraf tiruan yang berjenis multi-layer
feed-forward, yang tersusun dari beberapa lapisan dan sinyal dialirkan secara
yang diinginkan. Setelah training selesai dilakukan, hanya tahap pertama yang
∂E ∂E ∂s i
= (2.10)
∂wij ∂s i ∂wij
dan
∂s i ∂s i ∂net i
= ′ (net i ) s j
= f log (2.11)
∂wij ∂net i ∂wij
dimana wij adalah bobot penghubung dari neuron j ke neuron i, s i adalah output,
∂E 1 ∂ (t i − si ) 2
= = −(t i − s i ) (2.12)
∂s i 2 ∂s i
∂E ∂E ∂s k
=
∂s i k∈succ ( i ) ∂s k ∂s i
∂E ∂s k ∂net k
=
k∈succ ( i ) ∂s k ∂net k ∂s i
∂E
= ′ (net k ) wki
f log (2.13)
k∈succ ( i ) ∂s k
17
berikutnya yang terhubung dengan unit i telah diketahui nilainya. Untuk itu
Dengan kata lain, informasi error dipropagasikan secara berurutan bermula dari
output layer dan berakhir pada input layer, sehingga algoritma ini diberi nama
dan
∂E
∆wij (t ) = −ε (t ) (2.15)
∂wij
Pilihan nilai learning rate ε akan sangat berpengaruh pada proses training. Jika ε
terlalu kecil, training akan memerlukan iterasi yang banyak sehingga lama untuk
mencapai konvergen. Jika ε terlalu besar, bisa timbul osilasi sehingga tidak akan
∂E
∆wij (t ) = −ε (t ) + µ∆wij (t − 1) (2.16)
∂wij
bobot pada iterasi sebelumnya. Cara ini dapat bekerja dengan baik pada kasus
tertentu, namun tidak bersifat umum. Kadang-kadang malah diperoleh hasil yang
yang terbuka ke atas, dan gradien dari kurva error untuk suatu bobot tidak
berikut:
∂E
(t )
∂E ∂w
∆w(t ) = −ε (t ) + * ∆w(t − 1) (2.17)
∂w ∂E ∂E
(t − 1) − (t )
∂w ∂w
di mana:
19
BAB III
Data yang digunakan dalam penelitian ini terdiri dari sekumpulan citra
untuk pelatihan (training data set) dan sekumpulan citra untuk pengujian (testing
data set). Citra untuk pelatihan maupun untuk pengujian diperoleh dari berbagai
sumber seperti foto, majalah, koran, televisi, dan internet. Citra yang akan
digunakan untuk pengujian tidak akan digunakan dalam pelatihan. Citra yang
Data citra untuk pelatihan dan pengujian yang diperoleh dari internet
http://www.uk.research.att.com/pub/data/att_faces.tar.Z),
- “Test Images for the Face Detection Task” dari MIT dan CMU (URL:
http://www.cs.cmu.edu/~har/faces.html),
- “CBCL Face Database #1”, MIT Center For Biological and Computation
http://images.ee.umist.ac.uk/danny/index.html).
Jumlah citra data wajah yang digunakan sebanyak 1000 citra wajah
berukuran 20x20 pixel. Proses pemotongan (cropping) bagian wajah dari citra
resizing, histogram equalization, dan masking. Dari 1000 citra wajah tersebut juga
dibuat 2000 citra tambahan dengan cara melakukan proses pencerminan dan rotasi
dari 5 sampai 10 derajat terhadap citra asal secara random, sehingga secara
Citra non-wajah diambil dari 96 file citra yang tidak terdapat wajah di
dalamnya. Contoh citra non-wajah adalah gambar pemandangan dalam dan luar
seluruhnya, akan didapatkan lebih dari 36 juta subcitra berukuran 20x20 pixel.
Tidak semua subcitra non-wajah tersebut akan diambil untuk pelatihan, namun
dipilih secara otomatis dengan teknik active learning sebagaimana akan dijelaskan
kemudian.
komputer dengan prosesor Intel Celeron 667 MHz, memori 256 MB SDRAM,
Secara garis besar sistem deteksi wajah yang dibangun di sini dibagi
besar.
Training Trainer
Data Set JST
Diagram aliran data (DFD) dari sistem deteksi wajah terdiri dari 2 bagian
utama, yaitu: Sistem Trainer JST dan Sistem Detektor Wajah. Gambar 3.2
Tampilan
Training Data Set Proses Training
User Sistem User
Trainer JST
Sistem Trainer JST dijabarkan lebih lanjut dengan DFD level 1 yang
ditunjukkan pada gambar 3.3. Training data set terdiri dari contoh wajah maupun
Setelah proses training selesai, akan dihasilkan nilai bobot jaringan syaraf
tiruan yang disimpan di dalam suatu struktur data. Selanjutnya nilai bobot ini akan
disimpan ke dalam file yang dikehendaki oleh user. File ini nantinya akan
Contoh wajah
1.
User Histogram
Equalization
Contoh non-wajah
User
Citra telah diproses
Citra telah hist. equalization
di-masking
3. 2.
Normalisasi Masking
Citra telah
di-normalisasi
Sedangkan penjabaran lebih lanjut dari Sistem Detektor Wajah yang berupa DFD
Citra Masukan
Sistem Lokasi Wajah
User Detektor
Pilihan Bobot JST User
Wajah
masukan yang akan dideteksi dan file bobot JST yang diperoleh dari hasil
training. Citra masukan ini akan dibaca dan dikonversi menjadi array.
window berukuran 20x20. Window ini digeser ke seluruh daerah citra, mulai dari
sudut kiri atas sampai sudut kanan bawah, dengan tujuan agar dapat mendeteksi
wajah di semua posisi di dalam citra. Pada proses ekstraksi subcitra ini citra juga
akan diperkecil secara berulang dengan perbandingan 1:1.2 dengan tujuan agar
berupa histogram equalization, masking, dan normalisasi yang sama seperti pada
25
saat training. Hasil preprocessing ini dijadikan sebagai input untuk pengklasifikasi
Citra Masukan 2.
User Baca citra
Pilihan
Bobot JST
Array
Pixel Citra
Bobot JST
Nilai
Bobot JST
1. User
Pilih Bobot
JST
Lokasi
Wajah
Bobot JST
Terpilih
4.
Merging
Kandidat
3. Wajah
Cari
kandidat wajah
untuk mendapatkan hasil akhir berupa lokasi dan ukuran wajah yang terdeteksi.
Hasil akhir deteksi ini akan ditampilkan kepada user, dan dapat disimpan ke
Jaringan syaraf yang digunakan pada sistem ini menggunakan jenis multi-
[Rowley, 1998] dengan sedikit modifikasi. Susunan unit dari jaringan ini
Lapisan input terdiri dari 400 unit input, yang menerima masukan dari
nilai grayscale pixel 20x20 dari subcitra yang akan dideteksi. Sebelum dijadikan
input untuk JST, nilai grayscale yang berkisar dari 0 sampai 255 dinormalisasi
menjadi antara –1 dan 1. Cara ini disarankan oleh [LeCun, 1998] yang
menunjukkan bahwa konvergensi umumnya akan lebih cepat tercapai jika nilai
Lapisan output terdiri dari sebuah unit dengan nilai keluaran berkisar
antara –1 dan 1. Pada training data set didefinisikan nilai 1 untuk data wajah dan –
1 untuk data non-wajah. Agar nilai output dari JST memiliki range antara –1
2
si = g log (net i ) = −1
1 + e − neti
berukuran 4x4 pixel. Bagian kedua terhubung dengan lapisan input yang
tersembunyi dapat mendeteksi fitur-fitur lokal dari wajah yang berperan dalam
membedakan antara citra wajah dengan non-wajah. Susunan semacam ini juga
umum digunakan pada kasus pengenalan suara dan karakter [Rowley, 1998].
termasuk bias. Pada sistem [Rowley, 1998] yang lebih kompleks, jumlah bobot
diperlukan data pelatihan yang lebih banyak, waktu training yang lebih lama, dan
Input Hidden
Layer Layer
grid
5x5 pixel
Output
input
20x20
pixel
grid
4x4 pixel
disimpan ke suatu file. File ini nantinya akan digunakan oleh detektor wajah
Pada saat pelatihan, relatif mudah untuk memilih contoh citra wajah yang
akan digunakan. Namun untuk memilih contoh citra non-wajah adalah lebih sulit,
karena jenis objek non-wajah di dunia ini jauh lebih banyak daripada objek wajah.
Karena itu pelatihan dilakukan dengan menggunakan teknik yang disebut dengan
active learning yang juga digunakan pada [Sung, 1996]. Cara ini disebut juga
Pada teknik active learning ini training dilakukan secara bertahap. Pada
tahap pertama training dimulai dengan menggunakan sedikit data non-wajah. Pada
tahap berikutnya, data training non-wajah ditambah sedikit demi sedikit. Namun
data tambahan tersebut diseleksi hanya untuk data tertentu saja, yaitu data yang
yang dideteksi sebagai wajah (false positive) pada hasil training tahap
sebelumnya.
29
Koleksi Contoh
Data Wajah
Data Training
Data Awal
Non-Wajah Trainer Data Tambahan
JST Non-Wajah
Pilih
random Bobot JST
Hasil Training
Hasil Deteksi
(False Positive)
Dengan cara ini, data tambahan yang terpilih untuk training hanya data
yang belum berhasil diklasifikasi dengan benar oleh jaringan syaraf tiruan. Data
yang sudah dapat diklasifikasi dengan baik oleh jaringan syaraf tiruan tidak perlu
ditambahkan sebagai data training. Dengan demikian jumlah data training yang
digunakan untuk jaringan syaraf tiruan akan lebih sedikit. Karena data training
yang digunakan lebih sedikit, waktu yang diperlukan untuk proses training juga
lebih singkat.
30
Pada tahap pertama, bobot awal yang digunakan untuk jaringan syaraf
tiruan dipilih secara random. Pada tahap berikutnya, bobot awal yang digunakan
sama dengan yang digunakan untuk training. Bobot penghubung yang digunakan
diambil dari bobot terakhir yang dihasilkan pada proses training dengan
menggunakan teknik active learning. Hasil deteksi akan diputuskan sebagai wajah
jika output dari JST lebih dari 0, dan diputuskan sebagai non-wajah jika output
JST kurang dari atau sama dengan 0. Gambar 3.8 menunjukkan diagram alir
Baca Window
Pertama
Perkecil
citra
Histogram
Equalization
Masking
Geser
Normalisasi window
Pengklasifikasi
JST
Simpan
Ya Ditemukan
Kandidat
Wajah?
Wajah
Tidak
Tidak
Window
Terakhir?
Ya
Ukuran Ya
citra > 20x20
pixel?
Tidak
Merging Kandidat
Wajah
Tampilkan
Lokasi Wajah End
Pada citra yang akan dideteksi, posisi wajah bisa berada di mana saja.
Pengklasifikasi jaringan syaraf tiruan pada detektor wajah memerlukan input citra
20x20 pixel. Karena itu digunakan window 20x20 pixel yang digeser melalui
seluruh daerah citra. Detektor akan memeriksa satu persatu subcitra yang dilalui
Pada citra yang dideteksi, wajah bisa memiliki ukuran yang bervariasi.
Karena itu citra akan diperkecil secara bertahap dengan skala perbandingan 1:1,2
sebagaimana dilakukan pada [Rowley, 1998]. Pada setiap ukuran citra yang
diperkecil, window 20x20 pixel akan digeser melalui seluruh area citra. Dengan
demikian detektor dapat mendeteksi wajah dengan berbagai ukuran. Cara ini juga
3.2.4.2. Resizing
Proses resizing digunakan baik pada citra data pelatihan maupun pada citra
yang akan dideteksi. Pada citra data pelatihan, citra wajah yang diperoleh dari
berbagai sumber memiliki ukuran yang beragam, karena itu harus diseragamkan
sehingga memiliki ukuran 20x20 pixel. Proses resizing atau resampling dilakukan
matriks dua dimensi. Matriks tersebut memiliki nilai ya[1..m][1..n] yang isinya
adalah level grayscale dari pixel-pixel di dalam citra. Informasi lokasi dari pixel-
33
pixel tersebut disimpan dalam array x1a[1..m] dan x2a[1..n]. Relasi antara nilai-
Dengan interpolasi, akan diestimasi nilai fungsi y(x1, x2) pada suatu lokasi (x1,x2)
di mana x1 dan x2 bukan nilai integer di antara 1..m dan 1..n. Formula untuk
dan
di mana
y1 = ya[j][k]
y2 = ya[j+1][k]
y3 = ya[j+1][k+1]
y4 = ya[j][k+1]
Misalkan r adalah nilai graylevel pixel citra yang akan diproses, dan pr(rk)
nk
p r (rk ) = 0 ≤ rk ≤ 1 dan k = 0,1,..., L − 1
n
level grayscale rk muncul di dalam citra, dan n adalah banyaknya seluruh pixel di
dalam citra.
k nj k nj
sk = T (rk ) = = 0 ≤ rk ≤ 1 dan k = 0,1,..., L − 1
j =0 n j =0 n
3.2.4.4. Masking
tersebut. Dengan demikian dimensi dari data juga akan menjadi lebih kecil. Proses
ini juga dilakukan pada penelitian [Sung, 1996] dan [Rowley, 1998].
yang sama. Untuk itu dilakukan penggabungan (merging) pada hasil deteksi yang
bersinggungan tersebut dengan mengambil nilai rata-rata dari posisi dan ukuran
window dimana wajah tersebut dideteksi. Proses penggabungan ini juga dilakukan
Dari sudut pandang pemakai, masukan dari detektor wajah adalah file citra
dengan format BMP atau JPG. File citra tersebut dapat dipilih melalui suatu kotak
dialog di mana pemakai dapat memilih drive dan folder yang diinginkan.
dideteksi. Area di mana wajah terdeteksi juga akan ditandai dengan kotak. Lokasi-
lokasi wajah yang terdeteksi dapat disimpan ke suatu file, sehingga di lain waktu
Pemakai dapat memilih set nilai bobot penghubung yang diinginkan. Jika
trainer JST menjalani training lebih lanjut dengan tambahan data training baru,
maka akan dihasilkan nilai bobot yang baru. Nilai bobot yang baru ini dapat
sama.
Sistem detektor wajah ini juga dirancang agar dapat melakukan deteksi
wajah pada beberapa citra sekaligus secara batch, dan menyimpan informasi hasil
deteksinya di suatu file. Dengan cara ini, pemakai dapat membiarkan program
melakukan deteksi untuk sejumlah file citra sekaligus, kemudian baru mengamati
C++. Sebuah kelas abstrak untuk jaringan syaraf tiruan dibuat agar dapat
diturunkan menjadi kelas-kelas baru yang memiliki susunan unit dan koneksi
diimplementasikan pada setiap jaringan syaraf tiruan. Berikut ini kelas abstrak
yang digunakan:
Training data set dan bobot jaringan syaraf tiruan diimplementasikan dengan
struct TrainingDataClass
{
double trd_out;
double trd_in[400];
};
37
...
Output dari jaringan syaraf tiruan dihitung dengan lebih dulu menghitung
nilai dari unit-unit pada hidden layer. Implementasi program untuk menghitung
double NN1dClass::CalcError()
{
static int i;
static double Ep, y, t;
Ep = 0;
for (i=0; i<Ntrd; i++) {
y = yout(aTRD[i].trd_in);
t = aTRD[i].trd_out;
Ep = Ep + pow((t-y),2);
}
Ep = Ep/Ntrd;
return Ep;
}
wajah pada citra sembarang. Proses ini diikuti dengan proses resizing untuk
break;
else {
// save result in img1[][]
ResizeImage(w, h); // update img1width, img1height, img1[][]
}
}
...
}
3.3.3. Resizing
saat proses deteksi wajah. Contoh citra wajah yang diperoleh dari berbagai
dilakukan pada contoh citra wajah untuk menghasilkan citra data pelatihan yang
Pada proses deteksi wajah, resizing dilakukan pada citra yang akan
dideteksi dengan tujuan agar dapat mendeteksi wajah dalam berbagai ukuran di
dalam citra. Implementasi program untuk resizing dapat dilihat pada kutipan kode
berikut:
citra (contrast strecthing) secara otomatis. Dengan demikian citra yang akan
program berikut:
void HistogramEqualize()
{
// histogram equalization
static int nr[256];
static int ns[256];
int i, k, ix, iy;
unsigned char g;
// build histogram table
for (i=0; i<256; i++) nr[i]=0;
for (ix=0; ix<DX; ix++) {
for (iy=0; iy<DY; iy++) {
g = img_in[ix][iy];
nr[g]++;
}
}
for (k=0; k<256; k++) {
s = 0;
for (j=0; j<=k; j++)
s += ((double)nr[j]) / ((double)n_total_pixel);
ns[k] = s * 255;
}
42
3.3.5. Masking
program berikut:
43
//----------------------------------------------------------------------
-----
void InitWindowMaskInfo()
// inisialisasi informasi mask pada 4 sudut image window
{
int n = 0;
for (int iy=0; iy<20; iy++) {
for (int ix=0; ix<20; ix++) {
if (isMaskPosition_(ix,iy)) {
bl_isMask[ix][iy] = true;
uc_isMask[n] = 0x00;
}
else {
bl_isMask[ix][iy] = false;
uc_isMask[n] = 0xFF;
}
n++;
}
}
}
adalah agar satu wajah yang sama tidak dideteksi sebagai beberapa wajah.
Implementasi dari proses ini dapat dilihat pada kutipan program berikut:
BAB IV
Untuk mengukur evaluasi unjuk kerja dari detektor wajah, pada umumnya
digunakan dua parameter, yaitu detection rate dan false positive rate [Yang,
2002]. Detection rate adalah perbandingan antara jumlah wajah yang berhasil
dideteksi dengan jumlah seluruh wajah yang ada. Sedangkan false positive rate
Pada saat dilakukan deteksi wajah pada citra, biasanya sebuah wajah
terdeteksi pada beberapa lokasi yang berdekatan. Lokasi-lokasi ini disebut dengan
kandidat wajah. Untuk menentukan lokasi final dari wajah perlu dilakukan proses
Gambar 4.1. adalah contoh hasil deteksi sebelum dan sesudah proses
satu wajah di dalam citra tersebut. Setelah dilakukan proses merging, hanya satu
citra standar yang sering digunakan dalam penelitian di bidang deteksi wajah.
Data citra standar yang digunakan berasal dari MIT yang terdiri dari 23
file citra yang secara keseluruhan berisi 149 wajah (MIT-23). Kumpulan citra
standar ini pertama kali dipublikasikan pada [Sung, 1994]. Pada data uji ini
diperoleh hasil detection rate sebesar 71,14% dan false positives sebanyak 62.
Hasil ini diperoleh dengan melakukan training yang menggunakan 3000 data
Tabel 4.1 menunjukkan hasil deteksi yang pernah dilakukan oleh para
peneliti lain dengan menggunakan data uji MIT-23. Namun demikian harus
diingat bahwa menurut [Hjelmas, 2001] perbandingan ini tidak bisa dijadikan
patokan mutlak untuk menyimpulkan bahwa satu metode lebih baik dari metode
Sebagai contoh, pada sistem [Sung, 1994] digunakan 4150 data wajah dan
sekitar 16000 data wajah dan 8000 data non-wajah. Pada sistem [Osuna, 1997]
digunakan 50000 data, namun tidak dilaporkan berapa banyaknya data wajah dan
non-wajah. Pada sistem yang lain tidak dilaporkan berapa jumlah data yang
digunakan.
Detection False
Metode
Rate Positif
Support vector machines (SVM) [Osuna, 1997] 74,2% 20
Distribution-based dan clustering [Sung, Poggio, 1994] 79,9% 5
Neural Networks [Rowley, 1998] 84,5% 8
Kullback relative information [Lew, Huijsmans, 1996] 94,1% 64
terhadap hasil deteksi. Tabel ini berdasarkan hasil deteksi pada suatu citra berisi
15 wajah dan memiliki total 790.797 window. Terlihat bahwa semakin banyak
data training non-wajah yang digunakan, semakin kecil angka false positive yang
dihasilkan. Hal ini menunjukkan bahwa dengan data yang semakin lengkap, hasil
Tabel 4.2 Pengaruh Jumlah Data Training pada Unjuk Kerja Deteksi Wajah
53
dengan training yang menggunakan data yang diambil secara random. Jumlah data
yang digunakan adalah sama. Tabel 4.4 menunjukkan hasilnya. Terlihat bahwa
teknik active learning berguna dalam memilih data training yang benar-benar
digunakan.
54
Tabel 4.4 Pengaruh Active Learning pada Unjuk Kerja Deteksi Wajah
55
BAB V
5.1. Kesimpulan
bahwa jaringan syaraf tiruan dapat dimanfaatkan untuk melakukan deteksi wajah
pada citra digital. Dengan menggunakan data uji standar (MIT-23) yang terdiri
dari 23 file citra berisi 149 wajah, dengan total jumlah window yang dideteksi
sebanyak 9.720.932, didapatkan hasil detection rate 71,14% dan false positive 62.
Pada sistem deteksi wajah yang berbasis contoh, hasil yang diperoleh
sangat dipengaruhi oleh banyaknya contoh data dan kualitas data yang digunakan
dalam training.
training secara selektif. Metode ini bermanfaat untuk meminimalkan jumlah data
5.2. Saran
warna kulit. Kecepatan deteksi juga dapat ditingkatkan dengan bantuan pendeteksi
warna kulit, karena dengan demikian deteksi dengan jaringan syaraf tiruan hanya
Teknologi deteksi wajah adalah salah satu bidang penelitian yang masih
terus berkembang. Hasil dari deteksi wajah ini dapat dimanfaatkan lebih lanjut
Hjelmas, E., Low, B.K., 2001, “ Face Detection: A Survey” , Computer Vision and
Image Understanding. 83, pp. 236-274.
LeCun, Y., Bottou, L., Orr, G.B., Muller, K.R., 1998, “ Efficient BackProp” ,
Neural Networks: tricks of the trade, Springer.
Lew, M. S., Huijsmans, N., 1996, “ Information Theory and Face Detection” ,
Proc. of International Conference on Pattern Recognition 1996.
Osuna, E., Freund, R., Girosi, F., 1997, “ Training Support Vector Machines: An
Application to Face Detection” , Proc. IEEE Conf. Computer Vision and
Pattern Recognition 1997.
Sung, K.K., 1996, “ Learning and Example Selection for Object and Pattern
Detection” , AITR 1572, Massachusetts Institute of Technology AI Lab.
Sung, K.K., Poggio, T., 1994, “ Example-Based Learning for View-Based Human
Face Detection” , Technical Report AI Memo 1521, Massachusetts Institute
of Technology AI Lab.
Yang, M.H., Kriegman, D., Ahuja, N., 2002, “ Detecting Faces in Images: A
Survey” , IEEE Trans. Pattern Analysis and Machine Intelligence, vol. 24,
no. 1.
LAMPIRAN 1
int NN1dClass::StartTrainingQuickprop()
{
/************************************************************
USE QUICKPROP ALGORITHM (reference: Fahlman, 1988)
Variable name convention: w => weight, b => bias
***********************************************************/
double Ep; // Error
double mju; // learning rate
double mgf; // maximum growth factor (denoted mju in some literature)
double * xi; // pointer to input training data
double t, dfa_y, ynet, del_o, dfa_h, sigma_x;
double del_h;
int i,j,k;
mju = Form1->editLearnRate->Text.ToDouble();
mgf = Form1->editMGF->Text.ToDouble();
nMAX_EPOCH = Form1->editMaxEpoch->Text.ToInt();
errorGoal = Form1->editErrorGoal->Text.ToDouble();
dTargetValueFace = Form1->editTargetValueFace->Text.ToDouble();
max_wrongClass = Form1->edit_max_wrongClass->Text.ToIntDef(0);
epoch = 0;
TDateTime t1, t2;
AnsiString s;
s = Form1->edit_Ntrd->Text;
Ntrd = s.ToIntDef(0);
if (Ntrd<0) Ntrd=0;
t1 = Now();
if (Ntrd==0) {ShowMessage("Ntrd = 0!"); return(0);}
if (!InitWeight()) return(0);
if (!InitTrainingInputDataSet()) return(0);
Form1->Memo5->Clear();
// dE_dw_wlayer1 --> dE/dw utk layer 1, ... dst
double * dE_dw_wlayer1 = new double[nwh];
double * dE_dw_blayer1 = new double[nbh];
double * dE_dw_wlayer2 = new double[nwo];
double dE_dw_blayer2;
// dE_dw_wlayer1_prev --> previous dE/dw utk layer 1, ... dst
double * dE_dw_wlayer1_prev = new double[nwh];
double * dE_dw_blayer1_prev = new double[nbh];
double * dE_dw_wlayer2_prev = new double[nwo];
double dE_dw_blayer2_prev;
// dwo, dwh, dbo, dbh --> weight changes
// old_dwo, old_dwh, old_dbo, old_dbh --> previous weight changes
double dbo, old_dbo;
double * dwo = new double[nwo];
double * old_dwo = new double[nwo];
double * dwh = new double[nwh];
double * old_dwh = new double[nwh];
double * dbh = new double[nbh];
double * old_dbh = new double[nbh];