Pengenalan Gerak Isyarat Menggunakan Layar Sentuh Virtual Dan Neural Network Backpropagation

(1)

PROG

FAKULTAS IL

TESIS

STEPHANUS PRIYOWIDODO

107038023

OGRAM STUDI S2 TEKNIK INFORMAT

S ILMU KOMPUTER DAN TEKNOLOGI

UNIVERSITAS SUMATERA UTARA

MEDAN

2014

ATIKA


(2)

Diajukan untuk

PROG

FAKULTAS IL

TESIS

k melengkapi tugas dan memenuhi syarat mem

Magister Teknik Informatika

STEPHANUS PRIYOWIDODO

107038023

OGRAM STUDI S2 TEKNIK INFORMAT

S ILMU KOMPUTER DAN TEKNOLOGI

UNIVERSITAS SUMATERA UTARA

MEDAN

2014

emperoleh ijazah

ATIKA


(3)

Judul Tesis

: PENGENALAN GERAK ISYARAT

MENGGUNAKAN LAYAR SENTUH VIRTUAL

DAN NEURAL NETWORK BACKPROPAGATION

Nama Mahasiswa

: STEPHANUS PRIYOWIDODO

Nomor Induk Mahasiwa

: 107038023

Program Studi

: Magister Teknik Informatika

Fakultas

: Ilmu Komputer dan Teknologi Informasi

Universitas Sumatera Utara

Komisi Pembimbing

:

Pembimbing 2

Pembimbing 1

Prof. Dr. Muhammad Zarlis

Prof. Dr. Opim Salim Sitompul

Diketahui/disetujui oleh

Magister Teknik Informatika

Ketua,

Prof. Dr. Muhammad Zarlis


(4)

(5)

PENGENALAN GERAK ISYARAT MENGGUNAKAN LAYAR

SENTUH VIRTUAL DAN NEURAL NETWORK

BACKPROPAGATION

TESIS

Saya mengakui bahwa tesis ini adalah hasil karya saya sendiri, kecuali beberapa kutipan

dan ringkasan yang masing-masing telah disebutkan sumbernya.

Medan, 07 Februari 2014

STEPHANUS PRIYOWIDODO

107038023


(6)

Sebagai sivitas akademika Universitas Sumatera Utara, saya yang bertanda tangan di

bawah ini :

Nama

: STEPHANUS PRIYOWIDODO

NIM

: 107038023

Program Studi

: Magister Teknik Informatika

Jenis Karya Ilmiah

:

Demi pengembangan ilmu pengetahuan, menyetujui untuk memberikan kepada

Universitas Sumatera Utara Hak Bebas Royalti Non-Eksklusif (Non-Exclusive Royalti

Free Right) atas tesis saya yang berjudul:

PENGENALAN GERAK ISYARAT MENGGUNAKAN LAYAR

SENTUH VIRTUAL DAN NEURAL NETWORK

BACKPROPAGATION

Berserta perangkat yang ada (jika diperlukan). Dengan Hak Bebas Royalti Non-Eksklusif

ini, Universitas Sumatera Utara berhak menyimpan, mengalih media, memformat,

mengelola dalam bentuk database, merawat dan mempublikasikan tesis saya tanpa

meminta izin dari saya, selama tetap mencantumkan nama saya sebagai penulis dan

sebagai pemegang dan/atau sebagai pemilik hak cipta.

Demikian pernyataan ini dibuat dengan sebenarnya.

Medan, 07 Februari 2014

STEPHANUS PRIYOWIDODO

107038023


(7)

PANITIA PENGUJI TESIS

Ketua

: Prof. Dr. Opim Salim Sitompul

Anggota

: 1. Prof. Dr. Muhammad Zarlis

2. Prof. Dr. Herman Mawengkang

3. Dr. Benny Benyamin Nasution

4. Dr. Poltak Sihombing, M.Kom


(8)

Syukur AlhamduLILLAH penulis panjatkan ke hadirat ALLAH SWT atas limpahan

rahmat dan karunia-Nya sehingga tesis ini selesai. Perkenankanlah penulis mengucapkan

terima kasih kepada:

Rektor Universitas Sumatera Utara, Prof. Dr. dr. Syahril Pasaribu DTM&H,

M.Sc(CTM),Sp.A(K) atas kesempatan yang diberikan kepada penulis untuk mengikuti

dan menyelesaikan pendidikan Program Magister.

Dekan Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera

Utara, Prof. Dr. Muhammad Zarlis, yang memberi kesempatan kepada penulis menjadi

mahasiswa Program Magister pada Program Studi Magister Teknik Informatika Fakultas

Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara.

Ketua Program Studi Magister Teknik Informatika Prof. Dr. Muhammad Zarlis,

sekretaris Program Studi Bapak Muhammad Andri Budiman, ST., M.Comp.Sc yang telah

banyak memberikan saran dan arahan sehingga tesis ini dapat diselesaikan, beserta

seluruh staf pengajar dan administrasi pada Program Studi Magister Teknik Informatika

Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara.

Terimakasih dan penghargaan yang tinggi penulis ucapkan kepada Prof. Dr. Opim

Salim Sitompul selaku Pembimbing Utama yang dengan penuh perhatian telah

memberikan dorongan serta bimbingan kepada penulis, demikian juga kepada Prof. Dr.

Muhammad Zarlis selaku Pembimbing Lapangan yang dengan penuh kesabaran

menuntun dan membimbing penulis hingga selesainya penelitian ini.

Kepada seluruh keluarga, handai tolan yang telah memberikan dorongan dan

semangat, penulis ucapkan terima kasih, hanya ALLAH SWT sebaik-baik pemberi

balasan. Sebagai penutup, penulis berharap adanya kritik dan saran yang membangun

guna penyempurnaan penelitian ini.


(9)

ABSTRAK

Pengenalan gerak isyarat sangat penting untuk penggunaan beberapa jenis aplikasi seperti

antar-muka manusia mesin, pengendali interaksi robot, robot untuk keperluan pribadi,

sistem pemantau khusus dan robot sebagai alat bantu khusus. Kendala dalam pengenalan

gerak isyarat diantaranya teknik pengambilan koordinat objek, pemrosesan data objek,

pemilihan parameter neural network dan tingkat ketepatan pengenalan. Penelitian ini

menggunakan teknik layar sentuh virtual untuk memperoleh data koordinat objek, data

selanjutnya diproses dengan algoritma Bresenham dan dijadikan input pada neural

network backpropagation.

Hasil penelitian ini menunjukkan bahwa layar sentuh virtual dapat digunakan

sebagai alternatif pengambilan data koordinat objek, algoritma Bresenham dapat

membantu memaksimalkan penggambaran data dan neural network backpropagation

dapat mengenali seluruh gerak isyarat atau seratus persen data dengan baik setelah error

lebih kecil 0.8.


(10)

SCREEN AND BACKPROPAGATION

NEURAL NETWORK

ABSTRACT

Gesture recognition is very important to use several types of applications such as human

machine interface, control robot interaction, robot for personal use, special monitoring

and robotic systems as a special tool. Constraints in gesture recognition techniques

including retrieval object coordinates, object data processing, the selection of the neural

network parameters and the level of recognition accuracy. This study uses a virtual touch

screen technique to obtain the coordinates of the data object, the data is further processed

by the Bresenham algorithm and used as inputs to the neural network backpropagation.

The results of this study indicate that the virtual touch screen can be used as an

alternative to the object coordinate data collection, Bresenham algorithm can help

maximize the depiction of data and back propagation neural network can recognize all

gestures or one hundred percent of the data well after the error is smaller 0.8.


(11)

DAFTAR ISI

Halaman

Abstrak

i

Abstract

ii

Daftar Isi

iii

Bab I

Pendahuluan

1

1.1 Latar Belakang

1

1.2 Perumusan Masalah

3

1.3 Batasan Masalah

3

1.4 Tujuan Penelitian

4

1.5 Manfaat Penelitian

4

Bab II

Tinjauan Pustaka

5

2.1 Sensor RGB-D

5

2.1.1 Kinect

6

2.1.2 Skeleton

7

2.1.3 Microsoft API Skeleton

7

2.2 Neural Network

10

2.2.1 Fungsi Aktivasi

12

2.2.2 Neural Network Backpropagation

13

2.2.2.1 Algoritma Backpropagation

14

2.3 Algoritma Pengisian Pixel Bresenham

16

2.4 Algoritma Penghilang Duplikasi Data

17

2.3 Riset-riset Terkait

18

Bab III

Metodologi Penelitian

19

3.1 Pembangunan Aplikasi

19

3.1.1 Antar-muka Layar Sentuh Virtual

19

3.1.2 Antar-muka Peubah

20

3.1.3 Aplikasi Neural Network

20

3.2 Percobaan

20

3.3 Dataset

21

3.4 Instrumen Penelitian

23

Bab IV

Hasil dan Pembahasan

24

4.1 Pendahuluan

24

4.2 Layar Sentuh Virtual

24

4.3 Pengujian Neural Network

29

4.4 Hasil Percobaan

30

4.4.1 Percobaan Pertama

31


(12)

5.2 Saran

37

Daftar Pustaka

39

Lampiran

42

1.

Daftar Publikasi Ilmiah

42

2.

Contoh Data Teks 1

43

3.

Contoh Data Teks 2

47


(13)

ABSTRAK

Pengenalan gerak isyarat sangat penting untuk penggunaan beberapa jenis aplikasi seperti

antar-muka manusia mesin, pengendali interaksi robot, robot untuk keperluan pribadi,

sistem pemantau khusus dan robot sebagai alat bantu khusus. Kendala dalam pengenalan

gerak isyarat diantaranya teknik pengambilan koordinat objek, pemrosesan data objek,

pemilihan parameter neural network dan tingkat ketepatan pengenalan. Penelitian ini

menggunakan teknik layar sentuh virtual untuk memperoleh data koordinat objek, data

selanjutnya diproses dengan algoritma Bresenham dan dijadikan input pada neural

network backpropagation.

Hasil penelitian ini menunjukkan bahwa layar sentuh virtual dapat digunakan

