Atasi deteksi COVID dengan Lightning Flash dan IceVision – Menuju AI — Publikasi AI dan Teknologi Terkemuka di Dunia

Pengarang: Dolphin Borovec

Foto ilustrasi oleh LinkedIn Sales Navigator dari Pexels.

Pembelajaran Mendalam

Mengatasi Tantangan Deteksi Kaggle COVID dengan Lightning Flash dan IceVision

Posting ini membahas bagaimana kami mendekati tantangan Deteksi COVID-19 Kaggle SIIM-FISABIO-RSNA menggunakan Lightning Flash dan dukungan barunya untuk koleksi model dan tulang punggung IceVision yang kaya.

Deteksi Objek adalah tugas Computer Vision yang bertujuan untuk mendeteksi dan mengklasifikasikan objek individu dalam sebuah adegan atau gambar. Ada berbagai arsitektur model untuk Deteksi Objek, tetapi dua yang paling umum adalah proposal wilayah (misalnya RCNN Cepat/Lebih Cepat) dan deteksi sekali pakai (misalnya SSD, YOLO).

Tim Lightning Flash baru-baru ini merilis integrasi baru yang menarik dengan perpustakaan IceVision Object Detection yang memungkinkan lusinan tulang punggung canggih baru yang dapat disetel dengan baik dan menyimpulkan hanya beberapa baris kode.

Deteksi Objek – Dokumentasi Flash

Kami berpartisipasi dalam Kaggle: tantangan deteksi/klasifikasi COVID19 untuk menampilkan integrasi baru, yang menghadirkan kumpulan data CT scan yang realistis dan menantang dari lebih dari enam ribu pasien.

Lihat kernel Kaggle kami — Deteksi COVID dengan Lightning Flash ️

Deteksi Covid dengan Lightning Flash ️

Semua cuplikan kode dan visualisasi adalah bagian dari repositori sampel ini dan dapat diinstal sebagai pip install https://github.com/Borda/kaggle_COVID-detection/archive/refs/heads/main.zip

Tantangan Deteksi COVID

Kaggle: Deteksi/klasifikasi COVID19 baru-baru ini bertujuan untuk memfasilitasi pemeriksaan medis dan pada akhirnya membantu para ahli/dokter medis dalam membuat diagnosis. Tantangannya adalah tugas klasifikasi citra/deteksi objek hibrid. Pertama, Anda perlu mengidentifikasi apakah CT scan yang diberikan memiliki salah satu dari empat kelainan dan kemudian memberikan kumpulan kotak pembatas yang menunjukkan di mana kelainan tersebut ada untuk membenarkan diagnosis.

Sementara tugas disajikan sebagai tugas Deteksi dan Klasifikasi hibrida, itu juga dapat dimodelkan sebagai masalah deteksi objek tradisional di mana kelas gambar ditentukan oleh agregasi kelas mayoritas dari kelainan yang terdeteksi.

Distribusi label pada set data pelatihan.

Sebuah Studi mewakili pasien anonim yang unik dengan pemindaian Computed Tomography (CT) tunggal. Satu gambar DICOM harus mewakili setiap pemindaian. Penting untuk dicatat bahwa beberapa gambar beranotasi secara tidak sengaja diberi label yang tidak lengkap. Gambar-gambar ini dan anotasinya kemudian diduplikasi dan diperbaiki, seperti yang dibahas di utas ini. Sebagai bagian dari tantangan, anotasi yang tidak lengkap dan gambar duplikat perlu disaring dari kumpulan data sebelum pelatihan.

Anotasi disimpan dalam dua tabel CSV terpisah. Tabel pertama berisi pengkodean satu-panas yang mewakili kelas kelainan dari setiap gambar dan tabel kedua berisi daftar semua kotak pembatas, jika ada, dalam gambar.

Memuat gambar DICOM dengan anotasi

Pemindaian CT disediakan dalam file DICOM, termasuk header dengan beberapa metadata dan bitmap gambar terkompresi.

