7.4 KiB
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_statusglobal với tracking chi tiết:current_epoch,total_epochstrain_loss,val_loss,val_psnrbaseline_psnr,improvementhistoryarrays cho plotting
-
✅ Endpoint mới:
GET /api/cloud-removal/training/status- Lấy trạng thái real-timePOST /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
- Callback function
File: train_cloud_removal.py
- ✅ Thêm parameter
status_callbackvàotrain_cloud_removal_model() - ✅ Gọi callback sau mỗi epoch với metrics đầy đủ
- ✅ Return thêm
val_psnrsvà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
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
-
Đ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
- Data Directory:
-
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
================================================================
📏 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:
tensorboard --logdir=cloud_removal_model/runs
Xem tại: http://localhost:6006
Metrics available:
Loss/trainLoss/valPSNR/modelPSNR/baselinePSNR/improvementLearning_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:
{
'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
- Formula:
-
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:
- ✅ Backend tracking với real-time callbacks
- ✅ API endpoints cho status polling
- ✅ Web interface với live charts
- ✅ Baseline PSNR làm "thanh thước đo"
- ✅ Professional visualization với Chart.js
- ✅ 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! 🚀