Studi Kasus: Deteksi Penyakit Malaria Pada Citra Sel Darah Menggunakan CNN (Convolutional Neural Network)

Indah Yunita
5 min readFeb 1, 2023

--

Photo by Angela Handfest on Unsplash

Permasalahan

Penyakit malaria merupakan penyakit yang menyerang sel darah akibat adanya bakteri plasmodium. Keberadaan bakteri plasmodium ini dapat dideteksi melalui citra mikroskopis sel darah manusia oleh tenaga medis menggunakan mikroskop. Namun deteksi dengan cara konvensional tersebut memiliki kelemahan yaitu hasil yang diperoleh bergantung pada keahlian dan kompetensi ahli medis. Oleh karena itu diperlukan sistem deteksi yang akurat dan mudah digunakan untuk membantu para akhli medis dalam mendeteksi penyakit malaria melalui sel darah.

Solusi

Pendekatan yang dilakukan dalam studi kasus ini adalah penggunaan teknologi Deep Learning yaitu CNN (Convolutional Neural Network) untuk mendeteksi penyakit malaria pada sel darah manusia.

Sumber Dataset

Dataset yang digunakan dalam studi kasus ini adalah data citra mikroskopis sel darah manusia yang diperoleh dari repository kaggle. Dataset tersebut terdiri dari 27558 citra dengan format .png yang terbagi ke dalam 2 kelas yakni uninfected (Sel darah yang tidak terinfeksi malaria) dan parasitized (sel darah yang terinfeksi malaria).

Proses Pembangunan Model CNN

Proses pembangunan model CNN ini dilakukan menggunakan google colaboratory dan dengan Tensorflow. Langkah awal yang perlu dilakukan adalah mengunduh dataset dari kaggle kemudian diupload ke akun kaggle pribadi secara private. Hal ini bertujuan agar data dapat diakses melalui kaggle kredensial yang dibuat dan disimpan pada akun github sehingga data digunakan tanpa harus mengunggah data berkali-kali ke google colabratory jika runtime terputus. Kode program secara lengkap untuk membangun model CNN dapat diakses melalui akun github saya berikut:

  1. Mengambil Dataset

Langkah-langkah dalam mengambil dataset adalah dengan cloning terlebih dahulu kaggle credential yang telah disimpan dalam github. Kemudian install kaggle pada environment google colab dan buat folder tersembunyi untuk mengkonfigurasi kaggle credential. Setelah itu copy file kaggle credential ke dalam folder tersembunyi tersebut dan downoload dataset dari kaggle.

Selanjutnya inisialisasi masing-masing direktori data.

Terdapat 3 buah direktori data yakni direktori utama yang di dalamnya berisi 2 buah direktori yaitu uninfected dan parasitized. Kemudian pada masing-masing direktori terdapat citra sel darah

2. Preprocessing

Selanjutnya inisialisasi ukuran citra yakni width sebesar 128, height sebesar 128 dan jumlah channel yakni 3. Ukuran yang telah diinisialisasi ini nantinya akan diproses melalui image data generator ketika pembagian dataset. Hal ini disebabkan karena dataset memiliki ukuran citra yang berbeda-beda.

3. Sample Data

Sample data yang ditampilkan adalah 9 buah citra beserta label dari masing-masing citra tersebut

Sampel Citra Sel darah

4. Pembagian Dataset

Dataset akan dibagi menjadi 80% data training dan 20% data testing. Pembagian dataset dilakukan menggunakan Image Data Generator. Data juga di rescale dengan cara dibagi 255 sehingga nilai matriks dari citra hanya berkisar antara 0–1.

5. Membangun Model CNN

Arsitektur CNN

Arsitektur CNN yang dibangun terdiri atas 3 buah convolutional layer dan 3 buah Maxpooling. Convolutional layer memiliki filter berukuran 3x3 dan jumlahnya adalah 16, 32, dan 64. Kemudian fungsi aktivasi yang digunakan untuk klasifikasi adalah fungsi sigmoid karena kasus klasifikasi ini merupakan binnary classification. Berikut kode program untuk membuat arsitektur CNN sesuai gambar.

Setiap convolutional layer diberi aktivasi relu. Singkatnya, aktivasi relu ini akan merubah value matriks hasil konvolusi yang bernilai negatif menjadi bernilai 0 dan membiarkan value matriks hasil konvolusi yang bernilai positif. Kemudian terdapat dropout yang fungsinya adalah untuk menghindari overfitting pada model. Berikut hasil model summary dari arsitektur yang telah dibangun:

Model Summary CNN

6. Pelatihan Data

Data dilatih dengan jumlah epoch yang diinisialisasi sebesar 50, akan tetapi proses pelatihan ini nanti akan menggunakan callback early stoping sehingga proses akan berhenti ketika telah mencapai nilai akurasi sesuai yang diinginkan, hal ini ditujukan untuk mempersingkat waktu pelatihan. Melalui callback early stoping, pada studi kasus ini proses pelatihan akan berhenti ketika akurasi telah mencapai diatas 96%.

Selanjutnya model akan dicompile menggunakan optimizer Adam dan learning rate mengikuti ukuran default pada optimizer Adam yakni 0,001. Metrik yang digunakan untuk evaluasi adalah akurasi.

Hasil dari proses pelatihan data tersebut yakni berhenti pada epoch ke 7 dengan nilai akurasi pada data training adalah 96,01% dan pada data testing sebesar 94,19%. Berikut grafik akurasi dari data training dan data test.

Grafik akurasi

Terlihat pada grafik, saat epoch pertama nilai akurasi masih cukup rendah namun nilai validasi akurasi pada data test ternyata jauh lebih tinggi. Sedangkan pada epoch-epoch selanjutnya antara nikai akurasi dengan validasi akurasi tidak terlalu jauh jaraknya. Hal tersebut menandakan bahwa model yang dibangun merupakan model yang good fit, tidak underfitting maupun overfitting.

7. Prediksi Citra

Selanjutnya dilakukan prediksi citra yaitu dengan mencoba menginputkan salah satu citra untuk dideteksi menggunakan model yang telah dibuat.

Hasil dari kode diatas adalah sebagai berikut:

Kelas Citra

Kelas pada citra yakni parasitized pada indeks 0 dan Uninfected pada indeks 1. Oleh karena itu, pada kode pengkondisian classes akan menghasilkan parasitized jika nilainya 0 dan uninfected jika nilainya 1.

Berikut contoh hasil citra yang diinputkan

Memprediksi Citra

Citra yang diinputkan adalah citra parasitized dan hasil prediksi juga menunjukkan bahwa citra tersebut masuk ke dalam kelas parasitized.

Kesimpulan

Dalam kasus pendeteksian penyakit malaria berdasarkan citra mikroskopis sel darah manusia, CNN dapat dijadikan sebagai alternatif untuk mengklasifikasikan apakah sel darah terinfeksi malaria dengan tingkat akurasi pada data uji sebesar 94,19%.

--

--