专栏算法工具链【J6】逆向自证hbm与bc一致性

【J6】逆向自证hbm与bc一致性

Jade-self2025-03-19
136
0

1. 引言

在J6算法工具链使用过程中,会存在算法侧与软件侧的交接,偶尔会遇到,需要自证清白的情况,例如:

  • 算法侧反馈:bc精度没问题,也参考了【J6】bc与hbm一致性比对 文章,使用hb_verifier工具验证了bc与hbm一致性,完成交付,美滋滋,下班!
  • 软件侧反馈:算法侧给我的hbm有问题,使用相同的png图片,我用c++写的前处理,推理hbm出来的可视化不行,和bc对不齐,算法同学快回来加班!

  • 算法与软件:我不相信hb_verifier工具,只相信自己的代码。(呃呃呃呃呃)

如果遇到了这种问题,算法侧的同学怎么自证清白呢?怎么证明可能是c++与python前后处理不一致的问题?

很简单:反向使用软件侧的输入,用python代码推理一下bc与hbm,并用python代码来进行可视化。下面会介绍软件与算法在遇到这种问题时,应该怎么做。

2. 软件侧

对于视频通路金字塔过来的图像数据,前处理一般很简单,就是mean/std/归一化之类的,常见的应该是NV12输入,这部分地平线有一套非常成熟的配置方式,下面以NV12输入为例,介绍软件侧应该怎么给算法侧输入。

软件侧和算法侧共同拥有一张jpg图片,在板端使用hrt_model_exec工具,结合jpg图片,生成hbm真实的输入。

hbm输入信息如下:

hrt_model_exec工具有三个功能,本文主要使用infer功能,infer用于模型推理,用户自定义输入图片,推理一帧。infer功能需要与 input_file 一起使用,指定输入图片路径,工具根据模型信息resize图片,整理模型输入信息。本文使用到的相关参数如下

Description

在板端执行类似如下命令:

会生成对应的输入/输出数据

将两个输入.bin数据给算法侧,请算法侧使用这两个输入去可视化bc模型。

3. 算法侧

下面参考引言部分的文章,算法侧使用软件侧给的输入推理hbm模型即可,输入数据加载方式如下。

注意:为了避免引入其他变量,此时转换编译模型时,不要删除任何节点。

推理部分代码如下:

最后,用hbm_outputs走python的后处理与可视化即可。

4. 拓展

针对更复杂的输入场景,板端使用同样的处理方式,将hbm模型提供给算法侧即可。

算法工具链
社区征文杂谈技术深度解析
评论0
0/1000