BEVFormer-tiny (R50) 部署
介绍
BEVFormer-tiny (R50) 是一款专注于边缘端高效部署的自动驾驶多相机三维目标检测模型。该模型由商汤科技与清华大学团队提出,基于经典的 ResNet-50 骨干网络,通过独特的时空注意力机制(Spatio-Temporal Attention),将多个环视相机的二维图像特征无损地转换为统一的环视鸟瞰图(BEV)特征。作为 Tiny 轻量化版本,它通过精简 Transformer 层数与优化网格分辨率,在大幅降低显存占用与计算延迟的同时,依然完好地保留了对动态物体的速度估计与时序轨迹追踪能力。凭借其优异的能效比,BEVFormer-tiny 已成为低算力车载芯片、路侧边缘计算单元(RSCU)实现高精度 3D 空间感知与车路协同的工业级标杆。
本章节将演示如何在边缘设备上完成 BEVFormer-tiny (R50) 部署、加载与识别流程。提供以下部署方式:
- AidLite Python API
在本案例中,模型推理运行在设备端 NPU 计算单元,通过代码调用相关接口接收用户输入并返回结果。
- 设备:Rhino Pi-X1
- 系统:Ubuntu 22.04
- 源模型:BEVFormer-tiny (R50)
- 量化模型精度:FP16 量化
- Model Farm 模型参考:BEVFormer-tiny (R50)
支持平台
| 平台 | 运行方式 |
|---|---|
| Rhino Pi-X1 | Ubuntu 22.04, AidLux |
准备工作
- Rhino Pi-X1 硬件
- Ubuntu 22.04 系统或 AidLux 系统
下载 BEVFormer-tiny (R50) 模型资源
bash
mms list BEVFormer-tiny
#------------------------可以看到 BEVFormer-tiny (R50) 模型------------------------
Model Precision Chipset SOC Backend
-------------------- --------- ------- ---------------- -------
BEVFormer-tiny (R50) FP16 qcs8550 Qualcomm QCS8550 QNN2.40
# 下载 BEVFormer-tiny (R50)
mms get -m 'BEVFormer-tiny (R50)' -p fp16 -c qcs8550 -b qnn2.40 -d /home/aidlux/models-test
cd /home/aidlux/models-test
# 解压
unzip BevFormer-Tiny-Resnet50_qcs8550_fp16.zipAidLite SDK 安装
开发者也可以参考模型文件夹中的 README.md 安装 SDK
- 确保 QNN 后端版本
≥ 2.40 - 确保
aidlite-sdk和aidlite-qnnxxx的版本是2.4.x或者更高版本
bash
# AidLite & QNN 版本检查
dpkg -l | grep aidlite
#------------------------ 可以看到类似如下输出 ------------------------
ii aidlite-qnn240 2.4.1.271 arm64 aidlux aidlite qnn240 backend plugin
ii aidlite-sdk 2.4.1.271 arm64 aidlux inference module sdkQNN & AidLite 版本更新
bash
# 安装 AidLite SDK
sudo aid-pkg update
sudo aid-pkg install aidlite-sdk
sudo aid-pkg install aidlite-qnn240
# aidlite sdk c++ check
python3 -c "import aidlite; print(aidlite.get_library_version())"
# aidlite sdk python check
python3 -c "import aidlite; print(aidlite.get_py_library_version())"AidLite Python API 部署
运行 Python API 例子
bash
cd /home/aidlux/models-test/
python3 code/python/run_test.py \
--backbone_model ./models/QCS8550/FP16/backbone_context.bin.aidem \
--scene_start_encoder_model ./models/QCS8550/FP16/scene_start_encoder_context.bin.aidem \
--encoder_model ./models/QCS8550/FP16/temporal_encoder_context.bin.aidem \
--decoder_model ./models/QCS8550/FP16/decoder_context.bin.aidem \
--asset_manifest ./code/python/datasets/sample4/asset_manifest.json \
--nms_contract ./code/python/configs/nms_runtime_contract.json \
--model_type QNN240 \
--invoke_nums 4 \
--output_dir ./outputs/final_sample4可以在命令行看到模型推理耗时 (单位 ms)以及检测结果:
plain
BEVFormer W8A8 Board Demo Result
========================================
status : PASS
started_at : 2026-07-08T15:10:38+08:00
finished_at : 2026-07-08T15:10:46+08:00
frames : 4
scene-start frames : 1 -> encoder_scene_start
temporal frames : 3 -> encoder_temporal
preprocess workers : 6
QNN invoke only, grouped by delivered .bin
note: excludes image preprocessing, tensor set/get, NMS, file saving, and visualization
bin file count mean(ms) min(ms) max(ms) var
backbone_context.bin 4 17.584 17.179 18.191 0.139
scene_start_encoder_context.bin 1 345.572 345.572 345.572 0.000
temporal_encoder_context.bin 3 347.091 346.439 347.952 0.404
decoder_context.bin 4 38.936 38.623 39.152 0.037
QNN invoke only, selected pipeline per frame
mean : 403.230 ms
max : 404.401 ms
min : 402.054 ms
variance : 0.795
Mean time per frame (ms)
preprocess (6 JPG -> tensor) : 116.016
QNN execute (3 contexts) : 403.230
backbone context execute : 17.584
encoder context execute : 346.711
scene-start encoder .bin invoke : 345.572
temporal encoder .bin invoke : 347.091
decoder context execute : 38.936
postprocess (NMS + save boxes) : 2.848
visualization (camera-grid PNG) : 919.890
model path total (no drawing) : 544.585
Complete run time (ms)
model loading : 945.562
manifest + NMS contract loading : 0.482
full inference chain (no drawing) : 2190.215
all visualization rendering : 4600.722
camera-grid GIF rendering : 921.162
full demo chain (with drawing) : 6794.092
whole Python run incl. load : 7743.404
Output files
summary JSON : /home/aidlux/models-test/outputs/final_sample4/bevformer_demo_summary.json
timestamped run log : /home/aidlux/models-test/outputs/final_sample4/run_20260708_151038.log
latest run log : /home/aidlux/models-test/outputs/final_sample4/run.log
camera-grid PNGs : 4 image(s)
camera-grid GIF : /home/aidlux/models-test/outputs/final_sample4/sample4_camera_grid.gif
output directory : /home/aidlux/models-test/outputs/final_sample4
========================================示例程序运行后,会在/home/aidlux/models-test/outputs/final_sample4/下生成最终动态检测图片 sample4_camera_grid.gif