Prediksi Infeksi COVID-19 Dari Gambar X-ray Dada Dengan ML Deep Learning

Kembali lagi di postingan ke sekian, namun merupakan postingan pertama pada kategori Artificial Intelligence. Sebenernya sih udah lama kepengen nulis ini, tapi yah… banyak yang harus di beresin di RL (Real Life), cari kerja misalnya jadi kudu edit-edit CV sama resume, wawancara juga meski masih belom ada kelanjutannya… #curhat wkwk

Seperti yang kita tau pandemi virus korona ini udah berlangsung dari januari, dan baru masuk resmi ke Indonesia pada bulan maret dan nyampe sekarang belum juga beres, bukan hanya di Indonesia aja sih malah hampir di seluruh negara juga gitu. Oleh karena itu untuk mengurangi penyebaran virus ini kita sebagai manusia sebisa mungkin untuk menjalankan protokol kesehatan, untuk kebaikan bersama sih. Mungkin kita udah bosan denger kalimat itu, tapi yaaa itu salah satu bentuk usaha sederhana untuk mengurangi penyebaran virus korona yang dapat kita lakukan.

Skip intro nya, menurut WHO the most common symptoms adalah demam, batuk kering, dan merasa lelah. Sekitar 1 dari setiap 5 orang yang terjangkit COVID-19 sakit parah dan mengalami kesulitan bernafas.

Disini kita akan pake data dari kaggle yang dikumpulkan dari github oleh Mr. Prashant Patel yang dapat dilihat di link berikut.

Total ukuran data tersebut kurang lebih 2GB yang dibagi 3 label gambar, yaitu NORMAL, PNEUMONIA, COVID19. Contoh perbandingannya dapat dilihat pada gambar berikut

Gimana, bisa membedakan ga antara normal, penderita pneumonia dan penderita covid19? kalo saya sih enggak yah, keliatannya mirip semua tuh wkwk

Oke, sekarang kita akan mengerjakan / membuat program menggunakan google colab, menggunakan framework tensorflow dan keras. Namun sebelum itu kita butuh mempersiapkan data dahulu.

Langkah Pertama adalah buka situs kaggle, kemudian daftar akun kaggle dan login, mudah dan gratis kok tenang aja. Hal ini dibutuhkan karena kita butuh API key untuk mendownload data gambar di google colab kita.

Setelah login, klik foto profile pada bagian pojok kanan atas lalu pilih My Account

Pada bagian API, klik Create New Api Token. Lalu secara otomatis akan terdownload sebuah file kaggle.json

Sekarang kita fokus membuat program / coding, buka google colab kemudian login. Pada menu bar klik File -> New notebook

selanjutnya kita install kaggle pada google colab yang kita gunakan, caranya dengan memasukan kode berikut

Kemudian klik tombol run, seperti pada gambar

hasilnya akan muncul seperti berikut

Sekarang kita harus memasukkan kaggle.json tadi kedalam google colab kita, caranya dengan menggunakan fitur upload

Klik run, kemudian choose file dan pilih kaggle.json yang telah kita download sebelumnya, maka akan muncul tampilan seperti dibawah

Langkah selanjutnya adalah membuat folder kaggle, kemudian mencopy file kaggle.json kedalam folder yang telah dibuat

Kemudian kita ubah permission file

Selanjutnya kita mendownload dataset berikut, tenang aja yg mendownload mesin google colab jadi kita ga keluar kuota, caranya adalah dengan mencopy API command, seperti gambar dibawah

lalu paste kan di baris code dengan menambahkan tanda seru didepannya, seperti berikut

akan tampil seperti ini

Karena file tersebut masih di zipped, maka akan kita unzip, hal pertama adalah mengimport library zip dan OS, seperti berikut

Selanjutnya kita membuath path direktori file yang telah kita download tadi, kemudian ekstrak file tersebut di folder /tmp

Jika kita lihat kedalam folder /tmp tadi, ada sebuah folder bernama data, didalam folder data terdiri dari dua folder train dan test, didalam folder tersebut masing-masing terdapat folder NORMAL, PNEUMONIA, COVID19 yang berisi foto-foto x-ray yang kemudian folder tersebut merupakan perwakilan dari tiap label.

