259 lines
7.4 KiB
Markdown
Executable File
259 lines
7.4 KiB
Markdown
Executable File
# 📊 Baseline Tracking Integration Guide
|
|
|
|
## ✅ Đã Hoàn Thành
|
|
|
|
### 🌥️ Cloud Removal Training - Baseline PSNR Tracking
|
|
|
|
#### 1. Backend API Updates
|
|
|
|
**File: `api_server.py`**
|
|
- ✅ Thêm `cloud_training_status` global với tracking chi tiết:
|
|
- `current_epoch`, `total_epochs`
|
|
- `train_loss`, `val_loss`, `val_psnr`
|
|
- `baseline_psnr`, `improvement`
|
|
- `history` arrays cho plotting
|
|
|
|
- ✅ Endpoint mới:
|
|
- `GET /api/cloud-removal/training/status` - Lấy trạng thái real-time
|
|
- `POST /api/cloud-removal/training/stop` - Dừng training
|
|
|
|
- ✅ Cập nhật `run_cloud_training()`:
|
|
- Callback function `update_status()` để track mỗi epoch
|
|
- Return đầy đủ: `val_psnrs`, `baseline_psnr`, `improvement`
|
|
|
|
**File: `train_cloud_removal.py`**
|
|
- ✅ Thêm parameter `status_callback` vào `train_cloud_removal_model()`
|
|
- ✅ Gọi callback sau mỗi epoch với metrics đầy đủ
|
|
- ✅ Return thêm `val_psnrs` và `baseline_psnr`
|
|
- ✅ Tính toán baseline PSNR **một lần** trước training
|
|
- ✅ So sánh model PSNR vs baseline mỗi epoch
|
|
|
|
#### 2. Frontend Web Interface Updates
|
|
|
|
**File: `cloud_training_interface.html`**
|
|
- ✅ Thêm Chart.js CDN
|
|
- ✅ Metrics Dashboard với 4 cards:
|
|
- 📈 Model PSNR (real-time)
|
|
- 📉 Baseline PSNR (cận dưới cố định)
|
|
- ⚡ Improvement (Model - Baseline)
|
|
- 🎯 Progress (Epochs)
|
|
|
|
- ✅ Real-time PSNR Chart:
|
|
- Line chart với 3 datasets
|
|
- Model PSNR (blue line)
|
|
- Baseline PSNR (red dashed line)
|
|
- Improvement (green line, right axis)
|
|
|
|
- ✅ Auto-polling status mỗi 2 giây
|
|
- ✅ Live logs với emoji indicators
|
|
- ✅ Stop training button
|
|
- ✅ Model list hiển thị PSNR + Baseline
|
|
|
|
## 🚀 Cách Sử Dụng
|
|
|
|
### 1. Khởi động API Server
|
|
|
|
```bash
|
|
cd /media/x79/2A7D-FAA0/remote-sensing
|
|
python api_server.py
|
|
```
|
|
|
|
### 2. Mở Web Interface
|
|
|
|
Truy cập: http://localhost:8000/cloud-training
|
|
|
|
### 3. Start Training
|
|
|
|
1. Điền các thông số:
|
|
- Data Directory: `winter_dataset`
|
|
- Model Name: `cloud_removal_unet`
|
|
- Batch Size: `8`
|
|
- Epochs: `50`
|
|
- Learning Rate: `0.0001`
|
|
- ✅ Use GPU
|
|
- ✅ Use S1
|
|
|
|
2. Click **🚀 Start Training**
|
|
|
|
### 4. Theo dõi Real-time
|
|
|
|
Bạn sẽ thấy:
|
|
|
|
```
|
|
📊 Training Status - Real-time Baseline PSNR Tracking
|
|
|
|
┌─────────────────┬─────────────────┬─────────────────┬─────────────────┐
|
|
│ 📈 Model PSNR │ 📉 Baseline PSNR│ ⚡ Improvement │ 🎯 Progress │
|
|
│ 25.43 dB │ 18.50 dB │ +6.93 dB │ 15/50 │
|
|
│ (higher better) │ (cận dưới) │ (Model-Baseline)│ (30%) │
|
|
└─────────────────┴─────────────────┴─────────────────┴─────────────────┘
|
|
|
|
📊 PSNR vs Baseline - Live Chart
|
|
[Biểu đồ real-time hiển thị Model PSNR vượt qua Baseline]
|
|
|
|
Training Logs:
|
|
[10:15:23] ✅ Training started: 20260223_101523
|
|
[10:15:25] Epoch 5: Model PSNR=22.15dB, Baseline=18.50dB, Improvement=✅ +3.65dB
|
|
[10:15:30] Epoch 10: Model PSNR=24.80dB, Baseline=18.50dB, Improvement=✅ +6.30dB
|
|
```
|
|
|
|
### 5. Hiểu Kết Quả
|
|
|
|
- **Baseline PSNR** = PSNR nếu ta giữ nguyên ảnh cloudy (không làm gì)
|
|
- **Model PSNR** = PSNR giữa output model và ground truth clean
|
|
- **Improvement** = Model PSNR - Baseline PSNR
|
|
|
|
#### ✅ Model TỐT:
|
|
```
|
|
Model PSNR: 25.43 dB
|
|
Baseline: 18.50 dB
|
|
→ Improvement: +6.93 dB (37.5%) ✅
|
|
```
|
|
|
|
#### ❌ Model TỆ:
|
|
```
|
|
Model PSNR: 16.20 dB
|
|
Baseline: 18.50 dB
|
|
→ Improvement: -2.30 dB (-12.4%) ❌
|
|
→ Model đang làm TỒI hơn là không làm gì!
|
|
```
|
|
|
|
## 📈 Metrics Visualization
|
|
|
|
### Terminal Output
|
|
```bash
|
|
================================================================
|
|
📏 TÍNH CẬN DƯỚI (BASELINE) - CHỈ TÍNH 1 LẦN DUY NHẤT
|
|
================================================================
|
|
🔍 Đang tính Cận dưới (Baseline PSNR)...
|
|
Baseline = PSNR(s2_cloudy, s2_clean)
|
|
Calculating Baseline: 100%|████████████| 10/10 [00:05<00:00, 1.85it/s]
|
|
|
|
✅ Cận dưới (Baseline PSNR): 18.50 dB
|
|
→ Đây là 'thanh thước đo' - model phải vượt qua giá trị này!
|
|
================================================================
|
|
|
|
Epoch 1 Summary:
|
|
📊 PSNR Comparison:
|
|
├─ Model PSNR: 22.15 dB
|
|
├─ Baseline PSNR: 18.50 dB (cận dưới)
|
|
└─ Improvement: +3.65 dB (+19.7%)
|
|
✅ Model đang TỐT HƠN baseline!
|
|
```
|
|
|
|
### Web Interface Chart
|
|
|
|
Biểu đồ sẽ hiển thị:
|
|
- **Blue line** (solid): Model PSNR - phải tăng dần
|
|
- **Red line** (dashed): Baseline PSNR - nằm ngang
|
|
- **Green area**: Vùng Model > Baseline (tốt)
|
|
- **Red area**: Vùng Model < Baseline (tệ)
|
|
|
|
## 🛠️ Advanced Features
|
|
|
|
### 1. Tensorboard Integration
|
|
|
|
Metrics cũng được log vào Tensorboard:
|
|
|
|
```bash
|
|
tensorboard --logdir=cloud_removal_model/runs
|
|
```
|
|
|
|
Xem tại: http://localhost:6006
|
|
|
|
Metrics available:
|
|
- `Loss/train`
|
|
- `Loss/val`
|
|
- `PSNR/model`
|
|
- `PSNR/baseline`
|
|
- `PSNR/improvement`
|
|
- `Learning_Rate`
|
|
|
|
### 2. Model Comparison
|
|
|
|
Model list hiển thị:
|
|
```
|
|
📦 cloud_removal_unet_best.pth
|
|
├─ 📈 Model PSNR: 25.43 dB
|
|
├─ 📉 Baseline PSNR: 18.50 dB
|
|
└─ ⚡ Improvement: +6.93 dB ✅
|
|
```
|
|
|
|
### 3. Saved Model Metadata
|
|
|
|
File `.pth` chứa:
|
|
```python
|
|
{
|
|
'epoch': 48,
|
|
'model_state_dict': ...,
|
|
'optimizer_state_dict': ...,
|
|
'train_loss': 0.0123,
|
|
'val_loss': 0.0098,
|
|
'val_psnr': 25.43, # NEW
|
|
'baseline_psnr': 18.50, # NEW
|
|
'use_s1': True,
|
|
'in_channels': 6,
|
|
'out_channels': 4
|
|
}
|
|
```
|
|
|
|
## 📝 Best Practices
|
|
|
|
### 1. Training Strategy
|
|
|
|
- **Baseline thấp** (< 15 dB) → Dữ liệu có nhiều mây, khó khử
|
|
- **Baseline cao** (> 20 dB) → Dữ liệu ít mây, dễ khử
|
|
- **Target**: Model PSNR > Baseline + 5 dB là rất tốt!
|
|
|
|
### 2. Validation Schedule
|
|
|
|
- Tính Baseline **trước** Epoch 1
|
|
- Validate **sau mỗi epoch**
|
|
- Save model khi PSNR **cao nhất**, không phải loss thấp nhất
|
|
|
|
### 3. Early Stopping
|
|
|
|
Nếu sau 10 epochs mà Improvement < 0:
|
|
→ Điều chỉnh architecture hoặc hyperparameters!
|
|
|
|
## 🔮 Future Enhancements
|
|
|
|
### Land Classification Baseline
|
|
|
|
Tương tự, cho land classification có thể dùng:
|
|
|
|
- **Baseline Accuracy** = Accuracy của majority class classifier
|
|
- Ví dụ: Dataset có 70% class "Lua" → Baseline = 0.70
|
|
- Model phải > 0.70 để có ý nghĩa!
|
|
|
|
## 📚 References
|
|
|
|
- PSNR (Peak Signal-to-Noise Ratio): Metric đánh giá chất lượng ảnh
|
|
- Formula: `PSNR = 20 * log10(MAX) - 10 * log10(MSE)`
|
|
- Unit: dB (decibel)
|
|
- Higher is better
|
|
- Typical range for cloud removal: 15-30 dB
|
|
|
|
- Baseline methodology được sử dụng rộng rãi trong research papers:
|
|
- SEN12MS-CR dataset paper
|
|
- Cloud removal benchmarks
|
|
- Image restoration competitions
|
|
|
|
## ✨ Summary
|
|
|
|
Bạn đã thành công tích hợp:
|
|
|
|
1. ✅ **Backend tracking** với real-time callbacks
|
|
2. ✅ **API endpoints** cho status polling
|
|
3. ✅ **Web interface** với live charts
|
|
4. ✅ **Baseline PSNR** làm "thanh thước đo"
|
|
5. ✅ **Professional visualization** với Chart.js
|
|
6. ✅ **Model metadata** lưu PSNR metrics
|
|
|
|
Đây là một hệ thống tracking cực kỳ chuyên nghiệp, tương đương với các công cụ như:
|
|
- Weights & Biases (WandB)
|
|
- MLflow
|
|
- TensorBoard (đã tích hợp sẵn)
|
|
|
|
**Happy Training! 🚀**
|