การวิเคราะห์ภาพ X-ray ด้วย AI

🔬 Deep Learning สำหรับการวินิจฉัยปอดอักเสบ

CNN + LLM + Explainable AI

ผศ.ดร.ณัฐโชติ พรหมฤทธิ์

📚 Agenda

  1. บทนำ ความท้าทายทางการแพทย์
  2. CNN หลักการและสถาปัตยกรรม
  3. Training Process การฝึกโมเดล
  4. การประเมินผล Metrics ที่สำคัญ
  5. LLM การวิเคราะห์เชิงคุณภาพ
  6. GradCAM Explainable AI
  7. Ensemble Model การรวมพลัง
  8. การนำไปใช้จริง

🏥 ความท้าทายในวงการแพทย์

ปัญหาที่พบ

  • ขาดแคลนรังสีแพทย์
  • การวินิจฉัยใช้เวลานาน
  • ความเหนื่อยล้าของแพทย์
  • ความแตกต่างในการแปลผล

AI เป็นทางออก

  • คัดกรองเบื้องต้น 24/7
  • ลดภาระงานแพทย์
  • เพิ่มความเร็วในการวินิจฉัย
  • มาตรฐานเดียวกัน

📊 ข้อมูลโปรเจกต์

Dataset Chest X-ray Images (Pneumonia)

  • ภาพทั้งหมด 5,856 ภาพ
  • ปอดปกติ 1,583 ภาพ (27%)
  • ปอดอักเสบ 4,273 ภาพ (73%)

การแบ่งข้อมูล

  • Training 4,192 ภาพ
  • Validation 1,040 ภาพ
  • Testing 624 ภาพ

🧠 Convolutional Neural Network (CNN)

Deep Learning สำหรับการมองเห็น

CNN คือ โครงข่ายประสาทเทียมที่เลียนแบบ Visual Cortex ในสมองมนุษย์

จุดเด่น

  • เรียนรู้ features อัตโนมัติ
  • จับรูปแบบที่ซับซ้อน

🏗️ สถาปัตยกรรม CNN

Layers หลัก 3 ประเภท

  1. Convolutional Layer 🔍

    • สแกนหา features (ขอบ, รูปร่าง, พื้นผิว)
  2. Pooling Layer 📉

    • ลดขนาดข้อมูล แต่เก็บข้อมูลสำคัญ
  3. Dense Layer 🧮

    • รวบรวมข้อมูลและตัดสินใจ

📐 โครงสร้างโมเดลในโปรเจกต์

Input (350×350×1)
    ↓
Conv2D (32) → MaxPool → Output: 174×174×32
    ↓
Conv2D (32) → MaxPool → Output: 86×86×32
    ↓
Conv2D (64) → MaxPool → Output: 42×42×64
    ↓
Conv2D (64) → MaxPool → Output: 20×20×64
    ↓
Conv2D (128, name='last_conv_layer') → 20×20×128
    ↓
Flatten → Dense(128) → Dense(64) → Dense(1, Sigmoid)
    ↓
Output: ความน่าจะเป็น 0-1

🎯 Convolutional Layer คืออะไร?

เปรียบเหมือนแว่นขยาย 🔍

Filter/Kernel = แว่นขยายขนาด 3×3 พิกเซล

การทำงาน

  1. เลื่อนแว่นขยายทีละจุดบนภาพ
  2. หา patterns ที่ตรงกัน
  3. สร้าง feature map

🎯 Convolutional Layer คืออะไร? (ต่อ)

ตัวอย่าง Features

  • Layer แรก - ขอบ, เส้น
  • Layer กลาง - รูปร่าง, มุม
  • Layer ท้าย - วัตถุ, โรค

💧 Pooling Layer

ลดขนาดแต่เก็บสาระสำคัญ

MaxPooling 2×2 = เลือกค่าสูงสุดจากทุก 2×2 พิกเซล