sebagai alternatif pengambilan data koordinat objek, algoritma Bresenham dapat

membantu memaksimalkan penggambaran data dan neural network backpropagation

dapat mengenali seluruh gerak isyarat atau seratus persen data dengan baik setelah error

lebih kecil 0.8.


(14)

SCREEN AND BACKPROPAGATION

NEURAL NETWORK

ABSTRACT

Gesture recognition is very important to use several types of applications such as human

machine interface, control robot interaction, robot for personal use, special monitoring

and robotic systems as a special tool. Constraints in gesture recognition techniques

including retrieval object coordinates, object data processing, the selection of the neural

network parameters and the level of recognition accuracy. This study uses a virtual touch

screen technique to obtain the coordinates of the data object, the data is further processed

by the Bresenham algorithm and used as inputs to the neural network backpropagation.

The results of this study indicate that the virtual touch screen can be used as an

alternative to the object coordinate data collection, Bresenham algorithm can help

maximize the depiction of data and back propagation neural network can recognize all

gestures or one hundred percent of the data well after the error is smaller 0.8.


(15)

BAB I

PENDAHULUAN

1.1 Latar Belakang

Komunikasi dengan menggunakan gerak isyarat tubuh merupakan bentuk komunikasi

yang umum di masyarakat. Gerak isyarat tubuh tidak hanya memungkinkan manusia

dapat berinteraksi dengan manusia lain dan benda-benda, tetapi juga dalam beberapa

kasus, menggantikan bentuk komunikasi lainnya, misalnya komunikasi dengan orang tuli.

Di sisi lain, perkembangan komputer telah menjadi bagian tak terpisahkan dari

masyarakat, mempengaruhi banyak aspek kehidupan sehari-hari dalam lingkup

komunikasi dan interaksi.

Perkembangan pada bidang informatika yang sangat cepat dalam beberapa dekade

terakhir menemukan bentuk-bentuk baru cara berinteraksi dengan komputer. Penggunaan

keyboard dan mouse saat berinteraksi dengan komputer, membatasi potensi interaksi dan

kealamian interaksi. Penelitian Huang dan Pavlovic (1995) menunjukkan bahwa

penggunaan jari telunjuk untuk menunjuk kepada suatu objek dan memanipulasinya,

lebih alami bila dibandingkan dengan penggunaan piranti keyboard atau mouse. Selain

lebih mudah untuk dipahami, interaksi manusia dengan komputer yang alami ini akan

meningkatkan efektivitas sistem.

Interaksi secara alami antara manusia dan komputer pertama kali dilakukan

dengan menggunakan teknologi pengenalan suara.. Ide dasarnya adalah bagaimana

membuat komputer memahami bahasa manusia, sehingga komputer dapat membantu

dalam menyelesaikan tugas tertentu, berinteraksi atau hanya berkomunikasi dengan

manusia. Dikombinasikan dengan pengenalan wajah dan pengenalan ekspresi wajah,

interaksi antara manusia dan komputer menjadi lebih baik.

Namun, interaksi menggunakan teknologi pengenalan suara dan ekspresi wajah

baru mencakup sebagian dari interaksi antar manusia. Dalam beberapa tahun terakhir


(16)

termasuk interaksi dan komunikasi berbasis pada gerak isyarat tubuh.

Implementasi pengenalan gerak isyarat tangan pertama kali diperkenalkan pada

akhir 70-an, dengan menggunakan sarung tangan yang dilengkapi dengan sensor dan

prosesor untuk mengenali gerakan tangan dan jari-jarinya. Namun, sistem pengenalan

gerakan berbasis sarung tangan ini, meskipun akurat, memiliki keterbatasan karena

pengguna harus menggunakan peralatan tambahan, hal ini mengurangi kealamian yang

merupakan kebutuhan dasar dari interaksi manusia dengan komputer.

Dalam beberapa tahun terakhir penelitian interaksi manusia komputer mengarah

pada pemberian perintah menggunakan gerak isyarat tubuh dengan menggunakan sensor

berbasis kamera. Mengenai gerak isyarat tubuh Aly dan Tapus (2009) mengemukakan :

gerakan-gerakan tubuh merupakan komunikasi non-verbal yang tidak hanya digunakan

oleh manusia untuk berkomunikasi dengan manusia lainnya, namun juga dapat digunakan

manusia untuk berkomunikasi dengan komputer atau robot. Pada interaksi tersebut gerak

isyarat berperan penting untuk mengirim pesan dari manusia kepada komputer.

Mengenai interaksi manusia-robot ini Feil-Seifer dan Mataric (2008)

mengemukakan : interaksi manusia dengan komputer/mesin sangat diperlukan saat

kegiatan dan tugas-tugas yang diberikan kepada komputer/mesin sangat kompleks dan

tidak terstruktur. Kompleksitas pekerjaan yang akan dilakukan ini mendorong

penelitian-penelitian baru terkait interaksi manusia komputer. Tujuannya adalah mengembangkan

prinsip-prinsip dan algoritma sistem komputer yang membuat komputer atau mesin

menjadi pintar, efektif dan aman bagi manusia.

Dengan mengenal gerak isyarat, komputer dapat mengetahui jenis aktifitas yang

sedang dilakukan manusia. Ning et al., (2009) dan Gupta et al., (2009) melakukan

penelitian berkenaan dengan pengenalan gerak isyarat dan klasifikasi aktifitas manusia

menggunakan kamera video 2D. Pengenalan dengan menempelkan peralatan RFID pada

manusia atau objek dilakukan oleh Wu et al., (2007). Hasil penelitian oleh Liu et al.

(2008), bahwa penggunaan sumber video 2D memiliki keakuratan yang rendah (78.5%),

meskipun kualitas gambar sumbernya sangat baik. Penggunaan peralatan RFID pada


(17)

manusia secara umum dinilai kurang baik karena harus memasukkan benda asing ke

dalam tubuh.

Penelitian penulis berkenaan dengan pengenalan gerak isyarat manusia dengan

menggunakan dataset yang dicuplik dari perangkat sensor Red Green Blue-Depth

(RGB-D) Kinect. Dataset memiliki informasi dalam berbagai bentuk seperti video 2D, video

inframerah, video partisipan, data skeleton dan data suara. Untuk mengenali gerak isyarat

yang disampaikan oleh partisipan, penulis memanfaatkan data 20 skeleton partisipan pada

setiap frame data, dipadukan dengan layar sentuh virtual 3D dan teknologi neural

network backpropagation.

1.2 Perumusan Masalah

Berdasarkan latar belakang di atas, maka masalah dalam penelitian ini dirumuskan

sebagai berikut :

1.

Bagaimana teknik pencuplikan data gerak isyarat dalam koordinat 3D?

2.

Bagaimana mengolah data objek hasil pencuplikan agar dapat digunakan sebagai

data input pada neural network backpropagation?

3.

Seberapa besar pengaruh perubahan ukuran parameter learning rate, momentum

dan jumlah neuron pada layer hidden mempengaruhi kinerja neural network

backpropagation?

4.

Seberapa jauh penggunaan neural network backpropagation dapat mengenali jenis

gerak isyarat?

1.3 Batasan Masalah

Ruang lingkup penelitian ini dibatasi pada hal-hal berikut :

1.

Dataset gerak isyarat yang digunakan pada pelatihan neural network dibatasi

sebanyak 400 data gerak isyarat.

2.

Pengenalan gerak isyarat hanya menggunakan satu jenis sumber data yaitu data

skeleton.


(18)

Dengan mengacu pada perumusan masalah di atas, maka tujuan penelitian ini adalah :

1.

Mengetahui teknik pengambilan data gerak isyarat objek dalam koordinat 3D.

2.

Mengetahui cara mengolah data objek agar dapat digunakan sebagai parameter

input pada neural network backpropagation.

3.

Mengetahui hasil komparasi perubahan parameter learning rate, momentum dan

jumlah node pada layer hidden serta pengaruhnya terhadap kinerja neural

network.

4.

Mengetahui ketepatan neural network back propagation dalam mengenal berbagai

gerak isyarat.

1.5 Manfaat Penelitian

Hasil penelitian ini diharapkan dapat memberikan manfaat dan sumbangan bagi ilmu

pengetahuan, khususnya dalam teknologi pengenalan gerak isyarat dan kecerdasan

buatan, serta dapat dijadikan bahan kajian perbandingan antara teknik layar sentuh virtual

dan neural network backpropagation dibanding dengan teknik lainnya.


(19)

2.1 Sensor RGB-D

Sensor Red Green Blue-Depth (RGB-D) bekerja berdasarkan teknik InfraRed Structured

Light (IRSL). Cahaya inframerah yang berasal dari perangkat laser dipancarkan dengan

membentuk pola-pola tertentu yang tidak terlihat, misalnya pola satu titik, pola satu

garis atau pola-pola dua dimensi lainnya. Cahaya yang dipancarkan memiliki panjang

gelombang inframerah, berkisar 640nm sampai 2500nm. Pola-pola yang telah

dipancarkan dibaca menggunakan kamera CCD biasa ataupun kamera inframerah.

Kamera CCD dapat membaca pola sensor laser karena kamera ini bekerja pada

spectrum 300nm sampai 1100nm (Fofi et al,. 2004).

2.1.1

Kinect

Kinect merupakan sensor RGB-D dari Microsoft yang menggunakan teknologi Light

Coding dari PrimeSense, perusahaan milik Apple Inc. Light Coding merupakan

teknologi yang dapat merekonstruksi peta kedalaman 3-dimensi suatu keadaan secara

real-time dan detail. Resolusi kedalaman pixel pada Kinect maksimum 640x480. Pada

jarak 2 meter, ketepatan ukur Kinect untuk tinggi dan lebar sebesar 3mm dan untuk

kedalaman sebesar 1 cm. (Villaroman et.al, 2011). Rentang jarak objek dari sensor yang

dapat dideteksi antara 0.8m sampai 3.975m seperti terlihat pada gambar 2.1. Frame rate

Kinect 30 Hz dengan luas pandang horizontal 57 derajat dan vertikal 43.5 derajat.


(20)

