Anda di halaman 1dari 69

i

UNIVERSITAS GUNADARMA
FAKULTAS TEKNOLOGI INDUSTRI

SKRIPSI

IDENTIFIKASI SEL DARAH DENGAN MENGGUNAKAN METODE


CONVOLUTIONAL NEURAL NETWORKS

Nama : Fachrul Fandi Wiradhika


NPM : 53414724
Fakultas : Teknologi Industri
Jurusan : Teknik Informatika
Pembimbing : Dr. Irwan Bastian, SKom., MM

Diajukan Guna Melengkapi Sebagian Syarat


Dalam Mencapai Gelar Sarjana Strata Satu (S1)

JAKARTA

2018
Pernyataan Orisinalitas dan
Publikasi

Saya yang bertanda tangan di bawah ini:


Nama : Fachrul Fandi Wiradhika
NPM : 53414724
Judul Skripsi : IDENTIFIKASI SEL DARAH DENGAN
MENGGUNAKAN METODE
CONVOLUTIONAL NEURAL NETWORKS
Tanggal Sidang : 03 November 2018
Tanggal Lulus :
Menyatakan bahwa tulisan di atas merupakan hasil karya saya sendiri
dan dapat dipublikasikan sepenuhnya oleh Universitas Gunadarma. Segala
kutipan dalam bentuk apapun telah mengikuti kaidah dan etika yang berla-
ku. Semua hak cipta dari logo serta produk yang disebut dalam buku ini ada-
lah milik masing-masing pemegang haknya, kecuali disebutkan lain. Meng-
enai isi dan tulisan merupakan tanggung jawab Penulis, bukan Universitas
Gunadarma.
Demikianlah pernyataan ini dibuat dengan sebenarnya dan dengan pe-
nuh kesadaran.

Jakarta, 10 Oktober 2018

(Fachrul Fandi Wiradhika)

ii
Lembar Pengesahan

Komisi Pembimbing
Tanggal Sidang: 03 November 2018
No. Nama Kedudukan
1. Dr. Irwan Bastian, SKom., MM Ketua
2. Anggota
3. Anggota

Panitia Ujian
Tanggal Lulus:
No. Nama Kedudukan
1. Dr. Ravi A. Salim Ketua
2. Prof. Dr. Wahyudi Priyono Sekretaris
3. Dr. Irwan Bastian, SKom., MM Anggota
4. Dr. Aqwam Rosadi, SKom., MM Anggota
5. Dr. Desti Riminarsih, SKom, MSi Anggota

MENGETAHUI

Pembimbing Bagian Sidang Ujian

(Dr. Irwan Bastian, SKom., MM) (Dr. Edi Sukirman, MM)

iii
Abstraksi

Fachrul Fandi Wiradhika. 53414724


IDENTIFIKASI SEL DARAH DENGAN MENGGUNAKAN METODE CONVOLU-
TIONAL NEURAL NETWORKS.
Skripsi, Fakultas Teknologi Industri, Jurusan Teknik Informatika, Universitas
Gunadarma, 2018.
Kata Kunci : Sel Darah, Deep Learning, Convolutional Neural Networks
(xii+ 43+ lampiran)

Darah merupakan komponen esensial makhluk hidup, mulai dari bina-


tang primitif sampai manusia, darah juga gabungan dari cairan, sel-sel dan
partikel yang menyerupai sel, yang mengalir dalam arteri, kapiler dan vena
yang berguna untuk membawa oksigen dan zat-zat gizi hingga hasil limbah
lainnya. Diagnosa penyakit yang berdasarkan darah sering melibatkan iden-
tifikasi dan karakterisasi dari sampel darah pasien. Untuk melihat struktur
sel-sel darah dengan mikroskop cahaya pada umumnya dibuat sediaan apus
darah. Sediaan apus darah ini tidak hanya digunakan untuk mempelaja-
ri sel darah, umumnya digunakan untuk menghitung perbandingan jumlah
masing-masing sel darah, dan juga membantu pemeriksaan darah dan juga
infeksi parasit. Pemeriksaan sediaan apus darah dilakukan dibawah mik-
roskop menggunakan matameter. Salah satu cara untuk mengatasi masalah
tersebut adalah dengan menggunakan identifikasi otomatis berbasis citra sel
darah. Pada penelitian ini, algoritma convolutional neural networks digunak-
an untuk mengidentifikasi citra sel darah. Pemilihan algortima convolutional
neural networks dikarenakan memiliki performa yang lebih baik untuk mem-
pelajari data citra dibandingkan dengan menggunakan metode konvensional
lainnya. Model convolutional neural networks dilatih dan diuji menggunakan
12.500 augmentasi citra sel darah, diantaranya terdapat 1000 citra untuk
masing-masing dari empat jenis sel yang di identifikasi. Jenis sel tersebut
adalah Eosinofil, Limfosit, Monosit, dan Neutrofil. Pengujian sel darah meng-
gunakan 600 citra pada setiap sel darah yang berbeda dari citra yang di-
gunakan untuk pelatihan. Hasil pelatihan menunjukkan bahwa 83% dapat
diidentifikasi dan nilai loss menunjukkan 49.08% sel darah dapat diidentifi-
kasi.

Daftar Pustaka (2000-2018)

iv
Kata Pengantar

Segala puji dan syukur penulis naikkan ke hadirat Allah S.W.T yang Maha
Kuasa yang telah memberikan berkat, anugerah dan karunia yang melimpah,
sehingga penulis dapat menyelesaikan Tugas Akhir ini pada waktu yang telah
ditentukan.
Tugas Akhir ini disusun guna melengkapi sebagian syarat untuk mem-
peroleh gelar Sarjana Teknik Informatika Universitas Gunadarma. Adapun
judul Tugas Akhir ini adalah "Identifikasi Sel Darah Dengan Menggunakan
Metode Convolutional Neural Networks".
Walaupun banyak kesulitan yang penulis harus hadapi ketika menyusun
Tugas Akhir ini, namun berkat bantuan dan dorongan dari berbagai pihak,
akhirnya Tugas Akhir ini dapat diselesaikan dengan baik. Untuk itu penulis
tidak lupa mengucapkan terima kasih kepada:

1. Prof. Dr. E.S. Margianti, SE, MM, selaku Rektor Universitas Gunadar-
ma.

2. Prof. Dr. Ir. Bambang Suryawan, selaku Dekan Fakultas Teknologi


Industri, Universitas Gunadarma.

3. Dr. -Ing. Adang Suhendra, selaku Ketua Jurusan Teknik Informatika,


Universitas Gunadarma.

4. Dr. Edi Sukirman, MM, selaku Bagian Sidang Ujian, Universitas Guna-
darma.

5. Dr. Irwan Bastian, SKom., MM, sebagai Pembimbing penulis yang


ditengah- tengah aktifitas dan kesibukannya telah membimbing penulis
dan memberikan dorongan sehingga penulisan ini dapat diselesaikan.

6. Kedua orang tua dan kedua kakak tercinta yang selalu mendukung dan
terus memberikan motivasi.

v
7. Seluruh rekan seperjuangan di Universitas Gunadarma yang telah ba-
nyak membantu penulis.

8. Teman-teman Asisten Laboratorium Teknik Informatika yang selalu mem-


berikan semangat agar penulisan selesai tepat waktu.

9. Adrian Faisal, S.T. ,Muhammad Zakir, S.Kom, dan Abdul Ghoni Abba-
si yang telah memberikan dukungan materi pembelajaran dan saran
sehingga penelitian yang dilakukan dapat berjalan dengan lancar.

10. Ali Nursyamsi Lingga, Amd.AK dan Rina Aryani, Amd.AK yang telah
memberikan materi pembelajaran dan saran sehingga penelitian yang
dilakukan dapat berjalan dengan lancar.

11. Teman-teman 4IA17 yang tidak henti-hentinya selalu memberikan pe-


ngetahuan, dorongan, semangat dan motivasi ke satu sama lain.

12. Semua pihak yang tidak tersebutkan yang telah membantu penyele-
saian Tugas Akhir ini, penulis ucapkan juga terima kasih atas segala
bantuan dan sarannya.

Sebagai manusia biasa yang tak luput dari kesalahan, maka penulis memin-
ta maaf atas segala kekurangan dan keterbatasan dalam penyusunan Tugas
Akhir ini.
Akhir kata, hanya kepada Tuhan jualah segalanya dikembalikan dan pe-
nulis sadari bahwa penulisan ini masih jauh dari sempurna, disebabkan ka-
rena berbagai keterbatasan yang penulis miliki. Untuk itu penulis mengha-
rapkan kritik dan saran yang bersifat membangun untuk menjadi perbaikan
di masa yang akan datang.
Semoga apa yang ada pada penulisan Tugas Akhir ini dapat bermanfaat
bagi kita semua. Amin.

Jakarta, 10 Oktober 2018

Fachrul Fandi Wiradhika

vi
Daftar Isi

Halaman Judul i

Lembar Orisinalitas ii

Lembar Pengesahan iii

Abstraksi iv

Kata Pengantar v

Daftar Isi ix

Daftar Gambar x

Daftar Tabel xi

Daftar Algoritma xii

1 PENDAHULUAN 1
1.1 Latar Belakang Masalah . . . . . . . . . . . . . . . . . . . . . 1
1.2 Ruang Lingkup . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3 Tujuan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.4 Metode Penelitian . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.5 Sistematika Penulisan . . . . . . . . . . . . . . . . . . . . . . 3

2 TINJAUAN PUSTAKA 5
2.1 Sel Darah . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.1.1 Leukosit . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2 Deep Learning . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2.1 Neural Networks . . . . . . . . . . . . . . . . . . . . . 6
2.2.1.1 Backpropagration . . . . . . . . . . . . . . . 7
2.2.1.2 Fungsi aktivasi . . . . . . . . . . . . . . . . . 7

vii
viii

2.2.1.3 Optimizer . . . . . . . . . . . . . . . . . . . . 8
2.2.2 Convolutional Neural Networks . . . . . . . . . . . . . 9
2.2.3 Lapisan Konvolusi . . . . . . . . . . . . . . . . . . . . 10
2.2.4 Lapisan Pooling . . . . . . . . . . . . . . . . . . . . . . 11
2.2.5 Lapisan Fully-connected . . . . . . . . . . . . . . . . . 12
2.3 Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.4 Keras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.5 Confusion Matrix . . . . . . . . . . . . . . . . . . . . . . . . . 14

3 METODOLOGI PENELITIAN 15
3.1 Gambaran Umum . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.2 Pengambilan Citra . . . . . . . . . . . . . . . . . . . . . . . . 16
3.3 Pra-pemrosesan . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.3.1 Scaling . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.3.2 Normalisasi Citra . . . . . . . . . . . . . . . . . . . . . 18
3.4 Rancangan Model Convolutional Neural Networks . . . . . . 18

4 IMPLEMENTASI dan UJI COBA 23


