Spaces:
Sleeping
Sleeping
File size: 8,625 Bytes
8f59aab |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 |
# 📚 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!
|