kemudian kita buat variabel dengan isi direktori training dan validating, dimana pada training menggunakan folder train dan validating menggunakan folder test

untuk mengecek folder sekaligus label dapat menggunakan fungsi berikut

setelah itu kita import library tensorflow dan module yang dibutuhkan, seperti RMSprop dan ImageDataGenerator

Hal selanjutnya adalah proses augmentasi gambar, jadi pada proses ini program akan membuat data pelatihan baru sehingga menambah dataset dengan menggunakan data yang telah ada, caranya yaitu dengan mengubah misal rotasi gambar, rescale gambar, sudut gambar, dll.

bagian selanjutnya adalah membuat train_generator dan validation_generator, yang berisi direktori lokasi yang telah dibuat sebelumnya,

target_size merupakan ukuran gambar masukan sehingga setiap gambar akan diubah ukurannya ke ukuran ini,

batch_size merupakan jumlah gambar yang akan dihasilkan dari generator per batch,

color_mode jika gambar hitam putih atau abu-abu set “grayscale” atau jika gambar berwarna, set “rgb”,

class_mode set “binary” jika hanya dua label/kelas, jika memiliki lebih dari tiga label gunakan “categorical”,

dari gambar diatas terlihat bahwa kita memiliki 5144 gambar training yang dibagi menjadi 3 kelas/label, sedangkan 1288 gambar sebagai validating.

Selanjutnya adalah kita membuat model dari Deep Learning, pada bagian ini kita membuat input sebanyak 256×256, dengan filter sebanyak 32 pada layer pertama, kernel size sebesar 3 x 3, dan fungsi aktivasinya adalah relu.

pada bagian akhir karena kita menggunakan lebih dari 3 kelas/label maka fungsi aktivasi menggunakan ‘softmax‘, ini berbeda jika kita menggunakan 2 kelas/label menggunakan fungsi aktivasi ‘sigmoid’

Konfigurasi pada compiler disesuaikan dengan model, pada loss jika hanya memiliki 2 kelas/label dapat menggunakan ‘binary_crossentropy’ sedangkan jika menggunakan 3 kelas/label dapat menggunakan ‘categorical_crossentropy’ kita menggunakan ini karena mempunyai 3 label, untuk optimizer disini saya menggunakan Adam

Sekarang saatnya kita melakukan training, untuk memulai proses training digunakan fungsi fit() dan kemudian menentukan parameter seperti, train_generator yang telah kita buat pada langkah sebelumnya, steps_per_epoch merupakan jumlah langkah untuk menyelesaikan 1 epoch, disini 1 steps merupakan 1 batch_size / 1 batch_size adalah 10 citra, dengan jumlah epoch/iterasi sebesar 10 kali pengulangan.

dari hasil training diatas pada iterasi ke-5 terlihat bahwa akurasi data training sebesar 0.8460 sedangkan nilai lossnya sebesar 0.3947, untuk data validasi akurasinya sebesar 0.89 sedangkan lossnya adalah 0.3141.

model yang kita buat masih dapat di improve sehingga akan mendapatkan hasil yang lebih optimal dibanding ini, dapat dengan menambah layer atau proses pada augmentasi gambar.

sekarang kita akan melakukan tes model yang telah kita latih sebelumnya

untuk melakukan tes gambar dapat dilakukan dengan kode dibawah, klik choose file dan pilih gambar x-ray yang akan kita prediksi

hasil testing

disini saya menggunakan foto x-ray pada kondisi orang NORMAL dan hasilnya sesuai dengan prediksi

Tulisan ini murni dibuat sebagai bahan pembelajaran, hasil prediksi ini tidak dapat dijadikan standar atau hasil tes resmi karena bagaimanapun AI hanya sebagai alat prediksi bukan sesuatu yang pasti.

Bagaimanapun, acuan standar seseorang terjangkit COVID19 bukanlah dari foto x-ray tetapi melalui swab test.

Sekian tulisan kali ini sampai berjumpa kembali di postingan selanjutnya.

270 thoughts on “Prediksi Infeksi COVID-19 Dari Gambar X-ray Dada Dengan ML Deep Learning

Leave a Reply

Your email address will not be published.