Skip to content

mill-ornrakorn/Pneumonia-Detection-using-CNN

Repository files navigation

Pneumonia Detection using CNN 💻🩺

📁Dataset

Examples of Chest X-Rays

ข้อมูลนี้เกี่ยวกับภาพเอกซเรย์ปอด (Chest X-ray) มาจาก Chest X-Ray Images (Pneumonia) ใน kaggle ซึ่งประกอบไปด้วย 2 label คือ ภาพเอกซเรย์ปอดปกติ (Normal) และภาพเอกซเรย์ปอดอักเสบ (Pneumonia)

🔎ความท้าทาย:

❗❗ ข้อมูลชุดนี้ Imbalanced มาก ทั้ง train และ test set

  • Train set:

Examples of Chest X-Rays

Train set มีทั้งหมด 4710 ภาพ ประกอบด้วย ภาพ xray normal มี 1341 ภาพ (28.47 %) ส่วน pneumonia มี 3369 ภาพ (71.53 %) ซึ่งภาพ xray normal น้อยกว่า pneumonia อยู่ที่ 2028 ภาพ

  • Test set:

Examples of Chest X-Rays

Test set มีทั้งหมด 624 ภาพ ประกอบด้วย ภาพ xray normal มี 234 ภาพ (37.50 %) ส่วน pneumonia มี 390 ภาพ (62.50 %) ซึ่งภาพ xray normal น้อยกว่า pneumonia อยู่ที่ 156 ภาพ

🔧การจัดการกับ Imbalanced data:

การจัดการกับ Imbalanced data มีหลายวิธี เช่น Oversampling (การเพิ่มจำนวนข้อมูลของคลาสน้อย) Under-sampling (การลดจำนวนข้อมูลของคลาสหลัก) Cost-sensitive methods (พิจารณาจากค่าความผิดพลาดจากการแบ่งกลุ่ม (Misclassifiying examles)) การกำหนดค่าน้ำหนักให้กับคลาส (class weights) เป็นต้น

ที่มา: 1. จัดการข้อมูล Imbalanced ใน Scikit-learn 2. Solving Class Imbalance problem in CNN

📝ตารางสรุปผล:

No. Model Dataset Train set Test set Description Accuracy Precision Recall F1-Score ลองทำนายกับ 16 รูป*
1. CNN แบบแรก (ทำ Aug) ใช้ข้อมูลที่เท่ากัน โดยใช้วิธี Under-sampling class ละ 1340 ภาพ class ละประมาณ 234 ภาพ ทำ Augmentation เฉพาะ train set 84.3% 77.2% 98.4% 86.5% ทำนาย pneumonia ผิด 1 ภาพ และทำนาย normal ถูกทุกภาพ
2. CNN แบบแรก + class weight (ทำ Aug) ใช้ข้อมูลทั้งหมดเลย (Imbalanced) normal มี 1341 ภาพ (28.47 %) ส่วน pneumonia มี 3369 ภาพ (71.53 %) normal มี 234 ภาพ (37.50 %) ส่วน pneumonia มี 390 ภาพ (62.50 %) ทำ Augmentation เฉพาะ train set และใช้ class weight มากำหนดค่าน้ำหนักให้กับคลาส 92.7% 91.97% 96.9% 94% ทำนาย pneumonia ผิด 1 ภาพ และทำนาย normal ถูกทุกภาพ
3. CNN แบบแรก + class weight (ไม่ทำ Aug) ใช้ข้อมูลทั้งหมดเลย (Imbalanced) normal มี 1341 ภาพ (28.47 %) ส่วน pneumonia มี 3369 ภาพ (71.53 %) normal มี 234 ภาพ (37.50 %) ส่วน pneumonia มี 390 ภาพ (62.50 %) ไม่ได้ทำ Augmentation และใช้ class weight มากำหนดค่าน้ำหนักให้กับคลาส 76.9% 73.4% 98.97% 84.3% ทำนาย pneumonia ถูกทุกภาพ และทำนาย normal ผิด 3 ภาพ
4. VGG16 ใช้ข้อมูลที่เท่ากัน โดยใช้วิธี Under-sampling class ละ 1340 ภาพ class ละประมาณ 234 ภาพ ทำ Augmentation เฉพาะ train set 87.3% 88.98% 85.7% 87.3% ทำนาย pneumonia ผิด 4 ภาพ และทำนาย normal ถูกทุกภาพ
5. VGG16 ปรับแต่งด้วย Fine-tune ใช้ข้อมูลที่เท่ากัน โดยใช้วิธี Under-sampling class ละ 1340 ภาพ class ละประมาณ 234 ภาพ ทำ Augmentation เฉพาะ train set 87.3% 88.98% 85.7% 87.3% ทำนาย pneumonia ผิด 2 ภาพ และทำนาย normal ถูกทุกภาพ
6. ResNet50 ใช้ข้อมูลที่เท่ากัน โดยใช้วิธี Under-sampling class ละ 1340 ภาพ class ละประมาณ 234 ภาพ ทำ Augmentation เฉพาะ train set 83.3% 90.6% 75.1% 82.1% ทำนาย pneumonia ผิด 1 ภาพ และทำนาย normal ผิด 2 ภาพ
7. ResNet50 ปรับแต่งด้วย Fine-tune ใช้ข้อมูลที่เท่ากัน โดยใช้วิธี Under-sampling class ละ 1340 ภาพ class ละประมาณ 234 ภาพ ทำ Augmentation เฉพาะ train set 83.1% 91.4% 73.9% 81.7% ทำนาย pneumonia ผิด 1 ภาพ และทำนาย normal ผิด 2 ภาพ
8. DenseNet121 ใช้ข้อมูลที่เท่ากัน โดยใช้วิธี Under-sampling class ละ 1340 ภาพ class ละประมาณ 234 ภาพ ทำ Augmentation เฉพาะ train set 87.7% 84.7% 92.7% 88.5% ทำนาย pneumonia ผิด 2 ภาพ และทำนาย normal ผิด 1 ภาพ
9. DenseNet121 ปรับแต่งด้วย Fine-tune ใช้ข้อมูลที่เท่ากัน โดยใช้วิธี Under-sampling class ละ 1340 ภาพ class ละประมาณ 234 ภาพ ทำ Augmentation เฉพาะ train set 87.7% 83.5% 94.7% 88.7% ทำนาย pneumonia ผิด 1 ภาพ และทำนาย normal ผิด 1 ภาพ

*มี normal 8 ภาพ และ pneumonia 8 ภาพ ซึ่งเป็นภาพที่ model ยังไม่เคยเห็นมาก่อน

ดังนั้น Model ที่ 2. CNN แบบแรก + class weight (ทำ Aug) เป็นโมเดลที่มีประสิทธิภาพมากที่สุด โดยมีค่า Accuracy อยู่ที่ 92.7% และค่า F1-Score อยู่ที่ 94% ส่วน Transfer learning ในหมู่ที่เป็น model เดียวกัน อย่างเช่น VGG16 และ VGG16 ปรับแต่งด้วย Fine-tune จะได้ผลลัพธ์ออกมาที่คล้าย ๆ กัน แต่ทั้งนี้ทั้งนั้นถ้าหากมีเวลาจำกัด และข้อมูลมีจำนวนไม่มากนัก การนำ Transfer learning มาใช้ก็จะช่วยตรงจุดนี้ให้สะดวกและมีประสิทธิภาพมากขึ้น

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published