Gambar 2.1 Rentang jarak objek dari sensor

Kinect dilengkapi dengan mikropon multi-array yang dapat menerima dan

mengukur derajat asal suara dan motor yang berguna untuk mengatur derajat

kemiringan. Kinect memiliki sensor accelerometer yang menginformasikan posisi

kemiringan perangkat dalam koordinat 3-dimensi. Gambar 2.2 memperlihatkan bentuk

fisik Kinect.


(21)

Gambat 2.3 memperlih

Kinect, sebelah kiri m

gambar yang merepres

Gambar

2.1.2

Skeleton

Perkembangan teknolo

ilmu komputer, seper

reality. Shotton (2011)

hubungan sendi tubuh

Kemudian dilakukan

menggunakan pendeka

bobot kernel Gaussia

beragam klasifikasi

pengklasifikasian dapa

dari data sendi yang

menggunakan pendeka

sedang dilakukan manu

2.1.3

Microsoft API Sk

Dataset skeleton yang

(2011) yang telah di

Interface (API) sistem

Windows membagi stru

rlihatkan hasil cuplikan gambar yang diamb

merupakan gambar RGB 640x480 pixel dan s

resentasikan jarak seluruh objek dari sensor infr

2.3. Hasil sensor RGB-D, kiri RGB, kanan D

ologi kamera RGB-D, membuka peluang pene

erti computer vision, game, kendali berbasis

1) memperkenalkan satu metoda untuk mempr

uh manusia dengan cara mengekstrak informas

an penghitungan estimasi posisi 3D dari

ekatan pencarian berdasarkan pergeseran rat

sian. Dengan menggunakan training-set yang

i bagian tubuh, bentuk tubuh, pakaian

pat dilakukan dengan tepat. Sung et al. (2011

g disediakan oleh PrimeSense dari kamera

ekatan metoda pembelajaran untuk menyimpu

anusia.

Skeleton

digunakan pada penelitian ini adalah hasil da

dipadukan oleh Microsoft ke dalam Applic

tem operasi Windows. Data skeleton yang d

truktur skeleton menjadi 20 bagian seperti terlih

mbil dengan perangkat

n sebelah kanan adalah

inframerah Kinect.

(depth)

nelitian baru di bidang

asis gerak dan virtual

prediksi posisi 3D dari

asi kedalaman gambar.

ari sendi-sendi tubuh

rata-rata dengan suatu

ang sangat besar dan

ian dan sebagainya,

11) mengekstraksi fitur

ra RGB-D Kinect dan

pulkan kegiatan yang

l dari algoritma Shotton

lication Programming

g dihasilkan oleh API

rlihat pada gambar 2.4.


(22)

Gam

Tabel 2.1 menyajikan

digunakan pada API Mic

Masing-masing

dalam satuan meter de

dan data kedalaman

perangkat Kinect deng

Z dari objek manusia y

ambar 2.4 Data skeleton API Windows (Micros

urutan bagian data skeleton yang merupaka

Microsoft Windows.

ing data skeleton yang diinformasikan berisi

dengan titik tengah koordinat terdapat pada titi

n (depth) yakni sumbu Z yang nilainya me

ngan objek. Gambar 2.5 memperlihatkan koord

ia yang berdiri di depan sensor.

rosoft, 2014)

kan standar urutan yang

isi data koordinat X, Y

titik skeleton HipCenter

merupakan jarak antara

ordinat sumbu X, Y, dan


(23)

Tabel 2.1 Urutan Data Sendi API Windows

No.

Nama

Skeleton

No.

Nama

Skeleton

Gambar Skeleton

0

HipCenter

10

WristRight

1

Spine

11

HandRight

2

ShoulderCenter 12

HipLeft

3

Head

13

KneeLeft

4

ShoulderLeft

14

AnkleLeft

5

ElbowLeft

15

FootLeft

6

WristLeft

16

HipRight

7

HandLeft

17

KneeRight

8

ShoulderRight

18 AnkleRight

9

ElbowRight

19

FootRight

Pada data skeleton bagian HandRight pada gambar 2.5, terdapat data X, Y, Z yang

masing-masing nilainya -0.21m, -0.30m dan 2.02m, artinya posisi HandRight berada pada

posisi negatif di sebelah kanan HipCenter sekitar 0.21m (21cm), HandRight berada

positif di bawah HipCenter sejauh -0.30m (30cm) dan HandRight berada pada jarak

2.02m dari sensor.


(24)

Gambar 2.5 Koordinat X,Y,Z dari Sensor Kinect

Data koordinat skeleton sejumlah 20 bagian selanjutnya dapat diproses sesuai

keperluan, pada tesis ini penulis akan membangun layar sentuh virtual di depan objek

untuk menangkap koordinat gerakan skeleton. Untuk deteksi gerak isyarat, dibutuhkan

hanya 2 bagian skeleton yakni HandLeft dan HandRight.

2.2. Neural Network

Neural Network merupakan tiruan dari cara kerja otak manusia. Layaknya otak manusia,

otak tiruan ini memiliki karakteristik yang mirip dengan jaringan syaraf biologis.

Hampir semua tipe neural network memiliki komponen-komponen yang sama yakni

terdiri atas neuron-neuron yang saling terhubung. Neuron-neuron tersebut akan

mentransformasikan informasi yang diterima melalui bagian input untuk diteruskan ke

neuron-neuron lain melalui bagian output. Hubungan antar neuron disebut bobot

(weight). Setiap bobot yang tiba pada satu neuron akan dijumlahkan nilainya, hasil


(25)

penjumlahan selanjutnya dibandingkan dengan suatu nilai ambang (threshold). Apabila

jumlahnya sama atau lebih besar dari nilai ambang, maka neuron akan diaktifkan,

dengan begitu informasi yang terdapat pada neuron tersebut akan dikirimkan ke

neuron-neuron lain yang terhubung dengannya melalui bagian output. Bila jumlah bobot kurang

dari nilai ambang, maka neuron tidak akan diaktifkan.

Neural network biasanya terdiri dari beberapa lapisan (layer), masing-masing

layer terdiri atas neuron-neuron. Lapisan neuron ini selanjutnya saling dihubungkan ke

lapisan-lapisan sebelum dan sesudahnya, terkecuali untuk lapisan input dan output.

Informasi yang diterima oleh lapisan input dirambatkan ke lapisan berikutnya yang

disebut dengan lapisan tersembunyi (hidden layer). Dari hidden layer selanjutnya

informasi dapat dirambatkan mundur ke network, hal ini tergantung dari algoritma

pembelajaran yang digunakan.

Gambar 2.6 menunjukkan contoh neural network sederhana, satu neuron akan

mengolah N input data (x1, x2,..,xN) yang masing-masing memiliki bobot w1, w2, ..,

wN dan bobot bias b.

a =

x w

(2.1)

Selanjutnya fungsi aktivasi F akan mengaktivasi a menjadi output neural network y.


(26)

Ada beberapa fungsi aktivasi yang sering digunakan pada neural network diantaranya :

1.

Fungsi Hard Limit

Mengkonversi nilai variable menjadi bilangan biner 0 atau 1. Rumus yang

digunakan untuk fungsi aktivasi ini adalah:

(2.2)

2.

Fungsi Bipolar

Mengkonversi nilai variable menjadi bilangan biner 1 atau -1. Rumus yang

digunakan untuk fungsi aktivasi ini adalah:

(2.3)

3.

Fungsi Linear

Fungsiini memiliki output sama dengan nilai inputnya. Rumus yang digunakan

untuk fungsi aktivasi ini adalah:

y = x

(2.4)

4.

Fungsi Sigmoid Biner

Fungsi ini sering digunakan pada neural network backpropagation, memiliki

nilai dengan range 0 sampai 1, interval outputnya 0 sampai 1. Rumus yang

digunakan untuk fungsi aktivasi ini adalah:

y = f(x) =

1 +

1

(2.5)

5.

Fungsi Sigmoid Bipolar

Fungsi aktivasi ini sama dengan fungsi sigmoid biner, hanya nilai outputnya

antara -1 sampai 1. Rumus yang digunakan untuk fungsi aktivasi ini adalah:


(27)

6.

Fungsi Sigmoid Tangent (TanSig)

Fungsi aktivasi ini sama dengan fungsi sigmoid bipolar, nilai outputnya antara -1

sampai 1. Rumus yang digunakan untuk fungsi aktivasi ini adalah:

y = f(x) =

1 −

1 +

(2.7)

2.2.2. Neural Network Backpropagation

Backpropagation merupakan metoda pembelajaran neural network yang terawasi

(supervised). Backpropagation biasanya digunakan oleh perceptron yang memiliki

banyak lapisan ( layer ) untuk mengubah nilai bobot-bobot yang terhubung ke

neuron-neuron yang ada pada lapisan tersembunyi ( hidden layer ).

Algoritma backpropagation saat pertama dijalankan melakukan tahapan

perambatan maju ( forward ). Error yang diperoleh dari proses tahap perambatan maju

selanjutnya diproses ke arah mundur ( backward ) untuk mengubah nilai bobot-bobotnya.

Pada perambatan maju, neuron-neuron diaktifkan dengan fungsi aktivasi seperti sigmoid,

tansig atau pure linear.

x1

x2

x3

z1

z2

y

1

1

b2

b12

w1

w2

v11

v12

v21

v22

v31

v32

b11


(28)

Jaringan ini terdiri atas 3 (tiga) lapisan neuron-neuron yakni 3 (tiga) unit neuron pada

lapisan input (x1, x2, x3), 2 ( dua ) neuron pada lapisan tersembunyi (hidden layer) dan 1

(satu) neuron pada lapisan output.

2.2.2.1 Algoritma Backpropagation

Algoritma backpropagation sebagai berikut:

-

Inisialisasi bobot awal (weights) dengan nilai random yang kecil.

-

Tetapkan maksimum Epoch, Target Error dan Learning Rate (

α

)

-

Inisialisasi Epoch=0, MSE=1

-

Lakukan langkah di bawah ini selama (Epoch<MaksimumEpoch) dan

(MSE>TargetError):

1.