4.1 Pelatihan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.2 Uji Klasifikasi . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
4.2.1 Tabel Sampel Data Uji . . . . . . . . . . . . . . . . . . 24
4.2.2 Hasil Klasifikasi Sesuai Data Uji . . . . . . . . . . . . . 26
4.3 Analisis Hasil Uji Klasifikasi . . . . . . . . . . . . . . . . . . . 26
4.3.1 Confusion Matrix . . . . . . . . . . . . . . . . . . . . . 26
4.3.2 Pengukuran dengan TFN . . . . . . . . . . . . . . . . . 29
4.3.3 Pengukuran dengan TFP . . . . . . . . . . . . . . . . . 31
4.3.4 Pengukuran dengan TTN . . . . . . . . . . . . . . . . 33
4.3.5 Pengukuran dengan TTP . . . . . . . . . . . . . . . . . 35
4.3.6 Pengukuran dengan Recall . . . . . . . . . . . . . . . . 36
4.3.7 Pengukuran dengan Presisi . . . . . . . . . . . . . . . 38
4.3.8 Pengukuran dengan Akurasi . . . . . . . . . . . . . . . 40
4.4 Pengukuran dengan F1 -score . . . . . . . . . . . . . . . . . . . 41

5 PENUTUP 43
5.1 Kesimpulan . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5.2 Saran . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

DAFTAR PUSTAKA 47
LAMPIRAN 48

ix
Daftar Gambar

3.1 Alur Proses Perancangan dan Implementasi . . . . . . . . . . 15


3.2 Sampel sel-sel darah . . . . . . . . . . . . . . . . . . . . . . . 16
3.3 Ubah ukuran citra . . . . . . . . . . . . . . . . . . . . . . . . 17
3.4 Perbandingan citra setelah dan sebelum diubah ukuran . . . . 18
3.5 Model Convolutional Neural Networks . . . . . . . . . . . . . . 21
3.6 Arsitektur Model . . . . . . . . . . . . . . . . . . . . . . . . . 21

4.1 Diagram Loss dan Validasi Loss . . . . . . . . . . . . . . . . . 24


4.2 Hasil confusion matrix . . . . . . . . . . . . . . . . . . . . . . 28

x
Daftar Tabel

4.1 Tabel Sampel Data Uji . . . . . . . . . . . . . . . . . . . . . . 25


4.2 Hasil Klasifikasi Sesuai Data Uji . . . . . . . . . . . . . . . . . 26
4.3 Confusion Matrix . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.4 Hasil Pengukuran TFP . . . . . . . . . . . . . . . . . . . . . . 31
4.5 Hasil Pengukuran TFP . . . . . . . . . . . . . . . . . . . . . . 33
4.6 Hasil Pengukuran TTN . . . . . . . . . . . . . . . . . . . . . . 35
4.7 Hasil Pengukuran Recall . . . . . . . . . . . . . . . . . . . . . 38
4.8 Hasil Pengukuran Presisi . . . . . . . . . . . . . . . . . . . . . 40
4.9 Hasil F1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

xi
Daftar Algoritma

3.1 Normalisasi Citra . . . . . . . . . . . . . . . . . . . . . . . . . 18

xii
Bab 1

PENDAHULUAN

1.1 Latar Belakang Masalah


Darah merupakan komponen esensial makhluk hidup, mulai dari bina-
tang primitif sampai manusia, darah juga gabungan dari cariran, sel-sel dan
partikel yang menyerupai sel, yang mengalir dalam arteri, kapiler, dan vena
yang berguna untuk membawa oksigen dan zat-zat gizi hingga hasil limbah
lainnya. Diagnosa penyakit yang berdasarkan darah sering melibatkan iden-
tifikasi dan karakteristik dari sampel darah pasien. Untuk melihat struktur
sel-sel darah dengan mikroskop cahaya pada umumnya dibuat sediaan apus
darah. Sediaan apus darah ini tidak hanya digunakan untuk mempelajari
sel darah, umumnya digunankan untuk menghitung perbandingan jumlah
masing-masing sel darah, dan juga untuk membantu pemeriksaan kelain-
an darah dan juga infeksi parasit [24]. Pembuatan preparat apus darah ini
menggunakan suatu metode oles yang merupakan suatu sediaan dengan jal-
an mengoles atau membuat selaput dan substansi yang berupa cairan atau
bukan cairan di atas gelas benda yang bersih dan bebas lemak untuk kemu-
dian difiksasi yang selanjutnya dikeringkan, diwarnai dan ditutup dengan
gelas penutup [13]. Memeriksa sediaan apus dimulai dengan sediaan yang
belum di pulas, perhatikan pada sediaan adakah bagian yang baik untuk di-
periksa selanjutnya, yaitu bagian yang cukup tipis dan rata di mana eritrosit-
eritrosit cukup berdekatan tanpa menggumpal [10]. Pengecekkan dilakukan
dibawah mikroskop menggunakan matameter.
Metode untuk mendeteksi secara otomatis dan pengklasifikasian sel-sel
darah merupakan bagian yang penting dalam pengaplikasian dalam bidang
medis [22]. Alasan utamanya karena sel darah merupakan salah satu dasar
dari sebuah penyakit didiagnosa, jika kita dapat mengidentifikasi sel darah

1
2

dengan baik maka akan mengurangi kesalahan dalam mendiagnosa penyakit


yang dialami oleh pasien. Oleh karena itu, dalam tulisan ini dipaparkan im-
plementasi algoritma convolutional neural networks digunakan untuk meng-
identifikasi sel darah. Pemilihan algoritma convolutional neural networks di-
karenakan convolutional neural networks memiliki performa yang lebih baik
untuk mempelajari data citra dibandingkan dengan metode konvensional la-
innya [19, 17]. Citra yang digunakan untuk melatih dan menguji diambil
dari dataset BCCD berada di bawah lisensi MIT [22].

1.2 Ruang Lingkup


Untuk menghindari meluasnya pembahasan pada penelitian ini dan agar
penelitian ini fokus, maka penulis membatasi masalah dengan batasan seba-
gai berikut:

1. Citra untuk pengujian dan pelatihan diambil dari BCCD.

2. Citra untuk pengujian dan pelatihan berukuran 160 × 120.

3. Citra untuk pengujian dan pelatihan memiliki format .jpeg .

4. Citra yang digunakan merupakan citra berwarna dengan tiga kanal.

5. Citra yang digunakan untuk pelatihan berjumlah 1000 citra pada setiap
sel.

6. Citra yang digunakan untuk pengujian berjumlah 600 citra pada setiap
sel.

1.3 Tujuan
Tujuan penelitian ini adalah untuk menerapkan algoritma convolutional
neural networks untuk mengidentifikasi sel darah.

1.4 Metode Penelitian


Metode yang dilakukan dalam penelitian ini adalah sebagai berikut,

• Pengambilan citra sel darah


Citra yang digunakan sebagai data latih dan data uji diambil dari BCCD.
3

• Pra-pemrosesan citra sel darah


Pra-pemrosesan yang dilakukan terhadap citra sel darah adalah scaling
dan normalisasi citra. Setelah citra dikumpulkan dan disimpan berda-
sarkan selnya.

• Perancangan model arsitektur convolutional neural networks


Merancang model arsitektur convolutional neural networks yang sesuai
dengan citra sel darah agar model yang dirancang dapat mempelajari
citra sel darah dengan baik.

• Pelatihan model arsitektur convolutional neural networks


Model dilatih menggunakan citra yang sudah dikelompokan. Proses
pelatihan menggunakan 1000 citra sel darah pada tiap-tiap sel.

• Pengujian identifikasi sel darah


Model diuji mengindetifikasi ciri sel darah yang sudah dipelajari. Pe-
ngujian ini menggunakan beberapa data augmentasi citra sel darah
yang lain.

• Penghitungan hasil uji model


Penghitungan hasil uji model dilakukan untuk mendapatkan persenta-
se keakuratan dan ketetapan dalam mengenali sel darah .

1.5 Sistematika Penulisan


Sistematika penulisan ini terdiri dari 5 bab diantaranya:

BAB I PENDAHULUAN
Bab ini memuat penjelasan mengenai latar belakang masa-
lah, rumusan masalah, batasan masalah, tujuan penelitian,
metode penelitian dan sistematika penulisan.
BAB II LANDASAN TEORI
Bab ini memuat teori yang mendasari penelitian yakni, iden-
tifikasi sel darah, convolutional neural networks, Python dan
Tensorflow Frameworks.
4

BAB III METODOLOGI PENELITIAN


Bab ini membuat metodologi penelitian dalam pembuat-
an model algoritma convolutional neural networks sebagai
metode identifikasi sel darah.
BAB IV IMPLEMENTASI dan UJI COBA
Bab ini memuat hasil pengujian terhadap model yang su-
dah dirancang.
BAB V PENUTUP
Kesimpulan dari penelitian dan saran dari penulis dimuat
pada bab ini.
Bab 2

TINJAUAN PUSTAKA

2.1 Sel Darah


Darah merupakan komponen esensial makhluk hidup, mulai dari bina-
tang primitif sampai manusia, darah juga gabungan dari cairan, sel-sel dan
partikel yang menyerupai sel, yang mengalir dalam arteri, kapiler dan vena
yang berguna untuk membawa oksigen dan zat-zat gizi hingga hasil limbah
lainnya. Sel darah merupakan seluruh sel dalam segala bentuk yang secara
normal ditemukan dalam darah. Sel darah termasuk unsur-unsur padat yang
terdapat dalam plasma darah dan merupakan komponen penting dalam da-
rah [2].

2.1.1 Leukosit
Leukosit berasal dari kata leukos yang berarti putih dan kytos yang ber-
arti ruang sel. Leukosit berinti, bahkan pada basofil, netrofil, dan eosinofil
intinya lebih dari 1 lobus sehingga disebut polimorfphonuclear (PMN), se-
dang monosit dan limfosit berinti satu lobus. Pada orang dewasa terdapat
5000- 10000/cc [2].
Leukosit bersifat fagosit (pemakan) benda asing atau kuman yang masuk
ke dalam tubuh, menghancurkan sel abnormal yang muncul di tubuh dan
membersihkan debris sel. Terdapat 5 jenis sel darah putih yaitu :

• Neutrofil, memiliki inti, berukuran sekitar 8 mikron, bersifat fagosit


dengan cara masuk kejaringan yang terinfeksi, aktif selama 6-20 jam,
berperan khusus untuk memakan bakteri dan debris.

• Eosinofil, memiliki inti, bersifat fagosit lemah. Berbentuk hampir se-


perti bola berukuran sekitar 9 mikron, berperan khusus dalam menye-

5
6

rang cacing parasitik dan reaksi alergi.

• Basofil, bentuknya bulat atau oval, meninggalkan sistem sirkulasi dan


