bev-project/project/docs/INFERENCE_GUIDE.md

8.3 KiB
Raw Blame History

BEVFusion推理和可视化指南

生成时间2025-10-21
基于Checkpointepoch_19.pth
数据集nuScenes Validation Set


📋 文件说明

1. inference_and_visualize.py

功能:完整的推理和可视化脚本

特性

  • 加载epoch_19.pth权重
  • 在nuScenes验证集上推理
  • 生成BEV分割可视化
  • 生成3D检测可视化
  • 生成综合可视化(分割+检测)
  • 支持自定义样本数量
  • 支持置信度阈值设置

2. run_inference.sh

功能:一键运行推理脚本

默认配置

Checkpoint: epoch_19.pth
样本数: 10
置信度阈值: 0.3
输出目录: inference_results_epoch19

🚀 快速开始

方法1使用Shell脚本推荐

# 直接运行
bash run_inference.sh

方法2使用Python脚本

# 基本用法
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 推理设备

修改参数示例

增加样本数

python inference_and_visualize.py --samples 50

提高置信度阈值(只显示高置信度检测)

python inference_and_visualize.py --show-score-thr 0.5

更换输出目录

python inference_and_visualize.py --output-dir results_highconf

使用不同GPU

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

🔍 结果分析

查看结果

# 列出所有生成的文件
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. 批量推理所有验证集

python inference_and_visualize.py --samples 6019
# nuScenes val set共6019个样本

2. 只推理特定类别

修改inference_and_visualize.py中的score_thr或后处理逻辑

3. 导出为视频

# 使用ffmpeg合成视频
cd inference_results_epoch19
ffmpeg -framerate 2 -pattern_type glob -i '*_combined.png' \
    -c:v libx264 -pix_fmt yuv420p output_video.mp4

4. 评估指标计算

# 使用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数据集路径正确

# 配置文件中应该有
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

# 检查文件是否存在
ls -lh runs/run-326653dc-74184412/epoch_19.pth

# 如果不存在检查其他runs目录
ls -lh runs/*/epoch_*.pth

问题2CUDA OOM

# 减少batch size或使用CPU
python inference_and_visualize.py --device cpu

# 或者减少样本数
python inference_and_visualize.py --samples 5

问题3数据集路径错误

# 检查数据集
ls data/nuscenes/
ls data/nuscenes/nuscenes_infos_val.pkl

问题4可视化不显示

# 确保安装了matplotlib的backend
pip install matplotlib pillow

# 或者检查生成的PNG文件
file inference_results_epoch19/sample_0000_combined.png

📝 自定义修改

修改颜色方案

编辑inference_and_visualize.py中的colors字典:

colors = {
    'drivable_area': [128, 64, 128],    # 修改为你想要的RGB值
    'ped_crossing': [244, 35, 232],
    ...
}

修改可视化布局

调整visualize_combined函数中的figsize和subplot布局

添加额外信息

在可视化函数中添加:

  • 时间戳
  • 场景ID
  • 性能指标
  • 统计信息

📚 参考资料


创建时间2025-10-21
脚本版本1.0
适用Checkpointepoch_19.pth
状态 可用