ประโยชน์

  • ลดขนาดภาพลง 50%
  • ลด parameters ที่ต้องเรียนรู้
  • ป้องกัน overfitting
  • เพิ่มความเร็ว

ตัวอย่าง 174×174 → 87×87

🔗 Dense Layer

ชั้นตัดสินใจ

Flatten แปลง 2D → 1D

  • 20×20×128 = 51,200 neurons

Hidden Layers วิเคราะห์ความสัมพันธ์

  • Dense(128) → Dense(64)

Output Layer ให้คำตอบ

  • Dense(1, Sigmoid) → 0-1
  • 0 = Normal, 1 = Pneumonia

🏋️ กระบวนการ Training

5 ขั้นตอนหลัก

  1. Data Preparation 📁
  2. Forward Propagation ➡️
  3. Loss Calculation 📊
  4. Backpropagation ⬅️
  5. Weight Update 🔄

วนซ้ำ 30 epochs

📁 Data Preparation

การเตรียมข้อมูล

1. Normalization

  • เปลี่ยนค่าพิกเซล 0-255 → 0-1
  • ช่วยให้เรียนรู้เร็วและเสถียร

2. Data Augmentation

  • Rotation, Zoom, Flip
  • สร้างภาพใหม่จากภาพเดิม
  • ป้องกัน overfitting

📁 Data Preparation (ต่อ)

การเตรียมข้อมูล (ต่อ)

3. Class Balancing

  • ปอดอักเสบมากกว่าปกติ 3 เท่า
  • ใช้ class weights ปรับสมดุล

⚖️ Class Imbalance Problem

ปัญหาข้อมูลไม่สมดุล

ข้อมูล

  • Normal 1,082 ภาพ (26%)
  • Pneumonia 3,110 ภาพ (74%)

ปัญหา โมเดลอาจทายว่าปอดอักเสบตลอด!

วิธีแก้ Class Weights

  • Normal weight = 1.94
  • Pneumonia weight = 0.67

📈 Learning Rate Scheduling

การปรับ Learning Rate อัตโนมัติ

ReduceLROnPlateau

  • ติดตาม validation loss
  • ถ้าไม่ดีขึ้น 2 epochs → ลด LR 10 เท่า
  • Min LR = 0.000001

ผลลัพธ์

  • Epoch 1-4 LR = 0.001
  • Epoch 5-8 LR = 0.0001
  • Epoch 9+ LR = 0.00001

📊 ผลการ Training

30 Epochs Performance

Epoch Training Acc Validation Acc
1 73.91% 91.99%
10 94.35% 95.31%
30 94.87% 95.12%

Final Test Accuracy ~91.5%

🎯 Confusion Matrix

ผลการทดสอบ 624 ภาพ

Predicted Normal Predicted Pneumonia
Actual Normal 204 (TN) ✅ 30 (FP) ❌
Actual Pneumonia 23 (FN) ❌ 367 (TP) ✅

Accuracy 91.51%

📏 Metrics ที่สำคัญ

การวัดประสิทธิภาพ

Accuracy = 91.51%

  • ทายถูกกี่เปอร์เซ็นต์

Precision = 92.44%

  • เมื่อบอกว่าป่วย ถูกกี่เปอร์เซ็นต์

Recall = 94.10%

  • จับผู้ป่วยจริงได้กี่เปอร์เซ็นต์

📏 Metrics ที่สำคัญ (ต่อ)

การวัดประสิทธิภาพ (ต่อ)

F1-Score = 93.27%

  • ค่าเฉลี่ยของ Precision และ Recall

📈 ROC Curve

Receiver Operating Characteristic

ROC Curve แสดงความสมดุลระหว่าง:

  • True Positive Rate (Sensitivity)
  • False Positive Rate (1-Specificity)

AUC = 0.9564

  • 1.0 = Perfect
  • 0.5 = Random guess

แปลผล: โมเดลมีประสิทธิภาพสูงมาก

🤖 Large Language Model (LLM)

AI ที่เข้าใจภาษาและภาพ

