AutoDeploy
Fix: Python 3.8 compatibility (use Tuple from typing) + Gradio 4.48.1 security update
8f59aab
# 📚 Medical Image Segmentation - File Index
## 🎯 Quick Navigation
### 🚀 Bắt Đầu Nhanh (3 lệnh)
```bash
# 1. Chạy ứng dụng web
python app.py
# 2. Hoặc chạy Jupyter demo
jupyter notebook demo.ipynb
# 3. Hoặc train model mới
python train.py --data ./prepared_data
```
---
## 📋 Danh Sách File & Công Dụng
### 🔴 **Core Scripts (Chính)**
| File | Mô Tả | Lệnh |
|------|-------|------|
| **app.py** | Web interface (Gradio) | `python app.py` |
| **demo.ipynb** | Interactive Jupyter demo | `jupyter notebook demo.ipynb` |
| **download_dataset.py** | Tải dataset từ Kaggle | `python download_dataset.py` |
| **prepare_dataset.py** | Chuẩn bị data (split, RLE decode) | `python prepare_dataset.py` |
| **train.py** | Train SegFormer model | `python train.py --data ./prepared_data` |
| **test.py** | Test & evaluation | `python test.py --model ./models/best_model` |
### 📚 **Documentation (Tài Liệu)**
| File | Nội Dung |
|------|---------|
| **TRAINING_GUIDE.md** | 📖 Hướng dẫn chi tiết từng bước |
| **IMPLEMENTATION_SUMMARY.md** | 🎉 Tóm tắt triển khai |
| **FILE_INDEX.md** | 📚 File này - danh sách file |
| **README.md** | ℹ️ Info gốc của dự án |
### 🗂️ **Directories (Thư Mục)**
| Thư Mục | Nội Dung |
|---------|---------|
| **segformer_trained_weights/** | Pre-trained model weights |
| **samples/** | Sample images để test |
| **data/** | Raw dataset (sau tải) |
| **prepared_data/** | Processed dataset (sau chuẩn bị) |
| **models/** | Trained models (sau training) |
| **test_results/** | Test predictions (sau test) |
---
## 🎯 Hướng Dẫn Sử Dụng Theo Mục Đích
### 📥 **Chỉ muốn test demo**
```bash
# 1. Chạy app web
python app.py
# Truy cập: http://127.0.0.1:7860
# 2. Hoặc dùng notebook
jupyter notebook demo.ipynb
```
**File:** `app.py`, `demo.ipynb`, `segformer_trained_weights/`
---
### 📖 **Muốn hiểu cách hoạt động**
**Đọc các file tài liệu theo thứ tự:**
1. Bắt đầu: `IMPLEMENTATION_SUMMARY.md`
2. Chi tiết: `TRAINING_GUIDE.md`
3. Code: `app.py` hoặc `demo.ipynb`
---
### 🏋️ **Muốn train model mới**
```bash
# Step 1: Tải dataset (yêu cầu Kaggle API)
python download_dataset.py
# Step 2: Chuẩn bị dữ liệu
python prepare_dataset.py
# Step 3: Train model
python train.py --epochs 20 --batch-size 8
# Step 4: Test model
python test.py --model ./models/best_model --visualize
```
**Files:** `download_dataset.py`, `prepare_dataset.py`, `train.py`, `test.py`
---
### 🧪 **Chỉ muốn test model hiện có**
```bash
python test.py \
--model ./segformer_trained_weights \
--test-images ./samples \
--visualize
```
**File:** `test.py`
---
## 🔧 Script Chi Tiết
### **download_dataset.py**
Tải UW-Madison GI Tract dataset từ Kaggle
- ✅ Kiểm tra Kaggle API
- ✅ Tải ~10GB data
- ✅ Giải nén
- ✅ Verify structure
**Yêu cầu:** Kaggle API key (https://www.kaggle.com/account)
```bash
python download_dataset.py
```
---
### **prepare_dataset.py**
Xử lý RLE encoding thành image masks
- ✅ Giải mã RLE
- ✅ Chia train/val/test (80/10/10)
- ✅ Tạo folder structure
- ✅ Thống kê data
```bash
python prepare_dataset.py
```
**Đầu vào:** `data/` (từ Kaggle)
**Đầu ra:** `prepared_data/`
---
### **train.py**
Train SegFormer model mới
- ✅ Load pre-trained SegFormer-b0
- ✅ Custom training loop
- ✅ Validation mỗi epoch
- ✅ Save best model
- ✅ Loss history
```bash
python train.py \
--data ./prepared_data \
--epochs 20 \
--batch-size 8 \
--learning-rate 1e-4
```
**Tham số:**
- `--data`: Path to prepared_data
- `--output-dir`: Model output (mặc định: `./models`)
- `--epochs`: Số epoch (mặc định: 10)
- `--batch-size`: Batch size (mặc định: 8)
- `--learning-rate`: Learning rate (mặc định: 1e-4)
- `--num-workers`: DataLoader workers (mặc định: 4)
**Đầu ra:** `models/best_model/`, `models/final_model/`
---
### **test.py**
Test model & tính metrics
- ✅ Evaluate trên test set
- ✅ Tính mIoU, Precision, Recall
- ✅ Per-class metrics
- ✅ Tạo visualizations
- ✅ Export JSON results
```bash
python test.py \
--model ./models/best_model \
--test-images ./prepared_data/test_images \
--test-masks ./prepared_data/test_masks \
--output-dir ./test_results \
--visualize \
--num-samples 10
```
**Tham số:**
- `--model`: Path to model (bắt buộc)
- `--test-images`: Test images folder (bắt buộc)
- `--test-masks`: Test masks folder (bắt buộc)
- `--output-dir`: Output folder (mặc định: `./test_results`)
- `--visualize`: Tạo visualizations (flag)
- `--num-samples`: Số samples visualize (mặc định: 5)
**Đầu ra:** `test_results/evaluation_results.json`, visualizations
---
### **app.py**
Web interface sử dụng Gradio
- ✅ Upload ảnh
- ✅ Real-time prediction
- ✅ Color-coded segmentation
- ✅ Confidence scores
- ✅ Sample images
```bash
python app.py
```
**Truy cập:** http://127.0.0.1:7860
**Cộn:** 🔵 Blue = Stomach, 🟢 Green = Small bowel, 🔴 Red = Large bowel
---
### **demo.ipynb**
Jupyter notebook interactive
- Section 1: Imports & Config
- Section 2: Load model
- Section 3: Preprocessing
- Section 4: Prediction function
- Section 5: Load samples
- Section 6: Visualize results
- Section 7: Create overlays
- Section 8: Batch evaluation
```bash
jupyter notebook demo.ipynb
```
---
## 📚 Tài Liệu
### **TRAINING_GUIDE.md**
Hướng dẫn hoàn chỉnh:
- 📖 Tổng quan dự án
- 🚀 Quick start
- 📚 Step-by-step guide
- 🧪 Testing & evaluation
- 💻 Custom model usage
- 📊 Dataset format
- 🔧 Troubleshooting
- 📈 Performance tips
### **IMPLEMENTATION_SUMMARY.md**
Tóm tắt triển khai:
- ✅ Những gì đã triển khai
- 🚀 Full workflow
- 📊 Feature table
- 💡 Quick examples
- ✨ Highlights
---
## 🎓 Learning Path
### **Beginner (Bắt đầu):**
1. Đọc: `IMPLEMENTATION_SUMMARY.md`
2. Chạy: `python app.py`
3. Thử: `jupyter notebook demo.ipynb`
### **Intermediate (Trung bình):**
1. Đọc: `TRAINING_GUIDE.md`
2. Chạy: `python download_dataset.py``prepare_dataset.py`
3. Understand: Code trong `train.py`
### **Advanced (Nâng cao):**
1. Sửa hyperparameters trong `train.py`
2. Thêm data augmentation
3. Thử architectures khác
4. Fine-tune cho use case của bạn
---
## 🎯 Cheat Sheet
| Mục đích | Lệnh |
|---------|------|
| Demo web | `python app.py` |
| Jupyter | `jupyter notebook demo.ipynb` |
| Tải data | `python download_dataset.py` |
| Prep data | `python prepare_dataset.py` |
| Train | `python train.py --epochs 20` |
| Test | `python test.py --model ./models/best_model --visualize` |
| Help | Xem `--help`: `python train.py --help` |
---
## 📞 Troubleshooting
**Nếu gặp lỗi:**
1. Xem error message chi tiết
2. Check `TRAINING_GUIDE.md` phần Troubleshooting
3. Verify folders & permissions
4. Kiểm tra Python version (3.8+)
**Common issues:**
- GPU not found? → Model sẽ auto switch sang CPU
- Kaggle error? → Xem hướng dẫn setup API key
- Out of memory? → Giảm `--batch-size`
- Slow? → Tăng `--num-workers`
---
## 📊 Model Info
**Kiến trúc:** SegFormer-B0 (HuggingFace)
**Classes:** 4 (Background + 3 organs)
**Input:** 288x288 RGB images
**Normalization:** ImageNet (mean, std)
**Framework:** PyTorch
**Inference:** ~100ms per image (CPU)
---
## 🎨 Color Legend
```
🔴 Red (#FF0000) = Large bowel
🟢 Green (#009A17) = Small bowel
🔵 Blue (#007fff) = Stomach
⚪ White (0) = Background
```
---
## 📈 Expected Results
- **mIoU:** 0.60-0.75 (depending on training)
- **Precision:** 0.70-0.85
- **Recall:** 0.60-0.80
- **Inference time:** 0.1-0.5s per image
---
## 🔗 Links
- 📚 HuggingFace SegFormer: https://huggingface.co/docs/transformers/model_doc/segformer
- 🔗 Gradio: https://www.gradio.app/
- 🔬 PyTorch: https://pytorch.org/
- 🏆 Kaggle Challenge: https://www.kaggle.com/competitions/uw-madison-gi-tract-image-segmentation
---
## ✨ Features Checklist
- ✅ Web interface (Gradio)
- ✅ Jupyter notebook
- ✅ Dataset download (Kaggle)
- ✅ Data preparation (RLE decode)
- ✅ Model training (SegFormer)
- ✅ Model testing & evaluation
- ✅ Confidence scores
- ✅ Visualizations
- ✅ Batch processing
- ✅ Complete documentation
- ✅ Error handling
- ✅ GPU/CPU support
---
**Ready to go! 🚀**
Chọn một script ở trên và bắt đầu!