专栏算法工具链BEVFormer量化模型输入准备完整指南

BEVFormer量化模型输入准备完整指南

Vincent2025-10-31
214
0

前言

在准备BEVFormer模型推理时,相信很多开发者都遇到过这样的困惑:模型输入除了常见的imgs和reference_point之外,还需要额外的五个神秘输入。这些输入到底是什么?应该如何准备?本文将详细解答这些问题。

一、问题背景

1.1BEVFormer模型的输入结构

BEVFormer量化模型在推理时需要以下输入:

基础输入:

  • imgs: 多视角相机图像
  • reference_point: 参考点坐标

 

额外的五个输入(如图1所示)

  • 这些输入通常与特征提取、空间变换相关

  • 数据格式需要与量化模型匹配

1.2 核心问题

这些额外输入应该如何准备?

答案是:通过推理HBIR(Horizon BPU Intermediate Representation)模型来获取。

二、准备HBIR模型输入

2.1 HBIR模型所需输入

推理HBIR模型需要准备以下数据:

  • 相机图像: 多视角相机采集的原始图像
  • Homography矩阵: 根据相机内参生成的单应性变换矩阵
   💡 提示: Homography矩阵用于描述不同视角之间的几何变换关系,是BEV(Bird's Eye View)视角转换的关键。 

三、代码修改步骤

3.1 修改配置文件

第一步:添加保存函数

在BEVFormer模型qat配置文件中添加保存函数,用于保存HBIR模型的推理输出。

如图二所示:

代码如下:

第二步:启用HBIR推理配置

修改hbir_infer_model相关配置,使保存函数生效

3.2 修改推理代码

进入Docker环境,修改推理相关代码(如图3所示):

修改目的
  • 在模型推理的第一步自动生成所需的五个固定输入文件

  • 将这些输出保存到指定路径

  • 确保输出格式与量化模型要求一致

四、 数据类型转换与量化 

4.1 数据类型问题

当前状态: HBIR模型生成的文件数据类型为fp32(32位浮点数)
目标状态: 量化模型需要int8(8位整数)类型
解决方案: 需要手动对数据进行量化转换

4.2 获取量化参数

量化过程必须使用正确的Scale因子,获取方法如下:

方法:使用hrt_model_exec工具

执行后会显示模型的详细信息(如图4所示):

关键信息
  • 红色框中标注的即为所需的量化Scale因子

  • 每个输入tensor都有对应的量化参数

4.3 处理多scale值情况

特殊情况说明

有时一个输入会有多个Scale值,这是为什么呢?
示例分析

 

观察模型信息:

原因解析
  • quantizeAxis: 3 表示在第3个轴(从0开始计数)上进行量化
  • valid_shape的第3个维度大小为2
  • 因此需要在两个通道上分别量化
  • 每个通道对应一个Scale值

 

通用规则
  • 检查quantizeAxis值,确定量化的轴
  • 查看该轴的维度大小

  • Scale值的数量 = 该轴的维度大小

五、完整工作流程

5.1 流程图

5.2 检查清单

在完成配置后,请检查以下内容:

  • HBIR模型配置正确

  • 保存路径可写入

  • 生成了五个输出文件

  • 获取了正确的Scale参数

  • 量化后数据类型为int8

  • 验证量化前后数值范围合理

 

 

 

算法工具链
技术深度解析征程6官方教程
评论0
0/1000