29
BAB 3 METODOLOGI PERANCANGAN
Bab ini berisi penjelasan mengenai langkah-langkah perhitungan serta prosedurprosedur yang digunakan untuk menemukan solusi atas rumusan masalah pada Bab1. Dalam bab ini juga akan ditampilkan objek-objek yang digunakan dalam penelitian untuk kebutuhan training data.
3.1
Pengenalan Citra Objek Pada penelitian ini, digunakan 70 citra objek yang terdiri dari 7 model kontur
sandal Dhiif’s tampak atas (kanan atau kiri saja, bukan sepasang). Setiap model sandal diambil sampel sebanyak 10 citra dalam posisi yang berbeda-beda, di mana 8 citra digunakan sebagai tahap pelatihan (sample learning) dan 2 citra digunakan sebagai tahap pengujian (sample detection). Setiap citra menggunakan format bitmap karena format ini menyimpan citra piksel per piksel dan tanpa kompresi data sehingga tidak terjadi kehilangan informasi pada citra yang dapat mengurangi keakuratan pengenalan. Citra yang digunakan ratarata berukuran 24 x 38 piksel sesuai dengan pertimbangan untuk memperoleh ketelitian dan kecepatan pengenalan yang optimal. Proses pengambilan citra adalah dengan cara memotret objek menggunakan kamera digital. Citra tersebut kemudian diubah ke dalam bentuk file .bmp berukuran 24 x 38 piksel dengan menggunakan software Adobe Photoshop.
30 Berikut ini adalah citra objek yang digunakan dalam penelitian:
Hati
Kodok
31 Lumba-lumba
Panda
32 Paus
Semangka
33 Stroberi
3.2
Representasi Citra Dengan Fourier Descriptors Penelitian ini memanfaatkan Fourier Descriptors sebagai praproses untuk
menciptakan representasi citra yang akan digunakan sebagai input bagi jaringan syaraf tiruan. Proses representasi citra dengan Fourier Descriptors terdiri dari beberapa tahap, yaitu tahap read picture, tahap mencari centre of gravity, tahap mencari Point M (titik terjauh), tahap mencari titik-titik koordinat, tahap menghitung panjang dan besar sudut dari kontur objek, dan tahap mencari parameter Fourier Descriptors.
3.2.1 Read Picture Modul ini digunakan untuk mengambil objek dari file grafik PCX 256 warna. Ada lima prosedur yang dipanggil dalam modul ini, yaitu prosedur ReadHeader, ReadPalette, ChangePalette, dan UnpackPCX. Prosedur ReadHeader berfungsi untuk menbaca record yang berisi header file PCX yang berukuran 128 byte dan berada pada awal file. Header yang sudah terbaca
34 ditampung ke dalam satu variabel yang bernama Head. Variabel Head telah dideklarasikan sebagai record. Field-field pada Head berisi informasi header. Dari field Manufacturer (byte 0) dan Version (byte 1) dapat diketahui apakah file yang sedang dibaca adalah file PCX 256 warna. Jika benar, dimensi image (byte 4) disimpan ke dalam variabel Width dan Depth. Selain itu, yang perlu disimpan adalah field BytePerLine (byte 66) yang dimasukkan ke dalam variabel Bytes. Variabel ini berisi jumlah byte per baris dari data file PCX. Prosedur ReadPalette untuk membaca palet warna. Palet ini ukurannya 768 byte dan berada pada akhir file. Ukuran 768 byte ini terdiri dari 256 tingkat warna merah (R), hijau (G), dan biru (B). Palet selalu diawali dengan kode 12.
Palet yang terbaca
disimpan ke dalam variabel Color. Tampilan mode VGA hanya menyediakan 64 tingkat untuk warna merah, hijau, dan biru, oleh sebab itu 256 tingkat warna ini harus dibagi dengan 4 agar menjadi 64 tingkat warna. Prosedur ChangePalette merupakan suatu interupsi yang memberitahukan bahwa akan terjadi transfer informasi ke card VGA. Prosedur UnpackPCX adalah prosedur untuk membuka data file PCX yang tercompress dengan melakukan encoding. Proses encoding data file PCX disebut runlength encoding dan dilakukan dengan membaca data per baris. Jumlah baris data file PCX diperoleh dari variabel Depth. Pada setiap baris, pertama-tama dilakukan pembacaan byte pertama dari setiap baris, misalkan byte pertama bernilai j. Dua bit awal diperiksa apakah “1”. Jika bukan, maka byte itu sendiri merupakan suatu nilai data tunggal. Tetapi jika benar, maka ada k byte data yang bernilai j, di mana k adalah nilai dari sisa enam bit terakhir ( k ) dari byte
35 pertama tadi. Jika byte pertama adalah 1101 0011, maka k = 13. Proses pembacaan (scanning) ini dilakukan sampai byte terakhir (byte 160) dari setiap baris. Hasil dari pembacaan citra file PCX ini disimpan ke dalam variabel Image1. Jadi Image1 adalah variabel array yang menyimpan informasi citra dengan ukuran 160 x 100 piksel.
3.2.2 Centre Of Gravity Setelah citra PCX dibaca, langkah berikutnya adalah menentukan titik berat (centre of gravity) objek. Untuk mencari titik berat, persamaannya adalah :
T ( xt , yt )
N ⎡ N ⎤ M ⎢∑ y ∑ M x ⎥ ⎥ = ⎢ t =N1 , t =N1 ⎢ Ai ∑ Ai ⎥ ⎢⎣ ∑ ⎥⎦ t =1 t =1
(3.1)
Untuk memasukkan nilai-nilai ke dalam persamaan ini, yang harus dicari terlebih dahulu adalah chain code. Setelah chain code dicari, baru dapat diperoleh harga momen sumbu x (Mx), momen sumbu y (My), dan luas (A). Dalam mencari chain code, langkah pertama adalah menemukan titik awal objek. Pencarian titik awal dilakukan dengan prosedur Initial_Search. Pencarian titik awal objek dilakukan dengan scanning per baris dimulai dari piksel paling kiri atas. Setiap piksel memiliki tingkat warna tertentu. Karena Objek berwarna dengan latar belakang putih, maka pencarian akan berhenti jika sudah menemukan piksel yang berwarna. Arah atau chain pada chain code dicari mulai dari titik awal dan berakhir pada titik yang sama. Pencarian dilakukan dengan prosedur SearchCode. Cara pencarian arah dapat dilihat pada Gambar 3.1
36
3
2
1
4
0
5
6 7 chain direction
starting chain
chain = 0
chain = 1
chain = 2
chain = 3
chain = 4
chain = 5
chain = 6
chain = 7
Gambar 3.1 Pencarian arah pada Freeman Code Karena scanning dilakukan dari atas, maka arah mula-mula dianggap 0. Hasil pencarian arah ini disimpan ke dalam daftar berkait (link-list) dengan chain code sebagai penunjuk/pointer awal daftar berkait. Prosedur untuk menyimpan arah-arah chain code adalah prosedur SaveCode_To_Buffer. Selain mendapatkan arah-arah chain code, dari prosedur ChainCode disimpan juga koordinat-koordinat titik yang membentuk keliling
37 objek. Koordinat-koordinat ini disimpan ke dalam daftar berkait juga, di mana kontur sebagai penunjuk awal. Proses
penyimpanan
koordinat
ini
dilakukan
dengan
prosedur
SaveCoord_To_Buffer. Dari titik-titik yang membentuk keliling objek diperoleh imageimage, jumlah titik disimpan dalam variabel SumOfPoint. Setelah diperoleh arah-arah chain code, nilai Mx, My, dan A dapat dicari dengan melihat tabel 1. Tabel 3.1 Tabel Rumus mencari luas (A) dan momen Vektor
A
Mx
My
0
y
y2 2
0
1
y+
y2 y 1 + + 2 2 6
x2 x 1 + + 2 2 6
2
0
0
x2 2
3
1⎞ ⎛ −⎜y + ⎟ 2⎠ ⎝
4
1 2
−
−y
5
1⎞ ⎛ −⎜y − ⎟ 2⎠ ⎝
6
0
7
y−
y2 y 1 − − 2 2 6
x2 x 1 − + 2 2 6
y2 2
0
−
−
y2 y 1 + − 2 2 6
−
0
1 2
y2 y 1 − + 2 2 6
x2 x 1 + − 2 2 6
−
−
x2 2
x2 x 1 − − 2 2 6
Dengan diperoleh nilai Mx, My dan A, maka titik berat (titik T) dapat dicari, koordinat titik berat dinyatakan dengan (Xt ,Yt).
38 Pada akhir prosedur chain code, isi dari daftar berkait dipindahkan ke dalam array dengan prosedur MoveCoordToArray. Variabel array yang digunakan adalah ArContour. Pemindahan ini dilakukan karena isi daftar berkait ini akan berubah setelah objek mengalami transformasi. Setelah isi daftar berkait dipindahkan, memori yang digunakan untuk daftar berkait dibebaskan dengan prosedur DisposeContour.
3.2.3 Point M Prosedur Point_M untuk mencari titik terjauh (titik M) dari titik berat. Cara pencarian titik M dengan mengukur jarak antara titik M dengan titik-titik yang membentuk keliling objek (kontur). Hasil pengukuran jarak dibandingkan, titik yang menghasilkan jarak terjauh dengan titik T dinyatakan sebagai titik M. Rumus untuk mengukur jarak dapat dihitung dengan persamaan: d =
(x
− xt ) + ( y p − yt ) 2
p
2
(3.2)
Jarak d dapat dicari karena koordinat titik T dan titik-titik lainnya sudah diketahui. Jarak maksimum disimpan
ke dalam variabel dMax, sedangkan koordinat titik terjauh
dinyatakan dengan (Xmax,Ymax).
3.2.4 Cari Titik Koordinat Titik terjauh (titik M) merupakan koordinat dari titik pertama, dilanjutkan dengan koordinat titik ke dua dan seterusnya hingga mencapai koordinat titik ke sembilan. Pada kontur objek yang diteliti penulis hanya menentukan 9 titik koordinat.
39
3.2.5 Hitung panjang dan sudut (Menghitung Panjang dan Besar Sudut dari Kontur Objek) Dengan mengetahui titik-titik koordinat kontur objek, maka dapat dihitung panjang setiap edge dari objek yang bersangkutan (lihat Gambar 3.2). Suatu edge dinyatakan oleh dua buah verteks yang berdampingan.
(x m , y m ) Δl lm li
(x m , y i ) Gambar 3.2
(x i , y i )
Gambar sebuah edge E yang dibentuk dari dua buah verteks yang berdampingan Vi dan Vm
Untuk menghitung panjang edge dari verteks Vi sampai dengan verteks Vm dapat digunakan rumus Pythagoras. Di mana egde E merupakan sisi miringnya, sehingga panjang dari edge E adalah: Δl =
l12 + lm2
li = xi − xm
di mana:
(3.3) dan
lm = y i − ym
(3.4)
Sehingga rumusnya secara lengkap menjadi seperti di bawah ini : Δl =
(xi − xm )2 + ( yi − ym )2
(3.5)
40 Sedangkan untuk mencari besarnya sudut dari sebuah verteks ke verteks lainnya digunakan cara vektor. ΔΦi merupakan perubahan sudut pada verteks Vi (lihat Gambar 3.3). Terdapat dua edge yang bertemu pada verteks Vi, yaitu edge (Vi-1,Vi) dan edge (Vi,Vi+1).
Vi +1
Vi +1 ΔΦ i
Vi −1 ΔΦ i
Vi
Vi
Vi −1
Gambar 3.3
Gambar dua buah edge yang bertemu pada verteks Vi dengan sudut sebesar ΔΦi
Untuk mencari besar sudut ΔΦi digunakan cara vektor dot product, yakni : cos ΔΦ i =
Vi −1Vi • ViVi +1 Vi −1Vi ⋅ ViVi +1
(3.6)
Atau dapat juga dituliskan sebagai berikut: cos ΔΦ i =
(xi − xi −1 )(xi +1 − xi ) + ( yi − yi −1 )( yi +1 − yi ) (xi − xi −1 )2 + ( yi − yi −1 )2 ⋅ (xi +1 − xi )2 + ( yi +1 − yi )2
(3.7)
Karena untuk bahasa pemrograman C# memberikan nilai arccos (-1 ≤ Φ ≤ 1) di antara 0 – π, jadi untuk menentukan tanda (positif atau negatif) dari ΔΦi ini digunakan teori gradien dari suatu edge (lihat Gambar 3.4).
41 Vi +1 ΔΦ i Vi
α
β
β
α Vi −1
Gambar 3.4 Gambar dua buah edge dengan gadien m1 dan m2
tg β − tg α 1 + tg β ⋅ tg α
Dengan menentukan:
tg (β − a ) =
di mana:
m1 = tg α =
yi − yi −1 xi − xi −1
m2 = tg β =
yi +1 − yi xi +1 − xi
(3.8)
(3.9)
dan memeriksa apakah tg(β – α) ini bernilai positif atau negatif, maka dapat ditentukan: 1.
Perubahan sudut = + ΔΦi , jika 0 < ΔΦi < 1 dan tg(β - α) positif atau ½ π < ΔΦi < π dan tg(β – α) negatif.
2.
Perubahan sudut = - ΔΦi , jika 0 < ΔΦi < 1 dan tg(β – α) negatif atau ½ π < ΔΦi < π dan tg(β - α) positif. Dengan menggunakan cara-cara seperti di atas, maka dapat dihitung besarnya
perubahan sudut dari suatu verteks ke verteks lainnya. Akan tetapi akan muncul satu
42 kesulitan lagi apabila salah satu edge dari kontur objek tersebut ternyata sejajar dengan sumbu Y atau dengan kata lain Δxi = 0, sehingga gradien untuk edge tersebut adalah:
m =
yi − yi −1 = ∞ 0
(3.10)
Komputer tidak dapat menghitung suatu bilangan yang dibagi dengan 0. Oleh karena itu digunakan pendekatan lain, khusus untuk edge yang sejajar dengan sumbu Y atau Δxi = 0, yaitu dengan memperhatikan arah perputarannya. Untuk hal ini ada dua keadaan yaitu bila xi+1 = xi atau xi-1 = xi . Untuk masing-masing keadaan ada 4 kemungkinan perputaran arah (lihat Gambar 3.5 (a) dan Gambar 3.5 (b)). Untuk keadaan xi+1 = xi (Gambar 3.5 (a)) a. Untuk xi-1 < xi dan yi > yi+1, maka perubahan sudut ΔΦi adalah bertanda positif. b. Untuk xi-1 < xi dan yi < yi+1, maka perubahan sudut ΔΦi adalah bertanda negatif. c. Untuk xi-1 > xi dan yi > yi+1, maka perubahan sudut ΔΦi adalah bertanda negatif. d. Untuk xi-1 > xi dan yi < yi+1, maka perubahan sudut ΔΦi adalah bertanda positif.
Untuk keadaan xi-1 = xi (Gambar 3.5 (b)) a..Untuk xi > xi+1 dan yi-1 < yi , maka perubahan sudut ΔΦi adalah bertanda negatif. b. Untuk xi > xi+1 dan yi-1 > yi , maka perubahan sudut ΔΦi adalah bertanda positif c. Untuk xi < xi+1 dan yi-1 < yi , maka perubahan sudut ΔΦi adalah bertanda positif d. Untuk xi < xi+1 dan yi-1 > yi , maka perubahan sudut ΔΦi adalah bertanda negatif
43 Vi +1 c a Vi −1 Vi Vi −1 d b
Vi +1
Berbagai kemungkinan perputaran arah untuk keadaan xi = xi+1.
Gambar 3.5 (a)
Vi −1
c Vi +1
a
Vi
Vi +1
d
b
Vi −1
Gambar 3.5 (b) Berbagai kemungkinan perputaran arah untuk keadaan xi-1 = xi.
Dengan pendekatan-pendekatan seperti inilah dapat dihitung panjang dan besar sudut dari suatu verteks ke verteks lain pada kontur suatu objek.
44
3.2.6 Cari parameter Setelah mendapatkan panjang dan besar sudut dari suatu verteks ke verteks lainnya pada kontur suatu objek, maka dapat dihitung besarnya parameter Fourier
Descriptors dari objek tersebut. Untuk menghitung parameter Fourier Descriptors dari suatu objek cukup menggunakan rumus-rumus sebagai berikut:
μ0 = − π −
1 m ∑ lk ΔΦ k L k =1
an =
−1 nπ
∑ ΔΦ
bn =
1 nπ
∑ ΔΦ
k
sin
2 n lk π l L
k
cos
2 n lk π l L
m
k =1
m
k =1
dan
(3.11)
di mana: m
:
jumlah atau banyaknya titik atau verteks dari suatu kontur objek
lk
:
panjang edge yang ke-k
ΔΦk
:
besarnya sudut pada verteks atau titik ke-k
L
:
besarnya kellling objek (panjang kontur objek)
Besarnya nilai m = 9 ditentukan oleh penulis, sedangkan besarnya nilai lk dan ΔΦk (panjang edge dan besar sudut) bisa didapatkan dari Prosedur Hit_pjg_sdt. Sedangkan keliling objek (nilai L) didapatkan dengan menjumlahkan seluruh panjang
edge pada kontur objek. Dengan mengetahui seluruh besarnya nilai-nilai variabel yang diperlukan, maka besarnya parameter Fourier Descriptors dapat dicari atau dihitung. Parameter-parameter
Fourier Descriptors dari suatu objek merupakan ciri-ciri dari objek tersebut. Dengan ciri-ciri ini, maka suatu objek dapat dikenali.
45
3.3
Klasifikasi Representasi Citra Objek Mengunakan Jaringan Saraf Tiruan
3.3.1 Tahap Pelatihan Jaringan Saraf Tiruan JST digunakan untuk mengelompokkan citra objek yang telah direpresentasikan sebagai deret Fourier. Proses pengelompokkan terdiri dari dua tahap, yaitu tahap pelatihan dan tahap pengujian. Tahap pelatihan berguna untuk menentukan bobot untuk masing-masing node pada tiap lapisan JST, sedangkan tahap pengujian berguna untuk mengenali citra yang diujikan pada JST. Model JST yang digunakan adalah model JST Back Propagation dengan topologi 3 layer, yaitu layer masukan (input layer), layer tersembunyi (hidden layer), dan layer keluaran (output layer). Dalam penelitian ini, citra objek yang diteliti sebanyak 56 sehingga terdapat 56
node pada input layer dan ada 7 tipe model sandal sehingga terdapat 7 node pada output layer. Kemudian output yang dihasilkan pada output layer dibandingkan dengan output yang diharapkan. Jika terdapat selisih, maka nilai selisih yang terjadi dipropagasi balik ke layer sebelumnya untuk dilakukan penyesuaian bobot. Pada dasarnya untuk membentuk suatu sistem neural, hanya diperlukan 3 tahap, yaitu forward propagation, backward propagation, dan update weight.
3.3.1.1 Forward Propagation Forward propagation bertujuan untuk menentukan output dari suatu node. Output yang dimaksud di sini adalah keluaran dari output layer apakah sudah sesuai dengan target output atau belum.
46
Weight
Input Layer
Output Layer
Gambar 3.6 Representasi Forward Propagation
Weight yang terdapat pada gambar merupakan weight dari output layer. Untuk mencari output yang terdapat pada output layer dapat dicari dengan rumus sebagai berikut : Output =
1 1 + e − Acc
…………………………………
(3.12)
dimana e = bilangan euler = 2,718281828. Sedangkan Acc merupakan bilangan accumulator, yaitu jumlah perkalian dari weight pada output layer dengan output pada input layer.
Acc = Σ (Weightij × Outi)
…………………………
(3.13)
47 Sebagai contoh penerapannya adalah sebagai berikut : misalkan input layer ada sebanyak 3 node dan output layer ada sebanyak 2 node.
Weight
Weight
0,4 -0,3
0,2
0,1
-0,5
-0,6 0,1 0,4
-0,3 -0,1
Hidden Layer
Output Layer
Input Layer Gambar 3.7 Perhitungan Output pada Output Layer
Target output pada output layer adalah 0,7 dan 0,2 sedangkan target Galatsystem = 0,0001.
48
Input Layer
Hidden Layer
Output Layer
Output 1 = 0,1
Output 1 = ?
Output 1 = ?
Output 2 = 0,3
Output 2 = ?
Output 2 = ?
Output 3 = 0,2
Maka langkah pertama yang dilakukan adalah mencari bilangan accumulator pada hidden layer.
Acc = Σ (Weightij × Outi) Acc Hidden 1 = Σ (Weightij × Outputi pada Input Layer) = (0,4 × 0,1) + (0,1 × 0,3) + (0,4 × 0,2) = 0,15
Acc Hidden 2 = Σ (Weightij × Outputi pada Input Layer) = (-0,3 × 0,1) + (-0,6 × 0,3) + (-0,1 × 0,2) = -0,23 Setelah mendapatkan bilangan accumulator-nya, maka bisa dicari output pada
hidden layer, dengan rumus : Output =
1 1 + e − Acc
Output 1 =
Output 2 =
1 1+ e
− AccHidden1
1+ e
− AccHidden 2
1
=
1 = 0,5374 1 + e −0,15
=
1 = 0,4428 1 + e 0, 23
Selanjutnya adalah menghitung bilangan accumulator pada output layer.
Acc = Σ (Weightij × Outi) Acc Output 1 = Σ (Weightij × Outputi pada Hidden Layer) = (0,2 × 0,537) + (0,1 × 0,443) = 0,1517
49
Acc Output 2 = Σ (Weightij × Outputi pada Hidden Layer) = (-0,5 × 0,537) + (-03 × 0,443) = -0,4014 Setelah mendapatkan bilangan accumulator-nya, maka bisa dicari output pada
output layer, dengan rumus : Output =
1 1 + e − Acc
Output 1 =
Output 2 =
1 1+ e
− AccOutput1
1+ e
− AccOutput 2
1
=
1 = 0,5379 1 + e −0,1517
=
1 = 0,4010 1 + e 0, 4014
3.3.1.2 Backward Propagation Inti dari Backward Propagation adalah untuk mencari galat suatu node. Dari hasil Forward Propagation pastilah akan dihasilkan suatu output dan output tersebut belum tentu sesuai dengan target output, oleh karena itu perbandingan kesalahan dari
target output dengan output yang dihasilkan tersebut, kita sebut dengan galat. Dalam Backward Propagation juga dikenal dengan yang disebut inisialisasi
output. Inisialisasi output pada dasarnya adalah menentukan galat di suatu node dengan target output.
50
Weight
Weight
Hidden Layer
Input Layer
Output Layer
Gambar 3.8 Representasi Backward Propagation
Untuk mencari galat di output layer, dapat dihitung dengan rumus : Galat = Output × (1 - Output) × (Target – Output)
…..
(3.14)
…………………..
(3.15)
Galat system dapat dihitung dengan rumus : Galatsystem =
∑
abs(erroroutput ) n
di mana n = jumlah node pada output layer. Sedangkan untuk mencari galat di tahap selanjutnya, dapat dihitung dengan rumus : Galat = Output × (1 - Output) × Acc Di mana bilangan accumulator adalah :
…………….
(3.16)
51
Acc = Σ (Weightij × Galatj)
…………………………
(3.17)
Sebagai contoh penerapannya, dilanjutkan dari perhitungan Forward Propagation. Galat = Output × (1 - Output) × (Target – Output) Galat Output 1 = 0,5379 × (1 - 0,5379) × (0,7 - 0,5379) = 0,0403 Galat Output 2 = 0,4010 × (1 - 0,4010) × (0,2 - 0,4010) = -0,0483 Setelah mendapatkan Galat pada output layer, maka bisa dicari Galatsystem dengan rumus :
abs(erroroutput )
Galatsystem =
∑
Galatsystem =
0,0403 + 0,0483 = 0,0443 2
n
Karena Galatsystem masih lebih besar dari 0,0001, maka harus dihitung galat di tahap selanjutnya. Selanjutnya adalah menghitung bilangan accumulator pada hidden layer.
Acc = Σ (Weightij × Galatj) Acc Hidden 1 = Σ (Weightij × Galatj pada Output Layer) = (0,2 × 0,0403) + (-0,5 × (-0,0483)) = 0,0322
Acc Hidden 2 = Σ (Weightij × Galatj pada Output Layer) = (0,1 × 0,0403) + (-0,3 × (-0,0483)) = 0,0185 Setelah mendapatkan bilangan accumulator-nya, maka bisa dicari galat pada
hidden layer, dengan rumus : Galat = Output × (1 - Output) × Acc
52 Galat Hidden 1 = Output × (1 - Output) × Acc Hidden 1 = 0,537 × (1 – 0,537) × 0,0322 = 0,008 Galat Hidden 2 = Output × (1 - Output) × Acc Hidden 2 = 0,443 × (1 – 0,443) × 0,0185 = 0,0046 Selanjutnya adalah menghitung bilangan accumulator pada input layer.
Acc = Σ (Weightij × Galatj) Acc Input 1 = Σ (Weightij × Galatj pada Hidden Layer) = (0,4 × 0,008) + (-0,3 × 0,0046 ) = 0,0018
Acc Input 2 = Σ (Weightij × Galatj pada Hidden Layer) = (0,1 × 0,008) + (-0,6 × 0,0046) = 0,0019
Acc Input 3 = Σ (Weightij × Galatj pada Hidden Layer) = (0,4 × 0,008) + (-0,1 × 0,0046) = 0,0027 Setelah mendapatkan bilangan accumulator-nya, maka bisa dicari galat pada
input layer, dengan rumus : Galat = Output × (1 - Output) × Acc Galat Input 1 = Output × (1 - Output) × Acc Input 1 = 0,1 × (1 – 0,1) × 0,0018 = 0,0002 Galat Input 2 = Output × (1 - Output) × Acc Input 2 = 0,3 × (1 – 0,3) × 0,0019 = 0,0004 Galat Input 3 = Output × (1 - Output) × Acc Input 3 = 0,2 × (1 – 0,2) × 0,0027 = 0,0004
53
3.3.1.3 Update Weight Sebenarnya inti dari JST adalah mencari weight yang sesuai dari input yang dimasukkan sehingga menjadi output yang diinginkan. Weight ini nantinya didapat setelah mendapatkan output dan galat dari setiap node. Rumus untuk mencari weight baru :
Weight = Weight + (Alpha × Outputsebelum × Galatsesudah)
…
(3.18)
Alpha di atas dapat diartikan sebagai tahap belajar suatu sistem, semakin tinggi nilainya, maka semakin tinggi kecepatan belajarnya, namun dengan demikian akan berdampak kurang baik, karena akan mendapatkan galat yang tidak merata. Sehingga dengan demikian, lebih baik kita menggunakan Alpha yang kecil, walaupun tahap belajarnya lambat, tetapi hasil keakuratannya tinggi. Sebagai
contoh
penerapannya,
dilanjutkan
dari
perhitungan
Backward
Propagation, yaitu mencari weight baru antara input layer dan hidden layer dengan Alpha = 0,0001.
Weight = Weight + (Alpha × Outputsebelum × Galatsesudah) Weight antara node 1 input layer dan node 1 hidden layer = Weight + (Alpha × Outputsebelum × Galatsesudah) = 0,4 + (0,0001 × 0,1 × 0,008 ) = 0,40000 Weight antara node 1 input layer dan node 2 hidden layer = Weight + (Alpha × Outputsebelum × Galatsesudah) = 0,4 + (0,0001 × 0,1 × 0,0046) = 0,4000 Weight antara node 2 input layer dan node 1 hidden layer = Weight + (Alpha × Outputsebelum × Galatsesudah) = 0,4 + (0,0001 × 0,3 × 0,008) = 0,4000 Weight antara node 2 input layer dan node 2 hidden layer = Weight + (Alpha × Outputsebelum × Galatsesudah) = 0,4 + (0,0001 × 0,3 × 0,0046) = 0,4000
54
Weight antara node 3 input layer dan node 1 hidden layer = Weight + (Alpha × Outputsebelum × Galatsesudah) = 0,4 + (0,0001 × 0,2 × 0,008) = 0,4000 Weight antara node 3 input layer dan node 2 hidden layer = Weight + (Alpha × Outputsebelum × Galatsesudah) = 0,4 + (0,0001 × 0,2 × 0,0046) = 0,4000
3.3.1.4 Training Telah dibahas di atas bahwa proses belajar suatu sistem terdiri dari proses
Forward Propagation, Backward Propagation, dan Update Weight. Sekali melewati 3 tahap ini disebut dengan 1 kali training (1 epoch). Semakin banyak training yang dilakukan maka akan semakin kecil pula tingkat galat yang dihasilkan di output
layernya, dan dengan demikian semakin kecil juga galat suatu sistem. Proses training akan berhenti, jika salah satu kondisi di bawah ini dipenuhi : a. Nilai batas toleransi galat tercapai, dalam arti Galatsystem ≤ target Galatsystem. b. Nilai epoch yang ditentukan telah tercapai. c. Nilai output yang dihasilkan pada output layer sesuai dengan target output. Langkah-langkah training : a. Pilih training pair. Aplikasikan vektor input ke dalam network. b. Hitung output dari network. c. Hitung galat antara actual output dengan target output. d. Sesuaikan bobot dengan cara meminimumkan galat. e. Ulangi 1 sampai dengan 4 untuk setiap vektor dalam training set.
55
3.4
Rancangan Layar
3.4.1 Rancangan Layar About Form About akan digunakan untuk menampilkan keterangan singkat dari program aplikasi yang dibuat seperti judul, mahasiswa yang membuat, dosen yang membimbing, dan sebagainya. Pada form ini terdapat dua button, yaitu Enter, untuk masuk ke form utama pengolah citra, dan button Exit untuk keluar dari program aplikasi. PERANCANGAN PROGRAM SIMULASI KLASIFIKASI PRODUK SANDAL DHIIF’S DENGAN METODE BACK PROPAGATION DAN FOURIER DESCRIPTORS Dibuat dalam rangka memenuhi tugas akhir (skripsi) jenjang Strata 1 (S1) Binus University Jakarta Dibuat oleh: Margaretha Lydia Eka Pratiwi (0900787751) Dibimbing oleh: Bapak Dr. Ir. Haryono Soeparno, M.Sc. Ngarap Imanuel Manik, Drs., M.Kom.
Enter
Exit
Gambar 3.9 Rancangan Layar About
3.4.2 Rancangan Layar View Pada Tab View dalam Form Image Recognition, user dapat mengontrol input yang dibutuhkan dalam proses pengenalan citra hingga seperti parameter Fourier
Descriptors dan network yang akan digunakan, melihat hasil pengolahan citra, dan menyimpan output yang dihasilkan.
56
Browse
Image
Status
Error: Epoch:
Stop Training
Result
Load Network ParameterFD Train Network
Recognize
Save Network
Clear
Gambar 3.10 Rancangan Layar View
3.4.3 Rancangan Layar Setting Pada Tab Setting dalam Form Image Recognition, user dapat menentukan parameter-parameter yang digunakan untuk membangun jaringan syaraf tiruan, seperti jumlah layer, maksimum galat, jumlah node pada tiap layer, serta url path tempat image yang akan di-training.
Number of Layers:
Max galat:
Number of input units: Number of hidden units: Number of output units: Training Images’ Properties
Browse Save Setting
Gambar 3.11 Rancangan Layar Setting