terakulmulasi dalam cairan interstitial pada tempat infeksi atau pera-
dangan, melepas toksin yang membunuh mikroorganismee penyusup
dan parasit, dengan diameter berukuran 12-15 mikron. Mengeluarkan
dua zat kimia, histamine (respon alergi dan heparin (membantu mem-
bersihkan partikel lemak dari darah).

• Monosit, berinti satu, berbentuk kepal kuda atau ginjal dengan ukur-
an diameter 12-20 mikron, bersifat fagosit, setelah keluar dari tubuh,
kemudian berdiam di jaringan dan membesar untuk menjadi fagosit
jaringan yang dikenal sebagai makrofag.

• Limfosit, Berbentuk seperti bola dengan ukuran diameter 6-14 mikron,


dibentuk di sumsum tulang (janin di hati), tidak dapat bergerak, berinti
satu, membentuk pertahanan tubuh terhadap invasi bakteri, virus dan
sasaran lain yang telah diatur untuknya, pertahanannya dalam bentuk
antibodi dan respon imun seluler.

2.2 Deep Learning


Deep learning adalah bagian dari machine learning dengan metode dasar
learning data representations, atau teknik yang membuat sebuah sistem dapat
secara otomatis menemukan representasi yang dibutuhkan untuk mendetek-
si atau pengklasifikasian fitur dari data mentah [12].

2.2.1 Neural Networks


Neural Networks atau yang biasa disebut sebagai jaringan saraf tiruan
adalah jaringan dari sekelompok unit pemroses kecil yang dimodelkan ber-
dasarkan sistem saraf manusia. Jaringan saraf tiruan merupakan sistem
adaptif yang dapat merubah strukturnya untuk memecahkan masalah berda-
sarkan informasi eksternal maupun internal yang mengalir melalui jaringan
tersebut. Oleh karena sifatnya yang adaptif, jaringan saraf tiruan juga sering
disebut dengan jaringan adaptif [30].
7

2.2.1.1 Backpropagration

Backpropagration adalah sebuah metode yang digunakan pada artificial


neural networks untuk menghitung gradien yang dibutuhkan untuk menghi-
tung bobot yang digunakan pada jaringan tersebut. Backpropagration biasa
digunakan pada deep neural networks, sebuah istilah untuk neural networks
dengan hidden layer yang lebih dari satu lapisan. Dalam konteks pelatihan,
backpropagration biasa digunakan untuk mengoptimasi algoritma gradient
descent dengan menyesuaikan bobot pada neuron dengan menghitung nilai
gradient dari loss function [7].

2.2.1.2 Fungsi aktivasi

Fungsi aktivasi merupakan suatu fungsi yang mentransformasikan sua-


tu inputan menjadi suatu output tertentu. Pada jaringan saraf tiruan suatu
informasi diterima oleh inputan. Inputan ini diproses melalui fungsi peram-
batan. Fungsi ini menjumlahkan sejumlah inputan, hasil dari penjumlahan
ini kemudian dibandingkan dengan nilai ambang tertentu melalui fungsi ak-
tivasi pada setiap neuron. Jika nilai yang dihasilkan melebihi nilai ambang
maka neuron diaktifkan begitu juga sebaliknya jika kurang dari nilai am-
bang maka neuron tidak diaktifkan. Dengan demikian neuron menghasilkan
output jika nilai inputan melewati nilai ambang [16].
Berdasarkan uraian diatas fungsi aktivasi berfungsi untuk menentukan
apakah sebuah neuron aktif atau tidak berdasarkan penjumlahan inputan.

• ReLU

f (x)= x+ =max(0, x) (2.1)

ReLU atau Rectified Linear Unit, dimana x merupakan sebuah inputan,


output bernilai 0 jika inputan bernilai negatif. Jika inputan bernilai
positif maka output bernilai sama dengan nilai inputan tersebut [23].

• Sigmoid
Fungsi sigmoid merupakan fungsi matematika yang memiliki kurva
berbentuk huruf “S” atau biasa disebut dengan kurva Sigmoid. Fungsi
sigmoid ini memiliki rentang 0 hingga 1. Fungsi ini biasa di guanakan
untuk melakukan pengklasifikasian atau pengelompokkan data [32].
8

1 ex
S(x) = = (2.2)
1 + e−x ex + 1

• Softmax
Fungsi softmax biasa digunakan pada layer terakhir dari neural ne-
tworks sebagai pengklasifikasi. Fungsi softmax digunakan untuk meng-
klasifikasi atau mengelompokkan lebih dari 2 kelas [20].

ezj
σ(z)j = PK (2.3)
k=1 e zk
Dimana σ adalah probabilitas input yang mempresentasikan kelas dan
j merupakan salah satu dari kelas yang ada. Fungsi ini hanya menor-
malkan eksponen dari fungsi pre-aktivasi.

sof tmax = normalize(exp(wx + b)) (2.4)

Dimana w adalah nilai bobot dan b adalah nilai bias.

2.2.1.3 Optimizer

Algoritma optimisasi membantu untuk meminimalisir nilai error atau


memaksimalkan nilai funsgi error atau fungsi objektif. E(x) merupakan
fungsi matematika yang bergantung pada parameter yang dihasilkan oleh
model yang telah dibuat untuk menghitung nilai target (Y ) dari set predik-
tor (X) yang digunakan dalam model.
Sebagai contoh nilai-nilai yang terdapat di parameter pada jaringan saraf
tiruan seperti bobot dan bias yang didapat pada saat proses pelatihan digu-
nakan untuk menghitung nilai output dan dipelajari dan diperbarui untuk
mendapatkan nilai yang optimal, yaitu meminimalkan angka loss pada pro-
ses pelatihan sekaligus sebagai peran utama dalam proses pelatihan model
jaringan saraf tiruan [8].

• Stochastic Gradient Descent


Stochastic gradient descent (SGD) biasa disebut dengan inkrimental gra-
dient descent, adalah metode iteratif yang digunakan untuk mengomp-
timalkan fungsi obyektif yang terdiferensiasi, gradient descent menggu-
nakan pendekatan stokastik sebagai pengoptimasi. Pendekatan stokas-
tik adalah sebuah algoritma yang secara rekrusif melakukan perubahan
9

yang dapat digunakan untuk menyelesaikan permasalahan optimisasi


dan persamaan titik ketika data yang dikumpulkan terdapat noise.

n
X
w := w − η∇Q(w) = w − η ∇Qi (w)/n (2.5)
i=1

Dimana w adalah parameter untuk meminimalkan nilai Q(w) dan η


adalah ukuran langkah (learning rate) [15].

2.2.2 Convolutional Neural Networks


Convolutional neural networks merupakan jaringan syaraf tiruan khusus
untuk memproses data berbentuk kisi (matriks), sebagai contoh citra ber-
warna yang terdiri atas tiga kanal warna berbentuk matriks dua dimensi.
Nama convolutional neural networks diambil dari operasi matematika yang
digunakan pada algoritma ini, yaitu konvolusi [6].
Konvolusi merupakan operasi antara dua buah fungsi. Contoh sederhana
konvolusi adalah melacak posisi pesawat pada waktu t menggunakan sensor
laser dengan keluaran x(t). x dan t bernilai ril sehingga sensor laser da-
pat membaca nilai yang berbeda dalam waktu yang instan. Anggap sensor
tersebut selalu membawa derau. Untuk mengurangi derau tersebut, perlu
dilakukan perataan pada pengukuran posisi pesawat. Tentu saja, pengukur-
an terakhir adalah hasil yang relevan. Sehingga tiap pengukuran perlu diberi
bobot agar pengukuran terakhir memiliki bobot lebih. Pemberian bobot dila-
kukan dengan menggunakan fungsi w(a), dimana a adalah usia pengukuran.
Jika bobot tersebut diberikan setiap waktu, operasi tersebut menghasilkan
fungsi baru yaitu s yang menghasilkan posisi estimasi pesawat dengan derau
yang sedikit.
ˆ
(t) = x(a)w(t − a)da (2.6)

Operasi di atas dinamakan konvolusi. Operasi konvolusi biasanya dilam-


bangkan dengan asterisk:

s(t) = (x × w)(t) (2.7)

Umumnya, konvolusi dapat digunakan dengan fungsi apapun sesuai de-


ngan integral di atas dapat digunakan untuk kebutuhan lain tidak hanya
untuk contoh di atas. Pada convolutional neural networks, argumen x disebut
sebagai masukan dan argumen w disebut sebagai filter atau kernel.
10

Dalam aplikasi machine learning, masukan yang biasa digunakan berben-


tuk larik multidimensi dari sebuah data dan filter yang digunakan juga ber-
bentuk larik multidimensi dari parameter yang didapat melalui algoritma
pembelajaran.
Biasanya, operasi konvolusi dilakukan pada beberapa sumbu di satu wat-
ku. Sehingga, jika terdapat citra dua dimensi I sebagai masukan dan filter
dua dimensi K, menghasilkan:

X X
S(i, j) = (I × K)(i, j) = m n (m, n)K(i − m, j − n) (2.8)

Implementasi konvolusi terhadap sinyal diskrit dapat dilihat sebagai per-


kalian matriks dan biasanya konvolusi cocok dengan matriks yang umumnya
memiliki banyak entri bernilai nol. Hal ini terjadi karena filter yang digunak-
an biasanya berukuran lebih kecil dari inputnya. Banyak algoritma jaringan
syaraf tiruan yang mendukung perkalian matriks juga konvolusi tanpa meng-
ubah jaringan syaraf tiruan tersebut [12].
Arsitektur convolutional neural networks pada umumnya terdiri atas la-
pisan konvolusi lapisan pooling, lapisan fully-connected [17].

2.2.3 Lapisan Konvolusi


Lapisan ini merupakan inti dari convolutional neural networks. Pada la-
pisan ini, operasi konvolusi dilakukan. Elemen pada lapisan konvolusi diatur
di dalam feature map, di mana setiap elemen terkoneksi dengan elemen lain
pada feature map dilapisan sebelumnya melalui susunan bobot yang disebut
filter bank. Setiap elemen didalam feature map menggunakan filter bank
yang sama. Jika elemen tersebut berada di feature map berbeda, filter bank
yang digunakan pun berbeda, Alasan dibentuknya arsitektur seperti itu kare-
na nilai-nilai pada data matriks seperti citra, memiliki tingkat korelasi yang
tinggi terhadap nilai tetangganya, sehingga deteksi ciri menjadi lebih mu-
dah. Selain itu, nilai statistik sebuah citra dan sinyal lainnya tidak bergan-
tung pada lokasi. Dengan kata lain, jika sebuah ciri muncul di suatu bagian
citra, ciri tersebut dapat muncul di bagian lainnya [6].
Lapisan ini memiliki hyperparameter, yaitu depth, stride, dan zero-padding.
Hyperparameter ini yang mengatur seberapa besar keluaran yang dihasilkan
setelah proses konvolusi.

1. Depth (kedalaman) menunjukan jumlah filter yang digunakan. Filter


ini yang melihat ciri dari sebuah masukan. Sebagai contoh, jika lapisan
11

konvolusi diberikan sebuah citra, tiap elemen pada filter mendeteksi


tepi atau warna pada citra tersebut.

2. Stride (pergeseran) menunjukkan jarak pergeseran filter. Jika diberik-


an 1 stride, filter bergeser tiap 1 elemen. Jika diberikan nilai 2, filter
bergeser 2 elemen. Semakin besar nilai stride yang digunakan, semakin
kecil keluaran yang dihasilkan oleh lapisan konvolusi.

3. Zero-padding adalah banyaknya jumlah padding dengan nilai 0 yang


disisipkan di sisi masukkan. Penggunaan zero-padding berguna untuk
mengontrol besarnya keluaran.

Untuk menghitung besarnya keluaran dari masukan W dengan filter se-


besar F, jumlah stride sebanyak S dan banyaknya zero-padding yang ditam-
bahkan sebesar P dapat menggunakan rumus (W − F + 2P )/S + 1 [17].
Sebagai contoh, jika masukan sebesar 5 × 5 dengan filter sebesar 3 × 3, zero-
padding 1 dan stride 2, keluaran yang dihasilkan adalah 3 × 3.
Kesimpulannya, lapisan konvolusi:

• Menerima masukkan dengan ukuran W 1 × H 1×D1

• Membutuhkan empat hyper parameter, yaitu:

– jumlah filter D
– ukuran filter F
– stride S
– jumlah zero-padding P

• Menghasilkan keluaran dengan ukuran W 2×H 2×D2 di mana:

– W 2 = (W 1 − F + 2P )/S + 1
– H 2 = (H 1 − F + 2P )/S + 1
– D2 = K

2.2.4 Lapisan Pooling


Lapisan berikut adalah pooling. Lapisan ini mengumpulkan ciri yang mi-
rip menjadi satu. Umumnya, pooling menghitung nilai maksimum suatu ele-
men pada satu feature map dan membuat feature map menjadi kecil. Jenis
12

pooling tersebut dinamakan Max Pooling. Bentuk umum lapisan pooling ada-
lah sebuah filter ukuran 2 × 2 yang digeser sebanyak 2 tinggi dan 2 lebar.
Jika menggunakan operasi maksimum pada filter 2 × 2 , pooling mengambil
nilai terbesar di antara 4 elemen.
Pada lapisan ini juga berlaku perhitungan keluaran seperti lapisan kon-
volusi. Hanya saja, pada lapisan ini tidak ada penggunaan zero-padding.
Sehingga rumusnya menjadi (W − F )/S + 1
Dapat disimpulkan, pada lapisan pooling:

• Menerima masukan dengan ukuran W 1× H 1 ×D1

• Membutuhkan dua hyeperparameter, yaitu:

– ukuran filter F
– stride S

• Menghasilkan keluaran dengan ukuran W 2×H 2 ×D2, dimana:

– W 2 = (W 1 − F )/S + 1
– H 2 = (H 1 − F )/S + 1
– D2 = D1

Secara umum pooling memang menggunakan operasi maksimum. Tetapi


tidak hanya operasi tersebut saja yang dapat digunakan. Fungsi rerata dan
stochastic juga dapat digunakan. Hanya saja, fungsi tersebut sudah tidak
digunakan karena memiliki performa yang rendah [3].

2.2.5 Lapisan Fully-connected


Lapisan fully-connected pada arsitektur convolutional neural networks ti-
dak jauh berbeda dengan lapisan fully-connected yang biasa ditemui pada
jaringan syaraf tiruan. Elemen (neuron) pada lapisan ini terhubung penuh
dengan seluruh aktivasi pada lapisan sebelumnya. Aktivasi pada lapisan ini
dapat dihitung menggunakan perkalian matriks. Perbedaan mendasar anta-
ra lapisan fully-connected dan lapisan konvolusi adalah elemen pada lapisan
konvolusi hanya terhubung dengan area lokal pada masukan dan elemen
tersebut menggunakan parameter (filter bank) yang sama. Dikarenakan ke-
dua lapisan ini mengggunakan perhitungan dot product, maka lapisan fully-
connected dapat diubah menjadi lapisan konvolusi.
13

Sebagai contoh, lapisan fully-connected dengan K = 4096, di mana K


adalah jumlah neuron, dan masukan sebesar 7 × 7 × 512 dapat dilakukan
konvolusi dengan filter F = 7, P = 0, S = 1, K = 4096. Dengan ini, maka
keluaran dari konvolusi tersebut menjadi 1 × 1 × 4096. Hasil keluaran ini
menjadi lapisan fully-connected [17].

2.3 Python
Python adalah bahasa pemrograman interpretatif multiguna dengan fi-
losofi perancangan yang berfokus pada tingkat keterbacaan kode. Python
diklaim sebagai bahasa yang menggabungkan kapabilitas, kemampuan, de-
ngan sintaksis kode yang sangat jelas, dan dilengkapi dengan fungsionalitas
pustaka standar yang besar serta komprehensif. Python juga didukung oleh
komunitas yang besar.
Python mendukung multi paradigma pemrograman, pemrograman bero-
rientasi objek, pemrograman imperatif, dan pemrograman fungsional. Salah
satu fitur yang tersedia pada python adalah sebagai bahasa pemrograman di-
namis yang dilengkapi dengan manajemen memori otomatis. Seperti halnya
pada bahasa pemrograman dinamis lainnya, python umumnya digunakan
sebagai bahasa skrip meski pada praktiknya penggunaan bahasa ini lebih
luas mencakup konteks pemanfaatan yang umumnya tidak dilakukan de-
ngan menggunakan bahasa skrip. Python dapat digunakan untuk berbagai
keperluan pengembangan perangkat lunak dan dapat berjalan di berbagai
platform sistem operasi [33].

2.4 Keras
Keras adalah library neural network yang open source dan di tulisankan
menggunakan bahasa python dan dapat berjalan diatas TensorFlow, CNTK,
atau Theano. Dirancang agar dapat bereksperimen dengan cepat dalam deep
learning, berfokus agar dapat digunakan dengan mudah, modularitas, mu-
dah untuk diperpanjang, dan berjalan pada python [18].

• Mudah digunakan
Keras dirancang untuk manusia bukan mesin. Keras memberikan ump-
an balik yang jelas dalam menindak lanjuti kesalahan yang ada.
14

• Modularitas
Sebuah model yang dapat dipahami sebagai urutan modul yang dapat
dikonfigurasi sepenuhnya. Khususnya pada lapisan saraf, cost function,
optimizer, fungsi aktivasi merupakan modul yang mandiri dimana kita
dapat menggabungkan untuk membuat sebuah model baru.

• Mudah diperpanjang
Model baru dapat dengan mudah di tambahkan dan modul yang ada
memberikan banyak contoh. Dapat dengan mudah membuat modul
baru, membuat keras cocok untuk penelitian lebih lanjut.

2.5 Confusion Matrix


Confusion matrix adalah sebuah tabel yang biasa digunakan untuk menje-
laskan performa dari model yang ada dari hasil pengujian dari data uji yang
sudah diketahui kelas sebenarnya [21]. Berikut merupakan istilah dasar dari
confusion matrix:

• True Positives (TP)


Dimana model memiliki prediksi bahwa data uji merupakan kelas X
dan diketahui data tersebut benar merupakan kelas X.

• True Negatives (TN)


Dimana model memiliki prediksi bahwa data uji merupakan kelas X
dan diketahui data tersebut bukan merupakan kelas X.

• False Positives (FP)


Dimana model memiliki prediksi bahwa data uji bukan merupakan ke-
las X dan diketahui data tersebut bukan merupakan kelas X.

• False Negatives (FN)


Dimana model memiliki prediksi bahwa data uji bukan merupakan ke-
las X dan diketahui data tersebut merupakan kelas X.
Bab 3

METODOLOGI PENELITIAN

3.1 Gambaran Umum


Metodologi pada penelitian ini terdiri atas beberapa tahap yaitu tahap
untuk mendapatkan data citra yang digunakan pada proses pelatihan dan
pengujian model arsitektur convolutional neural networks. Kemudian tahap
pra-pemrosesan untuk mempersiapkan data agar dapat digunakan. Setelah
data diproses, tahap selanjutnya adalah merancang model arsitektur convo-
lutional neural networks. Model ini digunakan untuk mengindentifikasi dan
memverifikasi sel darah. Selanjutnya adalah tahap melatih model yang su-
dah dirancang menggunakan data yang telah diolah.

Gambar 3.1: Alur Proses Perancangan dan Implementasi

15
16

3.2 Pengambilan Citra


Citra yang digunakan untuk melatih dan menguji model merupakan da-
ta sekunder yang didapat dari BCCD, dataset sel darah dibawah lisensi da-
ri Massachusetts Institute of Technology (dataset dapat diunduh di https://
github.com/Shenggan/BCCD_Dataset). Dataset tersebut terdiri atas 12.500
citra yang telah di augmentasi, terdapat sekitar 3000 citra dari empat sel
yang berbeda. Sel-sel tersebut adalah Eosinophil, Lymphocyte, Monocyte, dan
Neutrophil. Dataset ini berasal dari 410 citra yang sebelum dilakukan au-
gmentasi [22].

Gambar 3.2: Sampel sel-sel darah

Gambar 3.2 merupakan sampel citra dari setiap kelas yang terdapat pada
dataset. Dikarenakan komputer mengalami kehabisan memori saat melakuk-
an perhitungan, maka data tersebut dibatasi menjadi 1000 citra untuk setiap
sel atau kelas yang ada.
17

3.3 Pra-pemrosesan
Sebelum data dapat digunakan, diperlukan pra-pemrosesan terlebih da-
hulu agar data siap pakai dan sesuai dengan model arsitektur yang diba-
ngun. Pra-pemrosesan yang dilakukan yakni, scaling terhadap ukuran citra
dan konversi citra menjadi biner.

3.3.1 Scaling
Scaling adalah proses pengubahan ukuran citra menjadi lebih besar atau
lebih kecil dari ukuran aslinya. Proses ini dilakukan untuk menyamakan
dan memperkecil ukuran citra asli karena data dalam BCCD memiliki ukur-
an yang cukup besar sehingga proses perhitungan menjadi lebih lama dan
penggunaan memori yang besar. Masukan yang tidak terlalu besar mem-
percepat proses latihan karena data yang diolah sedikit dan mengurai peng-
gunaan memori. Masukan dengan ukuran yang lebih kecil memudahkan
pengontrolan keluaran dari tiap lapisan pada model.
Ukuran citra diubah menjadi 160 × 120 pixel. Ukuran ini tidak terlalu
kecil ataupun terlalu besar. Jika ukuran citra terlalu kecil dikhawatirkan
fitur yang didapat dari citra semakin sedikit sehingga memperlambat proses
latihan oleh model. Selain dari pada itu ukuran tersebut lebih menghemat
memori yang digunakan dalam proses latihan.

Gambar 3.3: Ubah ukuran citra

Berikut ini adalah perbandingan dari citra sebelum dilakukan perubahan


ukuran citra dengan citra setelah dilakukan perubahan citra.
18

Gambar 3.4: Perbandingan citra setelah dan sebelum diubah ukuran

3.3.2 Normalisasi Citra


Proses ini dilakukan untuk mengubah citra menjadi citra biner dengan
cara merubah nilai pixel yang sebelumnya 0 – 256 menjadi 0 – 1. Konversi ini
bertujuan untuk mempermudah komputer dalam mengolah data yang ada
sehingga tidak memiliki nilai berukuran besar yang nantinya memperlambat
proses perhitungan.

Algorithm 3.1 Normalisasi Citra


Require: citra
1: i ← 0
2: j ← 0
3: for i →tinggi citra do
4: for j →lebar citra do
5: pixel[i, j] ← pixel[i, j]/256
6: end for
7: end for

3.4 Rancangan Model Convolutional Neural Ne-


tworks
Model convolutional neural networks yang dibangun digunakan untuk meng-
identifikasi dan memverifikasi sel darah yang diberikan. Model ini terdiri
atas beberapa lapisan, yakni lapisan memasukkan citra 160 × 120. Lapisan
ini memiliki ukuran yang sama dengan ukuran citra setelah citra di perkecil.

Ww = (W 1 − F + 2P )/S + 1 (3.1)
19

Ww = (160 − 3 + 2(0)/1 + 1 (3.2)

Ww = (157)/1 + 1 (3.3)

Ww = 158 (3.4)

Wh = (W 2 − F + 2P )/S + 1 (3.5)

Wh = (120 − 3 + 2(0)/1 + 1 (3.6)

Wh = (117)/1 + 1 (3.7)

Wh = 118 (3.8)

Kemudian, lapisan berikutnya adalah lapisan konvolusi dengan menggu-


nakan 32 f eature map berukuran 158 × 118 dengan filter berukuran 3 × 3
dengan jumlah pergeseran 1 × 1. Jumlah dari feature map, ukuran filter dan
jumlah pergeseran merupakan ukuran terbaik dari beberapa percobaan yang
telah dilakukan sebelumnya. Ukuran feature map didapat dari perhitungan
besar keluaran yang dihasilkan saat proses konvolusi.

Ww = (W 1 − F + 2P )/S + 1 (3.9)

Ww = (158 − 3 + 2(0)/1 + 1 (3.10)

Ww = (155)/1 + 1 (3.11)

Ww = 156 (3.12)
20

Wh = (W 2 − F + 2P )/S + 1 (3.13)

Wh = (118 − 3 + 2(0)/1 + 1 (3.14)

Wh = (115)/1 + 1 (3.15)

Wh = 116 (3.16)

Lalu, lapisan berikutnya masih dengan lapisan konvolusi dengan meng-


gunakan 64 f eature map berukuran 156 × 116 dengan filter berukuran 3 × 3.
Lapisan berikutnya adalah lapisan max pooling dengan filter berukuran 2 × 2.
Lapisan ini mengambil nilai terbesar dari feature map yang dilihat oleh fil-
ter dan merubah ukuran masukkan menjadi setengah kali dari ukuran sebe-
lumnya yang berguna untuk menyaring informasi-informasi terpenting dari
masukkan.
Setelah citra telah melalui lapisan konvolusi dan lapisan max pooling
menjadi berukuran 78×58, kemudian masuk kedalam lapisan dropout. Lapis-
an ini merupakan lapisan yang digunakan untuk menghapus neuron beserta
koneksi secara acak menghindari terlalu banyaknya neuron yang memiliki
nilai dominan.
Lapisan selanjutnya adalah lapisan flatten, lapisan ini merupakan lapisan
yang merubah dimensi dari neuron yang sebelumnya memiliki dua dimensi
menjadi satu dimensi. Lapisan ini berguna untuk memudahkan proses peng-
klasifikasian citra yang ada. Kemudian lapisan fully-connected. Lapisan ini
digunakan untuk mempelajari fitur tersebut, lapisan ini memiliki 128 neu-
ron yang semuanya di aktifkan dengan menggunakan ReLU.
Lapisan selanjutnya adalah lapisan dropout, sama pada lapisan sebelum-
nya lapisan ini menghapus neuron beserta koneksi secara acak untuk meng-
hindari banyaknya neuron yang memiliki nilai dominan. Lapisan terakhir
adalah lapisan fully-connected pada lapisan terakhir ini memiliki jumlah ne-
uron yang sama dengan jumlah class yang ada atau jumlah sel yang di iden-
tifikasi. Sehingga lapisan ini memiliki 4 neuron sebagai Softmax untuk akti-
fasinya.
21

Gambar 3.5: Model Convolutional Neural Networks

Pada gambar 3.5 merupakan rangkuman dari semua layer yang terdapat
pada model, disertai dengan ukuran dari setiap layer dan jumlah parameter
yang dibuat dari model.

Gambar 3.6: Arsitektur Model

Gambar 3.6 merupakan visualisasi dari setiap lapisan yang terdapat pa-
da model yang dibuat. Pada lapisan konvolusi terdapat k3n32s1 ataupun
k3n64s1 yang memiliki arti bahwa k menunjukkan kanal dan angka selan-
jutnya adalah ukuran kanal yang dibuat yaitu tiga (3 × 3), n menunjukkan
filter atau neuron dan angka selanjutnya adalah jumlah filter yang digunak-
an yaitu 32 dan 64, s menunjukkan strides pada layer tersebut dan angka
selanjutnya adalah ukuran strides yang digunakan yaitu satu.
Pada lapisan max pool terdapat k2 dimana k merupakan kanal dan ang-
ka selanjutnya adalah ukuran kanal yang digunakan (2 × 2). Pada lapisan
dropout terdapat r0.25 dan r0.5 dimana r merupakan rate yang dimiliki pada
lapisan tersebut dan ukuran selanjutnya merupakan ukuran rate yang digu-
nakan yaitu 0.25 .
Selanjutnya adalah lapisan dense atau lapisan fully-connected terdapat
22

n128 dan n4 dimana n menunjukkan atau neuron dan angka selanjutnya


adalah jumlah filter yang digunakan yaitu 128 dan 4, untuk lapisan terakhir
memiliki jumlah neuron 4 dimana menunjukkan jumlah kelas yang ada.
Bab 4

IMPLEMENTASI dan UJI COBA

Pengujian terhadap model dibagi menjadi empat, yaitu pengujian terhadap


masing-masing sel darah. Pengujian ini menggunakan 600 citra untuk setiap
sel. Pengujian identifikasi dilakukan untuk mengetahui apakah model dapat
mengenali setiap sel darah. Pengujian ini diukur dengan akurasi, presisi,
recall, dan F1.

4.1 Pelatihan
Pada saat proses pelatihan menggunakan stochastic gradient descent se-
bagai optimizer. Menggunakan crossentropy untuk menghitung nilai loss. Ke-
mudian proses pelatihan sebanyak 200 kali perulangan kemudian bobot di-
simpan. Selanjutnya bobot tersebut di lakukan pelatihan kembali sebanyak
50 kali perulangan. Sehingga tingkat pembelajaran pada model yang diba-
ngun bernilai 4.72% untuk nilai loss dan 49.08% untuk nilai validasi loss
yang berjalan secara fluktuatif. Nilai tersebut didapat setelah melakukan
kurang lebih 250 iterasi.

23
24

Gambar 4.1: Diagram Loss dan Validasi Loss

4.2 Uji Klasifikasi

4.2.1 Tabel Sampel Data Uji


Pengujian terhadap model menggunakan data uji yang telah disediakan
oleh BCCD. Terdapat lebih dari 600 citra uji untuk setiap sel yang ada. Proses
pengujian dilakukan untuk menguji apakah model yang kita gunakan sudah
mempelajari data yang sudah dilatih. Selain itu proses pengujian dilakukan
untuk mengukur performa model dan akurasi dari model yang telah dibu-
at. Berikut merupakan tabel sampel data uji, citra uji yang terdapat pada
tabel berdasarkan dari citra uji. Citra yang digunakan merupakan dua citra
terbawah dan tiga citra teratas dari data uji.
25

Tabel 4.1: Tabel Sampel Data Uji


No. Citra Uji Kelas Sebenarnya

1. Monocyte

2. Monocyte

3. Lymphocyte

4. Lymphocyte

5. Lymphocyte
26

4.2.2 Hasil Klasifikasi Sesuai Data Uji


Berikut merupakan hasil klasifikasi sesuai dengan data uji diatas berda-
sarkan Tabel 4.1. Berdasarkan lima citra uji yang diambil diantaranya 3 citra
berhasil di prediksi sesuai dengan kelas sebenarnya sedangkan dua lainnya
tidak dapat di prediksi dengan benar. Hasil tersebut sesuai dengan hasil va-
lidasi loss yang masih tinggi yaitu 49.08%.

Tabel 4.2: Hasil Klasifikasi Sesuai Data Uji


No. Citra Uji Kelas Sebenarnya Kelas Prediksi

1. Monocyte Monocyte

2. Monocyte Monocyte

3. Lymphocyte Lymphocyte

4. Lymphocyte Neutrophil

5. Lymphocyte Neutrophil

4.3 Analisis Hasil Uji Klasifikasi

4.3.1 Confusion Matrix


Pengujian ini menggunakan 600 citra untuk setiap sel darah. Data yang
digunakan untuk melakukan pengujian merupakan data yang sudah disedi-
akan pada dataset. Tiap pengukuran menggunakan confusion matrix [11]
untuk mendapatkan nilai-nilai yang dibutuhkan seperti nilai akurasi, presisi,
recall, dan F1.
27

Tabel 4.3: Confusion Matrix


Hasil Prediksi
Kelas 1 Kelas 2 Kelas 3 Kelas 4
Kelas 1 X11 X12 X13 X14
Kelas Sebenarnya Kelas 2 X21 X22 X23 X24
Kelas 3 X31 X32 X33 X34
Kelas 4 X41 X42 X43 X44

Pada Tabel 4.3 terdapat beberapa nilai, yaitu:

• TFN (Total False Negative ) merupakan jumlah prediksi salah dari kelas
negatif untuk setiap kelas.

n
X
T F Ni = Xij (4.1)
j=1,j6=i

• TFP (Total False Positive ) merupakan jumlah prediksi salah dari kelas
positif.

n
X
T F Pi = Xji (4.2)
j=1,j6=i

• TTN (Total True Negative ) merupakan jumlah prediksi benar dari kelas
negatif.

n
X n
X
T T Ni = Xjk (4.3)
j=1,j6=ik=1,k6=i

• TTP (Total True Positive ) merupakan jumlah prediksi benar dari kelas
positif.

n
X
T T Pall = Xij (4.4)
j=1

Untuk melakukan perhitungan presisi (P), recall (R), dan akurasi pada
setiap kelas berikut merupakan persamaannya.
28

Gambar 4.2: Hasil confusion matrix

T T Pall
Pi = (4.5)
T T Pall + T F Pi

T T Pall
Ri = (4.6)
T T Pall + T F Ni

T T Pall
Akurasi = (4.7)
JumlahDataP engujian
Pada pengujian ini, TFN menunjukkan banyaknya sel darah yang bukan
termasuk dari sel darah i dan teridentifikasi sebagai bukan sel darah i ter-
sebut. TFP menunjukkan banyaknya sel darah yang bukan termasuk dari
sel darah i dan teridentifikasi sebagai sel darah i tersebut. TTN merupak-
an banyaknya sel darah yang termasuk dalam sel darah i dan teridentifikasi
sebagai bukan sel darah i tersebut. TTP merupakan banyaknya sel darah
yang termasuk dari sel darah i dan teridentifikasi sebagai sel darah i terse-
but. Berikut merupakan hasil confusion matrix dari pengujian pada setiap sel
darah.
29

4.3.2 Pengukuran dengan TFN


Dengan menggunakan persamaan diatas kita dapat mengukur TFN dari
setiap kelas yang ada.

• Neutrophil

n
X
T F N1 = Xij (4.8)
j=1,j6=1

T F N1 = X12 + X13 + X14 (4.9)

T F N1 = 305 + 12 + 60 (4.10)

T F N1 = 377 (4.11)

• Eosinophil

n
X
T F N2 = Xij (4.12)
j=1,j6=1

T F N2 = X21 + X23 + X24 (4.13)

T F N2 = 234 + 17 + 60 (4.14)

T F N2 = 311 (4.15)
30

• Monocyte

n
X
T F N3 = Xij (4.16)
j=1,j6=1

T F N3 = X31 + X32 + X34 (4.17)

T F N3 = 67 + 89 + 7 (4.18)

T F N3 = 163 (4.19)

• Lymphocyte

n
X
T F N4 = Xij (4.20)
j=1,j6=1

T F N4 = X41 + X42 + X43 (4.21)

T F N4 = 119 + 156 + 23 (4.22)

T F N4 = 298 (4.23)

Berdasarkan pengukuran diatas berikut merupakan hasil TFP.


31

Tabel 4.4: Hasil Pengukuran TFP


Kelas TFP
Neutrophil 377
Eosinophil 311
Monocyte 163
Lymphocyte 298

4.3.3 Pengukuran dengan TFP


Dengan menggunakan persamaan diatas kita dapat mengukur TFP dari
setiap kelas yang ada.

• Neutrophil

n
X
T F P1 = Xji (4.24)
j=1,j6=1

T F P1 = X21 + X31 + X41 (4.25)

T F P1 = 234 + 67 + 119 (4.26)

T F P1 = 420 (4.27)

• Eosinophil

n
X
T F P2 = Xji (4.28)
j=1,j6=1

T F P2 = X1 + X32 + X42 (4.29)


32

T F P2 = 305 + 89 + 156 (4.30)

T F P2 = 550 (4.31)

• Monocyte

n
X
T F P3 = Xji (4.32)
j=1,j6=1

T F P3 = X13 + X23 + X43 (4.33)

T F P3 = 12 + 17 + 23 (4.34)

T F P3 = 52 (4.35)

• Lymphocyte

n
X
T F P4 = Xji (4.36)
j=1,j6=1

T F P4 = X14 + X24 + X34 (4.37)

T F P4 = 60 + 60 + 7 (4.38)
33

T F P4 = 127 (4.39)

Berdasarkan pengukuran diatas berikut merupakan hasil dari TFP.

Tabel 4.5: Hasil Pengukuran TFP


Kelas TFP
Neutrophil 420
Eosinophil 550
Monocyte 52
Lymphocyte 127

4.3.4 Pengukuran dengan TTN


Dengan menggunakan persamaan diatas kita dapat mengukur TTN dari
setiap kelas yang ada.

• Neutrophil

n
X n
X
T T N1 = Xjk (4.40)
j=1,j6=1k=1,k6=1

T T N1 = X22 + X23 + X24 + X32 + X33 + X34 + X42 + X43 + X44 (4.41)

T T N1 = 312 + 17 + 60 + 89 + 457 + 7 + 156 + 23 + 322 (4.42)

T T N1 = 1443 (4.43)

• Eosinophil

n
X n
X
T T N2 = Xjk (4.44)
j=1,j6=ik=1,k6=i
34

T T N2 = X11 + X13 + X14 + X31 + X33 + X34 + X41 + X43 + X44 (4.45)

T T N2 = 247 + 12 + 60 + 67s + 457 + 7 + 119 + 23 + 322 (4.46)

T T N2 = 1314 (4.47)

• Monocyte

n
X n
X
T T N3 = Xjk (4.48)
j=1,j6=ik=1,k6=i

T T N3 = X11 + X12 + X14 + X21 + X22 + X24 + X41 + X42 + X44 (4.49)

T T N3 = 247 + 305 + 60 + 234 + 312 + 60 + 119 + 156 + 322 (4.50)

T T N3 = 1815 (4.51)

• Lymphocyte

n
X n
X
T T N4 = Xjk (4.52)
j=1,j6=ik=1,k6=i

T T N4 = X11 + X12 + X13 + X21 + X22 + X23 + X31 + X32 + X33 (4.53)
35

T T N4 = 247 + 305 + 12 + 234 + 312 + 17 + 67 + 89 + 457 (4.54)

T T N4 = 1740 (4.55)

• Total TTN
n
X
T T Nall = T T Ni (4.56)
i=1

T T Nall = T T N1 + T T N2 + T T N3 + T T N4 (4.57)

T T Nall = 1443 + 1314 + 1815 + 1740 (4.58)

T T Nall = 6312 (4.59)

Berdasarkan pengukuran diatas berikut merupakan hasil dari TTN.

Tabel 4.6: Hasil Pengukuran TTN


Kelas TTN
Neutrophil 1443
Eosinophil 1314
Monocyte 1815
Lymphocyte 1740
Jumlah 6312

4.3.5 Pengukuran dengan TTP


Dengan menggunakan persamaan diatas kita dapat mengukur TTP dari
semua kelas yang ada.

n
X
T T Pall = Xij (4.60)
j=1

T T Pall = X11 + X22 + X33 + X44 (4.61)


36

T T Pall = 247 + 312 + 457 + 372 (4.62)

T T Pall = 1338 (4.63)

Berdasarkan pengukuran diatas berikut merupakan hasil TTP dari semua


kelas yang ada adalah 1338.

4.3.6 Pengukuran dengan Recall


Dengan menggunakan persamaan recall diatas kita dapat mengukur nilai
recall pada setiap kelas yang kita miliki.

• Neutrophil

T T Pall
R1 = (4.64)
T T Pall + T F Ni

1338
R1 = (4.65)
1338 + T F N1

1338
R1 = (4.66)
1338 + 377

R1 = 0.78 (4.67)

• Eosinophil

T T Pall
R2 = (4.68)
T T Pall + T F Ni
37

1338
R2 = (4.69)
1338 + T F N2

1338
R2 = (4.70)
1338 + 311

R2 = 0.81 (4.71)

• Monocyte

T T Pall
R3 = (4.72)
T T Pall + T F Ni

1338
R3 = (4.73)
1338 + T F N3

1338
R3 = (4.74)
1338 + 163

R3 = 0.89 (4.75)

• Lymphocyte

T T Pall
R4 = (4.76)
T T Pall + T F Ni

1338
R4 = (4.77)
1338 + T F N4
38

1338
R4 = (4.78)
1338 + 298

R4 = 0.817 (4.79)

Berdasarkan pengukuran diatas berikut merupakan hasil pengukuran re-


call.

Tabel 4.7: Hasil Pengukuran Recall


Kelas Recall
Neutrophil 78%
Eosinophil 81%
Monocyte 89%
Lymphocyte 81.7%

Berdasarkan hasil recall dari data uji diatas dapat disimpulkan bahwa sen-
sitivitas atau proporsi benar yang dapat diidentifikasi dengan benar oleh mo-
del yang dibuat adalah sel neutrophil 78%, eosinophil 81%, monocyte 89%,
dan lymphocyte 81.7%.

4.3.7 Pengukuran dengan Presisi


Dengan menggunakan persamaan presisi diatas kita dapat mengukur ni-
lai presisi pada setiap kelas yang ada.

• Neutrophil

T T Pall
P1 = (4.80)
T T Pall + T F Pi

1338
P1 = (4.81)
1338 + T F P1

1338
P1 = (4.82)
1338 + 420
39

P1 = 0.76 (4.83)

• Eosinophil

T T Pall
P2 = (4.84)
T T Pall + T F Pi

1338
P2 = (4.85)
1338 + T F P2

1338
P2 = (4.86)
1338 + 550

P2 = 0.708 (4.87)

• Monocyte

T T Pall
P3 = (4.88)
T T Pall + T F Pi

1338
P3 = (4.89)
1338 + T F P3

1338
P3 = (4.90)
1338 + 52

P3 = 0.96 (4.91)
40

• Lymphocyte

T T Pall
P4 = (4.92)
T T Pall + T F Pi

1338
P4 = (4.93)
1338 + T F P4

1338
P4 = (4.94)
1338 + 127

P4 = 0.91 (4.95)

Berdasarkan pengukuran diatas berikut merupakan hasil pengukuran pre-


sisi.

Tabel 4.8: Hasil Pengukuran Presisi


Kelas Presisi
Neutrophil 76%
Eosinophil 70.8%
Monocyte 96%
Lymphocyte 91%

Berdasarkan hasil presisi dari data uji diatas dapat disimpulkan bahwa
prediktif positif dari data uji yang dapat diidentifikasi dengan benar oleh
model yang dibuat adalah sel neutrophil 76%, eosinophil 70.8%, monocyte
96%, dan lymphocyte 91%.

4.3.8 Pengukuran dengan Akurasi


Dengan menggunakan persamaan akurasi diatas kita dapat menghitung
nilai akurasi dari model yang digunakan.

T T Pall
Akurasi = (4.96)
JumlahDataP engujian
41

1338
Akurasi = (4.97)
2487

Akurasi = 0.537 (4.98)

Berdasarkan perhitungan diatas akurasi dari model yang digunakan ada-


lah 53.7%.

4.4 Pengukuran dengan F1-score


F1 merupakan nilai rerata harmonis dari presisi dan recall. F1 dapat di-
katakan baik jika mencapai nilai 100% dan nilai terburuk 0%. Nilai F1 digu-
nakan untuk mengukur performa model dalam mengidentifikasi sel darah.
Berikut merupakan persamaan untuk menghitung nilai F1 .

2
F1 = 1 1 (4.99)
R
+ P

R·P
F1 = 2 · (4.100)
R+P
Dari persamaan diatas R merupakan nilai recall dan P merupakan nilai
presisi. Berikut merupakan nilai F1 dari setiap kelas.

• Neutrophil
R1 · P1
F1 = 2 · (4.101)
R1 + P1

0.76 · 0.78
F1 = 2 · (4.102)
0.76 + 0.78

F1 = 0.769 (4.103)

• Eosinophil

R2 · P2
F1 = 2 · (4.104)
R2 + P2

0.708 · 0.81
F1 = 2 · (4.105)
0.708 + 0.81

F1 = 0.75 (4.106)
42

• Monocyte
R3 · P3
F1 = 2 · (4.107)
R3 + P3

0.96 · 0.89
F1 = 2 · (4.108)
0.96 + 0.89

F1 = 0.92 (4.109)

• Lymphocyte
R4 · P4
F1 = 2 · (4.110)
R4 + P4

0.91 · 0.817
F1 = 2 · (4.111)
0.91 + 0.817

F1 = 0.86 (4.112)

• F1 dari rerata presisi dan recall

R̄ · P̄
F1 = 2 · (4.113)
R̄ + P̄

0.83 · 0.82
F1 = 2 · (4.114)
0.83 + 0.82

F1 = 0.82 (4.115)

Berdasarkan pengukuran F1 pada setiap kelas yang ada dan dari rerata
presisi dan recall berikut merupakan hasil pengukuran F1 .

Tabel 4.9: Hasil F1


Kelas F1
Neutrophil 76.9%
Eosinophil 75%
Monocyte 92%
Lympocyte 86%
Rerata Presisi dan Recall 82%

Dari perhitungan diatas kita mendapat hasil F1 dari rerata presisi dan
recall adalah 82%, dimana nilai itu menunjukkan bahwa terdapat keharmo-
nisan yang baik antara nilai presisi dan recall.
Bab 5

PENUTUP

5.1 Kesimpulan
Hasil dari pelatihan terhadap model, yakni nilai loss sebesar 49.08% me-
nunjukkan bahwa algoritma convolutional neural networks dapat diterapkan
untuk mengidentifikasi sel-sel darah dengan akurasi 83% pada saat pelatih-
an. Berdasarkan hasil perhitungan recall menghasilkan nilai rerata 83% dan
presisi menghasilkan nilai rerata 82%. Dari nilai rerata presisi dan recall
menghasilkan nilai F1 menghasilkan nilai 82% nilai tersebut menunjukkan
bahwa keharmonisan yang baik antara nilai presisi dan recall.
Dapat dilihat dari empat pengukuran tersebut, algoritma convolutional
neural networks dapat digunakan untuk mengidentifikasi dan memverifika-
si sel darah. Tetapi, nilai akurasi untuk mengukur performa model belum
begitu besar bernilai 53.7%. Beberapa faktor yang mungkin membuat hal
tersebut terjadi adalah kurang detailnya pra-pemrosesan yang dilakukan, la-
pisan pada model yang terlalu sedikit atau terlalu banyak, besar filter pada
setiap lapisan terlalu kecil atau terlalu besar, kurangnya data yang digunakan
untuk melatih model.

5.2 Saran
Berikut adalah beberapa saran yang dapat dilakukan untuk penelitian
terkait convolutional neural networks dan metode identifikasi sel darah.

1. Menggunakan citra dengan ukuran yang lebih besar dari sebelumnya.

2. Menggunakan citra dengan format yang berbeda dari sebelumnya.

3. Menambah jumlah lapisan pada model yang dimiliki.

43
44

4. Menambah jumlah filter yang terdapat pada setiap lapisan.

5. Menambah jumlah dataset yang digunakan.


DAFTAR PUSTAKA

[1] Arianda, D. (2013). Buku Saku Analis Kesehatan. Analis Muslim Publi-
sher.

[2] BlogWeb, A. (2016). Sel darah : Pengertian, fungsi, pem-


bentukan, jenis. URL: https://www.ilmudasar.com/2016/12/
Pengertian-Macam-Macam-Pembentukan-dan-Fungsi-Sel-Darah-adalah.
html. 2018-07-14.

[3] D. Mishkin, S. N. d. M. J. (2008). Systematic evaluation of cnn advances


on the imagenet. Systematic evaluation of cnn advances on the imagenet.

[4] dkk, I. G. (2016). Deep learning. MIT Press.

[5] dkk, Q. M. (2018). Optimization of relu neural networks using quotient


stochastic gradient descent. URL: https://arxiv.org/abs/1802.03713.
2018-08-01.

[6] dkk, Y. L. (2015). Deep learning. Nature.

[7] Erb, R. J. (1993). Introduction to backpropagation neural network com-


putation. Pharmaceutical research, 10(2):165–170.

[8] Gage, J. (2018). Introduction to optimizers. URL: https://blog.


algorithmia.com/introduction-to-optimizers/. 2018-10-08.

[9] Gandosoebrata, R. (1967). Penuntun Laboratorium Klinik. DIAN RA-


KYAT.

[10] Gandsoebrata, R. (2010). Penuntun Laboratorium Klinik. Dian Rakyat.

[11] Garillos-Manliguez (2016). Generalized confusion matrix for mul-


tiple classes. URL: https://www.researchgate.net/publication/
310799885_Generalized_Confusion_Matrix_for_Multiple_Classes.
2018-09-11.

45
46

[12] Goodfellow, I., Bengio, Y., Courville, A., and Bengio, Y. (2016). Deep
learning, volume 1. MIT press Cambridge.

[13] iinD (2018). Prosedur pembuatan preparat apus da-


rah. URL: https://www.scribd.com/doc/153839329/
Prosedur-Pembuatan-Preparat-Apus-Darah. 2018-07-14.

[14] Jacobs, R. A. and Jordan, M. I. (1993). Learning piecewise control


strategies in a modular neural network architecture. IEEE Transactions on
Systems, Man, and Cybernetics, 23(2):337–345.

[15] Johnson, R. and Zhang, T. (2013). Accelerating stochastic gradient


descent using predictive variance reduction. In Burges, C. J. C., Bottou,
L., Welling, M., Ghahramani, Z., and Weinberger, K. Q., editors, Advan-
ces in Neural Information Processing Systems 26, pages 315–323. Curran
Associates, Inc.

[16] K., P. H. (2017). Menilik activation function. URL: https://medium.


com/@opam22/menilik-activation-functions-7710177a54c9. 2018-
09-02.

[17] Karpathy, A. (2016). Cs231n convolutional neural networks for visual


recognition. Convolutional Neural Networks for Visual Recognition.

[18] Keras (2018). Keras: The python deep learning libary. URL: https:
//keras.io. 2018-10-11.

[19] Kovalev, V. (2017). A comparison of conventional and deep learning


methods of image classification on a database of chest radiographs. Confe-
rence: International Congress on Computer Assisted Radiology and Surgery.
2018-10-30.

[20] Li, W., Zhao, R., Xiao, T., and Wang, X. (2014). Deepreid: Deep filter
pairing neural network for person re-identification. In The IEEE Conference
on Computer Vision and Pattern Recognition (CVPR).

[21] Markham, K. (2014). Simple guide to confusion ma-


trix terminology. URL: https://www.dataschool.io/
simple-guide-to-confusion-matrix-terminology/. 2018-10-29.

[22] Mooney, P. (2018). Blood cell images. URL: https://www.kaggle.


com/paultimothymooney/blood-cells/home. 2018-07-14.
47

[23] Nair, V. and Hinton, G. E. (2010). Rectified linear units improve restri-
cted boltzmann machines. In Proceedings of the 27th international confe-
rence on machine learning (ICML-10), pages 807–814.

[24] Ochei, J. O. and Kolhatkar, A. A. (2000). Medical laboratory science:


theory and practice. McGraw Hill Education.

[25] Pathol, I. J. (2016). Preanalytical errors in hematology laboratory-


an avoidable incompetence. URL: https://www.ncbi.nlm.nih.gov/pmc/
articles/PMC4939646/. 2018-07-14.

[26] Redjeki, S. (2018). Analisis fungsi aktivasi sigmoid algoritma backpro-


pagation pada prediksi data. URL: http://www.academia.edu/7688250/
ANALISIS_FUNGSI_AKTIVASI_SIGMOID_ALGORITMA_BACKPROPAGATION_
PADA_PREDIKSI_DATA. 2018-08-02.

[27] Schmidhuber, J. (2015). Deep learning in neural networks: An overvi-


ew. Neural networks, 61:85–117.

[28] Sena, S. (2017). Pengenalan deep learning part 3: Backpropagation


algorithm. URL: https://link.medium.com/roR0QhkMcR. 2018-09-02.

[29] Soeparlan, S. (1995). Pengantar Jaringan Neural. GUNADARMA.

[30] Srivastava, N., Hinton, G., Krizhevsky, A., Sutskever, I., and Salakhutdi-
nov, R. (2014). Dropout: a simple way to prevent neural networks from
overfitting. The Journal of Machine Learning Research, 15(1):1929–1958.

[31] Widodo Budiharto, D. S. (2014). Artificial Intelligence KONSEP DAN


PENERAPANNYA. Andi.

[32] YIN, X., GOUDRIAAN, J., LANTINGA, E. A., VOS, J., and SPIERTZ,
H. J. (2003). A flexible sigmoid function of determinate growth. Annals
of Botany, 91(3):361–371.

[33] Zelle, J. M. (2004). Python programming: an introduction to computer


science. Franklin, Beedle & Associates, Inc.
LAMPIRAN

# −∗− coding : u t f −8 −∗−


" " " s k r i p s i . ipynb

A u t o m a t i c a l l y g e n e r a t e d by C o l a b o r a t o r y .

Original f i l e i s located at
h t t p s : / / c o l a b . r e s e a r c h . g oo gl e . com/ d r i v e /
1cYwOHz84jP6DHktV−8nwTlMD6FUhV−vE
"""

import numpy as np
import pandas as pd
from k e r a s . models import S e q u e n t i a l
from k e r a s . l a y e r s import Dense , Dropout , A c t i v a t i o n , F l a t t e n ,
Conv2D , MaxPooling2D , Lambda , MaxPool2D , B a t c h N o r m a l i z a t i o n
from k e r a s . u t i l s import n p _ u t i l s
from k e r a s . p r e p r o c e s s i n g . image import ImageDataGenerator
from k e r a s . o p t i m i z e r s import RMSprop
from s k l e a r n . p r e p r o c e s s i n g import LabelEncoder
from s k l e a r n . c r o s s _ v a l i d a t i o n import t r a i n _ t e s t _ s p l i t
from s k l e a r n . m e t r i c s import c o n f u s i o n _ m a t r i x
from s k l e a r n . m e t r i c s import a c c u r a c y _ s c o r e
import xml . e t r e e . ElementTree as ET
import s k l e a r n
import i t e r t o o l s
import cv2
import s c i p y
import os
import c s v

48
49

import m a t p l o t l i b . p y p l o t as p l t
# %m a t p l o t l i b i n l i n e

d i c t _ c h a r a c t e r s = { 1 : ’ NEUTROPHIL ’ , 2 : ’ EOSINOPHIL ’ ,
3 : ’MONOCYTE’ , 4 : ’ LYMPHOCYTE ’ }

! wget h t t p s : / /www. dropbox . com/ s / z3dm08lny78q95v /


blood−c e l l s . z i p ? d l=1

! wget h t t p s : / /www. dropbox . com/ s / wdmwdqtfefx0hny / model1 . h5? d l=1

import os
p r i n t ( os . l i s t d i r ( ’ . ’ ) )

!mv blood−c e l l s . z i p ? d l=1 blood−c e l l s . z i p

! ls

!mv model1 . h5? d l=1 model1 . h5

! unzip blood−c e l l s . z i p

r e a d e r = c s v . r e a d e r ( open ( ’ blood−c e l l s / d a t a s e t 2 −master /


d a t a s e t 2 −master / l a b e l s . csv ’ ) )
# s k i p t h e header
n e xt ( r e a d e r )
X3 = [ ]
y3 = [ ]
f o r row i n r e a d e r :
l a b e l = row [2 ]
i f l e n ( l a b e l ) > 0 and l a b e l . f i n d ( ’ , ’ ) == −1:
y3 . append ( l a b e l )
y3 = np . a s a r r a y ( y3 )
encoder = LabelEncoder ( )
encoder . f i t ( y3 )
encoded_y = encoder . t r a n s f o r m ( y3 )
c o u n t s = np . b i n c o u n t ( encoded_y )
50

p r i n t ( counts )
f i g , ax = p l t . s u b p l o t s ( )
p l t . bar ( l i s t ( range ( 5 ) ) , c o u n t s )
ax . s e t _ x t i c k l a b e l s ( ( ’ ’ , ’ B a s o p h i l ’ , ’ E o s i n o p h i l ’ ,
’ Lymphocyte ’ , ’ Monocyte ’ , ’ N e u t r o p h i l ’ ) )
ax . s e t _ y l a b e l ( ’ Counts ’ )

! p i p i n s t a l l tqdm
from tqdm import tqdm

def get_data ( f o l d e r ) :
"""
Load t h e data and l a b e l s
from t h e g i v e n f o l d e r and r e s i z e them .
"""
X = []
y = []
f o r wbc_type i n os . l i s t d i r ( f o l d e r ) :
i f not wbc_type . s t a r t s w i t h ( ’ . ’ ) :
i f wbc_type i n [ ’ NEUTROPHIL ’ ] :
label = 0
e l i f wbc_type i n [ ’ EOSINOPHIL ’ ] :
label = 1
e l i f wbc_type i n [ ’MONOCYTE’ ] :
label = 2
e l i f wbc_type i n [ ’ LYMPHOCYTE ’ ] :
label = 3
f o r image_filename i n tqdm ( os . l i s t d i r
( f o l d e r + wbc_type ) ) :
i m g _ f i l e = cv2 . imread (
f o l d e r + wbc_type
+ ’ / ’ + image_filename )
i f i m g _ f i l e i s not None :
i m g _ f i l e = s c i p y . misc . i m r e s i z e ( a r r=
img_file ,
s i z e =(160 , 120 , 3 ) )
img_arr = np . a s a r r a y ( i m g _ f i l e )
51

X . append ( img_arr )
y . append ( l a b e l )
X = np . a s a r r a y (X)
y = np . a s a r r a y ( y )
return X, y
X _ t r a i n , y _ t r a i n = g e t _ d a t a ( ’ blood−c e l l s / d a t a s e t 2 −master
/ d a t a s e t 2 −master / images /TRAIN / ’ )
X _ t e s t , y _ t e s t = g e t _ d a t a ( ’ blood−c e l l s / d a t a s e t 2 −master
/ d a t a s e t 2 −master / images /TEST / ’ )

# Encode l a b e l s t o hot v e c t o r s ( ex : 2 −> [ 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] )


from k e r a s . u t i l s . n p _ u t i l s import t o _ c a t e g o r i c a l
print ( dict_characters )

def real_data ( f o l d e r ) :
"""
Load t h e data and l a b e l s
from t h e g i v e n f o l d e r with t h e same s i z e .
"""
X = []
y = []
f o r wbc_type i n os . l i s t d i r ( f o l d e r ) :
i f not wbc_type . s t a r t s w i t h ( ’ . ’ ) :
i f wbc_type i n [ ’ NEUTROPHIL ’ ] :
label = 0
e l i f wbc_type i n [ ’ EOSINOPHIL ’ ] :
label = 1
e l i f wbc_type i n [ ’MONOCYTE’ ] :
label = 2
e l i f wbc_type i n [ ’ LYMPHOCYTE ’ ] :
label = 3
f o r image_filename i n tqdm ( os . l i s t d i r
( f o l d e r + wbc_type ) ) :
i m g _ f i l e = cv2 . imread (
f o l d e r + wbc_type + ’ / ’ + image_filename )
i f i m g _ f i l e i s not None :
img_arr = np . a s a r r a y ( i m g _ f i l e )
52

X . append ( img_arr )
y . append ( l a b e l )
X = np . a s a r r a y (X)
y = np . a s a r r a y ( y )
return X, y

X_dataTrain , y _ l a b e l T r a i n = r e a l _ d a t a ( ’ blood−c e l l s / d a t a s e t 2 −master


/ d a t a s e t 2 −master / images /TRAIN / ’ )
X_dataTest , y _ l a b e l T e s t = r e a l _ d a t a ( ’ blood−c e l l s / d a t a s e t 2 −master
/ d a t a s e t 2 −master / images /TEST / ’ )

def plot_image ( before , a f t e r ) :


p l t . s u b p l o t (221)
p l t . t i t l e ( ’ Before ’ )
p l t . a x i s ( ’ equal ’ )
p l t . imshow ( b e f o r e )
p l t . s u b p l o t (222)
p l t . t i t l e ( ’ After ’ )
p l t . a x i s ( ’ equal ’ )
p l t . imshow ( a f t e r )
return
plot_image ( X_dataTest [1] , X_test [1])

X _ t r a i n=np . a r r a y ( X _ t r a i n )
X _ t r a i n=X _ t r a i n /255.0
y_trainHot = to_categorical ( y_train )

X _ t e s t=np . a r r a y ( X _ t e s t )
X _ t e s t=X _ t e s t /255.0
y_testHot = to_categorical ( y_test )

max( y _ t r a i n )

n um_classes = l e n ( y _ t r a i n H o t [ 0 ] )
print ( len ( y_trainHot [0]))
! pip i n s t a l l keras
import k e r a s
53

epoch = 200

i n p u t _ s h a p e = (160 , 120 , 3)

sgd = k e r a s . o p t i m i z e r s . SGD(momentum=0.9 , decay =0.0005)

model = S e q u e n t i a l ( )

model . add ( Conv2D (32 , k e r n e l _ s i z e =(3 , 3 ) ,


a c t i v a t i o n =’ r e l u ’ ,
i n p u t _ s h a p e=input_shape , s t r i d e s =1))
model . add ( Conv2D (64 , ( 3 , 3 ) , a c t i v a t i o n =’ r e l u ’ ) )
model . add ( MaxPooling2D ( p o o l _ s i z e =(2 , 2 ) ) )
model . add ( Dropout ( 0 . 2 5 ) )
model . add ( F l a t t e n ( ) )
model . add ( Dense (128 , a c t i v a t i o n =’ sigmoid ’ ) )
model . add ( Dropout ( 0 . 5 ) )
model . add ( Dense ( num_classes , a c t i v a t i o n =’ softmax ’ ) )
model . compile ( l o s s=k e r a s . l o s s e s . c a t e g o r i c a l _ c r o s s e n t r o p y ,
o p t i m i z e r=sgd ,
m e t r i c s =[ ’ ac curac y ’ ] )

model . summary ( )

from s k l e a r n . m o d e l _ s e l e c t i o n import t r a i n _ t e s t _ s p l i t
x_train , x_test , y_train , y _ t e s t = t r a i n _ t e s t _ s p l i t ( X_train ,
y _ t r a i n H o t , t e s t _ s i z e =0.3)

y _ t r a i n H o t . shape

h i s t = model . f i t ( x _ t r a i n , y _ t r a i n , b a t c h _ s i z e =128, epochs=epoch ,


v a l i d a t i o n _ d a t a =[ x _ t e s t , y _ t e s t ] )

h i s t . h i s t o r y . keys ( )

p l t . p l o t ( h i s t . h i s t o r y [ ’ acc ’ ] )
54

p l t . plot ( h i s t . h i s t o r y [ ’ val_acc ’ ] )
p l t . legend ( [ ’ Acc ’ , ’ Val_acc ’ ] )
p l t . show ( )

plt . plot ( hist . history [ ’ loss ’ ] )


plt . plot ( hist . history [ ’ val_loss ’ ] )
plt . legend ( [ ’ Loss ’ , ’ V a l _ l o s s ’ ] )
plt . show ( )

from k e r a s . models import load_model

model . l o a d _ w e i g h t s ( ’ model1 . h5 ’ )

h i s t = model . f i t ( x _ t r a i n , y _ t r a i n , b a t c h _ s i z e =128, epochs =50,


v a l i d a t i o n _ d a t a =[ x _ t e s t , y _ t e s t ] )

plt . p l o t ( h i s t . h i s t o r y [ ’ acc ’ ] )
plt . plot ( h i s t . h i s t o r y [ ’ val_acc ’ ] )
plt . legend ( [ ’ Acc ’ , ’ Val_acc ’ ] )
plt . show ( )

plt . plot ( hist . history [ ’ loss ’ ] )


plt . plot ( hist . history [ ’ val_loss ’ ] )
plt . legend ( [ ’ Loss ’ , ’ V a l _ l o s s ’ ] )
plt . show ( )

t e s t _ b a r u = x _ t e s t . copy ( )
l a b e l _ t e s t = y _ t e s t H o t [ : 2 8 0 0 ] . copy ( )

t e s t _ b a r u . shape

l a b e l _ t e s t . shape

p r e d i c t e d = model . p r e d i c t ( t e s t _ b a r u )

p r e d i c t e d = [ np . argmax ( pred ) f o r pred i n p r e d i c t e d ]


55

p r e d i c t e d [ −2:]

predicted [:3]

y _ t r a i n H o t . shape

l a b e l _ t e s t = [ np . argmax ( l a b e l ) f o r l a b e l i n l a b e l _ t e s t ]

label_test [:3]

l a b e l _ t e s t [ −2:]

from s k l e a r n . m e t r i c s import c o n f u s i o n _ m a t r i x
cm = c o n f u s i o n _ m a t r i x ( y _ t r a i n H o t , x _ t r a i n )

t e s t _ p r e d i c t i o n s = model . p r e d i c t ( x _ t e s t )
t e s t _ p r e d i c t i o n s = np . round ( t e s t _ p r e d i c t i o n s )

accuracy = accuracy_score ( y_test , t e s t _ p r e d i c t i o n s )


p r i n t ( " Accuracy : " + s t r ( a c c u r a c y ) )

d e f p l o t _ c o n f u s i o n _ m a t r i x (cm , c l a s s e s ,
n o r m a l i z e=F a l s e ,
t i t l e =’ Confusion matrix ’ ,
cmap=p l t . cm . B l u e s ) :
"""
T h i s f u n c t i o n p r i n t s and p l o t s t h e c o n f u s i o n m a t r i x .
N o r m a l i z a t i o n can be a p p l i e d by s e t t i n g ‘ n o r m a l i z e=True ‘ .
"""
p l t . f i g u r e ( f i g s i z e = (10 ,10))
p l t . imshow (cm , i n t e r p o l a t i o n =’ n e a r e s t ’ , cmap=cmap )
plt . t i t l e ( t i t l e )
pl t . colorbar ()
t i c k _ m a r k s = np . arange ( l e n ( c l a s s e s ) )
p l t . x t i c k s ( t i c k _ m a r k s , c l a s s e s , r o t a t i o n =90)
p l t . y t i c k s ( tick_marks , c l a s s e s )
i f normalize :
56

cm = cm . a s t y p e ( ’ f l o a t ’ ) / cm . sum( a x i s =1)[: , np . newaxis ]

t h r e s h = cm . max ( ) / 2 .
f o r i , j i n i t e r t o o l s . p r o d u c t ( range (cm . shape [ 0 ] ) ,
range (cm . shape [ 1 ] ) ) :
p l t . t e x t ( j , i , cm[ i , j ] ,
h o r i z o n t a l a l i g n m e n t =" c e n t e r " ,
c o l o r =" white " i f cm[ i , j ] > t h r e s h e l s e " b l a c k " )
plt . grid ( ’ off ’ )
pl t . tight_layout ()
p l t . y l a b e l ( ’ True l a b e l ’ )
plt . xlabel ( ’ Predicted label ’ )

Y_pred = model . p r e d i c t ( X _ t e s t )
Y _ p r e d _ c l a s s e s = np . argmax ( Y_pred , a x i s = 1)
Y _ t r u e = np . argmax ( y _ t e s t H o t , a x i s = 1)
co nfusion_mtx = c o n f u s i o n _ m a t r i x ( Y_true , Y _ p r e d _ c l a s s e s )
p l o t _ c o n f u s i o n _ m a t r i x ( confusion_mtx ,
c l a s s e s = l i s t ( dict_characters . values ()))

model . s a v e _ w e i g h t s ( ’ m o d e l _ f i x . h5 ’ )

! ls

from g oo gl e . c o l a b import f i l e s

f i l e s . download ( ’ m o d e l _ f i x . h5 ’ )

predicted_label = []
f o r i i n range ( l e n ( Y _ p r e d _ c l a s s e s ) ) :
l a b e l = Y _ p r e d _ c l a s s e s [ i ] +1
p r e d i c t e d _ l a b e l . append ( l a b e l )

dict_characters

str_predicted_label = [ dict_characters [ i ] for


57

i in predicted_label ]
s t r _ p r e d i c t e d _ l a b e l [ −5:]

true_label = []
f o r i i n range ( l e n ( Y _ t r u e ) ) :
T _ l a b e l = Y _ t r u e [ i ] +1
t r u e _ l a b e l . append ( T _ l a b e l )

s t r _ t r u e _ l a b e l = [ dict_characters [ i ] for i in true_label ]


s t r _ t r u e _ l a b e l [ −5:]

p l t . imshow ( X _ t e s t [ 0 ] )
plt . grid ( ’ off ’ )
plt . axis ( ’ off ’ )

p l t . imshow ( X _ t e s t [ 1 ] )
plt . grid ( ’ off ’ )
plt . axis ( ’ off ’ )

p l t . imshow ( X _ t e s t [ 2 ] )
plt . grid ( ’ off ’ )
plt . axis ( ’ off ’ )

len ( X_test )

p l t . imshow ( X _ t e s t [2486])
plt . grid ( ’ off ’ )
plt . axis ( ’ off ’ )

p l t . imshow ( X _ t e s t [2485])
plt . grid ( ’ off ’ )
plt . axis ( ’ off ’ )

Anda mungkin juga menyukai