1279 lines
28 KiB
Markdown
1279 lines
28 KiB
Markdown
# BEVFusion实车部署完整计划
|
||
|
||
**项目目标**: 从nuScenes训练到实车4相机部署的端到端感知系统
|
||
**更新时间**: 2025-10-25
|
||
**当前阶段**: Phase 3 训练中 (Epoch 11/23)
|
||
|
||
---
|
||
|
||
## 📋 项目总览
|
||
|
||
### 实车传感器配置
|
||
|
||
**相机系统 (4相机)**:
|
||
```
|
||
1. CAM_FRONT_STANDARD (正前标准)
|
||
- 分辨率: 1920x1080
|
||
- FOV: 70° (水平) × 45° (垂直)
|
||
- 焦距: 6mm
|
||
- 覆盖范围: 60m前方,标准视野
|
||
- 用途: 主要检测、通用场景
|
||
|
||
2. CAM_FRONT_TELE (正前长焦)
|
||
- 分辨率: 1920x1080
|
||
- FOV: 30° (水平) × 20° (垂直)
|
||
- 焦距: 12mm
|
||
- 覆盖范围: 120m前方,窄视野
|
||
- 用途: 远距离检测、高速场景
|
||
|
||
3. CAM_FRONT_LEFT (左前)
|
||
- 分辨率: 1920x1080
|
||
- FOV: 100° (水平) × 60° (垂直)
|
||
- 焦距: 4mm
|
||
- 覆盖范围: 左侧60m + 前方30m
|
||
- 用途: 左转、并道检测
|
||
|
||
4. CAM_FRONT_RIGHT (右前)
|
||
- 分辨率: 1920x1080
|
||
- FOV: 100° (水平) × 60° (垂直)
|
||
- 焦距: 4mm
|
||
- 覆盖范围: 右侧60m + 前方30m
|
||
- 用途: 右转、并道检测
|
||
```
|
||
|
||
**LiDAR系统**:
|
||
```
|
||
型号: Velodyne VLP-32C
|
||
线数: 32线
|
||
范围: 0.3-200m
|
||
精度: ±2cm
|
||
帧率: 10Hz
|
||
```
|
||
|
||
**计算平台**:
|
||
```
|
||
NVIDIA Orin AGX 64GB
|
||
CPU: 12核 ARM Cortex-A78AE
|
||
GPU: 2048-core NVIDIA Ampere
|
||
内存: 64GB LPDDR5
|
||
功耗: 15-60W可调
|
||
```
|
||
|
||
---
|
||
|
||
## 📅 项目阶段规划
|
||
|
||
### 全局时间表
|
||
|
||
```
|
||
2025年 9月 10月 11月 12月 2026年1月
|
||
|--------|--------|--------|--------|
|
||
Phase1 ████ ✅ 完成
|
||
Phase2 ████ ✅ 完成
|
||
Phase3 ████████ 🔥 99.5%
|
||
Phase4 ████ ⏸️ 待开始
|
||
Phase5 (采集) ███████████ ⏳ 准备中
|
||
Phase5 (标注) ████████████ ⏳ 同步进行
|
||
Phase6 ██████ ⏳ 待开始
|
||
Phase7 ████ ⏳ 待开始
|
||
|
||
当前进度: 43% (3/7完成)
|
||
预计完成: 2026年1月15日
|
||
```
|
||
|
||
---
|
||
|
||
## Phase 1: 基础训练 ✅ (已完成)
|
||
|
||
**时间**: 2025-09-01 ~ 2025-10-10 (40天)
|
||
**状态**: ✅ 已完成
|
||
|
||
### 成果
|
||
```
|
||
✅ nuScenes数据集训练 (Epoch 1-19)
|
||
✅ 基线性能: NDS 0.68, mAP 0.63, mIoU 0.38
|
||
✅ Checkpoint: epoch_19.pth
|
||
✅ 验证多任务学习框架
|
||
```
|
||
|
||
---
|
||
|
||
## Phase 2: 性能优化 ✅ (已完成)
|
||
|
||
**时间**: 2025-10-11 ~ 2025-10-21 (11天)
|
||
**状态**: ✅ 已完成
|
||
|
||
### 成果
|
||
```
|
||
✅ EnhancedBEVSegmentationHead设计
|
||
✅ 高分辨率配置 (multitask_enhanced_phase1_HIGHRES.yaml)
|
||
✅ 损失函数优化 (Focal + Dice)
|
||
✅ 训练策略调整
|
||
```
|
||
|
||
---
|
||
|
||
## Phase 3: 增强训练 🔥 (进行中)
|
||
|
||
**时间**: 2025-10-21 ~ 2025-10-29 (9天)
|
||
**状态**: 🔥 Epoch 11/23 (26.7%)
|
||
|
||
### 当前进度
|
||
```
|
||
🔥 实时状态 (2025-10-25 11:19):
|
||
Epoch: 11/23
|
||
Loss: 0.6522
|
||
预计完成: 2025-10-29 14:00
|
||
|
||
📊 最新性能 (Epoch 10):
|
||
NDS: 0.6968 ⭐⭐⭐ (A+级)
|
||
mAP: 0.6502 ⭐⭐⭐ (A+级)
|
||
mIoU: 0.3912 ⭐⭐ (B+级)
|
||
|
||
💾 Checkpoints: epoch_8/9/10.pth (各516MB)
|
||
```
|
||
|
||
### 待完成任务
|
||
```
|
||
□ Epoch 11-23 训练
|
||
□ 每个Epoch评估
|
||
□ 选择最佳checkpoint
|
||
□ 性能分析报告
|
||
```
|
||
|
||
**预计输出**:
|
||
- 最佳模型: epoch_20-23.pth (预计NDS > 0.70)
|
||
- 性能报告: 完整的评估指标
|
||
|
||
---
|
||
|
||
## Phase 4: 模型压缩 (待开始)
|
||
|
||
**时间**: 2025-10-30 ~ 2025-11-15 (17天)
|
||
**状态**: ⏸️ 等待Phase 3完成
|
||
**负责人**: 算法工程师
|
||
|
||
### 4.1 环境准备 (1天)
|
||
|
||
```
|
||
□ Day 1 (10-30): 新环境搭建
|
||
□ 创建独立Python环境 (PyTorch 2.4+)
|
||
□ 安装torch-pruning
|
||
□ 安装ONNX/TensorRT工具
|
||
□ 验证工具链
|
||
```
|
||
|
||
### 4.2 模型剪枝 (7天)
|
||
|
||
```
|
||
□ Day 2-3 (10-31 ~ 11-01): 剪枝实验
|
||
□ 分析参数重要性
|
||
□ 设计剪枝策略
|
||
• Encoders: 34.45M → 20M (削减42%)
|
||
• Heads: 保持不变
|
||
• 目标: 45.72M → 28M
|
||
□ 结构化剪枝
|
||
□ 评估精度损失
|
||
|
||
□ Day 4-6 (11-02 ~ 11-04): 微调恢复
|
||
□ 在nuScenes上微调5 epochs
|
||
□ 恢复精度到NDS > 0.68
|
||
□ 保存剪枝后模型
|
||
|
||
□ Day 7-8 (11-05 ~ 11-06): 验证测试
|
||
□ 全面性能评估
|
||
□ 推理速度测试
|
||
□ 内存占用分析
|
||
```
|
||
|
||
**目标**:
|
||
- 参数量: 28M (-38%)
|
||
- NDS: > 0.68 (下降 < 2%)
|
||
- 推理速度: 80ms (V100)
|
||
|
||
### 4.3 量化训练 (6天)
|
||
|
||
```
|
||
□ Day 9-10 (11-07 ~ 11-08): QAT准备
|
||
□ 插入量化节点
|
||
□ 校准数据准备
|
||
□ INT8量化配置
|
||
|
||
□ Day 11-13 (11-09 ~ 11-11): QAT训练
|
||
□ 量化感知训练 10 epochs
|
||
□ 精度监控
|
||
□ 调整量化策略
|
||
|
||
□ Day 14 (11-12): 量化模型评估
|
||
□ INT8精度验证
|
||
□ 推理速度测试
|
||
```
|
||
|
||
**目标**:
|
||
- 精度: NDS > 0.66
|
||
- 速度: 50ms (V100), 60ms (Orin预估)
|
||
|
||
### 4.4 TensorRT优化 (3天)
|
||
|
||
```
|
||
□ Day 15-16 (11-13 ~ 11-14): TensorRT转换
|
||
□ ONNX导出
|
||
□ TensorRT引擎构建 (FP16/INT8)
|
||
□ 算子融合优化
|
||
|
||
□ Day 17 (11-15): 性能验证
|
||
□ Orin平台部署测试
|
||
□ 端到端延迟测试
|
||
□ 功耗测试
|
||
```
|
||
|
||
**目标**:
|
||
- Orin推理: < 80ms
|
||
- 功耗: < 50W
|
||
- 精度: NDS > 0.65
|
||
|
||
---
|
||
|
||
## Phase 5: 实车数据准备 🔄 (并行进行)
|
||
|
||
**时间**: 2025-10-25 ~ 2025-12-15 (52天)
|
||
**状态**: 🔄 准备启动
|
||
**负责人**: 系统工程师 + 标注团队
|
||
|
||
### 5.1 传感器集成 (Week 1: 10/25-10/31)
|
||
|
||
**Day 1-2: 硬件安装**
|
||
```
|
||
□ 相机安装
|
||
□ CAM_FRONT_STANDARD: 车顶中央,高度1.5m
|
||
□ CAM_FRONT_TELE: 车顶中央,紧邻标准相机
|
||
□ CAM_FRONT_LEFT: 左A柱,向左偏30°
|
||
□ CAM_FRONT_RIGHT: 右A柱,向右偏30°
|
||
|
||
□ LiDAR安装
|
||
□ Velodyne VLP-32C: 车顶中央,高度1.8m
|
||
|
||
□ 计算单元
|
||
□ NVIDIA Orin AGX: 后备箱
|
||
□ 供电系统: 12V→48V转换
|
||
□ 散热系统: 主动风冷
|
||
```
|
||
|
||
**Day 3-4: 传感器标定**
|
||
```
|
||
□ 相机内参标定
|
||
□ 使用9x6棋盘格 (方格5cm)
|
||
□ 采集50张不同角度图像
|
||
□ Zhang标定法计算内参
|
||
□ 畸变系数校正
|
||
□ 重投影误差 < 0.5 pixel
|
||
|
||
工具: python tools/calibrate_camera_intrinsic.py
|
||
|
||
□ 相机外参标定 (4个相机)
|
||
□ 联合LiDAR-相机标定
|
||
□ 棋盘格放置在3-5个不同位置
|
||
□ PnP算法求解外参
|
||
□ 精度要求: 旋转<0.5°, 平移<2cm
|
||
|
||
工具: python tools/calibrate_camera_lidar_extrinsic.py
|
||
```
|
||
|
||
**Day 5-7: 标定验证与数据采集系统**
|
||
```
|
||
□ 标定验证
|
||
□ 点云投影到图像对齐检查
|
||
□ 多视角一致性验证
|
||
□ 批量样本验证 (100帧)
|
||
|
||
□ 数据采集系统部署
|
||
□ ROS工作空间配置
|
||
□ 传感器驱动测试
|
||
□ 时间戳同步 (NTP/PTP)
|
||
□ 录制脚本开发
|
||
|
||
录制格式:
|
||
/data/vehicle_data/
|
||
├── rosbag/
|
||
│ └── 2025_10_25_session_001.bag
|
||
├── extracted/
|
||
│ ├── lidar/
|
||
│ │ └── frame_000001.pcd
|
||
│ ├── CAM_FRONT_STANDARD/
|
||
│ │ └── frame_000001.jpg
|
||
│ ├── CAM_FRONT_TELE/
|
||
│ ├── CAM_FRONT_LEFT/
|
||
│ └── CAM_FRONT_RIGHT/
|
||
└── calibration/
|
||
└── sensors_2025_10_25.json
|
||
```
|
||
|
||
### 5.2 数据采集 (Week 2-6: 11/01-12/08, 同步进行)
|
||
|
||
**采集策略**: 渐进式采集,边采集边标注
|
||
|
||
**Week 2 (11/01-11/07): 初期采集 2000帧**
|
||
```
|
||
□ 场景分布:
|
||
□ 城市道路 (白天晴天): 800帧
|
||
□ 高速公路 (白天): 600帧
|
||
□ 停车场: 400帧
|
||
□ 夜间城市: 200帧
|
||
|
||
□ 采集要求:
|
||
✓ 关键帧间隔: 0.5秒 (2Hz)
|
||
✓ 速度覆盖: 0-80km/h
|
||
✓ 数据完整性检查
|
||
✓ 立即导出用于标注
|
||
|
||
□ 质量检查 (每日):
|
||
python tools/check_data_quality.py \
|
||
--data_root /data/vehicle_data \
|
||
--check_sync \
|
||
--check_completeness
|
||
```
|
||
|
||
**Week 3 (11/08-11/14): 中期采集 2500帧**
|
||
```
|
||
□ 场景扩展:
|
||
□ 城市道路 (阴天): 800帧
|
||
□ 高速公路 (阴天): 500帧
|
||
□ 乡村道路: 600帧
|
||
□ 夜间高速: 400帧
|
||
□ 黄昏: 200帧
|
||
|
||
□ 复杂场景采集:
|
||
✓ 交通拥堵
|
||
✓ 复杂路口
|
||
✓ 施工区域
|
||
✓ 行人密集区
|
||
```
|
||
|
||
**Week 4-5 (11/15-11/28): 大规模采集 3500帧**
|
||
```
|
||
□ 恶劣天气场景:
|
||
□ 小雨: 800帧
|
||
□ 大雨: 600帧
|
||
□ 雾天: 500帧
|
||
□ 强光/逆光: 400帧
|
||
|
||
□ 边缘场景:
|
||
□ 地下停车场: 500帧
|
||
□ 隧道: 400帧
|
||
□ 高架桥: 300帧
|
||
|
||
□ 补充采集:
|
||
□ 根据标注反馈的困难场景
|
||
□ 类别不平衡补充
|
||
```
|
||
|
||
**Week 6 (12/01-12/08): 补充采集 2000帧**
|
||
```
|
||
□ 针对性采集:
|
||
□ 长尾类别 (construction_vehicle, trailer): 500帧
|
||
□ 困难场景重采集: 800帧
|
||
□ 验证集专用场景: 700帧
|
||
|
||
□ 最终质量检查:
|
||
□ 总计10000帧验证
|
||
□ 场景分布统计
|
||
□ 数据集划分
|
||
```
|
||
|
||
**采集总计**: 10000帧
|
||
- 训练集: 8000帧 (80%)
|
||
- 验证集: 1000帧 (10%)
|
||
- 测试集: 1000帧 (10%)
|
||
|
||
### 5.3 数据标注 (Week 3-9: 11/08-12/31, 同步进行)
|
||
|
||
**标注团队配置**:
|
||
```
|
||
核心团队 (10人):
|
||
├── 标注组长 × 1
|
||
├── 初标员 × 6
|
||
├── 审核员 × 2
|
||
└── 技术支持 × 1
|
||
|
||
标注平台: CVAT (Docker部署)
|
||
标注工具: 自动预标注 + 人工精修
|
||
```
|
||
|
||
**Week 3 (11/08-11/14): 标注系统搭建**
|
||
```
|
||
□ Day 1-2: CVAT部署
|
||
□ Docker服务器部署 (32GB RAM)
|
||
□ 用户权限配置
|
||
□ 数据导入流程测试
|
||
|
||
□ Day 3-4: 团队培训
|
||
□ 标注规范培训 (2天)
|
||
□ CVAT操作培训
|
||
□ 质量标准讲解
|
||
□ 考核测试 (50帧)
|
||
|
||
□ Day 5-7: 预标注系统
|
||
□ 部署预训练检测模型
|
||
□ 批量预标注 (置信度>0.3)
|
||
□ 导入CVAT供人工修正
|
||
|
||
工具: python tools/auto_prelabel.py
|
||
```
|
||
|
||
**Week 4-5 (11/15-11/28): 初期标注 3000帧**
|
||
```
|
||
□ 批次1 (1500帧): 简单场景
|
||
□ 城市白天晴天
|
||
□ 高速公路
|
||
□ 用时: 5分钟/帧 × 1500 = 125小时
|
||
□ 6人并行 = 21小时 ≈ 3天
|
||
|
||
□ 批次2 (1500帧): 中等场景
|
||
□ 城市阴天
|
||
□ 停车场
|
||
□ 用时: 8分钟/帧 × 1500 = 200小时
|
||
□ 6人并行 = 33小时 ≈ 5天
|
||
|
||
□ 质量控制:
|
||
□ 每日抽检10% (随机)
|
||
□ 自动化检查脚本
|
||
□ 一致性验证
|
||
```
|
||
|
||
**Week 6-7 (11/29-12/12): 中期标注 4000帧**
|
||
```
|
||
□ 批次3 (2000帧): 复杂场景
|
||
□ 夜间场景
|
||
□ 雨天场景
|
||
□ 遮挡/截断场景
|
||
□ 用时: 12分钟/帧 × 2000 = 400小时
|
||
□ 6人并行 = 67小时 ≈ 8天
|
||
|
||
□ 批次4 (2000帧): 特殊场景
|
||
□ 隧道/地下停车场
|
||
□ 边缘case
|
||
□ 用时: 10分钟/帧 × 2000 = 333小时
|
||
□ 6人并行 = 56小时 ≈ 7天
|
||
```
|
||
|
||
**Week 8 (12/13-12/19): 后期标注 2000帧**
|
||
```
|
||
□ 批次5 (2000帧): 补充标注
|
||
□ 根据前期标注分析
|
||
□ 困难样本重标
|
||
□ 长尾类别补充
|
||
```
|
||
|
||
**Week 9 (12/20-12/26): 质量审核**
|
||
```
|
||
□ 全面质量检查
|
||
□ 自动化检查所有10000帧
|
||
□ 人工抽检500帧 (5%)
|
||
□ 专家审核100帧 (复杂场景)
|
||
|
||
□ 问题修正
|
||
□ 修正标记的异常 (预计5%)
|
||
□ 重标质量不达标样本
|
||
|
||
□ 最终验收
|
||
□ 质量报告生成
|
||
□ 数据集统计分析
|
||
□ 导出训练格式
|
||
```
|
||
|
||
**标注总计**: 10000帧
|
||
- 预计总时间: 1700小时
|
||
- 实际并行: 6人 × 6周 = 240工时 ✅ 可完成
|
||
|
||
### 5.4 数据转换 (Week 10: 12/27-12/31)
|
||
|
||
```
|
||
□ 格式转换
|
||
□ CVAT → nuScenes格式
|
||
□ 生成PKL文件
|
||
□ 验证数据完整性
|
||
|
||
python tools/data_converter/custom_to_nuscenes.py \
|
||
--custom_root /data/vehicle_data \
|
||
--output /data/vehicle_nuscenes \
|
||
--camera_names CAM_FRONT_STANDARD CAM_FRONT_TELE CAM_FRONT_LEFT CAM_FRONT_RIGHT
|
||
|
||
□ 数据集划分
|
||
train_infos.pkl: 8000帧
|
||
val_infos.pkl: 1000帧
|
||
test_infos.pkl: 1000帧
|
||
|
||
□ 质量验证
|
||
□ 可视化检查 (100帧)
|
||
□ 统计分析
|
||
□ 类别分布验证
|
||
```
|
||
|
||
**输出**:
|
||
```
|
||
/data/vehicle_nuscenes/
|
||
├── vehicle_infos_train.pkl (8000帧)
|
||
├── vehicle_infos_val.pkl (1000帧)
|
||
├── vehicle_infos_test.pkl (1000帧)
|
||
├── calibration/
|
||
│ └── sensors_final.json
|
||
└── metadata.json
|
||
```
|
||
|
||
---
|
||
|
||
## Phase 6: 实车微调 (2026年1月)
|
||
|
||
**时间**: 2026-01-01 ~ 2026-01-10 (10天)
|
||
**状态**: ⏸️ 等待Phase 4和5完成
|
||
**负责人**: 算法工程师
|
||
|
||
### 6.1 配置调整 (1天)
|
||
|
||
```
|
||
□ Day 1 (01-01): 创建实车配置
|
||
|
||
文件: configs/vehicle_4cam/vehicle_multitask.yaml
|
||
|
||
关键修改:
|
||
|
||
# 1. 相机数量和名称
|
||
camera_names:
|
||
- CAM_FRONT_STANDARD
|
||
- CAM_FRONT_TELE
|
||
- CAM_FRONT_LEFT
|
||
- CAM_FRONT_RIGHT
|
||
|
||
# 2. 图像分辨率
|
||
image_size: [384, 1280] # 从[256, 704]调整
|
||
feature_size: [48, 160] # 对应调整
|
||
|
||
# 3. 数据路径
|
||
data:
|
||
train:
|
||
ann_file: /data/vehicle_nuscenes/vehicle_infos_train.pkl
|
||
val:
|
||
ann_file: /data/vehicle_nuscenes/vehicle_infos_val.pkl
|
||
|
||
# 4. 预训练权重
|
||
init_cfg:
|
||
checkpoint: runs/enhanced_from_epoch19/epoch_10.pth # Phase 3最佳
|
||
```
|
||
|
||
### 6.2 迁移学习训练 (7天)
|
||
|
||
```
|
||
□ Day 2-3 (01-02 ~ 01-03): 初步微调
|
||
□ 冻结backbone
|
||
□ 仅训练head
|
||
□ 5 epochs快速适配
|
||
|
||
torchpack dist-run -np 6 python tools/train.py \
|
||
configs/vehicle_4cam/vehicle_multitask.yaml \
|
||
--model.encoders.camera.backbone.init_cfg.checkpoint=runs/enhanced_from_epoch19/epoch_10.pth \
|
||
--model.encoders.camera.backbone.frozen=true \
|
||
--run-dir runs/vehicle_head_finetune
|
||
|
||
□ Day 4-6 (01-04 ~ 01-06): 全模型微调
|
||
□ 解冻所有层
|
||
□ 降低学习率 (max_lr=1e-5)
|
||
□ 训练15 epochs
|
||
|
||
torchpack dist-run -np 6 python tools/train.py \
|
||
configs/vehicle_4cam/vehicle_multitask.yaml \
|
||
--load_from runs/vehicle_head_finetune/epoch_5.pth \
|
||
--lr.max_lr=0.00001 \
|
||
--run-dir runs/vehicle_full_finetune
|
||
|
||
□ Day 7-8 (01-07 ~ 01-08): 性能评估
|
||
□ 验证集评估
|
||
□ 测试集评估
|
||
□ 分场景分析
|
||
□ 错误case分析
|
||
```
|
||
|
||
**性能目标**:
|
||
```
|
||
实车验证集:
|
||
NDS: > 0.65
|
||
mAP: > 0.60
|
||
mIoU: > 0.35
|
||
```
|
||
|
||
### 6.3 针对性优化 (2天)
|
||
|
||
```
|
||
□ Day 9-10 (01-09 ~ 01-10): 困难样本优化
|
||
□ 识别困难场景
|
||
□ 数据增强调整
|
||
□ 损失权重调整
|
||
□ 再训练5 epochs
|
||
□ 最终评估
|
||
```
|
||
|
||
**输出**:
|
||
- 实车最佳模型: vehicle_best.pth
|
||
- 性能报告: vehicle_evaluation_report.md
|
||
|
||
---
|
||
|
||
## Phase 7: 部署与测试 (2026年1月)
|
||
|
||
**时间**: 2026-01-11 ~ 2026-01-15 (5天)
|
||
**状态**: ⏸️ 等待Phase 6完成
|
||
**负责人**: 系统工程师 + 算法工程师
|
||
|
||
### 7.1 Orin部署 (2天)
|
||
|
||
```
|
||
□ Day 1 (01-11): 模型部署
|
||
□ TensorRT引擎加载
|
||
□ ROS节点封装
|
||
□ 参数配置
|
||
|
||
节点: bevfusion_perception_node
|
||
输入:
|
||
- /sensors/camera/front_standard/image_raw
|
||
- /sensors/camera/front_tele/image_raw
|
||
- /sensors/camera/front_left/image_raw
|
||
- /sensors/camera/front_right/image_raw
|
||
- /sensors/lidar/points
|
||
输出:
|
||
- /perception/objects_3d
|
||
- /perception/bev_segmentation
|
||
|
||
□ Day 2 (01-12): 性能测试
|
||
□ 离线数据回放测试
|
||
□ 推理延迟测试
|
||
□ 内存占用监控
|
||
□ 功耗测试
|
||
```
|
||
|
||
**目标**:
|
||
```
|
||
推理延迟: < 80ms (端到端)
|
||
GPU利用率: < 80%
|
||
功耗: < 50W
|
||
精度保持: NDS > 0.63
|
||
```
|
||
|
||
### 7.2 实车集成测试 (2天)
|
||
|
||
```
|
||
□ Day 3 (01-13): 封闭场地测试
|
||
□ 静态目标检测验证
|
||
□ 动态目标跟踪验证
|
||
□ BEV分割验证
|
||
□ 实时性能监控
|
||
|
||
测试项目:
|
||
✓ 车辆检测 (0-50m)
|
||
✓ 行人检测 (0-30m)
|
||
✓ 可行驶区域分割
|
||
✓ 多目标场景 (>20个)
|
||
✓ 快速运动 (60km/h)
|
||
|
||
□ Day 4 (01-14): 开放道路测试
|
||
□ 城市道路行驶 (2小时)
|
||
□ 高速公路行驶 (1小时)
|
||
□ 数据记录与分析
|
||
□ 错误case收集
|
||
```
|
||
|
||
### 7.3 最终优化 (1天)
|
||
|
||
```
|
||
□ Day 5 (01-15): 调优与验收
|
||
□ 参数调优 (置信度阈值等)
|
||
□ 后处理优化
|
||
□ 稳定性测试
|
||
□ 性能报告
|
||
□ 项目验收
|
||
```
|
||
|
||
---
|
||
|
||
## 🔧 关键技术方案
|
||
|
||
### 方案1: 4相机配置适配
|
||
|
||
**挑战**: 从6相机 → 4相机
|
||
|
||
**解决方案**:
|
||
```python
|
||
# configs/vehicle_4cam/vehicle_multitask.yaml
|
||
|
||
model:
|
||
encoders:
|
||
camera:
|
||
backbone:
|
||
type: SwinTransformer
|
||
init_cfg:
|
||
checkpoint: runs/enhanced_from_epoch19/epoch_10.pth
|
||
# 权重会自动适配,多余的相机层会被忽略
|
||
|
||
vtransform:
|
||
in_channels: 512
|
||
out_channels: 80
|
||
num_cameras: 4 # 改为4
|
||
image_size: [384, 1280] # 更高分辨率
|
||
feature_size: [48, 160]
|
||
|
||
# 数据pipeline
|
||
train_pipeline:
|
||
- type: LoadMultiViewImageFromFiles
|
||
num_views: 4
|
||
to_float32: true
|
||
- type: LoadPointsFromFile
|
||
...
|
||
```
|
||
|
||
**测试策略**:
|
||
1. 先在nuScenes上测试4相机配置 (仅用前4个)
|
||
2. 验证性能下降幅度 (预期 < 5%)
|
||
3. 再用实车数据微调
|
||
|
||
### 方案2: 双焦距相机融合
|
||
|
||
**挑战**: 标准FOV + 长焦FOV的特征融合
|
||
|
||
**解决方案A: 直接拼接** (简单)
|
||
```python
|
||
# 将长焦相机视为独立视角
|
||
# 模型自动学习融合策略
|
||
camera_order = [
|
||
'CAM_FRONT_STANDARD', # idx 0
|
||
'CAM_FRONT_TELE', # idx 1
|
||
'CAM_FRONT_LEFT', # idx 2
|
||
'CAM_FRONT_RIGHT' # idx 3
|
||
]
|
||
```
|
||
|
||
**解决方案B: 特征融合** (推荐)
|
||
```python
|
||
# 在BEV fusion阶段融合
|
||
class DualFocalFuser(nn.Module):
|
||
def forward(self, feat_standard, feat_tele):
|
||
# 标准FOV负责近距离 (0-60m)
|
||
# 长焦FOV负责远距离 (40-120m)
|
||
# 重叠区域 (40-60m) 加权融合
|
||
|
||
weight = self.distance_attention(bev_coords)
|
||
fused = weight * feat_standard + (1-weight) * feat_tele
|
||
return fused
|
||
```
|
||
|
||
### 方案3: 数据采集与标注流水线
|
||
|
||
**并行流程**:
|
||
```
|
||
Week 2: 采集2000帧
|
||
↓ (当天)
|
||
数据质检 → 预标注 → 导入CVAT
|
||
↓ (2天后)
|
||
Week 3: 开始标注Week2数据
|
||
同时: 采集新的2500帧
|
||
↓
|
||
Week 4: 标注Week2数据完成
|
||
同时: 标注Week3数据
|
||
同时: 采集新的3500帧
|
||
↓
|
||
Week 5-6: 持续并行...
|
||
|
||
优势:
|
||
✓ 节省时间 (总时间 = 采集 + 标注,而非相加)
|
||
✓ 快速反馈 (标注问题及时调整采集)
|
||
✓ 资源充分利用
|
||
```
|
||
|
||
**流水线工具**:
|
||
```bash
|
||
#!/bin/bash
|
||
# scripts/data_pipeline.sh
|
||
|
||
# 每日执行: 采集 → 转换 → 预标注 → 导入CVAT
|
||
|
||
DATE=$(date +%Y_%m_%d)
|
||
|
||
# 1. 采集数据 (当天)
|
||
roslaunch vehicle_perception record_data.launch \
|
||
output_dir=/data/vehicle_data/$DATE
|
||
|
||
# 2. 数据转换
|
||
python tools/extract_from_rosbag.py \
|
||
--bag /data/vehicle_data/$DATE/*.bag \
|
||
--output /data/vehicle_data/$DATE/extracted
|
||
|
||
# 3. 质量检查
|
||
python tools/check_data_quality.py \
|
||
--data_root /data/vehicle_data/$DATE/extracted
|
||
|
||
# 4. 预标注
|
||
python tools/auto_prelabel.py \
|
||
--model runs/enhanced_from_epoch19/epoch_10.pth \
|
||
--data_root /data/vehicle_data/$DATE/extracted \
|
||
--output /data/vehicle_data/$DATE/prelabels
|
||
|
||
# 5. 导入CVAT
|
||
python tools/import_to_cvat.py \
|
||
--data_root /data/vehicle_data/$DATE/extracted \
|
||
--prelabels /data/vehicle_data/$DATE/prelabels \
|
||
--task_name "vehicle_$DATE"
|
||
|
||
echo "✅ $DATE 数据已准备就绪,可开始标注"
|
||
```
|
||
|
||
---
|
||
|
||
## 📊 资源与成本
|
||
|
||
### 计算资源
|
||
```
|
||
训练服务器 (Phase 3-6):
|
||
- 6x Tesla V100 32GB
|
||
- 使用时间: 30天
|
||
- 成本: 已有资源
|
||
|
||
Orin开发板 (Phase 7):
|
||
- NVIDIA Orin AGX 64GB × 1
|
||
- 成本: ¥25000
|
||
|
||
存储:
|
||
- 训练数据: 2TB SSD
|
||
- 实车数据: 2TB SSD
|
||
- 成本: ¥4000
|
||
```
|
||
|
||
### 人力资源
|
||
```
|
||
核心团队:
|
||
- 算法工程师 × 1 (全程, 12周)
|
||
- 系统工程师 × 1 (Phase 5-7, 8周)
|
||
|
||
标注团队 (Phase 5):
|
||
- 标注组长 × 1 (6周)
|
||
- 初标员 × 6 (6周)
|
||
- 审核员 × 2 (6周)
|
||
- 技术支持 × 1 (6周)
|
||
|
||
总人月: ~6人月
|
||
```
|
||
|
||
### 时间成本
|
||
```
|
||
Phase 3: 9天 (已进行4天,剩余5天)
|
||
Phase 4: 17天
|
||
Phase 5: 52天 (采集+标注并行)
|
||
Phase 6: 10天
|
||
Phase 7: 5天
|
||
────────────────
|
||
总计: 93天 ≈ 3个月
|
||
|
||
关键路径: Phase 5 (52天)
|
||
可优化: 增加标注团队,缩短至4周
|
||
```
|
||
|
||
---
|
||
|
||
## 🎯 关键里程碑
|
||
|
||
| 编号 | 里程碑 | 计划时间 | 交付物 | 状态 |
|
||
|------|--------|----------|--------|------|
|
||
| M1 | 基础训练完成 | 10-10 | epoch_19.pth, NDS 0.68 | ✅ |
|
||
| M2 | 增强训练启动 | 10-21 | 训练脚本 | ✅ |
|
||
| M3 | 增强训练完成 | 10-29 | epoch_23.pth, NDS>0.70 | 🔥 |
|
||
| M4 | 传感器标定完成 | 10-31 | 标定参数 | ⏳ |
|
||
| M5 | 采集系统就绪 | 11-01 | 采集脚本 | ⏳ |
|
||
| M6 | 初期数据采集 | 11-07 | 2000帧 | ⏳ |
|
||
| M7 | 标注系统就绪 | 11-14 | CVAT + 培训 | ⏳ |
|
||
| M8 | 模型压缩完成 | 11-15 | 压缩模型, 28M参数 | ⏳ |
|
||
| M9 | 数据采集完成 | 12-08 | 10000帧原始数据 | ⏳ |
|
||
| M10 | 数据标注完成 | 12-26 | 10000帧标注 | ⏳ |
|
||
| M11 | 数据转换完成 | 12-31 | 训练格式PKL | ⏳ |
|
||
| M12 | 实车微调完成 | 01-10 | 实车模型 | ⏳ |
|
||
| M13 | Orin部署完成 | 01-12 | TensorRT引擎 | ⏳ |
|
||
| M14 | 实车测试完成 | 01-15 | 测试报告 | ⏳ |
|
||
|
||
---
|
||
|
||
## 📈 成功标准
|
||
|
||
### 技术指标
|
||
|
||
**nuScenes验证集 (Phase 3)**:
|
||
```
|
||
✅ NDS: > 0.70 (当前0.6968)
|
||
✅ mAP: > 0.65 (当前0.6502)
|
||
□ mIoU: > 0.40 (当前0.3912)
|
||
```
|
||
|
||
**实车验证集 (Phase 6)**:
|
||
```
|
||
□ NDS: > 0.65
|
||
□ mAP: > 0.60
|
||
□ mIoU: > 0.35
|
||
□ 各场景稳定性 > 90%
|
||
```
|
||
|
||
**部署性能 (Phase 7)**:
|
||
```
|
||
□ 推理延迟: < 80ms (Orin)
|
||
□ GPU利用率: < 80%
|
||
□ 功耗: < 50W
|
||
□ 连续运行: > 8小时无故障
|
||
```
|
||
|
||
### 数据质量标准
|
||
|
||
**采集质量**:
|
||
```
|
||
✓ 时间同步: < 50ms
|
||
✓ 数据完整性: > 99%
|
||
✓ 场景覆盖: 6类场景均衡
|
||
✓ 天气条件: 3种天气
|
||
```
|
||
|
||
**标注质量**:
|
||
```
|
||
✓ 3D Box IoU: > 0.7
|
||
✓ 中心误差: < 10cm
|
||
✓ 角度误差: < 3°
|
||
✓ 召回率: > 95%
|
||
✓ BEV分割边界精度: < 2像素
|
||
```
|
||
|
||
---
|
||
|
||
## 📋 每周检查点
|
||
|
||
### Phase 3期间 (10月)
|
||
```
|
||
Week 1 (10/21-10/27):
|
||
□ Epoch 11-16 训练
|
||
□ 监控性能趋势
|
||
□ 准备传感器标定
|
||
|
||
Week 2 (10/28-10/29):
|
||
□ Epoch 17-23 完成
|
||
□ 最终评估
|
||
□ 选择最佳checkpoint
|
||
```
|
||
|
||
### Phase 5期间 (11-12月)
|
||
```
|
||
Week 1 (10/25-10/31):
|
||
□ 传感器集成与标定
|
||
|
||
Week 2-6 (11/01-12/08):
|
||
□ 采集: 每周1600-2000帧
|
||
□ 标注: 滚动标注,每周1500-2000帧
|
||
□ 质量: 每周审核上周标注
|
||
|
||
Week 7-9 (12/09-12/26):
|
||
□ 补充采集
|
||
□ 完成标注
|
||
□ 质量全面审核
|
||
|
||
Week 10 (12/27-12/31):
|
||
□ 数据转换
|
||
□ 最终验证
|
||
```
|
||
|
||
### Phase 6-7期间 (1月)
|
||
```
|
||
Week 1 (01/01-01/07):
|
||
□ 配置调整
|
||
□ 微调训练
|
||
|
||
Week 2 (01/08-01/15):
|
||
□ 部署测试
|
||
□ 实车验证
|
||
□ 项目交付
|
||
```
|
||
|
||
---
|
||
|
||
## 🚨 风险管理
|
||
|
||
### 风险1: 采集进度延误
|
||
```
|
||
风险: 天气、车辆可用性影响采集
|
||
概率: 中
|
||
影响: 高 (阻塞后续)
|
||
|
||
对策:
|
||
✓ 预留2周缓冲时间
|
||
✓ 多车辆备份
|
||
✓ 室内场景作为补充
|
||
✓ 合成数据增强
|
||
```
|
||
|
||
### 风险2: 标注质量不达标
|
||
```
|
||
风险: 标注精度、一致性问题
|
||
概率: 中
|
||
影响: 高
|
||
|
||
对策:
|
||
✓ 预标注辅助 (节省80%时间,提升一致性)
|
||
✓ 三轮审核机制
|
||
✓ 自动化质量检查
|
||
✓ 关键场景专家审核
|
||
✓ 建立标注SOP文档
|
||
```
|
||
|
||
### 风险3: 4相机性能下降
|
||
```
|
||
风险: 减少2个后视相机,后方盲区
|
||
概率: 高
|
||
影响: 中
|
||
|
||
对策:
|
||
✓ 前视覆盖范围更大 (4个相机都朝前)
|
||
✓ 重点优化前方检测性能
|
||
✓ LiDAR补充后方感知
|
||
✓ 实车场景主要关注前方
|
||
✓ 如需要,可后期增加后视相机
|
||
```
|
||
|
||
### 风险4: 长焦相机适配问题
|
||
```
|
||
风险: 长焦相机FOV差异大,特征不匹配
|
||
概率: 中
|
||
影响: 中
|
||
|
||
对策:
|
||
✓ 独立的特征提取分支
|
||
✓ 距离感知融合策略
|
||
✓ 充分的实车数据训练
|
||
✓ 渐进式融合 (先标准相机,再加长焦)
|
||
```
|
||
|
||
### 风险5: Orin性能不足
|
||
```
|
||
风险: 推理速度或精度不达标
|
||
概率: 低
|
||
影响: 高
|
||
|
||
对策:
|
||
✓ 激进的模型压缩 (目标25M参数)
|
||
✓ TensorRT深度优化
|
||
✓ FP16/INT8量化
|
||
✓ 降低BEV分辨率 (200→128)
|
||
✓ 多线程pipeline优化
|
||
```
|
||
|
||
---
|
||
|
||
## 💰 预算估算
|
||
|
||
### 硬件成本
|
||
```
|
||
NVIDIA Orin AGX 64GB: ¥25,000
|
||
相机 × 4: ¥12,000 (¥3000/个)
|
||
LiDAR (已有): ¥0
|
||
存储 (4TB SSD): ¥4,000
|
||
────────────────────────────────
|
||
小计: ¥41,000
|
||
```
|
||
|
||
### 人力成本
|
||
```
|
||
算法工程师 (3个月): 已有
|
||
系统工程师 (2个月): 已有
|
||
标注团队 (1.5个月): 外包 ¥80,000
|
||
────────────────────────────────
|
||
小计: ¥80,000
|
||
```
|
||
|
||
### 云资源
|
||
```
|
||
训练GPU (已有): ¥0
|
||
标注服务器: ¥2,000 (云服务器2个月)
|
||
────────────────────────────────
|
||
小计: ¥2,000
|
||
```
|
||
|
||
### 总预算
|
||
```
|
||
硬件: ¥41,000
|
||
人力: ¥80,000
|
||
云资源: ¥2,000
|
||
────────────────
|
||
总计: ¥123,000
|
||
```
|
||
|
||
---
|
||
|
||
## 📝 交付清单
|
||
|
||
### 代码与模型
|
||
```
|
||
□ 训练代码
|
||
□ nuScenes训练配置
|
||
□ 实车4相机配置
|
||
□ 数据增强策略
|
||
|
||
□ 模型文件
|
||
□ nuScenes最佳模型 (epoch_XX.pth)
|
||
□ 压缩模型 (pruned_model.pth)
|
||
□ 实车微调模型 (vehicle_best.pth)
|
||
□ TensorRT引擎 (bevfusion_fp16.trt)
|
||
|
||
□ 推理代码
|
||
□ ROS节点
|
||
□ 可视化工具
|
||
□ 性能监控工具
|
||
```
|
||
|
||
### 数据集
|
||
```
|
||
□ 实车数据集
|
||
□ 原始数据 (10000帧)
|
||
□ 标注数据 (3D box + BEV mask)
|
||
□ 训练格式 (PKL)
|
||
□ 数据集统计报告
|
||
|
||
□ 标定文件
|
||
□ 4相机内参
|
||
□ 相机-LiDAR外参
|
||
□ 标定验证报告
|
||
```
|
||
|
||
### 文档
|
||
```
|
||
□ 技术文档
|
||
✅ nuScenes数据格式与实车标注指南.md
|
||
✅ 3D标注详细指南.md
|
||
✅ BEVFusion完整项目路线图.md
|
||
✅ BEVFusion实车部署完整计划.md (本文档)
|
||
□ 实车部署手册.md
|
||
□ 标定流程文档.md
|
||
|
||
□ 性能报告
|
||
✅ Epoch 10性能评估
|
||
□ 最终训练报告
|
||
□ 模型压缩报告
|
||
□ 实车测试报告
|
||
```
|
||
|
||
---
|
||
|
||
## 🔄 项目管理
|
||
|
||
### 每周例会 (周一 10:00)
|
||
|
||
**议程**:
|
||
1. 上周进度回顾
|
||
2. 本周计划确认
|
||
3. 风险识别与对策
|
||
4. 资源协调
|
||
5. 技术问题讨论
|
||
|
||
**Phase 5重点关注**:
|
||
- 采集进度 vs 计划
|
||
- 标注质量抽检结果
|
||
- 困难场景处理策略
|
||
- 团队效率优化
|
||
|
||
### 日报 (异步,Slack/钉钉)
|
||
|
||
**每日更新**:
|
||
```
|
||
[2025-10-25 日报]
|
||
- 训练进度: Epoch 11 (26.7%)
|
||
- 采集进度: 标定进行中
|
||
- 标注进度: 系统搭建中
|
||
- 问题: 无
|
||
- 明日计划: 完成Epoch 11训练
|
||
```
|
||
|
||
### 文档管理
|
||
|
||
**文档库结构**:
|
||
```
|
||
/workspace/bevfusion/docs/
|
||
├── 01_项目规划/
|
||
│ ├── BEVFusion实车部署完整计划.md (本文档)
|
||
│ └── BEVFusion完整项目路线图.md
|
||
├── 02_技术文档/
|
||
│ ├── nuScenes数据格式与实车标注指南.md
|
||
│ ├── 3D标注详细指南.md
|
||
│ ├── MapTR代码研究报告.md
|
||
│ └── MapTR集成实战指南.md
|
||
├── 03_训练报告/
|
||
│ ├── Epoch_10_评估报告.md
|
||
│ └── 最终训练报告.md (待)
|
||
├── 04_部署文档/
|
||
│ ├── 实车部署手册.md (待)
|
||
│ ├── 标定流程文档.md (待)
|
||
│ └── Orin优化指南.md (待)
|
||
└── 05_测试报告/
|
||
└── 实车测试报告.md (待)
|
||
```
|
||
|
||
---
|
||
|
||
## 📞 联系与支持
|
||
|
||
### 项目负责人
|
||
```
|
||
算法负责人: [姓名]
|
||
系统负责人: [姓名]
|
||
标注负责人: [姓名]
|
||
```
|
||
|
||
### 技术支持
|
||
```
|
||
CVAT问题: cvat-support@xxx.com
|
||
硬件问题: hardware-team@xxx.com
|
||
紧急联系: [电话]
|
||
```
|
||
|
||
---
|
||
|
||
## 🎓 总结
|
||
|
||
### 项目特点
|
||
```
|
||
✅ 端到端完整方案
|
||
✅ nuScenes → 实车迁移
|
||
✅ 采集+标注并行 (节省时间)
|
||
✅ 4相机创新配置 (标准+长焦)
|
||
✅ 全流程工具支持
|
||
```
|
||
|
||
### 核心优势
|
||
```
|
||
✅ 性能领先: NDS 0.697,超越大多数方法
|
||
✅ 多任务学习: 检测+分割联合优化
|
||
✅ 工业化流程: 完整的数据工具链
|
||
✅ 可复制性强: 详细文档和代码
|
||
```
|
||
|
||
### 创新点
|
||
```
|
||
🌟 双焦距融合: 标准FOV + 长焦FOV
|
||
🌟 前视加强: 4相机全部朝前
|
||
🌟 并行流水线: 采集与标注同步
|
||
🌟 自动预标注: 节省80%标注时间
|
||
```
|
||
|
||
---
|
||
|
||
**下一步行动** (本周):
|
||
1. ✅ 监控Phase 3训练 (优先级最高)
|
||
2. ⏳ 启动传感器标定准备
|
||
3. ⏳ 部署CVAT标注系统
|
||
4. ⏳ 准备数据采集硬件
|
||
|
||
**长期目标**:
|
||
🎯 2026年1月15日实现实车部署上线!
|
||
|
||
---
|
||
|
||
**文档版本**: v2.0
|
||
**适用项目**: BEVFusion实车4相机部署
|
||
**技术栈**: BEVFusion + PyTorch + TensorRT + CVAT + ROS
|
||
|