Epoch = Epoch + 1

2.

Feed Forward:

a.

Setiap unit input (X

i

, i=1,2,3,…,n) menerima sinyal xi dan meneruskannya

ke semua unit pada lapisan atasnya.

b.

Setiap unit pada hidden layer (Zj, j=1,2,3,..,p) menjumlahkan sinyal-sinyal

input terbobot :

z_in = b1

x v

(2.8)

Gunakan fungsi aktivasi untuk menghitung sinyal output:

z

j =

(z )

(2.9)

selanjutnya kirimkan sinyal tersebut ke lapisan di atasnya (unit-unit

output)

c.

Setiap unit output (y

k

, k=1,2,3,..,m) melakukan penjumlahan sinyal-sinyal

terbobot :

y_in

= b2

z w

"

(2.10)


(29)

y

k

=f (y_in

k

)

(2.11)

selanjutnya kirim sinyal tersebut ke semua unit pada lapisan atasnya yakni

unit-unit output.

Backpropagation:

d.

Setiap unit output (y

k

, k=1,2,3,..,m) menerima target pola yang

berhubungan dengan pola pembelajaran, selanjutnya hitung informasi

errornya:

δ

2

k

= (t

k

– y

k

) f’(y_in

k

)

(2.12)

φ

2

k

=

δ

k

z

j

(2.13)

β

2

k

=

δ

k

(2.14)

lalu hitung koreksi bobot yang akan digunakan untuk memperbaiki nilai

w

jk

:

w

jk

=

αφ

2

jk

(2.15)

Hitung juga koreksi bias yang akan digunakan untuk memperbaiki nilai

b2

k

:

b2

k

=

αβ

2

k

(2.16)

Langkah d ini hanya untuk 1 (satu) lapisan tersembunyi, lakukan hal yang

sama bila lapisan tersembunyi lebih dari 1 (satu).

e.

Setiap unit tersembunyi ( Z

j

, j=1,2,3,..,p) menjumlahkan delta inputnya

dari unit-unit yang berada pada lapisan di atasnya:

δ

_in

$

=

δ2

%

w

$% &

%=1

(2.17)

Untuk menghitung error, kalikan nilai ini dengan turunan fungsi

aktivasinya:

δ

1

j

=

δ

_in

f’(z_in

j

)

(2.18)

φ

1

ij

=

δ

1

j

x

j

(2.19)


(30)

nilai v

ij

.

v

ij

=

αφ

1

ij

(2.21)

hitung juga koreksi bias yang nantinya akan digunakan untuk memperbaiki

nilai b1

j

:

b1

j

=

αβ

1

j

(2.22)

f.

Setiap unit output (y

k

, k=1,2,3,..,m) memperbaiki bias dan bobotnya

(j=0,1,2,..,p):

w

jk

(baru) = w

jk

(lama) +

w

jk

(2.23)

b2

k

(baru) = b2

k

(lama) +

b2

k

(2.24)

Setiap unit tersembunyi (zj, j=1,2,3,…,p) memperbaiki bias dan bobotnya

(i=0,1,2,…n):

v

ij

(baru) = v

ij

(lama) +

v

ij

(2.25)

b1

j

(baru) = b1

j

(lama) +

b1

j

(2.26)

3.

Hitung Mean Square Error ( MSE )

2.3. Algoritma Pengisian Pixel Bresenham

Algoritma pengisian pixel Bresenham adalah algoritma untuk menentukan urutan

pengisian pixel yang mendekati garis lurus antara dua koordinat. Algoritma ini biasanya

digunakan untuk menggambar garis pada layar komputer dan merupakan algoritma

pengisian pixel paling awal yang dikembangkan pada komputer grafis.

Gambar 2.8 menampilkan algoritma garis Bresenham dalam bentuk pseudo-code.

Selain membuat garis pada layar komputer, algoritma garis Bresenham digunakan untuk

menggambar garis pada memori penyangga (buffer) sebelum hasil penggambarannya

ditransfer secara perangkat keras ke layar komputer. Teknik ini disebut double-buffering,

tujuannya untuk menghindari flicker, mempercepat dan memperhalus tampilan pada

layar komputer. Meskipun saat ini penggambaran garis pada layar komputer telah

digantikan sepenuhnya oleh Graphical Processing Unit (GPU), namun untuk keperluan

tertentu algoritma garis Bresenham tetap digunakan.


(31)

function pixelline(x0, y0, x1, y1)

boolean step := abs(y1 - y0) > abs(x1 - x0) if step then

swap(x0, y0) swap(x1, y1) if x0 > x1 then swap(x0, x1) swap(y0, y1) int deltax := x1 - x0 int deltay := abs(y1 - y0) int error := deltax / 2 int ystep

int y := y0

if y0 < y1 then ystep := 1 else ystep := -1 for x from x0 to x1

if step then plot(y,x) else plot(x,y) error := error - deltay

if error < 0 then y := y + ystep

error := error + deltax

Gambar 2.8 Algoritma pengisian pixel Bresenham

2.4. Algoritma Penghilangan Duplikasi Data

Algoritma penghilangan duplikasi data bertujuan untuk menghilangkan urutan data

koordinat yang memiliki nilai sama dengan nilai koordinat sebelumnya. Dengan

algoritma ini data koordinat menjadi lebih kecil dan proses penggambaran menjadi lebih

efisien.

function delduplikasi(datalist)

listbaru:=[]

koor_xyz:=datalist[0]

listbaru <- datalist[0]

for loop from 1 to length(datalist)

if koor_xyz<>datalist[loop]:

koor_xyz:=datalist[loop]

listbaru <- koor_xyz

return listbaru

Gambar 2.9 Algoritma penghilangan duplikasi data

Bila dalam list terdapat nilai koordinat yang berulang misalnya data [10,20,30],

[10,20,30], [10,20,30] maka algoritma akan menghilangkan 2 koordinat terakhir sehingga

list berisi nilai [10,20, 30].


(32)

Penelitian gerak isyarat dilakukan oleh Yamato et.al (1992) dan Browden (2004) yang

menggunakan Hidden Markov Model (HMM) untuk pengenalan gerak isyarat. Teknik

filter partikel juga digunakan pada pengenalan gerak isyarat oleh Black et.al (1998) dan

Bretzner et.al (2002). Berikutnya penelitian gerak isyarat yang dilakukan oleh Hong et.al

(2000) menggunakan Finite State Machine (FSM), Ahn et.al (2009) menggunakan neural

network Multi Layer Perceptron (MLP), Yang et.al (1999) menggunakan neural network

Time Delay dan Gerlich et.al (2007) dengan neural network Radial Basis Function (RBF).

Penelitian berikut ini merupakan penelitian yang secara tidak langsung

berhubungan dengan penelitian interaksi manusia robot, menggunakan sensor RGB-D dan

berkaitan dengan gerakan manusia. Jalal et. al (2011) menggunakan transformasi Radon

dari siluet kedalaman untuk mengenali kegiatan manusia di dalam rumah. Sung et.al

(2011) mengekstraksi fitur dari data sendi yang disediakan oleh PrimeSense dari kamera

RGB-D Kinect dan menggunakan pendekatan metoda pembelajaran untuk menyimpulkan

kegiatan yang sedang dilakukan manusia. Xia et.al (2011) memperkenalkan algoritma

berbasis model untuk mendeteksi manusia menggunakan informasi kedalaman gambar

dari Kinect. Li et al (2010) mengembangkan grafik tindakan untuk model tindakan yang

dinamis. Selanjutnya data kedalaman 3D dipetakan guna memperoleh serangkaian bentuk

tubuh yang berhubungan erat dengan grafik tindakan.


(33)

Penelitian ini dilakukan dengan cara membangun aplikasi dan melakukan ujicoba.

Aplikasi yang dibangun yakni aplikasi antar-muka layar sentuh virtual yang akan

ditempatkan pada posisi antara objek (manusia) dengan komputer, aplikasi antar muka

file teks ke file gambar dan aplikasi neural network. Data yang telah terkumpul

selanjutnya dijadikan data pelatihan untuk aplikasi neural network backpropagation.

Bagian pertama membahas aplikasi antar-muka dan neural network yang akan

dibangun dan bagian berikutnya akan membahas mengenai dataset yang digunakan

pada penelitian ini.

3.1

Pembangunan Aplikasi

Aplikasi antar-muka yang dibangun terdiri atas 3 bagian yakni antar-muka layar

sentuh virtual, peubah data teks ke dalam format gambar dan aplikasi neural network

backpropagation untuk percobaan.

3.1.1

Antar-muka Layar Sentuh Virtual

Antar-muka layar sentuh virtual yang dibangun memiliki spesifikasi berikut:

1.

Ukuran layar disesuaikan dengan ukuran bentuk tubuh manusia pada

umumnya, dengan ukuran tinggi 200 centimeter, lebar 150 centimeter dan

kedalaman 65 centimeter.

2.

Mampu menampilkan koordinat X, Y dan Z untuk masing-masing skeleton.

3.

Mampu menangkap data skeleton tangan kanan dan kiri dan menampilkannya

secara penuh pada layar sentuh.

4.

Mampu menyesuaikan letak koordinatnya sesuai dengan perpindahan tubuh

objek guna menghindari derau pada data skeleton.

5.

Mampu merepresentasikan format data 3D ke dalam bentuk gambar.

6.

Menyimpan data gerak isyarat lengkap ke dalam format file teks.


(34)

3.1.2

Antar-muka Peubah

Data gerak isyarat yang diterima oleh layar sentuh virtual yang tersimpan dalam

format file teks selanjutnya dibaca oleh aplikasi peubah untuk diubah formatnya ke

dalam format file gambar. Tahap-tahapannya sebagai berikut:

a.

Data file gerak isyarat dalam bentuk file teks dibaca dan dimasukkan ke dalam

list.

b.

Pada list data duplikasi dihilangkan untuk mempercepat proses penggambaran

c.

Melakukan proses pengisian bagian koordinat data yang kosong agar gambar

menjadi lebih baik dengan menggunakan algoritma garis.

d.

Proses penggambaran pola gerak isyarat dilakukan dengan meletakkan piksel

sesuai koordinat.

e.

Gambar pola gerak isyarat yang telah terbangun disalin ke dalam format file

gambar .PNG.

3.1.3

Aplikasi Neural Network

Membangun aplikasi neural network backpropagation yang akan digunakan untuk

percobaan. Tahapan pembangunan aplikasi ini sebagai berikut:

a.

Membangun modul pembacaan file pola gerak isyarat.

b.

Membangun modul utama neural network backpropagation dengan 3

parameter utama yaitu jumlah neuron layer input, jumlah neuron layer hidden

dan jumlah neuron layer output.

c.

Membangun modul transfer function.

3.2

Percobaan

Pelatihan neural network backpropagation dilakukan dengan tahapan berikut:

1.

Pelatihan dimulai dengan memberikan nilai jumlah maksimum iterasi, target

error, learning rate dan momentum.

2.

Selanjutnya dilakukan pembacaan data gambar gerak isyarat sebanyak 400

gerak isyarat sebagai input dan 400 data target sesuai klasifikasi gerak isyarat

data input.


(35)

3.

Lakukan iterasi sampai maksimum atau berhenti saat error pelatihan lebih

kecil dari nilai target error.

4.

Data hasil ujicoba direkam untuk kebutuhan analisa

5.

Kembali ke langkah 1 dengan mengubah parameter-parameter.

3.3

Dataset

Dataset untuk penelitian ini minimal berisi data gerak isyarat berupa

koordinat-koordinat skeleton manusia yang dicuplik dari perangkat sensor RGB-D Kinect.

Penelitian ini hanya membutuhkan data label dan data skeleton dari dataset. Data

video, suara dan tipe data lainnya tidak diperlukan dan lebih sebagai data pelengkap.

Gambar 3.1 Contoh isi dataset MMGR

Tesis ini menggunakan dataset multi-modal dari Escalera et.al (2013) yang

digunakan pada seminar modal Gesture Recognition (MMGR) “2013

Multi-modal Challenge”, 9-13 Desember 2013. Multi-Multi-modal adalah interaksi manusia mesin

menggunakan berbagai jenis sumber data sebagai input/output.

Dataset MMGR berisi data multi-modal, terdiri atas video berwarna, video

data kedalaman objek (depth), data audio, video data user mask dan data informasi

skeleton seperti terlihat pada gambar 3.1. Jenis gerak isyarat bahasa Italia yang

terdapat pada dataset MMGR terdiri atas 7754 gerak yang diklasifikasikan ke dalam

20 gerak isyarat dalam bahasa Italia seperti pada tabel 3.1.

Tabel 3.1 Jenis gerak isyarat pada dataset MMGR

No.

Gerak Isyarat

Maksud

1

Basta

Cukup ! [marah]

2

Buonissimo

Lezat

3

Chedupalle

Bosan

4

Chevuoi

Apa yang anda inginkan?


(36)

6

Cosatifarei

Apa yang harus saya lakukan?

7

Daccordo

Setuju

8

Fame

Lapar

9

Freganiente

Tidak masalah

10

Furbo

Licik

11

Messidaccordo

Masukan bagus

12

Noncenepiu

Jangan kebanyakan

13

Ok

Oke

14

Perfetto

Sempurna

15

Prendere

Ambil

16

Seipazzo

Anda gila?

17

Sonostufo

Saya lelah

18

Tantotempo

Itu masa lalu

19

Vattene

Pergilah

20

Vieniqui

Ke sini

Data pelatihan terdiri atas 403 direktori yang masing-masing terdiri atas file

audio (.WAV), file video RGB (.MP4), file data label dan koordinat (.MAT), file

video Depth (.MP4) dan file video User Mask (.MP4).

Gambar 3.2 File pelatihan pada direktori Sample00001

File yang dibutuhkan untuk penelitian ini adalah file .MAT dalam format

MatLab, di dalamnya terdapat informasi koordinat skeleton, label gerak isyarat, titik

koordinat layar, nomor frame dan data lainnya. File video berwarna penulis gunakan

sebagai pelengkap untuk sinkronisasi gerak saat menampilkan gambar skeleton.


(37)

3.4

Instrumen Penelitian

Penelitian ini menggunakan perangkat berikut:

1.

Laptop ASUS N43S, Intel Core I5, RAM 4 GBytes, Harddisk 750 GBytes,

Windows 7 64 bit.

2.

Python 2.66, SciPy, Image, PyGame, Numpy

3.

Dataset Multi-modal Gesture Recognition 2013, dataset ini diperuntukkan untuk

riset, penggunaannya tidak memerlukan izin khusus, hanya menambahkan

Escalera et.al (2013) pada referensi.


(38)

4.1 Pendahuluan

Pengujian hasil pertam

memberikan hasil akhi

gambar gerak isyarat.

backpropagation.

4.2 Layar Sentuh Vir

Gambar 4.1 memperlih

merah dan hijau sebaga

Selain data gera

yang merepresentasika

menggambarkan jarak

dilakukan.

tama dicoba pada aplikasi layar sentuh virtua

hir berupa data teks yang berisi data koordinat

rat. Setelah itu pengujian dilanjutkan terha

Virtual

rlihatkan cuplikan gerak isyarat “chevuoi”, gam

agai pembeda tangan kanan dan kiri.

Gambar 4.1 Layar sentuh virtual”chevuoi”

erakan dilihat dari sisi depan partisipan, terdapa

ikan gerakan bila dilihat dari sisi kiri dan k

ak tangan kiri dan kanan dari HipCenter selam

rtual, layar sentuh dapat

at gerak isyarat dan data

rhadap neural network

gambaran garis berwarna

apat juga layar tambahan

kanan partisipan yang

lama urutan gerak isyarat


(39)

Gambar 4.2 m

sudah memenuhi spesif

Dari ujicoba dite

virtual mengalami dist

kiri dan ke kanan pad

dan ke belakang tidak

membuat posisi layar s

posisi pergerakan pa

menyesuaikan posisi

HipCenter. Hasil akhir

terdistorsi karena pe

memperlihatkan hasil

partisipan.

menunjukkan gerak isyarat “basta”. Dari sisi

esifikasi yang diinginkan pada bab sebelumnya.

Gambar 4.2 Layar sentuh virtual ”basta”