MedGemma-4B-IT

  • โมเดล 4 พันล้าน parameters
  • ฝึกด้วยข้อมูลทางการแพทย์
  • Multimodal (ข้อความ + ภาพ)

🤖 Large Language Model (LLM) (ต่อ)

AI ที่เข้าใจภาษาและภาพ (ต่อ)

ความสามารถ

  • อธิบายสิ่งที่เห็นในภาพ X-ray
  • ให้คำแนะนำทางการแพทย์
  • ตอบคำถามเชิงคลินิก

🔄 Transformer Architecture

หัวใจของ LLM

Self-Attention Mechanism

  • เข้าใจความสัมพันธ์ระหว่างส่วนต่างๆ
  • ให้ "ความสนใจ" กับส่วนที่สำคัญ

🔄 Transformer Architecture (ต่อ)

หัวใจของ LLM (ต่อ)

การทำงาน

  1. Tokenization แปลงเป็น tokens
  2. Embedding แปลงเป็นเวกเตอร์
  3. Attention หาความสัมพันธ์
  4. Generation สร้างคำตอบ

🔍 GradCAM Explainable AI

ทำให้ AI อธิบายได้

ปัญหา Black Box

  • AI บอกว่า "ปอดอักเสบ"
  • แต่แพทย์อยากรู้ว่า AI ดูตรงไหน?

GradCAM คือคำตอบ

  • สร้าง Heatmap แสดงจุดที่ AI สนใจ
  • เหมือน Highlighter บนภาพ

🧮 หลักการ GradCAM

Gradient-weighted Class Activation Mapping

5 ขั้นตอน

  1. Forward Pass - ส่งภาพผ่านโมเดล
  2. Backward Pass - คำนวณย้อนกลับ
  3. Calculate Gradients - หาความสำคัญ
  4. Create Heatmap - สร้างแผนที่ความร้อน
  5. Overlay - ซ้อนบนภาพต้นฉบับ

🎨 การแปลผล Heatmap

สีบอกความสำคัญ

การแปลสี

  • 🔴 แดง = AI สนใจมาก (น่าจะเป็นจุดติดเชื้อ)
  • 🟡 เหลือง = AI สนใจปานกลาง
  • 🔵 น้ำเงิน = AI ไม่สนใจ

🎨 การแปลผล Heatmap (ต่อ)

สีบอกความสำคัญ (ต่อ)

ความน่าเชื่อถือ

  • ✅ สีแดงที่ปอด = มั่นใจสูง
  • ⚠️ สีแดงกระจาย = ติดเชื้อลุกลาม?
  • ❌ สีแดงนอกปอด = อาจมีปัญหา

🔬 ความสำคัญของ GradCAM

ในทางการแพทย์

1. สร้างความเชื่อมั่น ✅

  • แพทย์เห็นว่า AI มองถูกจุด

2. ตรวจสอบความถูกต้อง 🔍

  • ดักจับเมื่อ AI มองผิด

3. เครื่องมือการสอน 📚

  • นักศึกษาเห็นจุดสำคัญ

⚠️ ข้อควรระวัง GradCAM

สิ่งที่ต้องจำ

  1. ไม่ใช่การวินิจฉัย

    • เป็นแค่การแสดงว่า AI มองอะไร
  2. ต้องมีความรู้ทางการแพทย์

    • ในการแปลผล heatmap
  3. อาจมี false positives

    • AI อาจเห็น pattern ที่มนุษย์มองไม่เห็น

⚠️ ข้อควรระวัง GradCAM (ต่อ)

สิ่งที่ต้องจำ (ต่อ)

  1. ขึ้นกับคุณภาพโมเดล
    • โมเดลไม่ดี = GradCAM ไม่มีความหมาย

🔗 Ensemble Model

การรวมพลัง CNN + LLM

CNN Model 🧠

  • วิเคราะห์รูปแบบในภาพ
  • Output: ความน่าจะเป็น
  • Accuracy: 91.45%

