2 Implementasi JST dan Wavelet pada FPGA
IMPLEMENTASI BERBAGAI ALGORITMA
NEURAL NETWORK DAN WAVELET PADA
FIELD PROGRAMMABLE GATE ARRAY
(FPGA)
Perpustakaan Nasional: Katalog Dalam Terbitan ISBN: 978-979-1421-102 Cetakan 1, Desember 2011
Penulis
Wisnu Jatmiko Petrus Mursanto Muhamad Fajar M Iqbal Tawakal Wahyu TrianggoroRuliantyo Syafaadillah Rambe Fauzi
Arief Ramadhan
Desain Sampul
Muhamad FajarHak Cipta
Seluruh isi buku dan sampul merupakan hak cipta Fakultas Ilmu Komputer Universitas Indonesia.
Kata Pengantar
Puji syukur kami panjatkan kehadirat Allah SWT, karena berkat rahmat, karunia, dan hidayah-Nya pada akhirnya penulis dapat menyelesaikan buku ini. Buku ini ditujukan untuk memberikan pengetahuan tentang bagaimana mengimplementasikan Jaringan Saraf Tiruan dan dan salah satu algoritma kompresi yakni algoritma
Wavelet meggunakan FPGA. Buku ini memberikan dasar-dasar
teori mengenai Jaringan Saraf Tiruan dan Wavelet. Buku ini juga memberikan gambaran umum mengenai apa itu FPGA, VHDL, dan perangkat keras Xilinx.
Ada tiga algoritma JST yang diimplementasikan ke dalam FPGA di buku ini, yaitu Backprogation, FLVQ dan FLVQ-PSO. Kemudian, metode wavelet yang diimplementasikan menggunakan FPGA adalah metode wavelet dengan filter banks dan metode wavelet dengan lifting scheme.
Kami mengucapkan terima kasih kepada Direktorat Riset dan Pengabdian Masyarakat Universitas Indonesia yang telah memberikan bantuan dana untuk riset yang berjudul “Pengembangan prototype berbasis sistem cerdas untuk akuisisi, visualisasi, dan analisa di bidang kesehatan: studi kasus konsentrasi zat Trichloroethylene”. Penulis juga berterima kasih kepada Kementrian Riset dan Teknologi yang membantu pendanaan riset berjudul “Pengembangan Smart Cardio Device sebagai deteksi dini untuk penyakit jantung berdasarkan sinyal Elektrokardiogram”. Tanpa bantuan dana yang diberikan maka riset-riset tersebut tidak akan berjalan dan buku ini yang sebenarnya juga hasil dari kedua riset tersebut tidak akan bisa dituliskan oleh kami.
Terima kasih juga kami haturkan kepada semua pihak yang telah memberikan dukungan selama pembuatan buku ini, terutama dari pihak Fakultas Ilmu Komputer Universitas Indonesia yang telah memberikan dukungan sepenuhnya terhadap kegiatan riset yang terkait dengan isi buku ini. Tak lupa pula kepada seluruh
4 Implementasi JST dan Wavelet pada FPGA mahasiswa di Laboratorium Computer Networks, Architecture &
High Performance Computing yang telah banyak membantu secara
formal maupun informal sehingga riset ini dapat berjalan dengan segala kelebihan dan kekurangannya. Terima kasih juga kami ucapkan untuk para anggota lab yang bersedia menjadi reviewer buku ini, Indra Hermawan, Zaki Imaduddin, dan I Putu Satwika. Semoga bantuan dan kerja sama ini dapat memberi kontribusi perkembangan yang berarti bagi keilmuan khususnya di bidang ilmu komputer di Indonesia.
Depok, Universitas Indonesia November 2011
Tim Penulis
Sistematika Penyusunan
Buku ini disusun dalam beberapa bab agar pembaca dapat memiliki gambaran singkat mengenai bagaimana mengimplementasikan Jaringan Saraf Tiruan (JST) dan Wavelet meggunakan Field Programmable Gate Array (FPGA). Berikut adalah penjelasan isi singkat bab dalam buku ini:
Bab 1: Pendahuluan
Pada bab ini terdapat penjelasan mengenai hal yang melatarbelakangi dan menjadi alasan penyusunan buku ini. Penjelasan mengenai penelitian pendahuluan yang menjadi dasar penulisan buku ini juga terdapat pada bab ini.
Bab 2: Jaringan Saraf Tiruan dan Wavelet
Pada Bab ini pembaca dapat mempelajari dasar-dasar teori Jaringan Saraf Tiruan (JST). Ada beberapa algoritma yang secara khusus tersaji pada dalam Bab ini, yaitu Backpropagation dan LVQ. Pembaca juga akan menemukan pembahasan mengenai dasar-dasar teori wavelet. Pembahasan tersaji secara mengalir, mulai dari transformasi Fourier sampai dengan fungsi skala dan fungsi wavelet.
Bab 3: Field Programmable Gate Array
Pada bab ini pembaca dapat mempelajari gambaran umum mengenai apa itu Field Programmable Gate Array (FPGA), paket perangkat keras Xilinx, dan semua teori terkait pengembangan menggunakan FPGA. Terdapat pula penjelansan mengenai VHDL secara lebih dalam. Sintaks dan semantik dari bahasa ini akan dijelaskan secara menyeluruh disertai oleh contoh dan ilustrasi untuk
6 Implementasi JST dan Wavelet pada FPGA membantu pembaca agar lebih memahami VHDL. Pada bab ini juga pembaca akan mempelajari berbagai format angka yang bisa dipakai dalam pengembangan FPGA. Format angka yang dibahas adalah Fixed Point dan Floating Point.
Bab 4: Implementasi Algoritma Jaringan Saraf Tiruan Backpropagation Pada FPGA
Bab ini membahas mengenai cara mengimplementasikan algoritma Backpropagation ke dalam FPGA. Pembaca dapat mulai belajar cara mengimplementasikan algoritma
Backpropagation pada bab ini.
Bab 5: Implementasi FLVQ dan FLVQ PSO Pada FPGA
Bab ini membahas mengenai cara mengimplementasikan algoritma Fuzzy Learning Vector Quantization (FLVQ) ke dalam FPGA. Pembaca dapat mulai belajar mengimplementasikan algoritma FLVQ ketika membaca Bab ini. Pembahasan mengenai Particle Swarm Optimization (PSO) dan kaitan antara FLVQ dan PSO juga
akan disajikan pada bab ini. Begitu pula cara implementasi FLVQ-PSO menggunakan FPGA akan dibahas di bagian akhir Bab ini.
Bab 6: Implementasi Wavelet Pada FPGA
Pada Bab ini pembaca dapat mempelajari cara mengimplementasikan wavelet daubechies dengan metode
filter banks dan lifting scheme ke dalam FPGA. Pembahasan
mulai dari dasar teori sampai dengan tentang perbedaan metode lifting scheme dengan metode filter banks.
Tujuan Penulisan
Buku ini dapat menginspirasi dan menumbuhkan minat pembaca untuk melakukan riset mengenai implementasi berbagai macam algoritma (termasuk JST dan wavelet) menggunakan FPGA. Selain itu, penulis berharap buku ini juga dapat menjadi buku pegangan bagi mahasiswa atau peneliti yang bergerak di bidang embedded
system. Khususnya bagi mereka yang bergelut dengan perangkat
8 Implementasi JST dan Wavelet pada FPGA
Daftar Isi
Kata Pengantar ... 3 Sistematika Penyusunan ... 5 Daftar Isi ... 8 Daftar Gambar ... 12 Daftar Tabel ... 19 Bab 1 Pendahuluan ... 20 1.1 Latar Belakang ... 201.2 Pengembangan Prototype Alat Pendeteksi Kerusakan Hati Akibat Zat Trychloroethylene ... 21
1.3 Sinyal EKG ... 26
1.4 Pengembangan Smart Cardio Device untuk Pendeteksian Penyakit Jantung berdasarkan Sinyal EKG ... 30
1.5 Pengembangan Automatic Sleep Awakening Controller . 35 1.6 Pengembangan Smart Ultrasonography (USG) untuk Monitoring Kesehatan Jarak Jauh. ... 38
Bab 2 Jaringan Saraf Tiruan dan Wavelet ... 45
2.1 Jaringan Syaraf Tiruan ... 45
2.1.1 Sejarah Jaringan Syaraf Tiruan ... 45
2.1.2 Pemrosesan Informasi Neural (Neural Information Processing) ... 46
2.1.3 Jaringan Syaraf Tiruan Untuk Pengenalan Pola ... 48
2.1.4 Fungsi-Fungsi Aktivasi ... 50
2.1.5 Jaringan Syaraf Tiruan Propagasi Balik (Backpropagation Neural Network) ... 54
2.1.6 Algoritma Fuzzy Learning Vector Quantization (FLVQ) 69 Karakteristik ... 69
2.1.7 Particle Swarm Optimization (PSO) ... 83
2.1.8 Fuzzy Learning Vector Quantization - Particle Swarm Optimization (FLVQ-PSO) ... 86
Karakterisitik ... 86
2.2 Wavelet... 92
2.2.1 Fourier Transform ... 93
2.2.2 Short Time Fourier Transform ... 97
2.2.3 Wavelet Transform ... 100
2.2.4 Continuous Wavelet Transform ... 101
2.2.5 Discrete Wavelet Transform... 105
2.2.6 Fungsi Pengskalaan (Scaling Function) dan Fungsi Wavelet (Wavelet Function) ... 106
2.2.7 Multi Resolution Analysis ... 110
Bab 3 Field Programmable Gate Array ... 114
3.1 FPGA ... 114
3.1.1 Diagram Alur Pengembangan Implementasi pada Perangkat Keras FPGA ... 119
3.1.2 Hardware Xilinx Spartan 3A ... 120
3.1.3 Software Xilinx Core Generator ... 122
3.1.4 Xilinx Core Generator ... 123
3.2 Pengantar VHDL... 124
3.2.1 Metode Desain Rangkaian Digital ... 126
3.2.2 Very High Speed Integrated Circuit Hardware Description Language Overview ... 128
Model Structural ... 131
Model Behaviorial ... 132
3.2.3 Tipe data pada VHDL ... 133
3.2.4 Ekspresi dan Operator pada VHDL ... 136
3.2.5 Terminologi pada VHDL ... 138
10 Implementasi JST dan Wavelet pada FPGA
3.2.7 Component ... 148
3.2.8 Komponen Test Bench ... 149
3.3 Representasi Angka ... 153
3.3.1 Fixed Point ... 153
3.3.2 Floating Point ... 155
3.3.3 Perbandingan dan Format Lainnya ... 161
Bab 4 Implementasi Algoritma Jaringan Saraf Tiruan Backpropagation Pada FPGA ... 164
4.1 Backpropagation pada FPGA ... 164
4.2 Implementasi dan Adaptasi Desain ... 164
4.3 Representasi Data ... 165
4.4 Desain Neuron dan Input ROM ... 165
4.5 Multiplier ... 167
4.6 Activation Function Unit ... 167
4.7 Desain Layer ... 168
4.8 Classifier Unit ... 169
4.9 Waktu Pemrosesan Feedforward ... 169
4.10 Komponen Interface ... 171
4.10.1 Expected Value ROM ... 171
4.10.2 Accuracy Check Unit ... 171
4.10.3 Binary to BCD Unit... 172
4.10.4 BCD to LCD Unit ... 172
4.10.5 LCD Display Unit ... 172
4.11 State Machine... 174
4.12 Hasil Synthesis pada Xilinx ISE Design Suite versi 12.3 ... 179
4.13 Sumber Daya yang Terpakai Pada Xilinx Spartan 3AN XC3S700AN ... 180
Bab 5 Implementasi FLVQ dan FLVQ PSO Pada FPGA ... 182
5.1.1 Rancangan Modul FLVQ ... 182
5.1.2 Random Access Memory (RAM) ... 183
5.1.3 Cluster Layer ... 185
5.1.4 Intersec Calculation ... 186
5.1.5 Neuron Intersec Calculation ... 188
5.1.6 UpdateCluster ... 189
5.2 Desain FLVQ PSO pada FPGA ... 190
5.2.1 Desain Proses Training ... 191
5.2.2 Desain Proses Testing ... 199
5.2.3 Desain Umum ... 200
Bab 6 Implementasi Wavelet Pada FPGA ... 202
6.1 Implementasi Wavelet Filter Banks pada FPGA ... 202
6.1.1 Implementasi Filter Banks di Java ... 206
6.1.2 Arsitektur di FPGA ... 208
6.2 Implementasi Wavelet Lifting Scheme pada FPGA ... 216
6.2.1 Pemilihan Jenis Wavelet Daubechies ... 225
6.2.2 Implementasi Algoritma Wavelet Daubechies 4 di Java ... 225
6.2.3 Arsitektur Wavelet Lifting Scheme di FPGA ... 229
Daftar Pustaka ... 242
Glosarium ... 247
Index ... 251
12 Implementasi JST dan Wavelet pada FPGA
Daftar Gambar
Gambar 1. Contoh gambar sel hati tikus ... 22
Gambar 3. Rancangan keseluruhan sistem ... 24
Gambar 5. Sinyal EKG (gambar diambil dari http://commons.wikimedia.org/wiki/File:SinusRhythmLabels.svg) ... 27
Gambar 14. Model komputasi JST ... 47
Gambar 15. Analogi pengenalan pola JST pada manusia. ... 50
Gambar 16. Fungsi identitas ... 51
Gambar 17. Fungsi tangga biner ... 51
Gambar 18. Fungsi tangga bipolar ... 52
Gambar 19. Fungsi sigmoid biner ... 53
Gambar 20. Fungsi sigmoid bipolar ... 54
Gambar 21. Arsitektur Backpropagation ... 56
Gambar 22. Feedforward menuju lapisan tersembunyi ... 64
Gambar 23. Feedforward menuju lapisan output ... 64
Gambar 24. Menghitung error lapis tersembunyi ... 66
Gambar 25. Penyesuaian Bobot berdasarkan error pada lapisan tersembunyi ... 67
Gambar 26. Penyesuaian Bobot berdasarkan error pada lapisan output ... 68
Gambar 27. Arsitektur Jaringan FLVQ ... 70
Gambar 28. Ilustrasi Segitiga Fuzzy (Rochmatullah 2009) ... 71
Gambar 29. Ilustrasi pencarian nilai similaritas antar 2 vektor fuzzy ... 73
Gambar 32. Vektor pewakil diperlebar fuzzinessnya ... 76
Gambar 35. Vektor pewakil dipersempit fuzzinessnya ... 79
Gambar 37. Vektor pewakil diperlebar fuzzinessnya ... 80
Gambar 38. Ilustrasi Inisalisasi Vektor Pewakil Awal ... 87
Gambar 39. Ilustrasi pencarian vektor kecepatan pada FLVQ-PSO 89 Gambar 40. Contoh Sinyal Kosinus ... 93
Gambar 41. Sinyal Asli Sebelum Diproses ... 94
Gambar 42. Sinyal Setelah Diberi Fourier Transform ... 95
Gambar 43. Contoh Sinyal Stasioner ... 96
Gambar 44. Contoh Sinyal Non-stasioner ... 96
Gambar 45. Fourier Transform pada Sinyal Non-stasioner ... 96
Gambar 46. Contoh Hasil Transformasi STFT. Sumber: Polikar, Robi. The Wavelet Tutorial Part 2. http://users.rowan.edu/~polikar/WAVELETS/WTpart2.html ... 98
Gambar 47. Berbagai Macam Ukuran Window Function ... 99
Gambar 48. STFT dengan Window Function yang kecil. Sumber: Polikar, Robi. The Wavelet Tutorial Part 2. http://users.rowan.edu/~polikar/WAVELETS/WTpart2.html ... 99
Gambar 49. STFT dengan window function Besar. Sumber: Polikar, Robi. The Wavelet Tutorial Part 2. http://users.rowan.edu/~polikar/WAVELETS/WTpart2.html ... 100
Gambar 50. Proses translasi dan dilasi mother wavelet terhadap sinyal ... 103
Gambar 51. Continuous Wavelet Transform. Sumber: Polikar, Rob. The Wavelet Tutorial Part 2. http://users.rowan.edu/~polikar/WAVELETS/WTpart2.html ... 104
Gambar 52. Hubungan Frekuensi dan Waktu ... 105
Gambar 53. Discrete Wavelet Transform ... 106
Gambar 54. Perubahan spektrum frekuensi sinyal sebagai hasil translasi dan dilasi mother wavelet di ruang frekuensi ... 107
Gambar 55. Fungsi pengskalaan yang membatasi jumlah fungsi wavelet yang digunakan. Sumber : Valens, Clemens. A Really Friendly Guide to Wavelets. 26 Jan 2004. 15 Mei 2011. http://polyvalens.pagesperso-orange.fr/clemens/wavelets/wavelets.html ... 108
14 Implementasi JST dan Wavelet pada FPGA Gambar 56. Tingkat kehalusan wavelet daubechies terhadap jumlah basis dengan Sobolev regularity. Sumber : Thielemann,Henning. Bounds for smoothness of refinable functions. -. 15 Mei 2011. http://www.math.uni-
bremen.de/zetem/DFG-Schwerpunkt/preprints/orig/refinablesmoothest.pdf ... 109
Gambar 57. Contoh Sinyal yang Cocok Diberi MRA... 111
Gambar 58. Proses dekomposisi bertingkat dalam analisa multiresolusi ... 111
Gambar 59. proses rekonstruksi bertingkat dalam analisa multiresolusi ... 111
Gambar 60. Posisi penempatan hasil dekomposisi dalam analisis multiresolusi ... 112
Gambar 61. Logic Cell ... 115
Gambar 62. Struktur konseptual dari FPGA ... 116
Gambar 63. Configurable Logic Block pada FPGA Xilinx Spartan 3N ... 117
Gambar 64. Slice di dalam CLB ... 117
Gambar 65. Ilustrasi komponen di dalam Slice... 118
Gambar 66. Alur Pengembangan FPGA ... 119
Gambar 67. Spartan-3AN XC3S700AN ... 121
Gambar 68. Project Navigator Xilinx ISE Design Suit ... 123
Gambar 69. Core Generator ... 124
Gambar 70. Diagram Pembuatan Rangkaian Digital ... 127
Gambar 71. Tingkatan deskripsi rangkaian digital ... 129
Gambar 72. Metode desain untuk menangani berbagai tingkatan deskripsi ... 130
Gambar 73. Cakupan VHDL dalam mendeskripsikan rangkaian digital ... 131
Gambar 74. Diagram skematik full adder ... 132
Gambar 76. Kode VHDL dari komponen D flip flop... 133
Gambar 77. Contoh kode VHDL untuk data tipe enumerasi ... 135
Gambar 78. Contoh kode VHDL untuk data physical type... 135
Gambar 79. Contoh deklarasi signal bertipe std_logic_vector ... 135
Gambar 80. Contoh deklarasi signal berupa array yang didefinisikan sendiri ... 136
Gambar 81. Contoh deklarasi records ... 136
Gambar 82. Contoh ilustrasi nilai yang dapat disimpan dalam records Insrt_T ... 136
Gambar 83. Contoh operasi concate ... 137
Gambar 84. Kode untuk komponen gerbang logika serbaguna ... 138
Gambar 85. Contoh penggunaan generic. ... 141
Gambar 86. Contoh constant bertipe positive. ... 142
Gambar 87. Contoh constant bertipe time. ... 142
Gambar 88. Contoh constant bertipe integer. ... 142
Gambar 89. Struktur deklarasi generic ... 143
Gambar 90. Struktur deklarasi constant ... 143
Gambar 91. Struktur Process ... 144
Gambar 92. Contoh process yang melibatkan perubahan nilai signal. ... 145
Gambar 93. Contoh process yang melibatkan perubahan nilai variable. ... 145
Gambar 94. Kode VHDL komponen D flip flop dengan input reset. ... 146
Gambar 95. Contoh penggunaan loop ... 147
Gambar 96. Contoh penggunaan melewatkan loop menggunakan “next when” ... 148
Gambar 97. Contoh penggunaan loop dengan counter ... 149
Gambar 98. Contoh component dan port map. ... 150
16 Implementasi JST dan Wavelet pada FPGA
Gambar 100. Contoh komponen test bench ... 153
Gambar 103. Desain neuron pada FPGA ... 166
Gambar 104. Cakupan desain neuron FPGA ... 167
Gambar 106. Desain keseluruhan feedforward ... 170
Gambar 107. Gambar desain keseluruhan & komponen interface ... 173
Gambar 108. Diagram state machine. ... 178
Gambar 111. Skema komponen-komponen Implementasi FLVQ di FPGA ... 182
Gambar 112. Skema komponen input RAM ... 183
Gambar 113. Skema komponen References Vector RAM ... 184
Gambar 114. Skema komponen Cluster Layer ... 185
Gambar 115. Skema komponen Intersec Calculation ... 186
Gambar 116. Skema internal komponen Intersec Calculation ... 187
Gambar 117. Skema komponen Neuron ... 188
Gambar 118. Skema komponen UpdateCluster ... 189
Gambar 119. Skema komponen Update ... 189
Gambar 120. Skema komponen Cluster Layer ... 191
Gambar 121. Skema komponen Cluster ... 192
Gambar 122. Skema komponen Input (ROM)... 193
Gambar 123. Skema komponen Referensi (RAM) ... 193
Gambar 124. Skema komponen Neuron ... 194
Gambar 125. Cuplikan kode untuk menghitung titik potong ... 195
Gambar 130. Komponen penjumlahan ... 197
Gambar 131. Komponen pengurangan... 197
Gambar 132. Komponen perkalian ... 197
Gambar 133. Proses update vektor pewakil ... 198
Gambar 134. Skema komponen UpdateCluster ... 199
Gambar 137. Alur pada proses Testing ... 201
Gambar 138. Proses dekomposisi bertingkat dalam di metode filter banks ... 203
Gambar 139. Fungsi pengskalaan, fungsi wavelet, dan koefisien filter yang digunakan di daubechies-4 (normalisasi = 2) ... 205
Gambar 145. Arsitektur keseluruhan ... 209
Gambar 146. Skema RAM ... 210
Gambar 148. Skema InputPadder ... 211
Gambar 150. Arsitektur Konvolusi ... 212
Gambar 151. Skema Convolution ... 212
Gambar 156. Skema DownSampling ... 215
Gambar 158. Skema LCD Driver ... 216
Gambar 160. Proses dekomposisi dan rekonstruksi di metode filter bank ... 217
Gambar 161. Proses dekomposisi bertingkat dalam di metode filter bank ... 218
Gambar 162. Proses dekomposisi dengan metode lifting scheme ... 219
Gambar 163. Proses rekonstruksi dengan metode lifting scheme ... 219
Gambar 164. Perubahan nilai pada proses dekomposisi lifting scheme ... 221
Gambar 165. Proses dekomposisi dual lifting scheme dimana prediksi (dual) dan pembaharuan (update) kebalikan dari lifting scheme klasik. ... 222
Gambar 166. Algoritma dekomposisi di Java ... 226
Gambar 167. Perubahan nilai di wavelet daubechies-4 untuk metode lifting scheme ... 229
Gambar 168. Rancangan implementasi wavelet daubechies-4 di FPGA ... 230
Gambar 169. Data masukan untuk rancangan yang diimplementasikan ... 230
18 Implementasi JST dan Wavelet pada FPGA
Gambar 170. Rancangan komponen dekomposisi bertingkat ... 232
Gambar 171. Rancangan komponen implementasi dekomposisi wavelet daubechies-4 di FPGA ... 234
Gambar 172. Skema implementasi komponen dekomposisi wavelet daubechies-4 di FPGA ... 235
Gambar 173. Rancangan komponen Splitting ... 236
Gambar 174. Rancangan komponen predict 1 ... 237
Gambar 175. Rancangan komponen update ... 238
Gambar 176. Rancangan komponen predict2 ... 239
Daftar Tabel
Tabel 1. Ilustrasi FLVQ MSA pada epoch ke-1 ... 82
Tabel 2. Ilustrasi FLVQ MSA pada epoch ke-2 ... 83
Tabel 3. Spesifikasi Xilinx Spartan-3 Family XC3S700AN ... 122
Tabel 4. Representasi fixed point ... 153
Tabel 5. Standar IEEE 754 ... 157
Tabel 6. floating point 8 bit ... 158
Tabel 7. Representasi Data ... 165
Tabel 8. Koefisien filter untuk daubechies-2 hingga daubechies 10 (normalisasi = akar 2) ... 205
Tabel 9. Koefisien lifting scheme untuk daubechies-2 hingga daubechies-8 ... 223
20 Implementasi JST dan Wavelet pada FPGA
Bab 1 Pendahuluan
Pada bab ini terdapat penjelasan tentang latar belakang pembuatan buku ini.
1.1 Latar Belakang
Hal yang melatarbelakangi penulisan buku ini berasal dari beberapa penelitian yang dilakukan oleh Wisnu Jatmiko dan kawan-kawan. Sebagian dari disiplin ilmu yang berhasil dituangkan dalam buku ini telah memberikan efek positif pada kalangan masyarakat maupun peneliti-peneliti lainnya. Beberapa judul penelitian tersebut antara lain, “Pengembangan prototype berbasis sistem cerdas untuk akuisisi, visualisasi, dan analisis di bidang kesehatan: studi kasus konsentrasi zat Trichloroethylene”, “Pengembangan Smart Cardio Device sebagai deteksi dini untuk penyakit jantung berdasarkan sinyal Elektrokardiogram”, “Pengembangan Sleep-Awakening Timing Controller untuk Kesehatan dan Keamanan Kerja Berbasiskan Algoritma Kecerdasan Komputasional”, dan “Pengembangan Smart Ultrasonography (USG) untuk Pengawasan Kesehatan Jarak Jauh”.
Penelitian-penelitian ini berkisar mengenai pembuatan alat pada bidang kesehatan. Beberapa alat didesain untuk memiliki karakteristik ukuran yang kecil, portable, dan mudah digunakan. Salah satu teknik untuk prototyping atau merancang alat yang memiliki sifat tersebut adalah dengan menggunakan FPGA. FPGA merupakan sebuah chip elektronik yang dapat diprogram ulang sehingga proses prototyping sebuah rancangan sistem digital bisa dilaksanakan dengan lebih cepat dan lebih fleksibel, hal ini menunjukan rancangan FPGA yang lebih unggul dari alat pengembangan sistem digital lainnya.
Kita dapat melakukan simulasi terhadap implementasi rancangan sistem digital pada FPGA sehingga kebenarannya dapat dipastikan sebelum rancangan sistem digital tersebut difabrikasi secara masal. Pendekatan ini memiliki banyak keuntungan, baik dari waktu
pengembangan yang lebih singkat maupun biaya yang lebih hemat. Hal ini terjadi karena kita tidak perlu bongkar pasang desain rangkaian digital yang sedang kita buat. Kita cukup merubah kode dan melakukan simulasi dan pengujian langsung di development
board (papan pengembangan) FPGA. FPGA sendiri biasanya
diperjualbelikan bersama dengan papan pengembangan yang memiliki berbagai port I/O dan berbagai device interface seperti
Liquid Crystal Display (LCD), Light Emitting Diode (LED), switch
(saklar), dan button (tombol).
Pembaca dari buku ini diharapkan sudah memiliki latar belakang akademis di bidang Ilmu Komputer terutama pada bidang Rancangan Sistem Digital. Buku ini adalah suatu usaha untuk mendokumentasikan proses implementasi algoritma pada FPGA yang dibutuhkan pada penelitian pada bidang embedded system sehingga dapat menjadi pelajaran dan referensi bagi pembaca untuk melakukan penelitian ataupun pengembangan di tersebut. Subbab-subbab berikutnya berisi penjelasan secara singkat garis besar dan teori dari beberapa penelitian terkait.
1.2 Pengembangan
Prototype
Alat
Pendeteksi
Kerusakan Hati Akibat Zat Trychloroethylene
Penelitian berjudul “Pengembangan Prototype Alat Pendeteksi Kerusakan Hati Akibat Zat Trychloroethylene” memiliki tujuan mengetahui tingkat kerusakan hati pada manusia yang diakibatkan oleh zat kimia Trichloroethylene (TCE). TCE terdapat pada
dry-cleaner, proses penyamakan kulit, pelarut lem, tinta dan
obat-obatan. Penggunaan TCE berbahaya bagi manusia. Salah satu akibat dari adanya TCE pada tubuh manusia adalah kerusakan organ hati.
Kerusakan hati akibat zat ini dapat dideteksi melalui citra potongan sel hati. Percobaan yang kami lakukan menggunakan potongan sel hati tikus putih, bukan sel hati manusia. Tikus putih dipilih sebagai pengganti manusia karena ada kedekatan genetis antara keduanya. Hal ini dilakukan untuk mempermudah proses penelitian. Gambar 1 di bawah menunjukkan contoh potongan hati tikus putih yang mengalami kerusakan akibat Trichloroethylene.
22 Implementasi JST dan Wavelet pada FPGA Gambar 1. Contoh gambar sel hati tikus
Pada penelitian ini terdapat 18 tikus putih yang dikelompokan menjadi tiga kelompok yang berbeda. Kelompok pertama adalah kelompok kontrol, yakni sama sekali tidak diberikan zat TCE 99% (0 ppm). Kelompok kedua adalah kelompok terpajan TCE rendah, diberikan zat Tri 99% sebanyak 1000 ppm, Kelompok yang terakhir adalah kelompok terpajan TCE tinggi yakni diberikan zat TCE sebanyak 2000 ppm. Setiap tikus memiliki kondisi yang sama yakni umur 10 minggu, berat 25 gram, dan berkelamin jantan. Pemberian zat TCE kepada tikus melalui proses inhalasi (pernapasan) yakni dengan cara meletakan tikus tersebut di ruangan khusus yang terkontaminasi zat TCE selama 7 hari (8 jam/ hari, pukul 09.30 – 17.30). Pada Gambar 2 terdapat contoh gambar dari preparat hati tikus dengan perlakuan yang berbeda.
(a) (b) (c) (d)
Gambar 2. Hasil akuisisi data gambar sel hati tikus (a) dan (b) sel
Histopathology hati setelah dikenakan 0 ppm Trichloroethylene, (c) dan
(d) Histopathology sel hati setelah dikenakan 2000 ppm Trichloroethylene
Gambar sel hati diperoleh melalui bedah kecil dengan terlebih dahulu memberikan pembiusan terhadap tikus-tikus tersebut. Potongan hati tikus harus melalui beberapa tahapan sebelum
dapat diamati, antara lain, dehidrasi selama dua jam, infiltrasi selama dua puluh menit, embedding, sectioning, deparafinisasi selama sepuluh menit, staining selama sepuluh menit, mounting pada sebuah preparat dan labelling, baru difoto menggunakan mikroskop digital. Hasil tangkapan gambar kemudian diproses menggunakan FPGA untuk diklasifikasi.
Pengembangan algoritma pada FPGA juga memerlukan beberapa tahapan agar rancangan sistem digital dapat berfungsi sesuai dengan harapan. Salah satu tahap awal adalah menggunakan data
offline yang di hardcoded ke Read Only Memory (ROM) pada
rancangan FPGA sebelum menggunakan data yang diambil langsung dari alat tertentu secara online. Pada saat buku ini ditulis rancangan sistem digital yang kami rancang baru menerima data gambar yang sudah diproses terlebih dahulu menggunakan Kernel-PCA (KKernel-PCA) pada Personal Computer (PC) dan disimpan ke dalam ROM FPGA untuk kemudian diklasifikasi menggunakan implementasi algoritma jaringan saraf tiruan pada rancangan sistem digital menggunakan FPGA.
Pengembangan sebuah classifier chip atau chip pengklasifikasi membutuhkan sebuah lingkungan yang berupa prototype sistem.
Prototype sistem yang kami rancang terdiri dari beberapa
komponen. Komponen tersebut antara lain mikroskop digital, sebuah beagleboard dan sebuah papan pengembangan FPGA. Gambar prefarat diambil menggunakan mikroskop digital kemudian data dikirimkan ke Beagleboard setelah itu dilakukan praproses menggunakan K-PCA. Data fitur hasil ekstraksi menggunakan K-PCA kemudian dikirimkan secara serial menuju FPGA dan dikembalikan ke Beagleboard untuk ditampilkan hasil klasifikasinya melalui monitor.
24 Implementasi JST dan Wavelet pada FPGA
Digital
Microscope Beagleboard FPGA
VGA Display
Keyboard
Gambar 3. Rancangan keseluruhan sistem
Kami menyeleksi algoritma klasifikasi yang akan kami implementasi di FPGA terlebih dahulu menggunakan bahasa pemrograman tingkat tinggi. Bahasa pemrograman tingkat tinggi tersebut antara lain bahasa pemrograman Java atau Matlab. Implementasi pada bahasa pemrograman tingkat tinggi ini kemudian kami evaluasi. Kami akan memilih algoritma yang mampu menghasilkan performa optimum dalam mengklasifikasikan gambar prefarat hati tikus. Algoritma terpilih kami desain menjadi sebuah rancangan sistem digital dan kami implementasikan di FPGA. Beberapa algoritma klasifikasi yang kami uji coba adalah Backpropagation dan FNLVQ. Bahasan mengenai implementasi kedua algoritma tersebut terdapat pada bab-bab selanjutnya.
Pengklasifikasian gambar hati dilakukan dengan terlebih dahulu menentukan Region of Interest (ROI). Pada penelitian ini daerah yang menjadi ROI adalah Lobus dari sel hati. Lobus hati terbentuk dari sel parenkimal dan sel non-parenkimal. Sel parenkimal pada hati disebut hepatosit, menempati sekitar 80% volume hati dan melakukan berbagai fungsi utama hati. Bagian inilah yang menjadi pusat perhatian kami. Bagian ini kemudian dicuplik atau di-crop dan dijadikan masukan untuk algoritma ekstraksi fitur. Pada penelitian kami algoritma ekstraksi fitur yang digunakan adalah
Pada awal penelitian topik uji coba adalah mengklasifikasikan tingkat terpaparnya suatu sel hati oleh Trichloroethylene. Namun ternyata penelitian yang kami lakukan belum mencapai hasil yang diharapkan atau nilai akurasi yang dihasilkan belum optimal. Kemudian kami melakukan uji Kluster untuk mengidentifikasi karakteristik data menggunakan Fuzzy C Means (FCM). Uji FCM menunjukan bahwa data yang kami miliki karakteristiknya saling
overlap antar kelas. Pada Gambar 4 terlihat bahwa data dari setiap
kelas melewati masing-masing batas kelas. Hal ini mengindikasikan adanya suatu kesalahan dalam proses klasfikasi.
Gambar 4. Hasil Plot Clustering Citra Hati Tikus Putih Mengunakan
Fuzzy C Means (FCM)
Akhirnya kami pun kembali berkonsultasi dengan pakar epidemiologi, Dr. Anom Bowolaksono dan pakar kesehatan masyarakat Dr. Doni Hikmat Ramdhan. Hasil diskusi kami memunculkan hipotesis bahwa performa klasifikasi menjadi buruk karena ada faktor kekebalan sel hati yang berbeda-beda untuk setiap hati tikus. Hal ini akan menyebabkan pada setiap hati yang terpapar Trichloroethylene dengan jumlah tertentu belum tentu
26 Implementasi JST dan Wavelet pada FPGA mengalami kerusakan yang sama walaupun jumlah zat
Trichloroethylene yang terpapar sama. Akibatnya tidak mungkin
dari data visual kita dapat memisahkan mana hati yang terpapar sedikit zat TCE dan mana pula hati yang terpapar banyak zat TCE. Klasifikasi yang dapat dilakukan berdasarkan data visual adalah klasifikasi tingkat kerusakan sel hati bukan klasifikasi tingkat terpapar zat TCE pada suatu sel hati.
1.3 Sinyal EKG
Polysomnography adalah pemeriksaan menyeluruh terhadap
pasien dengan menggunakan berbagai macam sensor. Sensor tersebut antara lain sensor untuk memonitor sinyal otak atau
Electroencephalography (EEG), sensor untuk memonitor
pergerakan otot atau Electromyography (EMG), sensor gerakan mata atau Electrooculography (EOG) dan Electrocardiography (ECG). Polysomnography membutuhkan dana yang tidak sedikit dan banyak peralatan yang rumit. Hal ini mendorong para peneliti untuk mencari alat diagnosa yang lebih murah sebagai pengganti
Polysomnography.
Electrocardiography (ECG) atau Elektrokardiograf (EKG) adalah
sinyal yang menggambarkan aktivitas jantung manusia. Penggunaan sinyal EKG sebagai alternatif alat diagnosis penyakit tidur selain menggunakan Polysomnography cukup populer di kalangan para peneliti bidang computational intelligence. Sinyal ECG atau EKG adalah sinyal yang kami gunakan pada riset-riset yang akan kami jelaskan pada subbab-subbab berikutnya.
Pada Gambar 5 terdapat lima komponen yang merupakan bagian penting dari sinyal EKG. Gelombang tersebut adalah gelombang P, PR interval, QRS complex, segmen ST, dan gelombang T. Gelombang- gelombang ini menggambarkan kondisi pemompaan darah pada jantung manusia berdasarkan penyebaran impuls listrik pada otot jantung. Gelombang P adalah gelombang pertama dari sinyal EKG dan merepresentasikan penyebaran impuls listrik melalui otot atrium (aktivasi atau depolarisasi).
Gambar 5. Sinyal EKG (gambar diambil dari
http://commons.wikimedia.org/wiki/File:SinusRhythmLabels.svg) PR interval dimulai dari awal gelombang P sampai ke awal dari gelombang QRS complex. PR interval menggambarkan waktu yang dibutuhkan untuk impuls listrik untuk melalui keseluruhan daerah dari Sinoatrial (SA) menuju ke serat otot ventrikel. Gelombang berikutnya adalah QRS complex. Gelombang ini merupakan komponen terpenting dari sinyal EKG. Komponen ini menggambarkan penyebaran impuls listrik melalui otot ventrikel (depolarisasi). QRS complex terdiri dari beberapa gelombang, antara lain,
Defleksi (perubahan/ belokan) pertama bernilai negatif (ke bawah), dan disebut gelombang Q.
Defleksi positif selanjutnya adalah gelombang R, hal ini tidak tergantung dengan ada atau tidaknya gelombang Q sebelum gelombang R.
Defleksi berikutnya setelah gelombang R adalah gelombang S.
28 Implementasi JST dan Wavelet pada FPGA Komponen yang mengikuti QRS complex disebut segmen S-T. Titik dimana segmen ini dimulai disebut titik J (Junction). Komponen terakhir adalah gelombang T. Gelombang T merepresentasikan masa pemulihan dari ventrikel (repolarisasi). Pemetaan antara gelombang dan kondisi impuls listrik dapat dilihat pada Gambar 6.
30 Implementasi JST dan Wavelet pada FPGA Gambar 6. Ilustrasi keterkaitan sinyal ECG dengan kondisi impuls listrik
pada otot jantung (sumber:
http://commons.wikimedia.org/wiki/File:ECG_principle_slow.gif)
1.4 Pengembangan
Smart
Cardio
Device
untuk
Pendeteksian Penyakit Jantung berdasarkan Sinyal
EKG
Penyakit jantung merupakan salah satu penyebab kematian terbesar di dunia. Arrhythmia atau kelainan detak jantung adalah gejala awal penyakit jantung yang lebih serius bagi para penderitanya. Apabila tidak ada tindakan pencegahan maka bukan tidak mungkin penderita tersebut akan mengalami penyakit jantung yang serius seperti serangan jantung. Deteksi arrhythmia dapat dilakukan menggunakan sinyal Elektrokardiogram (EKG). Pada saat ini belum ada perangkat EKG yang bisa secara otomatis mendeteksi arrhythmia. Kami berusaha membuat sebuah alat yang dapat mendeteksi kelainan jantung, sehingga dokter tidak perlu repot mendiagnosis secara manual sinyal EKG dari pasien. Apabila terdeteksi kelainan maka dokter dapat melakukan diagnosis lebih lanjut terhadap pasien.
Secara umum, bagian dari sistem yang kami coba kembangkan menggunakan FPGA adalah serangkaian proses yang terkait dengan pendeteksian sinyal EKG yang tidak normal untuk setiap
detak jantung. Modul yang terdapat di dalam sistem antara lain adalah modul Analog to Digital Conventer (ADC), amplifier & band
filter, Wavelet, QRS detection, Random Access Memory (RAM), Artificial Neural Network (ANN), Video Graphic Array (VGA), dan Control and State Machine.
Beberapa modul diimplementasikan menjadi rangkaian elektronika, sisanya menggunakan FPGA (tipe XC3S700AN) dan memanfaatkan modul yang memang sudah tersedia pada papan pengembangan FPGA Spartan-3AN. Modul yang direncanakan untuk diimplementasikan dalam FPGA adalah RAM, modul JST, QRS
detection, Control and State Machine, Wavelet, dan VGA. Modul Amplifier & Band Filter diimplementasikan dalam rangkaian
elektronika. Modul ADC menggunakan modul jadi yang ada pada papan pengembangan Spartan-3AN. Control Button dan Switch sudah ada di papan Spartan-3AN. Tiga buah elektroda dipasangkan di dekat mata kaki salah satu kaki, dan pada dua bagian bawah pergelangan tangan (pada nadi). Rancangan sistem dapat dilihat pada Gambar 7. VGA Module Neural Network Monitor Wavelet ADC RAM QRS detection Control and State Machine Control Button and Switch Amplifier & Band Filter Electrode
Gambar 7. Rancangan Keseluruhan Sistem Pendeteksi Arrhythmia Pada riset kali ini kami mencoba membuat alat yang mampu mengambil sinyal EKG dari tiga buah elektroda. Sampling rate atau
32 Implementasi JST dan Wavelet pada FPGA banyaknya sampel yang di ambil untuk setiap beat adalah 300 titik dimulai dari puncak QRS Complex. Setelah itu akan dilakukan tahap ekstraksi fitur terhadap sinyal menggunakan algoritma dekomposisi Wavelet. Hasil ekstraksi fitur menghasilkan sinyal dengan panjang 40 titik. Sinyal ini kemudian akan di klasifikasi menggunakan algoritma FLVQ.
Hingga buku ini dituliskan sebagian dari sistem telah terimplementasi. Bagian yang didokumentasikan adalah eksplorasi tentang bagaimana cara mengimplementasikan algoritma Jaringan Saraf Tiruan pada FPGA menggunakan bahasa pemrograman VHDL. Selain pengembangan menggunakan FPGA, kami juga mengeksplorasi pengembangan menggunakan teknologi lain seperti menggunakan komputer desktop dan juga menggunakan tablet/ ponsel bersistem operasi Android.
Secara umum penelitian ini dibagi ke dalam beberapa tahap. Tahap pertama adalah penelitian mengenai studi tentang EKG itu sendiri, berbagai penyakit yang bisa dideteksi melalui EKG, dan proses klasifikasi yang dapat dilakukan di dunia ilmu komputer. Tahap kedua adalah membuat ECG Recorder Prototype buatan sendiri. Tahap ketiga adalah merampungkan prototipe dari Portable Smart
Cardio Device.
Pada tahap pertama kami mengasumsikan bahwa data EKG nantinya diambil dari ECG recording device atau alat perekam EKG. Pada tahap ini kami menggunakan data offline atau data yang sudah tertulis disuatu alat penyimpan tertentu seperti Personal
Computer (PC). Data sinyal tersebut sudah berupa data digital.
Asumsi kami ketika data masuk dari sensor, data tersebut akan disimpan pada sebuah memory tertentu sebagai data mentah sampai batas tertentu sebelum nantinya diproses oleh intelligent
system (sistem cerdas).
Data mentah akan melalui proses penghilangan noise (filtering). Data yang sudah tidak memiliki noise selanjutnya akan dikompresi sebelum menjadi masukan bagi sistem pengklasifikasi data. Proses kompresi sendiri bertujuan untuk meminimalisir fitur data yang
harus masuk ke dalam sistem klasifikasi. Hal ini tentunya akan mempermudah perhitungan yang dilakukan pada proses klasifikasi. Khusus pada kasus data EKG fitur datanya adalah sinyal EKG yang telah dikompresi. Fitur data adalah ciri yang akan dimanfaatkan oleh classifier dalam mengklasifikasikan data masukan. Pemilihan algoritma klasifikasi dilakukan dengan cara menguji akurasi algoritma tersebut dalam mengklasifikasikan data EKG. Proses pengujian dimulai dari memisahkan antara detak jantung yang normal dengan yang abnormal. Setelah akurasi pada pemisahan tersebut sudah baik barulah algoritma diujicobakan untuk mengklasifikasi antara detak jantung normal, detak jantung berpenyakit jantung tertentu, dan detak jantung berpenyakit tertentu lainnya.
Pada tahap kedua kami fokus pada pembuatan alat perekam data EKG. Alat yang akan dibuat memiliki tiga elektroda yang akan ditempelkan pada nadi di kedua lengan dan daerah di belakang mata kaki sebelah kanan. Alat perekam data EKG sebenarnya adalah subbagian dari bagan pada Gambar 7. Alat ini adalah alat penerima sinyal dari elektroda (electrode), melakukan amplifikasi atau penguatan sinyal dan reduksi noise (filtering) dan juga melakukan konversi dari sinyal analog menjadi sinyal digital atau
Analog to Digital Circuit (ADC). Hanya modul ADC yang
menggunakan modul sudah jadi yang terdapat pada papan pengembangan FPGA. Pada saat percobaan kami menggunakan papan pengembangan FPGA “Basys2” keluaran manufaktur Digilent.
Gambar 8. Rangkaian penguat sinyal dan filter.
34 Implementasi JST dan Wavelet pada FPGA Data uji coba di-generate menggunakan alat jadi bernama “Patient
Simulator” terdapat pada Gambar 9.
Gambar 9. Patient Simulator
Keseluruhan modul terkait perekaman sinyal EKG kami gabungkan dalam satu tempat. Modul-modul ini akan disambungkan dengan sebuah komputer untuk menampung sinyal yang dikirim secara serial dari port serial pada papan pengembangan FPGA ke port USB. Foto dari prototype alat perekam EKG terdapat pada Gambar 10
Tahap ketiga adalah mencoba membuat alat yang lebih portable serta menggabungkan implementasi algoritma klasifikasi beserta beberapa modul yang belum diimplementasikan ke dalam FPGA.
1.5 Pengembangan
Automatic
Sleep
Awakening
Controller
Kesehatan tidur adalah salah satu bidang kesehatan yang belum banyak diteliti di Indonesia. Menurut penuturan dari Dr. Andreas Prasadja seorang dokter spesialis kesehatan tidur dari Rumah Sakit Mitra Kemayoran bahwa selain kebutuhan olahraga dan juga kebutuhan gizi yang diperoleh melalui makanan, manusia juga membutuhkan tidur sebagai penunjang pola hidup sehat. Ada berbagai penyakit yang dapat didiagnosis melalui observasi tentang bagaimana seseorang tidur.
Tidur yang cukup identik dengan sebanyak apa proposi “tidur dalam” yang dialami oleh seseorang selama delapan jam tidur. Pengetahuan tentang tingkat kedalaman tidur seseorang dapat membantu dokter untuk menentukan apakah seseorang tidurnya telah cukup atau belum. Proses inilah yang ingin diotomatisasi agar
alarm hanya akan berbunyi ketika kita sudah tidur dengan cukup.
Riset kali ini berusaha untuk mengembangkan sebuah alat serupa jam tangan yang memiliki kemampuan membangunkan seseorang ketika tidurnya telah mencukupi dengan memanfaatkan sensor EKG. Pengembangan alat tersebut menuntut kami untuk terlebih dahulu mengembangkan sistem kontrol yang dapat melakukan mengukur tingkat kedalaman tidur seseorang.
Pada dasarnya pengamatan tentang tingkat tidur seseorang dapat dilakukan melalui pengamatan sinyal electroencephalography (EEG). Hanya saja peralatan EEG tidaklah sederhana (tidak praktis) seperti pada Gambar 11 dan juga harganya mahal. Tantangan inilah yang ingin dipecahkan pada riset kali ini, yakni mencari kemungkinan penggunaan sinyal alternatif (dalam riset ini sinyal EKG) untuk mendeteksi tingkat kedalaman tidur seseorang.
36 Implementasi JST dan Wavelet pada FPGA Gambar 11. Gambar seseorang yang dipasangkan sensor EEG (sumber:
http://en.wikipedia.org/wiki/File:EEG_cap.jpg)
Berbagai eksplorasi pun dilakukan, salah satunya adalah meneliti seberapa baik Jaringan Saraf Tiruan (JST) dapat mengklasifikasi tingkat kedalaman tidur seseorang dengan memanfaatkan sinyal EKG. Sepanjang perjalanan riset ini maka diketahui beberapa kemungkinan pengembangan yang bisa dilakukan melalui pemanfaatan sinyal EKG.
EKG Gangguan Tidur Murah Portable Central Sleep Apnea (Nerve) Tingkatan Tidur Obstructive Sleep Apnea (Respiratory) Automatic Sleep Awakening Controller Sadar Non REM REM Deep Sleep
Gambar 12. Rancangan Eksplorasi Riset Automatic Sleep Awakening
Pada Gambar 12 terlihat bahwa penggunaan EKG sebagai sumber eksplorasi memungkinkan kami membuat alat yang cukup murah dan portable. Melalui EKG juga ternyata dapat dideteksi beberapa penyakit gangguan tidur diantaranya, Central Sleep Apnea dan
Obstructive Sleep Apnea.
Melalui EKG juga ternyata kita dapat mendeteksi berbagai tingkatan tidur. Tingkatan tidur ini oleh beberapa ilmuwan secara garis besar dibagi menjadi tiga tingkat. Tingkatan tersebut adalah sadar atau awake, Non Rapid Eye Movement (NREM), dan Rapid
Eye Movement (REM). Tingkatan deep sleep atau tingkatan tidur
dalam terdapat pada REM. Manusia pada umumnya berada pada tingkatan non REM dan REM ketika tidur. Kedua tingkatan atau kondisi ini saling bergantian dilewati oleh manusia yang sedang tidur. Banyaknya deep sleep dalam satu kali tidur dapat menunjukan apakah seseorang sudah memiliki tidur yang cukup atau belum.
Pada penelitian ini kami masih menggunakan prototype yang sama seperti pada penelitian untuk pendeteksian Arrhythmia. Penelitian ini pun juga dibagi ke dalam tiga tahap. Tahap pertama adalah studi literatur mengenai semua hal terkait kesehatan tidur. Tahap kedua adalah pembuatan aplikasi desktop untuk mendeteksi tingkat tidur seseorang. Tahap ketiga atau terakhir adalah membuat alat yang lebih kecil yang dapat digunakan pada pergelangan tangan sehingga dapat dibawa oleh penggunanya termasuk pada saat tidur.
Pada tahap pertama kami meneliti tentang klasifikasi tahapan tidur seseorang dan juga penyakit-penyakit tidur yang memungkinkan seseorang kehilangan tidur yang cukup untuk menyehatkan badannya. Salah satu penyakit tidur yang cukup berbahaya adalah
Sleep Apnea. Sleep Apnea yang dipelajari adalah Obstructive Sleep Apnea. Obstructive sleep apnea (OSA) disebabkan oleh
penyumbatan jalan napas yang terjadi berulang kali pada saat tidur akibat penyempitan saluran pernapasan. Pengidap OSA biasanya memiliki kelebihan berat badan, sehingga terdapat peningkatan langit-langit lunak dan lidah pada bagian tenggorokan dan sekitarnya. Gejalanya mirip dengan orang yang mendengkur, hanya
38 Implementasi JST dan Wavelet pada FPGA saja orang mengidap OSA mengalami pemberhentian nafas selama beberapa detik ketika tidur. Inilah yang kemudian diamati melalui sinyal EKG.
Pada tahap kedua kami membuat aplikasi desktop untuk mengolah data yang telah diperoleh dari alat perekam EKG. Data sinyal terlebih dahulu diolah melalui proses deteksi gelombang QRS. Setelah QRS berhasil terdeteksi, maka data akan diolah kembali melalui proses ekstraksi fitur. Fitur-fitur data didapatkan melalui pendataan secara statistik beberapa hal terkait RR interval atau jarak dari satu titik R ke titik R lainnya. RR interval dapat diturunkan kembali ke berbagai fitur lainnya seperti AVNN (average/rata-rata RR interval), SDNN (standar deviasi RR interval), rMSSD (akar kuadrat dari rata-rata dari kuadrat selisih antar RR interval yang saling bersebelahan) dan lain-lain. Hasil perolehan dan klasifikasi data EKG kemudian divisualisasikan dan ditampilkan melalui user
interface pada komputer.
Tahap ketiga adalah membuat alat yang lebih kecil yang dapat digunakan pada pergelangan tangan selayaknya jam tangan. Kami menggunakan desain rangkaian elektronika alat perekam EKG yang diperkecil dengan komponen-komponen elektronika Surface
Mount Device (SMD). Pada tahap ini kami berharap rancangan
FPGA pun bisa difabrikasi ke dalam chip sehingga mampu ditanamkan pula bersama dengan komponen-komponen SMD. Namun sebagai alternatif tidak tertutup kemungkinan akan digunakan rangkaian elektronika lainnya seperti microcontroller ataupun komputer kecil lainnya apabila memang hal ini tidak dapat tercapai.
1.6 Pengembangan Smart Ultrasonography (USG) untuk
Monitoring Kesehatan Jarak Jauh.
Berdasarkan hasil Survey Demografi Kesehatan Indonesia (SDKI) tahun 2007, angka kematian ibu dan bayi masih cukup tinggi walaupun cenderung menurun dari tahun ke tahun. Penyebab terjadinya hal ini adalah masih banyak masyarakat Indonesia yang kurang paham akan pentingnya pemeriksaan janin selama masa
kehamilan. Indonesia juga memiliki berbagai permasalahan lain yang menjadi pemicu tingginya angka ini seperti jumlah tenaga medis dan jumlah alat pemeriksaan janin dalam kandungan yang masih sangat terbatas.
Tenaga medis khususnya dokter ahli/ spesialis obstetri dan ginekologi selain jumlahnya yang terbatas juga memiliki distribusi yang tidak merata. “Obstetri “ (berasal dari bahasa Latin “obstare”, yang berarti “siap siaga/ to stand by”) adalah spesialisasi pembedahan yang menangani pelayanan kesehatan wanita selama masa kehamilan, persalinan dan nifas. Secara umum ginekologi adalah ilmu yang mempelajari kewanitaan. (science of women). Namun secara khusus adalah ilmu yang mempelajari dan menangani kesehatan alat reproduksi wanita (organ kandungan yang terdiri atas rahim, vagina dan indung telur).
Para ahli tersebut cenderung berpusat di kota besar sehingga masyarakat pedesaan sulit mendapatkan akses pelayanan kesehatan yang memadai dari dokter ahli. Alat kedokteran untuk melakukan pemeriksaan kandungan jumlahnya pun terbatas dan hanya dimiliki oleh rumah sakit besar.
Permasalahan tersebut memicu kami untuk mencoba mengembangkan piranti cerdas berdasarkan prinsip kerja USG. Alat yang dibangun nantinya akan memiliki fungsi yang sama dengan alat USG yang telah ada di pasaran ditambah beberapa keunggulan lainnya. Keunggulan tersebut antara lain adalah ukuran yang kecil dan terdapat suatu sistem kecerdasan yang mampu melakukan klasifikasi secara otomatis.
Alat yang dibangun berukuran kecil dimaksudkan agar mudah dibawa oleh tenaga medis yang berada di medan yang cukup sulit seperti di daerah pelosok tanah air. Alat yang dirancang sedemikian rupa akan menyerupai alat komunikasi seperti telepon seluler. Alat ini juga akan dilengkapi dengan sistem cerdas yang mampu melakukan pengukuran secara otomatis terhadap biometri janin dan mampu melakukan klasifikasi secara otomatis jika ditemukan suatu kejanggalan ketika berlangsungnya pemeriksaan. Tidak hanya itu, alat yang dirancang juga memiliki sistem
40 Implementasi JST dan Wavelet pada FPGA komunikasi yang memungkinkan tenaga medis yang berada di daerah untuk mengirimkan hasil pencitraannya kepada dokter spesialis yang berada di kota. Dengan kata lain, alat dirancang sehingga para pasien yang ada di daerah terpelosok dapat melakukan telehealth monitoring.
Penelitian dan pengembangan alat ini masih dalam tahap awal, yakni studi literatur mengenai USG dan semua teori terkait USG. Kami kedepannya akan juga mencoba mengukur kemungkinan penggunaan perangkat FPGA ataupun perangkat-perangkat lainnya untuk melakukan prototyping. Pada subbab ini akan lebih banyak menjelaskan informasi terkait USG sebagai tambahan pengetahuan bagi pembaca. Harapannya selain mendapat pengetahuan baru, pembaca juga dapat terpicu melakukan penelitian di bidang USG ini.
USG telah menjadi teknik pencitraan medis populer selama bertahun-tahun. USG atau ultrasonografi adalah teknik pencitraan medis yang menggunakan gelombang suara frekuensi tinggi dan gema untuk melihat sebuah organ yang ada didalam tubuh baik dalam tubuh manusia maupun hewan. Teknik ini mirip dengan yang digunakan oleh ekolokasi (metode pemantulan bunyi untuk mengatur pergerakan) kelelawar, paus dan lumba-lumba, serta sonar yang digunakan oleh kapal selam. Pada Gambar 13 terdapat salah satu jenis peralatan USG. Berikut ilustrasi dari cara kerja sinyal USG.
Gambar 13. Peralatan Medical Ultrasound Scanner (Sumber: http://commons.wikimedia.org/wiki/File:AlokaPhoto2006a.jpg) 1. Mesin USG memancarkan pulsa frekuensi tinggi (1 sampai 5
megahertz) ke dalam tubuh Anda dengan menggunakan sebuah
alat ukur yang dinamakan Probe.
2. Gelombang suara masuk yang masuk kedalam tubuh hingga menabrak batas antar jaringan (misalnya antara cairan dan jaringan lunak, jaringan lunak dan tulang).
3. Beberapa gelombang suara bisa dipantulkan kembali ke probe, namun ada juga yang tidak dapat dipantulkan kembali ke probe sehingga gambar yang dihasilkan dilayar kurang maksimal
4. Mesin menghitung jarak dari probe ke jaringan atau organ (batas) dengan menggunakan kecepatan suara dalam jaringan (5.005 ft/s atau 1, 540 m/s) dan waktu kembalinya setiap gema 5. Mesin menampilkan jarak dan intensitas pantulan pada layar, membentuk gambar dua dimensi
Tipikal pada USG dapat dijelaskan bahwa, jutaan pulsa dan gema yang dikirim dan diterima setiap detik oleh Probe dapat dipindahkan sepanjang permukaan tubuh dan siku untuk
42 Implementasi JST dan Wavelet pada FPGA mendapatkan berbagai pandangan. Sebuah mesin USG dasar memiliki bagian-bagian berikut.
• Transducer - probe yang mengirim dan menerima gelombang suara
• Central Processing Unit (CPU) - Komputer yang melakukan semua perhitungan dan berisi pasokan daya listrik untuk dirinya sendiri dan probe transducer
• Kontrol pulsa Transducer - perubahan amplitudo, frekuensi dan durasi dari pulsa yang dipancarkan dari probe transducer
• Monitor - menampilkan gambar dari data USG yang diproses oleh CPU
• Keyboard / cursor - input data dan mengambil pengukuran dari layar
• Disk penyimpanan perangkat (disket, CD) - menyimpan gambar yang diperoleh
• Printer - mencetak gambar dari data yang ditampilkan
Probe transducer adalah bagian utama dari mesin USG. Probe transducer membuat gelombang suara dan menerima gema. Probe transducer menghasilkan dan menerima gelombang suara
menggunakan sebuah prinsip yang disebut piezoelectric (listrik tekanan). Kristal piezoelectric ditemukan oleh Piere Curie dan Jacques pada tahun 1880. Bila kristal ini diberikan tegangan listrik, maka lempengan kristal akan mengalami vibrasi sehingga timbullah ultrasonik. Sebaliknya, vibrasi pada kristal akan menghasilkan listrik. Oleh karena itu maka kristal piezoelectric digunakan sebagai
transducer pada ultrasonografi.
CPU adalah otak dari mesin USG. CPU pada dasarnya adalah sebuah komputer yang berisi microprocessor, memory, amplifier, dan pasokan listrik untuk microprocessor dan probe transducer. CPU mengirim arus listrik ke probe transducer untuk memancarkan gelombang suara, dan juga menerima pulsa listrik dari probe yang diciptakan dari gema yang dikembalikan. CPU melakukan semua perhitungan yang terlibat dalam pengolahan data.
Setelah data mentah diproses, CPU membentuk gambar pada monitor. CPU juga dapat menyimpan data olahan dan atau gambar
pada disk. Kontrol pulsa tranducer memungkinkan operator, yang disebut ultrasonographer, untuk mengatur dan mengubah frekuensi dan durasi pulsa USG, serta modus scan mesin. Perintah dari operator dijabarkan ke dalam perubahan arus listrik yang diterapkan pada kristal piezoelectric tranducer dalam pemeriksaan. Berikut beberapa jenis sonografi medis
1. Kardiologi (Echocardiography): USG untuk jantung digunakan untuk diagnosis penyakit jantung.
2. Endocrinology. 3. Gastroenterology.
4. Gynaecology (Gynaecologic USG): organ wanita, uterus, ovarium dll.
5. Obstetrik (Obstetric USG): perkembangan fetus selama kehamilan.
6. Ophthalmology (A-scan ultrasonography, B-scan ultra-sonography): pencitraan mata.
7. Urologi: menentukan jumlah cairan pada kantung kemih, tendon, otot, saraf, permukaan tulang.
8. Intravaskular Ultrasound (IVUS): teknik pencitraan menggunakan kateter yang dirancang khusus dengan probe ultrasound kecil, sehingga dapat dimasukkan dalam pembuluh darah. Umumnya digunakan untuk pencitraan dari arteri jantung (koroner).
9. Intervensional, biopsi, transfusi (penyakit hemolitik dari bayi yang baru lahir).
10. Contrast-Enhanced Ultrasound (CEUS): menggunakan contrast
agent ultrasound pada USG biasa. Digunakan untuk mengukur
laju alir darah.
USG telah digunakan dalam berbagai pengelolaan klinis, termasuk pada bagian kebidanan, ginekologi, kardiologi dan kanker. Keuntungan utama dari USG adalah bahwa struktur tertentu dapat diamati tanpa menggunakan radiasi. USG dapat melakukan pendeteksian jauh lebih cepat daripada sinar-X atau teknik radiografi lainnya. Berikut ini adalah daftar singkat beberapa bidang medis yang menggunakann alat USG.
44 Implementasi JST dan Wavelet pada FPGA • Mengukur ukuran janin untuk menentukan usia kehamilan • Menentukan posisi janin untuk melihat apakah posisi kepala
dalam keadaan normal atau sungsang • Melihat jumlah janin di dalam rahim
• Memeriksa jenis kelamin bayi (jika daerah kelamin terlihat jelas) • Melihat tumor
Kardiologi
• Melihat bagian dalam jantung untuk mengidentifikasi struktur normal atau abnormal
• Pengukuran aliran darah melalui jantung dan pembuluh darah utama
Bab 2 Jaringan Saraf Tiruan dan
Wavelet
Jaringan Saraf Tiruan (JST) atau Artificial Neural Network (ANN) adalah teknik kecerdasan buatan yang dibuat dengan mengambil inspirasi dari cara kerja sel-sel saraf di otak. Sel saraf atau neuron pada otak saling menembakan sinyal dari satu neuron ke neuron lainnya. Hal ini pun terjadi pada JST, neuron yang merupakan pemodelan matematika saling menembakan impuls berupa hasil perhitungan dari neuron tersebut ke neuron lainnya. Selain JST pada bab ini juga terdapat pembahasan mengenai algoritma kompresi wavelet.
2.1 Jaringan Syaraf Tiruan
Sub bab ini akan menjelaskan mengenai definisi JST dan beberapa algoritma JST mulai dari yang paling sederhana hingga yang paling kompleks.
2.1.1 Sejarah Jaringan Syaraf Tiruan
Pengembangan Jaringan Saraf Tiruan (JST) sudah dimulai pada sekitar 50 tahun yang lalu. Pengembangan ini didorong oleh keinginan untuk lebih memahami organ otak sekaligus mencoba meniru sebagian keunggulannya. Kemajuan dalam bidang neurobiologi memungkinkan para peneliti untuk membangun model-model matematika dari sel-sel syaraf untuk mensimulasikan perilaku jaringan syaraf manusia.
Model pertama diperkenalkan oleh McCulloch dan Pitts pada tahun 1943. Hebb, pada tahun 1949, kemudian mengusulkan sebuah aturan pembelajaran yang menjelaskan bagaimana sebuah jaringan sel-sel syaraf belajar. Rosenblatt, pada tahun 1958, menemukan algoritma pembelajaran perceptron, serta Widrow dan Hoff mengusulkan varian dari pembelajaran perceptron yang disebut aturan Widrow-Hoff.
46 Implementasi JST dan Wavelet pada FPGA Pada tahun 1969, Minsky dan Papert menunjukkan keterbatasan teoritis dari jaringan neural lapis tunggal (single-layer neural
networks) sehingga menyebabkan penurunan riset dalam bidang
ini. Tetapi, pada tahun 1980-an, pendekatan JST kembali hidup dimulai dari Hopfield yang memperkenalkan ide minimisasi energi dalam fisika ke dalam JST pada tahun 1982.
Pada pertengahan dekade 80-an, algoritma propagasi-balik (Backpropagation) yang dikembangkan oleh Rumelhart, Hinton dan Williams memberikan pengaruh besar tidak hanya bagi riset-riset JST, bahkan bagi ilmu komputer, kognitif dan biologi yang lebih luas. Algoritma ini menawarkan solusi untuk pembelajaran jaringan neural lapis-banyak (multi-layer neural networks) sehingga dapat mengatasi keterbatasan jaringan neural lapis tunggal. Kesuksesan pendekatan ini ditunjukkan oleh sistem NETTalk yang dikembangkan Sejnowski dan Rosenberg pada tahun 1987, yakni suatu sistem yang melakukan konversi teks bahasa Inggris menjadi suara bicara manusia.
2.1.2 Pemrosesan Informasi Neural (Neural Information Processing)
Neuron-neuron biologis memancarkan sinyal elektrokimia pada jalur-jalur syaraf. Setiap neuron menerima sinyal-sinyal dari neuron lain melalui sambungan khusus yang disebut synapses. Sebagian sinyal input cenderung menyebabkan neuron tereksitasi; sementara sebagian yang lain justru menghalanginya. Ketika efek kumulatif dari sinyal tersebut melebihi suatu batas threshold, neuron yang bersangkutan akan menembakkan sinyal ke neuron lainnya.
Jaringan Syaraf Tiruan (JST) merupakan sistem pemrosesan informasi yang memiliki karakteristik serupa dengan jaringan neural biologis. Setiap neuron menerima input dari neuron-neuron sebelumnya yang tersambung ke neuron tersebut. Setiap input dikalikan dengan sebuah bobot (weight) yang ada pada synapse tempat input itu mengalir menuju suatu neuron. Jumlah seluruh
tujuan dan akan menentukan kemungkinan neuron tujuan untuk menembakkan kembali sebuah sinyal baru. Nilai ini yang disebut level aktivasi (activation level). Secara matematis, untuk suatu neuron, setiap input Xi yang dimodulasikan oleh sebuah bobot Wi sehingga jumlah total input adalah: Xi iWi. Atau dalam bentuk
vektor, XW di mana X = *X1, X2, …, Xn+ dan W = *W1, W2, …, Wn]. X1 X2 Xn Y W 1 W 2 Wn . . . Y = X1W1 + X2W2 + … + XnWn
Gambar 14. Model komputasi JST
Jumlah dari sinyal input yang telah dikalikan bobot akan diproses oleh sebuah fungsi aktivasi (activation function) untuk menghasilkan sinyal output. Jika sinyal output tidak bernilai nol, maka sinyal akan ditransmisikan lagi sebagai keluaran menuju neuron selanjutnya.
Suatu JST dimodelkan dalam suatu himpunan nodes dan arrows. Sebuah node mewakili sebuah neuron dan sebuah arrow mewakili sebuah hubungan/koneksi tempat sinyal mengalir dari satu neuron ke neuron lainnya. Pada setiap koneksi inilah diasosiasikan sebuah nilai bobot. Nodes yang berada pada lapisan pertama berhubungan dengan masukan sistem atau disebut juga neuron input. Nodes lainnya terhubung dengan nodes yang berada di lapisan tengah atau langsung berhubungan dengan keluaran sistem yang berada pada lapisan akhir. Ada berbagai jenis JST yang telah diciptakan dan ada tiga hal yang akan mencirikan setiap Jenis JST, yakni,
48 Implementasi JST dan Wavelet pada FPGA 1. pola hubungan/koneksi antara elemen-elemen
sederhananya, yakni neuron;
2. metode penentuan bobot koneksi antar neuron; 3. fungsi aktivasinya.
Perilaku dinamis dari JST digambarkan oleh suatu persamaan diferensial yang menggambarkan bagaimana bobot koneksi jaringan berubah dari waktu ke waktu. Representasi pertama mengasumsikan variabel waktu yang kontinyu dan dapat digunakan untuk simulasi jaringan pada komputer analog, sementara yang kedua menggunakan variabel waktu diskrit dan biasanya dipakai untuk melakukan simulasi jaringan pada komputer digital.
JST memecahkan masalah dengan pembelajaran dan pengorganisasian secara mandiri. Intelegensinya didapatkan dari perilaku kolektif mekanisme komputasi yang sederhana. Berikut kelebihan-kelebihan dari algoritma JST,
Akuisisi pengetahuan di bawah derau (noise) dan ketidakpastian (uncertainty): JST dapat melakukan generalisasi, abstraksi dan ekstraksi sifat-sifat statistik dari data.
Representasi pengetahuan yang fleksibel: JST membuat representasinya sendiri dengan pengorganisasian mandiri.
Pemrosesan pengetahuan yang efisien: JST dapat melakukan komputasi secara paralel, yang dikenal
parallel-distributed processing atau PDP.
Toleransi kesalahan: Dengan representasi pengetahuan terdistribusi dan pengkodean informasi yang ganda, kinerja sistem tidak menurun drastis berkaitan dengan responnya terhadap kesalahan (faults/errors).
2.1.3 Jaringan Syaraf Tiruan Untuk Pengenalan Pola
JST dapat mengenali, mengklasifikasikan, mengkonversi dan mempelajari pola-pola, seperti yang disampaikan pada buku ini. Sebuah pola (pattern) merupakan deskripsi kualitatif atau
kuantitatif dari sebuah objek atau konsep atau kejadian. Sebuah kelas pola (pattern class) adalah sebuah himpunan pola yang memiliki sifat-sifat yang serupa. Pengenalan pola (pattern
recognition) merujuk kepada kategorisasi data masukan ke dalam
kelas-kelas yang teridentifikasi dengan mengenali ciri-ciri atau atribut-atribut signifikan dari data tersebut.
Dalam teori pengenalan pola tradisional, sebuah pola diwakili oleh sebuah vektor ciri n-dimensi (n-dimensional feature vector) atau sebuah titik dalam ruang n-dimensi. Vektor ciri merupakan vektor dari nilai-nilai ciri yang disusun dalam suatu urutan tertentu. Contohnya, satu orang dapat digambarkan sebagai vektor dari [usia, tinggi badan, berat badan]. Dalam pendekatan JST, sebuah pola direpresentasikan dengan sebuah himpunan nodes bersama level aktivasinya.
Sebuah jaringan syaraf tiruan dapat digunakan untuk mengenali pola (pattern recognition) suatu input yang direpresentasikan sebagai sebuah vektor. Hal ini dapat dilakukan dengan cara melakukan pelatihan (traning) pada neural network dan melakukan penyesuaian pada bobot tiap hubungan antar neuron berulang kali sampai jaringan syaraf tiruan dapat mengenali pola dengan batasan error yang telah ditentukan. Proses training-testing untuk pengenalan pola dapat dianalogikan dengan proses pengenalan benda pada manusia: setelah melihat objek serupa berkali-kali (training), seseorang dapat mengenali sebuah objek meskipun objek tersebut merupakan objek yang berbeda, tetapi memiliki fitur yang sama dari objek pada proses training. Perhatikan gambar di bawah ini untuk lebih memahami analogi proses traning dan