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.

Save

Save

Posted on August 24, 2015, in Data mining, Pengenalan Matlab, Pengenalan Pola and tagged , , , , , , , , , , , , , , , , , , , , , , , . Bookmark the permalink. 99 Comments.

  1. 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.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: