bev-project/archive/docs_old/PROGRESSIVE_ENHANCEMENT_PLA...

7.4 KiB
Raw Blame History

BEVFusion 渐进式增强计划

时间: 2025-10-20 10:20
策略: 先完成原始训练,然后逐步增强


🎯 整体策略

Step 1: 完成原始训练 (epoch 19→20)  ← 当前进行中
   ↓
Step 2: 获得稳定baseline
   ↓
Step 3: 基于epoch_20逐步添加Enhanced功能
   ↓
Step 4: 微调增强版本

Step 1: 原始训练(进行中)

当前状态

  • 训练已启动
  • 19个进程运行
  • GPU: 8x Tesla V100S
  • Checkpoint: epoch_19.pth加载成功
  • 第一次迭代完成: loss=0.7161

训练信息

配置: multitask.yaml (原始BEVSegmentationHead)
进度: Epoch [1][50/3862]
ETA: 3天3小时预计完成时间
Loss详情:
├─ map/drivable_area: 0.0149
├─ map/ped_crossing: 0.0034
├─ map/walkway: 0.0110
├─ map/stop_line: 0.0041
├─ map/carpark_area: 0.0038
├─ map/divider: 0.0088
├─ object/heatmap: 0.2811
├─ object/cls: 0.0421
└─ object/bbox: 0.3469
总loss: 0.7161

日志文件

training_final_epoch20_20251020_101747.log

预计完成

  • 时间: 约3天2025-10-23
  • 输出: epoch_20.pth
  • 预期性能:
    • 检测mAP: 65-68%
    • 分割mIoU: 36-40%

📋 Step 2: 评估Baselineepoch_20完成后

评估命令

# 评估检测性能
python tools/test.py \
  configs/nuscenes/det/transfusion/secfpn/camera+lidar/swint_v0p075/multitask.yaml \
  runs/run-326653dc-88342739/epoch_20.pth \
  --eval bbox

# 评估分割性能
python tools/test.py \
  configs/nuscenes/det/transfusion/secfpn/camera+lidar/swint_v0p075/multitask.yaml \
  runs/run-326653dc-88342739/epoch_20.pth \
  --eval map

记录Baseline

将性能指标记录为对比基准:

  • 检测mAP
  • 检测NDS
  • 各类别mIoU
  • 平均mIoU

🚀 Step 3: 渐进式增强基于epoch_20

方案A: 分阶段增强(推荐)

Phase 1: 只添加ASPP最保守

配置: multitask_enhanced_phase1.yaml

model:
  heads:
    map:
      type: EnhancedBEVSegmentationHead
      # 只启用ASPP其他功能关闭
      deep_supervision: false
      use_dice_loss: false
      decoder_channels: [256, 128]  # 简化decoder

训练:

# 从epoch_20微调2-3个epoch
torchpack dist-run -np 8 python tools/train.py \
  multitask_enhanced_phase1.yaml \
  --load_from runs/.../epoch_20.pth \
  --cfg-options max_epochs=23

预期提升: mIoU +2-3%


Phase 2: 添加Dice Loss

配置: multitask_enhanced_phase2.yaml

model:
  heads:
    map:
      type: EnhancedBEVSegmentationHead
      use_dice_loss: true  # 新增
      dice_weight: 0.5
      deep_supervision: false

训练:

# 从Phase 1继续微调2-3个epoch
torchpack dist-run -np 8 python tools/train.py \
  multitask_enhanced_phase2.yaml \
  --load_from runs/.../epoch_23.pth \
  --cfg-options max_epochs=26

预期提升: mIoU +3-5% (累计)


Phase 3: 添加Deep Supervision

配置: multitask_enhanced_phase3.yaml

model:
  heads:
    map:
      type: EnhancedBEVSegmentationHead
      use_dice_loss: true
      deep_supervision: true  # 新增
      decoder_channels: [256, 256, 128, 128]  # 加深decoder

训练:

# 继续微调2-3个epoch
torchpack dist-run -np 8 python tools/train.py \
  multitask_enhanced_phase3.yaml \
  --load_from runs/.../epoch_26.pth \
  --cfg-options max_epochs=29

预期提升: mIoU +5-8% (累计)


Phase 4: 完整Enhanced版本

配置: multitask_enhanced_full.yaml