ditemukan beberapa data `gerakan yang tergam

istorsi. Distorsi ini disebabkan oleh perpindaha

ada saat gerak isyarat dilakukan. Perpindahan

dak mendistorsi data. Solusi untuk distorsi da

r sentuh menjadi lebih dinamis, berpindah sesu

partisipan ke kanan dan ke kiri. Hal in

i koordinat kiri atas layar berpindah sesuai

hirnya terlihat seperti gambar 4.3, sebelah kir

pergerakan partisipan ke arah kiri. Gam

sil saat posisi layar virtual telah disesuaika

isi aplikasi layar sentuh

ya.

ambar pada layar sentuh

ahan posisi partisipan ke

an pergerakan ke depan

i data ini adalah dengan

suai dengan perpindahan

ini dilakukan dengan

ai perpindahan skeleton

kiri gambar terlihat data

ambar sebelah kanan

ikan dengan pergerakan


(40)

Sampai dengan

namun masih harus di

35x60. Hal ini dilaku

seragam dan kecil seh

.4.4 memperlihatkan po

Gambar 4.3 Mengatasi distorsi data

an keadaan ini, data koordinat untuk gerak is

dilakukan penyesuaian bentuk data menjadi p

kukan agar data koordinat yang dihasilkan m

ehingga mempercepat proses pembelajaran ne

pola matriks pada gerakan “BASTA”.

Gambar 4.4 Gerak isyarat pola matriks

isyarat sudah diperoleh,

i pola matriks berukuran

memiliki ukuran yang

neural network. Gambar


(41)

Koordinat-koor

disalin menjadi file d

merupakan representas

Gambar 4.5 Pe

File teks yan

pembentukan pola pe

gambar data di dalam f

Format teks ya

gerakan berisi 3 basris

dengan nama sisi tanga

berurut sampai akhir ba

ordinat matriks yang berisi nilai sesuai uru

e data teks, termasuk data layar tambahan

tasi bentuk data 3D.

Penggalan isi data file teks untuk gerak isyarat

ang dihasilkan berisi data koordinat yan

pembelajaran dan pengujian, gambar 4.5 m

file teks pertama untuk gerak isyarat “VIENIQ

yang terdapat pada file hasil dari aplikasi laya

ris teks, baris pertama adalah nama jenis geraka

ngan misalnya ‘Kanan’ dilanjutkan dengan nila

r baris, seperti yang terlihat pada gambar 4.6.

x

Jenis Gerak Isyarat

z

Tangan

y

Gambar 4.6 Detail isi teks

rutan gerak selanjutnya

n kiri dan kanan yang

rat ”VIENIQUI”

ang dibutuhkan untuk

menunjukkan cuplikan

IQUI”:

layar sentuh untuk setiap

kan, baris kedua dimulai

ilai koordinat x, y dan z


(42)

perubahan menjadi data gambar sesuai kebutuhan pelatihan dan pengujian neural

network. Teknik yang digunakan adalah dengan membaca format teks ke dalam list di

memori, dilanjutkan dengan pembersihan duplikasi data. Duplikasi data sering terjadi saat

pencuplikan data dilakukan, hal ini disebabkan oleh posisi tangan pada frame berjalan

masih di koordinat yang sama dengan posisi tangan pada frame sebelumnya.

Gambar 4.7 Duplikasi data

Setelah data pada list bersih dari duplikasi, dilakukan proses pengisian pixel yang kosong

di antara 2 koordinat dengan cara membangun list baru hasil pemrosesan list sebelumnya

menggunakan algoritma Bresenham. Hasil list selanjutnya dikonversi menjadi gambar

berukuran 35x60 yang merepresentasikan urutan gerak isyarat sejak awal hingga akhir

gerakan. Diagram proses konversi dari data teks menjadi gambar dapat dilihat pada

gambar 4.8.


(43)

Dengan selesainya pembuatan gambar gerak isyarat ini, maka proses

pembelajaran neural network backpropagation dapat dimulai. Gambar 4.9 menunjukkan

contoh hasil penggambaran dari gerak isyarat “BASTA” yang berjumlah 20 gerakan.

BASTA

Gambar 4.9 Sekumpulan data gambar untuk gerak isyarat “BASTA”

4.3 Pengujian Neural Network

Bagian ini menyajikan hasil penelitian yang diperoleh dengan melakukan beberapa

percobaan berulang, dengan mengubah parameter-parameter jaringan seperti jumlah

neuron pada hidden layer, nilai learning rate dan nilai momentum. Tujuan perubahan

parameter ini dimaksudkan untuk menemukan pasangan yang tepat dari neuron pada

hidden layer, nilai learning rate dan nilai momentum yang selanjutnya digunakan sebagai

parameter tetap pada neural network.

Pelatihan menggunakan data gerak isyarat sebanyak 400 jenis gerak isyarat yang

terbagi atas 20 jenis klasifikasi gerakan, masing-masing dilakukan berulang oleh

partisipan sebanyak 20 kali. Setiap data gerak isyarat dicuplik dari layar sentuh virtual,

diolah dan disimpan dalam file teks. Setiap file teks berisi nilai parameter x, y dan z

gerakan tangan kanan dan kiri, terdiri dari 35x60 byte dengan masing-masing byte

melambangkan nilai biner 1 atau 0 seperti yang terlihat pada gambar 4.3.

Klasifikasi gerak isyarat yang akan menjadi target jaringan diberi nilai berupa 5

byte yang masing-masing berisi nilai 1 atau 0, melambangkan nilai biner sebagaimana

terlihat pada table 4.2.


(44)

1

BASTA

00001

2

BUONISSIMO

00010

3

CHEDUPALLE

00011

4

CHEVUOI

00100

5

COMBINATO

00101

6

COSATIFAREI

00110

7

DACCORDO

00111

8

FAME

01000

9

FREGANIENTE

01001

10

FURBO

01010

11

MESSIDACCORDO

01011

12

NONCENEPIU

01100

13

OK

01101

14

PERFETTO

01110

15

PRENDERE

01111

16

SEIPAZZO

10000

17

SONOSTUFO

10001

18

TANTOTEMPO

10010

19

VATTENE

10011

20

VIENIQUI

10100

4.4 Hasil Percobaan

Percobaan dilakukan dengan menggunakan jaringan dengan 2100 node input, n node

hidden dan 5 node output. Node input sebanyak 2100 node diperoleh dari perhitungan

data matriks 35x60 yakni baris dan kolom pada data biner pelatihan dan data pengujian.


(45)

Jumlah node output sebanyak 5 unit diambil dari data target pada tabel 4.2.

Arsitektur jaringan untuk percobaan ini menggunakan jaringan 3 layer, yakni layer input,

layer hidden dan layer output seperti terlihat pada gambar 4.10.

x1

x2100

x3 x2

bias

z1

z2

z3

zn

y1

y2

y3

y4

y5

Input

Layer

Hidden

Layer

Output

Layer

Gambar 4.10 Arsitektur neural network backpropagation

4.4.1 Percobaan pertama

Tujuan percobaan pertama ini adalah mengamati perubahan nilai Mean Square Error (

MSE ) dan maksimum jumlah epoch saat target MSE terpenuhi. Parameter yang

digunakan pada percobaan ini yakni learning rate 0.01, momentum 0.1 dengan jumlah

node input 2100 unit, node output 5 unit. Inisialisasi nilai bobot diambil secara acak

dengan nilai [-0.2, 0.2], fungsi aktivasi menggunakan sigmoid dengan nilai [0,1]. Target


(46)

berjumlah 5, 10, 20 dan 30 unit neuron.

Tabel 4.3 Hasil MSE dengan perubahan jumlah neuron

Epoch

Jumlah Neuron Hidden Layer

5 Neuron 10 Neuron 20 Neuron 30 Neuron

1

473.1281

480.0049

480.7728

472.2175

1000

3.085454

1.471799

0.921986

0.769815

2000

1.848708

0.632435

0.381721

0.315664

3000

1.52047

0.39655

0.234815

0.193173

4000

1.372571

0.285458

0.167864

0.137605

5000

1.289065

0.216905

0.129921

0.106217

6000

1.235584

0.175081

0.105617

0.086164

7000

1.198349

0.146919

0.088775

0.072297

8000

1.167844

0.12659

0.076444

0.062161

9000

0.165264

0.111245

0.06704

0.054444

10000 0.140492

0.099211

0.059641

0.04838

Waktu 18 menit

25 menit

47 menit

71 menit

Setelah melakukan beberapa pelatihan dengan mengubah jumlah neuron pada

layer hidden dengan nilai 5, 10, 20, 30 diperoleh data hasil seperti tersaji pada tabel 4.3.

Data hasil yang ditampilkan pada tabel dicuplik per 1000 kali iterasi.

Dari data hasil percobaan pertama, sebagaimana tersaji pada tabel 4.3 dapat

disimpulkan bahwa:

-

Penambahan jumlah neuron pada hidden layer dapat menaikkan kinerja

jaringan, nilai MSE antara 5, 10, 20 dan 30 neuron pada maksimum iterasi

masing-masing 0.140492, 0.099211, 0.0596, 0.04838, belum ada yang berhasil

mencapai nilai target MSE 0.01.

-

Jumlah neuron yang kecil (5 unit) ternyata menunjukkan kinerja yang lebih

rendah disbanding jumlah neuron 10, 20 dan 30.

-

Waktu yang dibutuhkan untuk mencapai maksimum iterasi menaik sesuai

dengan kenaikan jumlah neuron.


(47)

-

Neuron berjumlah 10, 20 dan 30 unit akan diujicobakan pada percobaan

kedua.

4.4.2 Percobaan kedua

Percobaan kedua ini menguji hasil percobaan pertama yakni mengubah parameter

momentum dan learning rate pada neuron hidden berjumlah 10, 20, 30 unit. Pengujian

dilakukan tanpa mengubah parameter lain seperti jumlah bobot, target MSE dan epoch

maksimum. Parameter yang digunakan pada percobaan ini yakni jumlah node input 2100

unit, node output 5 unit. Nilai learning rate 0.01, sedangkan inisialisasi nilai bobot

diambil secara acak dengan nilai [-0.2, 0.2], fungsi aktivasi menggunakan logistic

sigmoid dengan nilai [0,1]. Target MSE yang diinginkan adalah 0.01. Nilai momentum

yang akan diujikan yakni 0.9 dengan learning rate 0.01 dan0.001. Hasil pengujian terlihat

pada tabel 4.4

Tabel 4.4 Pengujian momentum dan learning rate

Neuron

Target

MSE

LR/Momentum

MSE

Epoch

Waktu

(menit)

10

0.01

0.01/0.9

0.019932

5270

10

20

0.01

0.01/0.9

0.01991

3180

15

30

0.01

0.01/0.9

0.019964

2380

16

10

0.01

0.001/0.9

0.01924

6120

17

20

0.01

0.001/0.9

0.0197

4352

14

30

0.01

0.001/0.9

0.0193

3761

12

Dari hasil pengujian di atas dapat disimpulkan bahwa perubahan momentum dari

0.1 menjadi 0.9 menunjukkan perubahan kinerja jaringan menjadi lebih baik, ini ditandai

dengan tercapainya MSE 0.01 pada semua jumlah neuron sebelum mencapai maksimum

epoch. Perubahan nilai learning rate dari 0.01 menjadi 0.001 membuat pembelajaran

semakin melambat dan berdampak pada lambannya kinerja jaringan.


(48)

layer, nilai learning rate

jumlah neuron 30, learn

4.5 Pengujian

Pengujian dilak

bobot pelatihan setiap

menjadi bobot untuk p

tidak diperlukan pelatih

Gambar 4.11 m

392.0806, terlihat gerak

isyarat atau 17%.

Gambar 4.12

173.0721, gerakan yan

isyarat atau 64%.

rate dan momentum diambil nilai yang memilik

arning rate 0.01 dan momentum 0.9.

ilakukan dengan menggunakan data seperti pad

tiap iterasi yang sebelumnya telah disimpan pa

k pengujian. Dengan demikian untuk penguji

atihan ulang.

Gambar 4.11 MSE 392.08

menunjukkan hasil pengenalan gerak isyarat sa

rakan yang dapat dikenali dengan benar berjum

Gambar 4.12 MSE 173.0721

menunjukkan hasil pengenalan gerak isyar

yang dapat dikenali meningkat menjadi 259 ge

iliki epoch terkecil yakni

pada lampiran 1.

pada file, dikembalikan

ujian data yang berbeda

t saat error bernilai

jumlah 68 dari 400 gerak

yarat saat error bernilai

gerakan dari 400 gerak


(49)

Gambar 4.13 m

60.04809, gerakan yan

gerak isyarat atau 89%.

Gambar 4.14 m

8.9673, gerakan yang d

gerak isyarat atau 99%.

Gambar

bernilai 0.873202, gera

isyarat atau 100%.

Gambar 4.13 MSE 60.04809

menunjukkan hasil pengenalan gerak isyarat sa

ang dapat dikenali meningkat lagi menjadi 357

%.

Gambar 4.14 MSE 8.967335

menunjukkan hasil pengenalan gerak isyarat sa

g dapat dikenali lebih meningkat lagi menjadi 3

%.

Gambar 4.15 MSE 0.873202

bar 4.15 menunjukkan hasil pengenalan gerak is

erakan yang dapat dikenali menjadi 400 gerakan

t saat error bernilai

57 gerakan dari 400

t saat error bernilai

i 397 gerakan dari 400

isyarat saat error

kan dari 400 gerak


(50)

No.

MSE

#Gerak Isyarat

dikenal

Persen

1

392.08

68

17%

2

173.0721

259

64%

3

60.04809

357

89%

4

8.967335

397

99%

5

0.873202

400

100%

Gambar 4.16 Grafik perbandingan MSE dan gerak isyarat dikenal

Dari hasil pengujian di atas dapat dilihat pada tabel 4.5 dan grafik gambar 4.16

bahwa semakin menurunnya nilai error semakin baik pula neural network

backpropagation mengenal gerak isyarat.

0 50 100 150 200 250 300 350 400 450

1 2 3 4 5

MSE Kenal


(51)

KESIMPULAN DAN SARAN

5.1 Kesimpulan

Dari pengujian yang telah dilakukan pada bab sebelumnya, penulis dapat

menyimpulkan beberapa hal berkenaan dengan penelitian ini, diantaranya:

1.

Layar sentuh virtual dapat digunakan sebagai cara alternatif untuk memperoleh

data gerak isyarat dari objek.

2.

Algoritma penghilangan data duplikasi dan algoritma pengisian pixel

Bresenham dapat digunakan untuk mengolah data gerak isyarat menjadi

gambar yang akan digunakan sebagai input/target.

3.

Pemilihan jumlah neuron pada hidden layer, nilai learning rate dan nilai

momentum mempengaruhi kinerja neural network backpropagation, untuk

kebutuhan penelitian ini jumlah yang maksimal untuk neuron hidden layer 30

neuron, nilai learning rate 0.01 dan nilai momentum 0.9.

4.

Neural network backpropagation dapat mengenali seluruh jenis gerak isyarat

(400 gerak) yang diklasifikasikan menjadi 20 gerak isyarat setelah error di

bawah 0.8.

5.2 Saran

Dari kesimpulan sebelumnya, penulis dapat memberikan beberapa saran sebagai

masukan untuk pengembangan teknologi pengenalan gerak isyarat selanjutnya:

1.

Ukuran matriks hasil layar sentuh dapat ditingkatkan untuk memaksimalkan

pengenalan gerak isyarat.

2.

Pengenalan gerak isyarat sebaiknya diujicoba juga pada teknologi neural

network lainnya seperti Recurrent Neural Network (RNN) dengan Long-Short

Term Memory (LSTM), RNN dengan Evolino, Deep Belief Network (DBN).


(52)

Implementation of 3D gesture recognition system based on neural network. In

Procs. of the 9th WSEAS international conf. on Applied informatics and

communications, pp. 84–87.

Aly, A. & Tapus, A. 2010. Gestures Imitation with a Mobile Robot in the Context of

Human-Robot Interaction (HRI) for Children with Autism, In 3rd Workshop

for Young Researchers on Human-Friendly Robotics, Tübingen, Germany,

October.

Black, M.J. & Jepson, A.D. 1998. A probabilistic framework for matching temporal

trajectories: Condensation-based recognition of gestures and expressions.

Computer Vision - ECCV 98, pp. 909.

Bowden, R., Windredge, D., Kadir, T., Zisserman, A. & Brady, M., 2004, A

linguistic feature vector for the visual interpretation of sign language.

Computer Vision-ECCV 2004, pp. 390–401.

Bretzner, L., Laptev, I. & Lindeberg, T. 2002 Hand gesture recognition using

multi-scale colour features, hierarchical models and particle filtering. In Fifth IEEE

International Conference on Automatic Face and Gesture Recognition, 2002.

Proceedings, pp. 423–428.

Escalera, S., Gonzàlez, J., Baró, X., Reyes, M., Lopes, O., Guyon, I., Athistos, V.,

Escalante, H.J. 2013, Multi-modal Gesture Recognition Challenge 2013:

Dataset and Results, ICMI 2013.

Feil-Seifer, D. & Mataric, J.M. 2009. Human Robot Interaction, Encyclopedia of

Complexity and Systems Science, Robert A. Meyers (eds.), pp. 4643-4659,

Springer New York.

Gerlich, L., Parson, B.N., White, A.S., Prior, S. & Warner, P. 2007 Gesture

recognition for control of rehabilitation robots. Cognition, Technology &

Work, 9(4):189–207.

Gupta, A., Srinivasan, P., Shi, J. & Davis, L.S. 2009. Understanding Videos,

constructing plots learning a visually grounded storyline model from annotated

videos. CVPR.


(53)

Sung, J., Ponce, C., Selman, B. & Saxena, A. 2011. Human Activity Detection from

RGBD Images, AAAI workshop on Pattern, Activity and Intent Recognition

(PAIR).

Xia, L., Chen, C. & Aggarwal, J.K 2011. Human Detection Using Depth Information

by Kinect, International Workshop on Human Activity Understanding from 3D

Data in conjunction with CVPR (HAU3D), Colorado Springs, CO.

Villaroman, N., Rowe, D. & Swan, B. 2011. Teaching Natural User Interaction Using

OpenNI

and

the

Microsoft

Kinect

Sensor,

In

Proceedings of the 2011 Conference on Information Technology Education

(SIGITE ’11). ACM, New York, NY, USA, pp.227-232.

Wu, J., Osuntogun, A., Choudhury, T., Philipose, M. & Rehg, J. M. 2007. A scalable

approach to activity recognition based on object use. In ICCV.

Yamato, J, Ohya J., & Ishii K. 1992. Recognizing human action in time-sequential

images using hidden Markov model. InProc. Comp. Vis. and Pattern Rec,

pp.379–385.

Yang, M.H. & Ahuja, N. 1999 Recognizing hand gesture using motion trajectories. In

CVPR.


(54)

DAFTAR PUBLIKASI ILMIAH PENULIS (TESIS)

No.

Judul

Artikel

Penulis

Publikasi

Waktu

Publikasi

Tempat

1

Speech Syntheszer Bahasa Indonesia

Berbasis Diphone MBROLA

Stephanus

Priyowidodo,

Dedy Irwan

SNIKOM 2010

29 -10-2010

Universitas Sumatera Utara

2

Teknologi Pengenalan dan Pensintesa

Ucapan Bahasa Indonesia pada Sistem

Informasi Berbasis Microsoft Speech

API

Stephanus

Priyowidodo

KNSI 2011

25-02- 2011

STMIK Potensi Utama

3

Singing Synthesizer Berbasis

Diphone MBROLA untuk Lagu

Berbahasa Indonesia

Erlanie Sufarnap,

Armaini Rahman,

Stephanus

Priyowidodo

Seminar

Nasional III

Teknologi &

Rekayasa

26-04-2011

Universitas Islam Sumatera

Utara

4

Pengamanan Data Tersimpan pada

Media Cloud Drive

Stephanus

Priyowidodo

SEMILOKA

2011


(55)

LAMPIRAN 2 – Contoh Data Teks 1

VIENIQUI Kanan,15,25,0,15,25,0,9,32,0,9,32,0,9,32,0,9,32,0,9,32,0,9,33,0,9,33,0,9,33,0,9, 33,0,9,33,0,9,33,0,9,33,0,9,33,0,9,32,2,10,31,3,10,30,6,10,28,7,10,25,9,10,23,8, 11,21,8,12,18,10,12,15,11,12,15,11,12,14,11,13,13,11,12,13,11,12,14,10,12,14,10, 12,14,10,12,15,10,12,18,10,12,20,10,12,22,9,11,27,7,10,29,6,10,30,4,9,32,2,8,32, 0,8,32,0,8,32,0,8,32,0,8,32,0,8,32,0,8,32,0,8,32,0,8,32,0,9,31,0,9,32,0,9,32,0,9 ,32,0,9,32,0,9,32,0,9,32,0,9,31,0,9,32,0,9,32,0,9,32,0,9,32,0,9,32,0,9,32,0,9,32 ,0,9,32,0,9,32,0,9,32,0,9,32,0,9,32,0,9,32,0,9,32,0,9,32,0,9,32,0,9,32,0,9,32,0, 9,32,0,9,32,0,9,32,0,9,32,0,9,32,0 Kiri,15,25,0,15,25,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20, 32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20, 32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20, 32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20, 32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20, 32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20, 32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20, 32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0 PRENDERE Kanan,9,32,0,9,32,0,9,32,0,9,32,0,9,32,0,9,32,0,9,32,0,9,32,0,9,32,0,9,32,0,9,32 ,0,9,32,0,9,32,0,9,32,0,9,32,0,9,32,0,9,32,1,10,31,3,10,30,5,11,28,6,11,26,7,10, 23,6,11,21,8,10,20,8,11,18,9,11,19,9,11,20,8,12,19,8,11,18,8,12,20,7,12,19,8,12, 19,8,12,19,8,12,19,8,11,21,6,12,20,7,11,21,6,11,20,6,11,20,6,11,22,5,11,21,6,11, 22,6,11,23,8,11,26,8,11,28,7,11,31,6,10,31,4,9,32,2,9,32,1,9,32,0,8,32,0,8,32,0, 8,32,0,8,32,0,8,32,0,8,32,0,8,32,0,8,32,0,8,32,0,9,32,0,9,32,0,9,32,0,9,32,0,9,3 2,1,9,32,1,9,32,1,9,32,1,9,32,1,9,32,1,9,32,1,9,32,1,9,32,1,9,32,0,9,32,0,8,32,0 ,9,32,0,9,32,0,9,32,0,9,32,0,9,32,0 Kiri,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20, 32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20, 32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20, 32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20, 32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20, 32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20, 32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20, 32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20, 32,0 SONOSTUFO Kanan,9,32,0,9,32,0,9,32,0,9,32,0,9,32,0,9,32,0,9,32,0,9,32,0,9,32,0,9,32,0,9,32 ,0,9,32,0,9,32,0,9,32,0,9,32,0,9,32,0,9,32,0,9,32,0,9,32,0,9,32,0,9,32,0,9,31,0, 9,31,0,9,31,1,10,30,3,11,28,4,12,26,5,12,23,5,14,21,5,14,19,5,14,18,5,15,18,5,16 ,18,5,16,19,4,15,17,4,18,17,3,17,17,3,15,16,4,16,17,3,16,17,3,16,17,3,16,17,3,16 ,16,3,16,17,3,16,17,3,16,17,3,17,18,4,15,19,4,16,22,6,14,24,6,12,27,6,11,29,5,10 ,31,4,9,32,2,9,32,1,9,32,0,9,32,0,8,32,0,8,32,0,8,32,0 Kiri,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20, 32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20, 32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20, 32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20, 32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20, 32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20, 32,0 CHEVUOI Kanan,8,32,0,8,32,0,8,32,0,8,32,0,9,32,0,9,31,0,9,32,0,9,32,1,9,32,1,9,32,1,9,32 ,1,9,32,1,9,32,1,9,32,1,9,32,1,9,32,1,9,32,1,9,32,1,9,32,1,9,32,1,9,32,1,9,32,1, 10,31,3,10,30,4,11,27,5,12,24,5,12,23,5,13,22,5,13,22,5,12,22,5,12,22,5,13,22,5, 13,21,5,13,21,5,12,22,5,12,22,4,12,22,4,12,22,4,12,21,4,12,21,4,12,23,4,12,23,4, 12,23,4,12,23,4,11,25,4,10,27,4,10,29,4,10,29,4,9,31,3,9,32,2,9,32,2,9,32,1,9,32 ,1,9,31,0,9,31,0,9,32,0,9,32,0,9,32,0,9,32,0,9,32,0 Kiri,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20, 32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,32,0,20,


(1)


(2)

################################## # tesis-backpro.py # # (c)2013 Stephanus Priyowidodo # # NIM 107038023 # # S2 Teknik Informatika USU # # NN Backpropagation # ################################## __author__ ="Stephanus Priyowidodo" import numpy as np

import random as rnd, os.path, Image, copy import datetime

class backpropnet: layerCount=0 shape=None weights=[]

def __init__(self, layerSize): # Layer info

self.layerCount, self.shape = len(layerSize) - 1, layerSize #self.shape = layerSize

# Data dari run sebelumnya

self._layerInput, self._layerOutput, self._previousWeightDelta = [],[],[]

#self._layerOutput = []

#self._previousWeightDelta = []

# Create array utk weight

for (l1, l2) in (zip(layerSize[:-1], layerSize[1:])):

self.weights.append(np.random.normal(scale=0.1, size = (l2, l1+1)))

self._previousWeightDelta.append(np.zeros((l2, l1+1)))

#run

def Jalankan(self, input): lnCases = input.shape[0] self._layerInput=[] self._layerOutput=[]

#coba jalankan

for index in range (self.layerCount): if index==0 :

layerInput=self.weights[0].dot(np.vstack([input.T, np.ones([1, lnCases])]))

else:

layerInput=self.weights[index].dot(np.vstack([self._layerOutput[-1], np.ones([1, lnCases])]))

self._layerInput.append(layerInput)


(3)

#self._layerOutput.append(self.tanh(layerInput)) #self._layerOutput.append(self.gaussian(layerInput)) #self._layerOutput.append(self.linear(layerInput))

return self._layerOutput[-1].T

def TrainEpoch(self, input, target, learningRate=0.001, momentum=0.1):

delta=[]

lnCases=input.shape[0]

#running pertama kali self.Jalankan(input)

#hitung delta

for index in reversed(range(self.layerCount)): if index == self.layerCount-1:

#bandingkan dengan nilai target

output_delta = self._layerOutput[index] - target.T error = np.sum(output_delta**2)

delta.append(output_delta * self.sgm(self._layerInput[index], True)) #delta.append(output_delta * self.tanh(self._layerInput[index], True)) #delta.append(output_delta * self.gaussian(self._layerInput[index], True)) else:

#bandingkan dengan delta berikutnya

delta_pullback = self.weights[index+1].T.dot(delta[-1]) delta.append(delta_pullback[:-1,:] *

self.sgm(self._layerInput[index], True))

#delta.append(delta_pullback[:-1,:] * self.tanh(self._layerInput[index], True))

#delta.append(delta_pullback[:-1,:] * self.gaussian(self._layerInput[index], True))

#hitung delta weight

for index in range (self.layerCount):

delta_index = self.layerCount - 1 - index

if index == 0:

layerOutput = np.vstack([input.T, np.ones([1, lnCases])]) else:

layerOutput = np.vstack([self._layerOutput[index-1], np.ones([1,self._layerOutput[index-1].shape[1]])])

curweightDelta=np.sum(\

layerOutput[None,:,:].transpose(2,0,1)*delta[delta_index][None,:,:].tran spose(2,1,0)\

, axis=0)

weightDelta = learningRate * curweightDelta + (momentum * self._previousWeightDelta[index])


(4)

self.weights[index] -= weightDelta

self._previousWeightDelta[index] = weightDelta

return error

def sgm(self, x, der=False): if not (der):

return 1.0 / (1.0 + np.exp(-x)) else:

out=self.sgm(x)

return out * (1.0 - out)

def tanh(self, x, der=False): if not (der):

return np.tanh(x) else:

return 1.0-np.tanh(x)

def gaussian(self, x, der=False): if not (der):

return np.exp(-x**2) else:

return -2*x*np.exp(-x**2)

def linear(self, x, der=False): if not (der):

return x else:

return 1.0

def bacapolatraining(apola, atarget, banyakpola): #folderdtgbr="d:\\Multi-modal\\datatraining\\" folderdtgbr="d:\\Multi-modal\\datagambar\\" polain, polaout=[], []

for i in range(0, len(apola)): asem=[]

target=atarget[i]

for j in range(0, banyakpola): asem=[]

gbrfile=folderdtgbr+apola[i]+'%05d.png'%(j+1) if not os.path.isfile(gbrfile):

#print "Pola tidak ditemukan :", gbrfile continue

print "Baca pola training :", gbrfile img = Image.open(gbrfile)

for a in range (0, 60): for b in range(0, 35): pixel = img.load() pixel[a, b]

if pixel[a, b]==(255,255,255):asem.append(0) else:asem.append(1)

polain.append(asem) polaout.append(target)


(5)

return polain, polaout

def bacapolatest(apola, atarget, banyakpola): folderdtgbr="d:\\Multi-modal\\datatest\\" polahasil=[]

for i in range(0, len(apola)): asem=[]

target=atarget[i]

for j in range(0, banyakpola): asem=[]

gbrfile=folderdtgbr+apola[i]+'%05d.png'%(j+1) if not os.path.isfile(gbrfile):

print "Pola tidak ditemukan :", gbrfile continue

print "Baca pola test :", gbrfile img = Image.open(gbrfile)

for a in range (0, 60): for b in range(0, 35): pixel = img.load() pixel[a, b]

if pixel[a, b]==(255,255,255):asem.append(0) else:asem.append(1)

test=[]

test.append(asem) test.append(target) polahasil.append(test) return polahasil

def init():

global arrhasil, apola, atarget

apola=('BASTA','BUONISSIMO','CHEDUEPALLE','CHEVUOI','COMBINATO','COSATIF AREI','DACCORDO',\

'FAME','FREGANIENTE','FURBO','MESSIDACCORDO','NONCENEPIU','OK','PERFETTO ','PRENDERE',\

'SEIPAZZO','SONOSTUFO','TANTOTEMPO','VATTENE','VIENIQUI') atarget=([0, 0, 0, 0, 1],[0, 0, 0, 1, 0],[0, 0, 0, 1, 1],[0, 0, 1, 0, 0],[0, 0, 1, 0, 1],\

[0, 0, 1, 1, 0],[0, 0, 1, 1, 1],[0, 1, 0, 0, 0],[0, 1, 0, 0, 1],[0, 1, 0, 1, 0],\

[0, 1, 0, 1, 1],[0, 1, 1, 0, 0],[0, 1, 1, 0, 1],[0, 1, 1, 1, 0],[0, 1, 1, 1, 1],\

[1, 0, 0, 0, 0],[1, 0, 0, 0, 1],[1, 0, 0, 1, 0],[1, 0, 0, 1, 1],[1, 0, 1, 0, 0])

if __name__== "__main__":

global arrhasil, apola, atarget

foldernpy="d:\\Multi-modal\\datanpy\\" init()

polain, polaout=bacapolatraining(apola, atarget, 20) lnMax = 10000

lnErr = 0.0199 #1e-5 lr=0.01


(6)

mom=0.1

ft = open('hasil-20-lr0.01-m0.1-sig.txt', 'w') ft.write('Max epoch : %5d \n' %lnMax)

ft.write('Learning rate : %-.5f \n' %lr) ft.write('Momentum : %-.5f \n' %mom) bpn = backpropnet((2100,20,5))

print 'bpn shape : ',bpn.shape print 'bpn weights : ',bpn.weights print bpn.layerCount

datain =np.array(polain) dataout =np.array(polaout)

print 'ln error : {0:0.6f}'.format(lnErr) for i in range(lnMax+1):

#err = bpn.TrainEpoch(lvInput, lvOutput, learningRate=0.1, momentum = 0.1)

err = bpn.TrainEpoch(datain, dataout, learningRate=lr, momentum = mom)

flbobot=foldernpy+'bobot%05d'%i np.save(flbobot, bpn.weights) if i%10 == 0:

print ("Iterasi {0:4d}, Error: {1:0.6f}".format (i, err)) ft.write("Iterasi {0:4d}, Error: {1:0.6f} ".format (i, err)) tm=datetime.datetime.now().strftime("%Y-%m-%d %H:%M")

ft.write(tm) ft.write('\n') if err <= lnErr :

print ("Minimum error tercapai pada iterasi ke {0}".format(i))

break

print 'bpn weights : ',bpn.weights ##tampilkan output

arrint=[]

arrhasil = bpn.Jalankan(datain) for i in range (0, len(arrhasil)): asem=[]

for j in range(0, 5):

asem.append(int(round(arrhasil[i][j]))) arrint.append(asem)

for i in range(datain.shape[0]):

print ("Input : {0} Output : {1}".format(datain[i], arrint[i])) jumoke=0

for i in range(0, len(arrint)):

if polaout[i]==arrint[i]:jumoke=jumoke+1

print ("jumlah cocok {0:4d} dari {1:4d} = {2:4d}%".format (jumoke, len(arrint), jumoke*100/len(arrint)))

ft.write("jumlah cocok {0:4d} dari {1:4d} = {2:4d}%".format (jumoke, len(arrint), jumoke*100/len(arrint)))

ft.close()