Untuk memuat data gambar, kami menggunakan paket pydicom, lihat contoh kode berikut cara melakukannya:

https://medium.com/media/487dd8418f71dd32f0c2e51cecb44b1f/href

Setelah memuat gambar, kami menggabungkan dua tabel anotasi berdasarkan ID Studi. Kode di atas menampilkan beberapa contoh pemindaian dari setiap kelas dan menggambar kotak pembatas jika tersedia di metadata:

Visualisasi beberapa sampel per kelas (baris) dengan kotak pembatas deteksi yang dicat dari anotasi.

Seperti yang diharapkan, tidak ada kotak pembatas dalam pemindaian negatif. Lebih menarik lagi, sebagian besar pemindaian positif mengandung lebih dari satu deteksi per pemindaian.

Pengamatan tambahan pada hubungan antara deteksi dan label

Mari kita lihat dataset dari perspektif penghitungan kotak pembatas beranotasi. Seperti yang bisa dilihat dari sampel per kelas, ada beberapa kasus positif tanpa deteksi COVID-19.

Gambar di bawah menunjukkan berapa banyak kotak pembatas yang ada di setiap gambar per kelas tertentu. Akhirnya, pengamatan ini dapat digunakan dalam heuristik agregasi akhir.

Diagram lingkaran di bawah ini menunjukkan distribusi kelainan beranotasi di berbagai studi. Seperti yang diharapkan, tidak ada penelitian negatif yang mengandung anotasi kotak pembatas.

Beri label histogram menurut no anotasi atau deteksi 1+ per gambar.

Namun, 5% dari gambar yang mengandung kelainan tidak memiliki anotasi kotak pembatas. Ini berarti bahwa meskipun kita dapat memperkirakan kelas gambar yang diberikan menggunakan deteksi objek, gambar yang bising ini akan menyulitkan untuk memodelkan tugas secara sempurna dengan pendekatan ini yang menjelaskan mengapa banyak yang menggunakan pendekatan klasifikasi gambar/deteksi objek hibrida.

Flash Baseline dengan EfficientDet

Flash adalah Pabrik AI untuk pembuatan prototipe cepat, pembuatan dasar, penyempurnaan, dan pembelajaran mendalam untuk memecahkan masalah bisnis dan ilmiah. Itu dibangun di atas perpustakaan Pytorch Lightning yang kuat untuk memfasilitasi pelatihan dalam skala besar.

Dalam Deteksi Objek Flash, model diinisialisasi dengan dua argumen utama Backbone dan Head, yang berasal dari arsitektur/komposisi model:

Backbone — jaringan klasifikasi yang telah dilatih sebelumnya seperti ResNet50, EffieientNet digunakan untuk ekstraksi fitur dalam model deteksi objek. Head — mendefinisikan arsitektur Object Detector seperti Faster-RCNN, RetinaNet, dll.

Deteksi Objek – Dokumentasi Flash

Mari kita lihat skema kepala EfficientDet untuk memahami argumen ini dengan lebih baik, menggunakan tulang punggung EfficientNet.

arsitektur EfficientDet. EfficientDet menggunakan EfficientNet; sumber: EfficientDet: Menuju Deteksi Objek yang Skalabel dan Efisien.

Dengan Flash, kami hanya memerlukan beberapa baris kode untuk menyempurnakan metode canggih seperti EfficientDet pada kumpulan data kompetisi kami. Yang perlu Anda lakukan hanyalah mengonversi label deteksi objek Kaggle ke format COCO, menyetel model dan parameter pelatihan, dan memulai pelatihan…

1. Konversi Dataset ke format COCO

Bekerja dengan anotasi sempurna dalam praktiknya cukup langka, dan seringkali hanya terjadi pada kumpulan data standar/pembandingan. Integrasi IceVision dan Flash saat ini menggunakan format dataset COCO. Format COCO terdiri dari folder dengan gambar mentah dan file anotasi JSON, yang berisi metadata berikut:

Jalur dan ukuran gambar relatif untuk setiap gambar dalam kumpulan data Daftar kotak pembatas dan indeks kelasnya untuk setiap gambar Pemetaan antara indeks dan label kelas kotak pembatas

Di COCO, kotak pembatas terdiri dari koordinat sudut kanan atas dan lebar dan tinggi kotak pembatas di dalam gambar. Kita perlu menulis skrip khusus yang melakukan konversi ini dari anotasi kompetisi ke format COCO. Langkah-langkah ini dijelaskan dalam buku catatan yang disediakan, dan kodenya dapat ditemukan di repositori yang disediakan.

2. Buat DataModule

Di Flash, metode from_coco memuat gambar COCO dan file anotasi yang dibuat pada langkah terakhir. Kami dapat menyediakan abatch_size untuk sepenuhnya menggunakan GPU kami dan image_size untuk mengubah ukuran gambar kami untuk model kami.

Cuplikan kode dari skrip pelatihan Tugas Deteksi Objek Flash.

3. Bangun Tugas

Untuk membangun Tugas Deteksi Objek, kami memilih model tulang punggung. Dalam contoh ini, kami menggunakan EfficientDet yang canggih dengan tulang punggung EfficientNet D5. Tingkat pembelajaran yang kami setel secara eksperimental ke 1e-5, kami dapat mengoptimalkan nilai ini menggunakan pencarian hyper-parameter.

Cuplikan kode dari skrip pelatihan.

4. Buat Pelatih dan sempurnakan modelnya

Flash’s Trainer mewarisi dari Lightning’s Trainer, memungkinkan kami memanfaatkan semua flag trainer yang kami kenal dan sukai secara efisien. Untuk melatih, kami menggunakan metode finetune, yang mengambil strategi argumen yang mengonfigurasi proses fine-tuning. Misalnya, strategi thefreeze_unfreeze di bawah membekukan tulang punggung selama 10 epoch pertama untuk memperbarui hanya kepala dan kemudian memperluas pelatihan ke seluruh model.

Cuplikan kode dari skrip pelatihan.

Dengan menggunakan logger Tensorboard bawaan, kita dapat mengamati proses pelatihan secara real-time dan melihat bagaimana kerugian pelatihan berkurang.

Di akhir pelatihan, kami menyimpan model fine-tuned sehingga kami dapat membuat kesimpulan.

5. Muat model dan Jalankan prediksi

Sekarang kami memiliki model yang terlatih. Saatnya untuk mengevaluasi kinerja model kita. Kode di bawah ini menunjukkan kasus penggunaan sederhana tentang bagaimana Flash dapat memuat model yang telah dilatih sebelumnya dari file dan memprediksi pada kumpulan data pengujian:

Cuplikan kode dari skrip prediksi.

Itu dia; di pos, Anda belajar caranya

Lakukan Analisis Data Eksplorasi pada kumpulan data Deteksi Objek. Latih model Deteksi Objek canggih dari ujung ke ujung dengan Flash dan IceVision. Evaluasi model terlatih untuk menghasilkan Pengajuan Kaggle untuk Kaggle: tantangan deteksi/klasifikasi COVID19.

Nantikan kisah-kisah berikut Dengan Petir dan Kilat!

Flash 0.5 — Pabrik AI PyTorch Anda!

tentang Penulis

Jirka Borovec memegang gelar Ph.D. di Computer Vision dari CTU di Praha. Dia telah bekerja di Machine Learning dan Data Science selama beberapa tahun di beberapa startup dan perusahaan IT. Dia senang menjelajahi masalah dunia yang menarik dan menyelesaikannya dengan teknik-teknik mutakhir, dan mengembangkan proyek-proyek sumber terbuka.

Mengatasi deteksi COVID dengan Lightning Flash dan IceVision awalnya diterbitkan di Towards AI on Medium, di mana orang-orang melanjutkan percakapan dengan menyoroti dan menanggapi cerita ini.

Diterbitkan melalui Menuju AI