Jaringan Syaraf Tiruan untuk Identifikasi Wajah
Berikut ini merupakan contoh aplikasi pemrograman Jaringan Syaraf Tiruan Backpropagation sederhana untuk identifikasi wajah seseorang berdasarkan ciri mata, hidung, mulut, dan telinga.
1. Langkah pertama yaitu mempersiapkan data untuk proses pelatihan dan pengujian
Berikut ini merupakan contoh data untuk proses pelatihan
No | Ciri/ Feature | Target | |||
Mata | Hidung | Mulut | Telinga | Nama Orang | |
1 | 0.35 | 0.47 | 0.88 | 0.34 | Adi |
2 | 0.59 | 0.11 | 0.90 | 0.56 | Budi |
3 | 0.19 | 0.89 | 0.54 | 0.38 | Candra |
4 | 0.36 | 0.90 | 0.39 | 0.82 | Dedi |
5 | 0.58 | 0.45 | 0.80 | 0.91 | Erik |
6 | 0.40 | 0.45 | 0.80 | 0.35 | Adi |
7 | 0.61 | 0.11 | 0.90 | 0.55 | Budi |
8 | 0.20 | 0.87 | 0.56 | 0.41 | Candra |
9 | 0.38 | 0.88 | 0.35 | 0.85 | Dedi |
10 | 0.57 | 0.46 | 0.82 | 0.92 | Erik |
11 | 0.33 | 0.45 | 0.85 | 0.37 | Adi |
12 | 0.55 | 0.14 | 0.90 | 0.57 | Budi |
13 | 0.18 | 0.87 | 0.55 | 0.40 | Candra |
14 | 0.38 | 0.89 | 0.37 | 0.85 | Dedi |
15 | 0.56 | 0.47 | 0.83 | 0.91 | Erik |
Sedangkan contoh data untuk pengujian adalah sbb:
No | Ciri/ Feature | Target | |||
Mata | Hidung | Mulut | Telinga | Nama Orang | |
1 | 0.38 | 0.43 | 0.85 | 0.34 | Adi |
2 | 0.60 | 0.14 | 0.87 | 0.57 | Budi |
3 | 0.19 | 0.88 | 0.60 | 0.40 | Candra |
4 | 0.35 | 0.90 | 0.41 | 0.83 | Dedi |
5 | 0.59 | 0.45 | 0.78 | 0.93 | Erik |
2. Langkah berikutnya yaitu menyusun data latih beserta target latih sesuai dengan format pemrograman JST di Matlab. Data latih disusun sehingga menjadi matriks berukuran 4 x 15 seperti berikut ini
0.35 | 0.59 | 0.19 | 0.36 | 0.58 | 0.40 | 0.61 | 0.20 | 0.38 | 0.57 | 0.33 | 0.55 | 0.18 | 0.38 | 0.56 |
0.47 | 0.11 | 0.89 | 0.90 | 0.45 | 0.45 | 0.11 | 0.87 | 0.88 | 0.46 | 0.45 | 0.14 | 0.87 | 0.89 | 0.47 |
0.88 | 0.90 | 0.54 | 0.39 | 0.80 | 0.80 | 0.90 | 0.56 | 0.35 | 0.82 | 0.85 | 0.90 | 0.55 | 0.37 | 0.83 |
0.34 | 0.56 | 0.38 | 0.82 | 0.91 | 0.35 | 0.55 | 0.41 | 0.85 | 0.92 | 0.37 | 0.57 | 0.40 | 0.85 | 0.91 |
Sedangkan target latih disusun menjadi matriks berukuran 1 x 15 seperti berikut ini
1 | 2 | 3 | 4 | 5 | 1 | 2 | 3 | 4 | 5 | 1 | 2 | 3 | 4 | 5 |
Keterangan: 1 = Adi, 2 = Budi, 3 = Candra, 4 = Dedi, 5 = Erik
3. Langkah selanjutnya yaitu menuliskan coding pada script matlab seperti berikut ini
3.1 Coding untuk menuliskan data latih dan target latih pada matlab
% Mempersiapkan data latih dan target latih data_latih = [0.35,0.59,0.19,0.36,0.58,0.40,0.61,0.20,0.38,0.57,0.33,0.55,0.18,0.38,0.56;... 0.47,0.11,0.89,0.90,0.45,0.45,0.11,0.87,0.88,0.46,0.45,0.14,0.87,0.89,0.47;... 0.88,0.90,0.54,0.39,0.80,0.80,0.90,0.56,0.35,0.82,0.85,0.90,0.55,0.37,0.83;... 0.34,0.56,0.38,0.82,0.91,0.35,0.55,0.41,0.85,0.92,0.37,0.57,0.40,0.85,0.91]; target_latih = [1,2,3,4,5,1,2,3,4,5,1,2,3,4,5]; [~,N] = size(data_latih);
3.2 Selanjutnya membuat coding Jaringan Syaraf Tiruan Backpropagation dengan arsitektur 4-2-1 dan inisialisasi bobot awal secara acak. Pada pemrograman ini digunakan fungsi aktivasi sigmoid biner (logsig) pada hidden layer dan fungsi aktivasi linear (purelin) pada layer keluaran. Sedangkan fungsi pelatihan menggunakan metode gradien descent
% Pembuatan JST net = newff(minmax(data_latih),[2 1],{'logsig','purelin'},'traingdx'); net.IW{1,1} = [-7.62,0.97,-2.60,-9.55;-5.83,-3.41,3.08,-4.44]; net.LW{2,1} = [-2.40,-2.67]; net.b{1,1} = [9.38;-2.7]; net.b{2,1} = 5.93;
3.3 Membuat coding untuk memberikan parameter-parameter yang mempengaruhi proses pelatihan jst seperti parameter jumlah epoch, target error, learning rate, momentum.
% Memberikan nilai untuk mempengaruhi proses pelatihan net.performFcn = 'mse'; net.trainParam.goal = 0.01; net.trainParam.show = 20; net.trainParam.epochs = 1000; net.trainParam.mc = 0.95; net.trainParam.lr = 0.1;
3.4 Membuat coding untuk melakukan pelatihan jaringan
% Proses training [net_keluaran,tr,Y,E] = train(net,data_latih,target_latih);
sehingga muncul tampilan seperti berikut:
Pada tampilan tersebut ditunjukkan bahwa target error (mse) tercapai pada epoch ke 506. Kita bisa melihat error (mse) yang dihasilkan pada setiap epoch dengan meng-klik tombol ‘performance’ sehingga muncul tampilan seperti berikut:
Sedangkan koefisien korelasi hasil pelatihan dapat dilihat dengan meng-klik tombol ‘regression’ sehingga diperoleh:
Nilai koefisien korelasi sebesar 0.99751 menunjukkan bahwa akurasi hasil proses pelatihan sangat baik.
3.5 Untuk melihat nilai-nilai hasil pelatihan, kita dapat menuliskan coding sbb:
% Hasil setelah pelatihan bobot_hidden = net_keluaran.IW{1,1}; bobot_keluaran = net_keluaran.LW{2,1}; bias_hidden = net_keluaran.b{1,1}; bias_keluaran = net_keluaran.b{2,1}; jumlah_iterasi = tr.num_epochs; nilai_keluaran = Y; nilai_error = E; error_MSE = (1/N)*sum(nilai_error.^2);
4. Langkah terakhir yaitu proses pengujian jaringan
4.1 Data uji disusun seperti ditunjukkan oleh matriks berikut
0.38 | 0.60 | 0.19 | 0.35 | 0.59 |
0.43 | 0.14 | 0.88 | 0.90 | 0.45 |
0.85 | 0.87 | 0.60 | 0.41 | 0.78 |
0.34 | 0.57 | 0.40 | 0.83 | 0.93 |
4.2 Dalam matlab kita dapat menuliskan coding sbb:
% Performa jaringan data_uji = [0.38,0.60,0.19,0.35,0.59;... 0.43,0.14,0.88,0.90,0.45;... 0.85,0.87,0.60,0.41,0.78;... 0.34,0.57,0.40,0.83,0.93]; hasil_uji = round(sim(net_keluaran,data_uji))
sehingga diperoleh hasil pada command window seperti berikut ini:
Hasil tersebut 100% sesuai dengan target uji yang telah diberikan sebelumnya. Pada contoh ini ditunjukkan bahwa JST dapat mengidentifikasi/ membedakan pola wajah seseorang berdasarkan ciri mata, hidung, mulut, dan telinga dengan baik.
Posted on August 24, 2015, in Data mining, Pengenalan Matlab, Pengenalan Pola and tagged aplikasi jaringan syaraf tiruan matlab, aplikasi jst matlab, aplikasi jst sederhana matlab, aplikasi jst untuk pengenalan wajah, aplikasi pengenalan wajah menggunakan jst matlab, back propagation artificial neural network, cara membuat jaringan syaraf tiruan matlab, cara membuat jst backpropagation matlab, cara membuat jst matlab, contoh aplikasi jaringan syaraf tiruan matlab, contoh jaringan syaraf tiruan sederhana matlab, contoh jst sederhana matlab, data mining jaringan syaraf tiruan, data mining menggunakan matlab, face recognition menggunakan matlab, identifikasi wajah menggunakan jaringan syaraf tiruan, jaringan syaraf tiruan back propagation, jaringan syaraf tiruan backpropagation matlab, jaringan syaraf tiruan matlab, jaringan syaraf tiruan propagasi balik matlab, pemrograman matlab jaringan syaraf tiruan sederhana, pengenalan wajah dengan jaringan syaraf tiruan sederhana, pengenalan wajah menggunakan jst matlab, tutorial jaringan syaraf tiruan matlab. Bookmark the permalink. 116 Comments.
Mas, kalau ada error
This index expression yields only one result.
Error in NamaFungsiSaya (line 112)
[net_keluaran,tr,Y,E]=train(net,train.ciri,train.target);
itu bagaimana ya, mas? saya pakai Matlab 2013a dan untuk matriks target itu isinya biner. Terima kasih. Mohon bantuannya.
bisa diperiksa kembali koding pelatihan jaringan yang benar
mas ini maksudnya apa yah ? mohon pencerahanya
% Pembuatan JST
net = newff(minmax(data_latih),[2 1],{‘logsig’,’purelin’},’traingdx’);
net.IW{1,1} = [-7.62,0.97,-2.60,-9.55;-5.83,-3.41,3.08,-4.44];
net.LW{2,1} = [-2.40,-2.67];
net.b{1,1} = [9.38;-2.7];
net.b{2,1} = 5.93;
Bisa dipelajari lebih lanjut mengenai teori jst
% Pembuatan JST
net = newff(minmax(data_latih),[2 1],{‘logsig’,’purelin’},’traingdx’);
kalo errornya disini gimana solusinya mas?
mas kalo untuk kasus pengenalan emosi dari suara itu lebih baik menggunakan yg mana ya?
Algoritma apa saja yang sudah dicoba?
mas mau tanya ini saya mau buat gender identification berdasarkan suara dan pakai algoritma ini, untuk mendapatkan nilai ciri dari data suaranya itu bagaimana ya?terimakasih
Bisa menggunakan vektor ciri dari sinyal suara
Mas Adi, bagaimana caranya mendapatkan nila ciri/feature dalam proses mempersiapkan data untuk proses pelatihan dan pengujian di atas?
Terimakasih
hallo mas,
di gambar paling akhir, hasil ujinya sesuai dengan target yang diinginkan. nah jadi nilai yang ada di output layer itu berupa true (1) / false(0) saja ya mas dan neuron yang ada di output layer cma 1 ya yang digunakan pada contoh diatas ?
jumlah neuron pada layer keluaran adalah satu, sedangkan jumlah kelas keluaran adalah lima
kak, kenapa kok fungsi aktivasi di hidden pakai sigmoid biner dan di output pakai linear ya?? apakah ada alasan kelebihan satu sama lainnya?
Bisa dicoba menggunakan fungsi aktivasi lain, tidak harus sigmoid biner atau linear
net.IW{1,1} = [-7.62,0.97,-2.60,-9.55;-5.83,-3.41,3.08,-4.44];
net.LW{2,1} = [-2.40,-2.67];
net.b{1,1} = [9.38;-2.7];
net.b{2,1} = 5.93;
mas untuk code yang itu masnya dapet angka random saja atau bagaimana?
mungkin bisa dijelaskan angkanya dapat darimana
Bobot awal di dalam arsitektur jaringan syaraf tiruan diinisialisasi secara random atau acak
Pingback: Pengertian Jaringan Syaraf Tiruan, Fuzzy Logic dan Algoritma Genetika – andre
Pingback: Kecerdasan Komputasional – Judul Situs