7.4 KiB
7.4 KiB
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: 评估Baseline(epoch_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结束后检查
-
Loss收敛
- 是否稳定下降
- 是否有NaN/Inf
-
各类别mIoU
- drivable_area
- ped_crossing
- walkway
- stop_line (重点关注)
- carpark_area
- divider
-
检测性能
- 确保mAP不下降
- 保持>64%
-
训练稳定性
- 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: 完整版
⚠️ 注意事项
-
每个Phase完成后必须评估
- 确认性能提升
- 检查无副作用
-
保存所有checkpoint
- 便于回退
- 便于对比
-
如果某Phase效果不好
- 停止该Phase
- 回退到上一个
- 调整参数重试
-
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% 🎯