MedGemma LLM 💬

  • อธิบายภาพเชิงคุณภาพ
  • Output: คำอธิบาย
  • ให้เหตุผลที่เข้าใจได้

ผลลัพธ์ การวินิจฉัยที่แม่นยำพร้อมคำอธิบาย

🏥 การใช้งานจริง

ขั้นตอนการใช้ระบบ

  1. ถ่าย X-ray 📷
  2. อัปโหลดภาพ ⬆️
  3. AI วิเคราะห์ 🤖
  4. แสดงผลลัพธ์ 📊
  5. แพทย์ตรวจสอบ 👨‍⚕️

เวลาทั้งหมด < 30 วินาที

💻 Implementation Overview

เครื่องมือที่ใช้

Deep Learning Framework

  • TensorFlow/Keras

Libraries หลัก

  • NumPy, Pandas (จัดการข้อมูล)
  • Matplotlib, Plotly (Visualization)
  • Scikit-learn (Metrics)

💻 Implementation Overview (ต่อ)

เครื่องมือที่ใช้ (ต่อ)

Libraries หลัก (ต่อ)

  • Transformers (LLM)
  • tf-keras-vis (GradCAM)

📚 Code Structure

โครงสร้างหลักใน Notebook

  1. Data Loading & Exploration

    • kagglehub download dataset
    • ตรวจสอบจำนวนภาพ
  2. Data Preprocessing

    • ImageDataGenerator
    • Data augmentation

📚 Code Structure (ต่อ)

โครงสร้างหลักใน Notebook (ต่อ)

  1. Model Building
    • Functional API
    • Conv2D, MaxPooling, Dense

🔧 Training Configuration

การตั้งค่าสำคัญ

Image Settings

  • Size 350×350
  • Color Grayscale
  • Batch size 32

🔧 Training Configuration (ต่อ)

การตั้งค่าสำคัญ (ต่อ)

Training Settings

  • Optimizer Adam
  • Loss Binary Crossentropy
  • Epochs 30
  • Learning Rate Adaptive

📊 Model Evaluation

การประเมินผลโมเดล

Evaluation Methods

  1. Test set evaluation
  2. Confusion Matrix
  3. Classification Report
  4. ROC/AUC Analysis

📊 Model Evaluation (ต่อ)

การประเมินผลโมเดล (ต่อ)

Visualization

  • Training history plots
  • Prediction distribution
  • GradCAM heatmaps

🚀 Future Improvements

การพัฒนาต่อไป

Model Enhancement

  • Transfer Learning (ResNet, EfficientNet)
  • Ensemble ของหลายโมเดล
  • Cross-validation

🚀 Future Improvements (ต่อ)

การพัฒนาต่อไป (ต่อ)

Features เพิ่มเติม

  • Multi-class classification
  • Severity scoring
  • Report generation

📌 Key Takeaways

สิ่งสำคัญที่ควรจำ

  1. CNN เหมาะสำหรับวิเคราะห์ภาพทางการแพทย์
  2. Data Imbalance ต้องจัดการด้วย class weights
  3. Multiple Metrics ดูหลายตัวชี้วัด ไม่ใช่แค่ accuracy
  4. GradCAM ช่วยสร้างความเชื่อมั่น
  5. Ensemble รวมจุดแข็งของหลายโมเดล
  6. แพทย์ตรวจสอบ เสมอก่อนการรักษา

⚠️ ข้อความสำคัญ

Disclaimer

ระบบ AI นี้พัฒนาขึ้นเพื่อเป็นเครื่องมือช่วยแพทย์

  • ✅ ใช้สำหรับคัดกรองเบื้องต้น
  • ✅ ช่วยจัดลำดับความเร่งด่วน
  • ❌ ไม่สามารถใช้แทนการวินิจฉัยโดยแพทย์
  • ❌ ไม่ใช้ตัดสินใจรักษาโดยลำพัง

ผลการวิเคราะห์ต้องผ่านการพิจารณาจากแพทย์เสมอ