bev-project/project/docs/INFERENCE_GUIDE.md

387 lines
8.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# BEVFusion推理和可视化指南
**生成时间**2025-10-21
**基于Checkpoint**epoch_19.pth
**数据集**nuScenes Validation Set
---
## 📋 文件说明
### 1. inference_and_visualize.py
**功能**:完整的推理和可视化脚本
**特性**
- ✅ 加载epoch_19.pth权重
- ✅ 在nuScenes验证集上推理
- ✅ 生成BEV分割可视化
- ✅ 生成3D检测可视化
- ✅ 生成综合可视化(分割+检测)
- ✅ 支持自定义样本数量
- ✅ 支持置信度阈值设置
### 2. run_inference.sh
**功能**:一键运行推理脚本
**默认配置**
```bash
Checkpoint: epoch_19.pth
样本数: 10
置信度阈值: 0.3
输出目录: inference_results_epoch19
```
---
## 🚀 快速开始
### 方法1使用Shell脚本推荐
```bash
# 直接运行
bash run_inference.sh
```
### 方法2使用Python脚本
```bash
# 基本用法
python inference_and_visualize.py
# 自定义参数
python inference_and_visualize.py \
--checkpoint runs/run-326653dc-74184412/epoch_19.pth \
--samples 20 \
--output-dir my_results \
--show-score-thr 0.4 \
--device cuda:0
```
---
## 🎨 可视化输出
### 输出文件结构
```
inference_results_epoch19/
├── sample_0000_segmentation.png # BEV分割结果
├── sample_0000_detection.png # 3D检测结果
├── sample_0000_combined.png # 综合可视化
├── sample_0001_segmentation.png
├── sample_0001_detection.png
├── sample_0001_combined.png
...
```
### 可视化内容
#### 1. BEV分割*_segmentation.png
显示6个地图类别
- **紫色** - drivable_area可行驶区域
- **粉色** - ped_crossing人行横道
- **灰色** - walkway人行道
- **红色** - stop_line停止线
- **绿色** - carpark_area停车区
- **黄色** - divider分隔线
#### 2. 3D检测*_detection.png
显示检测到的3D目标框BEV视图
- 不同颜色表示不同类别
- 框内显示置信度分数
- 显示物体朝向
#### 3. 综合可视化(*_combined.png
左侧BEV分割
右侧3D检测
---
## ⚙️ 参数说明
### 命令行参数
| 参数 | 默认值 | 说明 |
|------|--------|------|
| `--config` | multitask.yaml | 模型配置文件路径 |
| `--checkpoint` | epoch_19.pth | Checkpoint文件路径 |
| `--samples` | 10 | 推理的样本数量 |
| `--output-dir` | inference_results | 输出目录 |
| `--show-score-thr` | 0.3 | 检测框显示的置信度阈值 |
| `--device` | cuda:0 | 推理设备 |
### 修改参数示例
#### 增加样本数
```bash
python inference_and_visualize.py --samples 50
```
#### 提高置信度阈值(只显示高置信度检测)
```bash
python inference_and_visualize.py --show-score-thr 0.5
```
#### 更换输出目录
```bash
python inference_and_visualize.py --output-dir results_highconf
```
#### 使用不同GPU
```bash
python inference_and_visualize.py --device cuda:1
```
---
## 📊 预期输出示例
### 运行日志
```
================================================================================
BEVFusion推理和可视化
================================================================================
配置文件: configs/.../multitask.yaml
Checkpoint: runs/.../epoch_19.pth
样本数量: 10
输出目录: inference_results_epoch19
置信度阈值: 0.3
================================================================================
================================================================================
加载模型配置和权重
================================================================================
1. 构建模型...
2. 加载checkpoint: runs/run-326653dc-74184412/epoch_19.pth
✅ 模型加载完成
- Device: cuda:0
- Checkpoint epoch: 19
================================================================================
构建数据加载器
================================================================================
✅ 数据加载器构建完成
- 样本数量: 10
- 数据集: nuScenes validation set
================================================================================
开始推理和可视化
================================================================================
推理中: 100%|████████████| 10/10 [00:45<00:00, 4.5s/it]
✅ 已保存: inference_results_epoch19/sample_0000_combined.png
✅ 已保存: inference_results_epoch19/sample_0001_combined.png
...
================================================================================
✅ 推理完成!
- 结果保存在: inference_results_epoch19
- 共处理样本: 10
================================================================================
```
### 性能指标
- **推理速度**约4-5秒/样本
- **显存占用**约8-10GB
- **输出文件大小**每个PNG约1-3MB
---
## 🔍 结果分析
### 查看结果
```bash
# 列出所有生成的文件
ls -lh inference_results_epoch19/
# 统计文件数量
ls inference_results_epoch19/*.png | wc -l
# 使用图像查看器
# Linux:
eog inference_results_epoch19/sample_0000_combined.png
# 或者复制到本地查看
```
### 预期性能基于epoch_19
**3D检测**
- NDS: ~0.70
- mAP: ~0.62
- 主要类别car, pedestrian等检测准确
**BEV分割**
- mIoU: ~40-45%
- drivable_area: 较高IoU (~70%)
- 小目标类别stop_line等: 较低IoU (~20-30%)
---
## 🛠️ 高级用法
### 1. 批量推理所有验证集
```bash
python inference_and_visualize.py --samples 6019
# nuScenes val set共6019个样本
```
### 2. 只推理特定类别
修改`inference_and_visualize.py`中的`score_thr`或后处理逻辑
### 3. 导出为视频
```bash
# 使用ffmpeg合成视频
cd inference_results_epoch19
ffmpeg -framerate 2 -pattern_type glob -i '*_combined.png' \
-c:v libx264 -pix_fmt yuv420p output_video.mp4
```
### 4. 评估指标计算
```bash
# 使用mmdetection3d的评估工具
python tools/test.py \
configs/.../multitask.yaml \
runs/.../epoch_19.pth \
--eval bbox segm
```
---
## 📈 可视化质量说明
### 分割可视化
- **分辨率**200×200BEV空间
- **覆盖范围**100m × 100m±50m
- **分辨率**0.5m/pixel
- **颜色编码**符合nuScenes标准
### 检测可视化
- **显示范围**±50mBEV
- **框表示**:矩形框表示物体边界
- **朝向表示**:框的开口方向表示物体朝向
- **置信度**:显示在框内
---
## ⚠️ 注意事项
### 1. 内存要求
- **GPU显存**建议至少10GB
- **系统内存**建议至少32GB
### 2. 数据路径
确保nuScenes数据集路径正确
```python
# 配置文件中应该有
data_root = 'data/nuscenes/'
ann_file = 'data/nuscenes/nuscenes_infos_val.pkl'
```
### 3. 依赖项
需要安装:
- torch
- mmcv
- mmdet3d
- matplotlib
- opencv-python
- tqdm
### 4. 已知限制
- 当前可视化为2D BEV视图
- 不包含相机图像叠加
- 不支持3D可视化如点云
---
## 🐛 故障排除
### 问题1找不到checkpoint
```bash
# 检查文件是否存在
ls -lh runs/run-326653dc-74184412/epoch_19.pth
# 如果不存在检查其他runs目录
ls -lh runs/*/epoch_*.pth
```
### 问题2CUDA OOM
```bash
# 减少batch size或使用CPU
python inference_and_visualize.py --device cpu
# 或者减少样本数
python inference_and_visualize.py --samples 5
```
### 问题3数据集路径错误
```bash
# 检查数据集
ls data/nuscenes/
ls data/nuscenes/nuscenes_infos_val.pkl
```
### 问题4可视化不显示
```bash
# 确保安装了matplotlib的backend
pip install matplotlib pillow
# 或者检查生成的PNG文件
file inference_results_epoch19/sample_0000_combined.png
```
---
## 📝 自定义修改
### 修改颜色方案
编辑`inference_and_visualize.py`中的`colors`字典:
```python
colors = {
'drivable_area': [128, 64, 128], # 修改为你想要的RGB值
'ped_crossing': [244, 35, 232],
...
}
```
### 修改可视化布局
调整`visualize_combined`函数中的`figsize`和subplot布局
### 添加额外信息
在可视化函数中添加:
- 时间戳
- 场景ID
- 性能指标
- 统计信息
---
## 📚 参考资料
- [nuScenes数据集](https://www.nuscenes.org/)
- [BEVFusion论文](https://arxiv.org/abs/2205.13542)
- [MMDetection3D文档](https://mmdetection3d.readthedocs.io/)
---
**创建时间**2025-10-21
**脚本版本**1.0
**适用Checkpoint**epoch_19.pth
**状态**:✅ 可用