model:
  heads:
    map:
      type: EnhancedBEVSegmentationHead
      use_dice_loss: true
      deep_supervision: true
      decoder_channels: [256, 256, 128, 128]
      # 增加分割权重
  loss_scale:
    object: 1.0
    map: 5.0  # 提高到5.0

训练:

# 最后微调3-5个epoch
torchpack dist-run -np 8 python tools/train.py \
  multitask_enhanced_full.yaml \
  --load_from runs/.../epoch_29.pth \
  --cfg-options max_epochs=34

最终目标: mIoU 50-55% (+12-18%)


方案B: 一次性增强(风险较高)

直接使用完整Enhanced配置从epoch_20微调5-10个epoch。

不推荐原因:

  • 一次改动太多
  • 难以定位性能提升来源
  • 可能不稳定

📊 预期性能对比

阶段 mIoU 提升 训练时间 说明
Baseline 36-40% - 3天 原始版本
Phase 1 38-43% +2-3% +0.5天 ASPP
Phase 2 41-45% +5% +0.5天 +Dice Loss
Phase 3 45-48% +8% +0.5天 +Deep Supervision
Phase 4 50-55% +12-18% +1天 完整版
总计 50-55% +15% ~6天

🔍 监控指标

每个Phase结束后检查

  1. Loss收敛

    • 是否稳定下降
    • 是否有NaN/Inf
  2. 各类别mIoU

    • drivable_area
    • ped_crossing
    • walkway
    • stop_line (重点关注)
    • carpark_area
    • divider
  3. 检测性能

    • 确保mAP不下降
    • 保持>64%
  4. 训练稳定性

    • GPU利用率
    • 内存使用
    • 训练速度

💡 关键优势

渐进式增强的好处

风险可控

  • 每次只改动一个功能
  • 问题容易定位
  • 可随时回退

效果可追踪

  • 清楚知道每个功能的贡献
  • 便于论文/报告撰写
  • 便于优化调整

训练效率

  • 每阶段只需2-3 epoch
  • 基于已训练模型微调
  • 总时间约6天

稳定性高

  • 避免大幅改动
  • 保持检测性能
  • 渐进式改进

📅 时间表

Day 1-3 (Oct 20-23): ✅ Step 1 - Baseline训练
Day 4 (Oct 23):      □ Step 2 - Baseline评估  
Day 5 (Oct 24):      □ Step 3 - Phase 1 (ASPP)
Day 6 (Oct 25):      □ Step 3 - Phase 2 (Dice)
Day 7 (Oct 26):      □ Step 3 - Phase 3 (Deep Supervision)
Day 8-9 (Oct 27-28): □ Step 3 - Phase 4 (完整版)
Day 10 (Oct 29):     □ Step 4 - 最终评估

总周期: 10天
完成日期: 2025-10-29


🎯 成功标准

Baseline (必须达到)

  • 检测mAP > 64%
  • 分割mIoU > 35%
  • 训练稳定无错误

Enhanced最终版本 (目标)

  • 🎯 检测mAP > 64% (保持)
  • 🎯 分割mIoU > 50% (+15%)
  • 🎯 stop_line mIoU > 25%
  • 🎯 训练稳定,可复现

📁 配置文件结构

configs/nuscenes/det/transfusion/secfpn/camera+lidar/swint_v0p075/
├── multitask.yaml                      # 原始(当前使用)
├── multitask_enhanced_phase1.yaml      # Phase 1: ASPP
├── multitask_enhanced_phase2.yaml      # Phase 2: +Dice
├── multitask_enhanced_phase3.yaml      # Phase 3: +Deep Sup
└── multitask_enhanced_full.yaml        # Phase 4: 完整版

⚠️ 注意事项

  1. 每个Phase完成后必须评估

    • 确认性能提升
    • 检查无副作用
  2. 保存所有checkpoint

    • 便于回退
    • 便于对比
  3. 如果某Phase效果不好

    • 停止该Phase
    • 回退到上一个
    • 调整参数重试
  4. GPU资源

    • 每阶段需要8x V100
    • 约12-18小时/phase

🚀 快速启动Baseline完成后

# 1. 评估Baseline
bash scripts/eval_baseline.sh

# 2. 启动Phase 1
bash scripts/start_phase1.sh

# 3. 依次执行Phase 2-4
# ...

当前状态: Step 1进行中
下一步: 等待Baseline训练完成~3天
建议: 定期监控训练日志,确保稳定

预计最终达成: mIoU 50-55%, mAP 65-68% 🎯