Pada awal tahun 2020 ketika COVID-19 mulai merebak, seorang pria bernama Adrian Rosebrock merancang sebuah sistem yang bisa mendeteksi keberadaan COVID-19 dengan menganalisa dengan membaca hasil X-Ray dari seorang pasien. Pembacaan ini dilakukan dengan bantuan dari TensorFlow, yaitu library software open-source untuk
machine learning.
Adrian Rosebrock adalah pendiri dari situs www.pyimagesearch.com.
Bagaimana cara kerja sistem ini? Baca terus artikel ini sampai habis!
Perlu digarisbawahi, di artikel kali ini kita tidak akan membahas step-by-step membuat sistem ini, melainkan lebih kepada bagaimana sistem ini bekerja.
Oh, ya sebelum melanjutkan membaca, agar kamu lebih mudah paham dan tidak terlalu sering loading. Maka sebaiknya kamu mengenal yang namanya:
- Deep Learning dan Machine Learning
- TensorFlow
- Keras
- Bahasa Python
Deteksi COVID-19 dengan TensorFlow, Keras, dan
Deep Learning
DISCLAIMER!!
Ide dan sistem yang dipresentasikan hanya untuk tujuan pembelajaran!. Tidak ditujukan dan sangat tidak dianjurkan untuk dipergunakan oleh dokter atau tenaga kesehatan/medis lainnya sebagai alat bantu mendeteksi COVID-19, karena hasilnya belum diuji secara klinis oleh tenaga kesehatan!
Pada dasarnya Adrian sudah memperingatkan bahwa yang dia lakukan disini adalah hanya untuk keperluan pembelajaran saja, jadi tidak untuk diaplikasikan pada kasus nyata sebagai acuan untuk mendeteksi COVID-19 ini.
Kemudian Adrian menambahkan bahwa tujuan dia melakukan ini adalah hanya untuk menginspirasi banyak pihak untuk mulai melakukan pendekatan dari segala bidang ilmu pengetahuan, karena untuk melakukan yang namanya
Deep Learning ini tentu saja membutuhkan kerjasama dari orang-orang dari bidang kesehatan/medis.
Nah, bagaimana sebenarnya "sistem" ini bekerja?
Secara umum yang dinamakan
Deep Learning adalah algoritma yang dibuat sedemikian rupa sehingga menghasilkan
neural network yang dapat berperan seperti otak manusia yang bisa belajar dan menghasilkan "keputusan" atau lazim disebut
intellegence decision.
Deteksi COVID-19 dari Foto X-Ray
Untuk mulai membuat fondasi dari sistem Deep Learning langkah awal yang harus dilakukan adalah mengerti dan memahami bagaimana data mentah yang ada itu dibuat dan dianalisa secara konvensional. Dalam kasus ini tentu saja adalah mencari jawaban untuk pertanyaan: "Bagaimana COVID-19 bisa terdeteksi melalui foto hasil X-Ray?"
Gambar 1: Contoh hasil foto X-Ray dari pasien positif COVID-19
Diatas adalah contoh dari hasil foto X-Ray seorang pasien yang positif COVID-19, menggunakan foto ini kita bisa "melatih" sebuah machine learning menjadi sebuah alat atau sistem untuk melakukan penggolongan/klasifikasi untuk mendeteksi COVID-19 dengan Keras dan TensorFlow.
Melihat masalah mengenai tes untuk mendeteksi COVID-19 ini sangat sulit dilakukan -- butuh waktu lama dan biaya yang tidak sedikit selain itu kemampuan produsen alat tes COVID-19 ini dinilai belum cukup untuk memenuhi kebutuhan yang ada. Tentu hal ini akan menimbulkan kepanikan, terutama di khalayak ramai.
Nah, dengan latar belakang masalah tersebut tentu terlihat bahwa dibutuhkan sebuah langkah diagnosis selain daripada tes dengan test kit COVID-19. Oleh karena itu sang author melihat bahwa dengan menggunakan foto hasil X-Ray yang juga seringkali digunakan dokter untuk mendiagnosa pneunomia dan kelainan atau penyakit paru-paru lainnya bisa membantu untuk membuat diagnosa awal.
Karena virus COVID-19 menyerang sel epitel yang membentuk jalur respiratori(pernapasan) maka kita bisa menggunakan X-Ray untuk menganalisa kesehatan paru-paru dari seorang pasien.
Satu-satunya kekurangan dari analisa X-Ray adalah dibutuhkannya seorang ahli radiologi untuk melakukan tindakan X-Ray ini, yang tentu saja dalam kondisi pandemi seperti ini sangat dibutuhkan. Masalahnya adalah untuk melakukan analisa hasil dari X-Ray dibutuhkan waktu yang cukup lama. Karena itu mengembangkan sistem untuk menganilsa secara otomatis menggunakan komputer tentu akan membantu tenaga kesehatan dari segi waktu.
Gambar 2: Sampel dari hasil X-Ray COVID-19.
Gambar diatas adalah sampel hasil X-Ray COVID-19. Gambar sebelah kiri (kotak merah) menunjukkan hasil positif COVID-19, sementara gambar sebelah kanan (kotak biru) menunjukkan hasil negatif COVID-19. Gambar-gambar ini akan dijadikan sebagai dataset untuk membentuk sistem/model deep learning menggunkan TensorFlow dan Keras.
Foto hasil X-Ray yang akan kita gunakan sebagai dataset diatas sudah dikurasi oleh Dr.Joseph Cohen dari University of Montreal. Dr.Cohen beberapa waktu yang lalu mengumpulkan foto hasil X-Ray kasus COVID-19 dan mempublikasikannya melalui
repo GitHub ini.
Di dalam repo tersebut terdapat sampel dari kasus COVID-19, MERS, SARS, dan ARDS.
Kombo TensorFlow, Teras, dan Deep Learning!
Deep Learning tentu membutuhkan apa yang namanya dataset, yaitu sekumpulan data yang digunakan untuk "belajar". Untuk membuat dataset yang dibutuhkan, Adrian menggunakan foto hasil X-Ray dari beberapa pasien.
Secara singkat berikut ini adalah langkah yang dia tempuh:
- Parsing metadata.csv dari repo Dr.Cohen
- Seleksi dan ambil:
- Sampel COVID-19 positif
- Penampakan Posterioranterios (PA) dari paru-paru
- Mengambil sampel X-Ray dari pasien sehat, ambil di Kaggle's
Pada saat tutorial dibuat, Adrian berhasil mendapatkan:
- 25 sampel hasil foto X-Ray pasien positif COVID-19
- 25 sampel X-Ray dari pasien sehat dan negatif COVID-19
Dalam kasus ini hasil dari foto X-Ray pasien sehat(Kaggle dataset) memiliki beberapa masalah, misalnya noise, label yang salah. Tapi setidaknya dataset ini bisa dipakai untuk membuktikan konsep dari pendeteksi COVID-19 yang akan dibuat.
Setelah dataset siap, maka langkah selanjutnya adalah membangun Convolutional Neural Network(CNN) yang akan digunakan sebagai sistem untuk mendiagnosa COVID-19 secara otomatis menggunakan TensorFlow, Keras, dan metode Deep Learning.
Untuk mendownload source lengkapnya, silakan kunjungi link ini.
Cara kerja dari sistem CNN ini sebenarnya sangat sederhana secara teori, yaitu dengan membuat sistem ini melalui tahap membaca dan mempelajari/learning dataset yang sudah disediakan, untuk kemudian mengembangkan neural system yang dapat menganalisa secara mandiri kasus yang tersedia melalui input data.
Untuk memperluas cakupan/coverage dari tahap training ini maka dilakukan tahap yang namanya Data Augmnetation. Proses dilakukan secara random pada sample dalam dataset dengan mengaplikasikan perpindahan rotasi sebesar 15 derajat dan -15 derajat secara acak pada sampel yang terpilih.
Contoh hasil Data Augmentation yang dilakukan
Namun sebelum sampel pada dataset tersebut digunakan, dilakukan proses generalisasi pada sampel. Pada kasus ini karena menggunakan data berupa gambar maka dilakukan langkah berikut:
- Konversi gambar menjadi RGB channel (RGB channel ordering)
- Resize ukuran menjadi 224x224 pixel (tanpa memperhatikan ratio asli)
Mungkin ada pertanyaan kenapa harus dilakukan perubahan format channel menjadi RGB. Jawabannya sederhana, karena CNN kita akan menggunakan urutan RGB channel. Perlu diketahui ada beberapa format channel gambar yang menggunakan urutan BGR.
Proses generalisasi dilakukan untuk mempermudah dan memperluas cakupan proses learning yang dilakukan sistem, karena pada proses learning variasi data sangat penting tapi ada poin-poin yang tidak membutuhkan variasi. Nah, dalam kasus ini ukuran gambar dari dataset tidaklah penting, karena itu poin semacam ini dibuat se-homogen mungkin.
Kemudian langkah berikutnya adalah memberikan label yang tepat pada masing-masing data. Disini akan digunakan kombinasi antara lokasi data (path) dan nama file sebagai label. Selanjutnya mengubah/scale intensitas pixel menjadi format array NumPy dengan cara merubahnya menjadi [0, 1].
Nah, setelah format array siap, maka dilakukan yang namanya One-hot encoding pada dataset. Kenapa harus one-hot? Karena Integer Encoding masih terlalu luas dan ingat tadi dilangkah sebelumnya sudah dilakukan perubahan channel RGB pada dataset, sehingga One-hot encoding ini mudah dilakukan.
Pada tahap ini isi/value dari channel RGB akan diisi dengan angka [0] atau [1]. Contohnya sebagai berikut:
Kemudian dengan menggunakan VGG16 dilakukan yang namanya proses fine-tuning. Ini merupakan rentetan beberapa proses yang bertujuan untuk membuat perubahan kecil pada proses agar menghasilkan output atau performa yang diharapkan. Ini adalah proses terakhir sebelum sistem ini siap digunakan untuk mendiagnosa secara otomatis.
Bagaimana cara memulai/running sistem ini?
Caranya mudah, yaitu menggunakan fungsi fit_generator pada Keras, kemudian mengirim data berupa foto hasil X-Ray pada object di data augmentation.
Kemudian sistem akan membuat prediksi awal dan confusion matrix untuk memperoleh accuracy, sensitivity, and specificity. Selanjutnya dari history training/loss proses yang dilakukan diawal, maka dibuatlah plot yang dibutuhkan.
Lalu pada tahap akhir hasil dari analisa akan disimpan dengan format h5, yaitu format HDF5 yang digunakan oleh Keras.
Hasil Percobaan Diagnosa COVID-19 Otomatis
Pada percobaan yang dilakukan, sistem ini menghasilkan akurasi sekitar ~90-92% ketika mendiagnosa COVID-19 pada sample dataser yang ada. Selain itu pada metrik sensitivity dihasilkan akurasi 100% dan pada metrik specifity menghasilkan akurasi 80%.
Apa artinya?
- Pada pasien positif COVID-19 (true positive), sistem ini bisa secara akurat 100% mengidentifikasinya sebagai "Positif COVID-19"
- Pada pasien negatif COVID-19 (true negative), sistem ini memiliki tingkat akurasi sebesar 80%
Jika dilihat secara statistik mungkin ini adalah plot data yang menjanjikan. Namun tidak ketika dilihat dari sisi medis. Karena 80% pada true negative ini adalah perbedaan yang sangat besar, artinya "Dari 100 orang yang positif COVID-19 ada 20 orang yang dinyatakan negatif".
Begitu pula dengan false positive, yang artinya pasien negatif didiagnosa sebagai pasien positif yang akhirnya menyebabkan pasien ini diisolasi/dikumpukan bersama pasien positif.
Tentu hal ini sangat berbahaya bagi keselamatan banyak pihak, terutama tenaga medis. Nah, karena alasan itulah masih dibutuhkan pengembangan lebih lanjut lagi sebelum sistem ini bisa digunakan secara luas dan pasti untuk kebutuhan medis.
Pada percobaan diatas yang dijadikan dataset hanyalah foto hasil X-Ray saja, sementara tidak menutup kemungkinan ada item lain yang dapat dijadikan dataset. Misalnya rekam medis atau riwayat penyakit, data geografis (wilayah merah, kuning, hijau) dan lain sebagainya.
****************
Sampai jumpa di artikel selanjutnya.
Tidak ada komentar:
Posting Komentar