量化模型在ubuntu20.04可以正常使用,在ubuntu22.04无法正常使用

目前同一个量化模型(bin模型)在以下两个环境中运行会得到两个完全不同的结果:
环境一:Ubuntu20.04、rdkos=2.1.0、hobot-dnn=2.1.1-20240102181558、hb_dnn.h=1.18.6
环境二:Ubuntu22.04、rdkos=3.0.3、hobot-dnn=2.1.1-20251021131326、hb_dnn.h=1.18.6
在环境一中运行顺利,结果正常的模型,在环境二运行结果偏差较大
其中,模型是通过openexplorer=v2.6.6的镜像进行转换的

你好,能否提供具体的信息?具体的模型,对应的量化配置,推理使用的代码,或者TROS包

正常是如何运行 什么效果

deploy.zip (15.1 KB)
我转换的是superpoint模型,用于识别图像关键点,由onnx转bin,修正一下openexplorer=v2.6.4。
环境一的推理是调用python的dnn推理库实现的,具体如下:

ba3102ae7ef49201fb7debc2478acec1

74b3489e301049a4b5dd945780fadfd5
环境二的推理调用了c++的hb_dnn.h进行推理,具体推理实现如下函数std::vector<float*> SuperPointMatcher::Inference(const cv::Mat& preprocessed_image)所示

superpoint_matcher.zip (11.1 KB)

1 个赞

正常情况下,模型输出的是关键点的描述子和heatmap。
而两个环境推理出的结果的关键点的数量、描述子和heatmap都不同。正常情况下输出应该保持完全一致

你好,环境1使用的python接口 环境2使用的Cpp接口,有环境2测试python dnn接口吗?目前看变量不统一

python接口都是基于Cpp libdnn接口封装的,正常情况出现问题也是python接口的问题不会是底层的libdnn

推荐是使用最新的OE包进行模型编译 地瓜算法工具链OpenExplore包Docker等发布下载 ,也可能是OE包编译的模型不兼容的原因

是的,环境一是python接口,环境二是c++接口。最新的openexplorer的docker镜像是否有适配rdkos=3.0.3、ubuntu==22.04、rdk x3板子的镜像?我这边暂时找不到,针对rdkx3的oe镜像似乎都是只支持ubuntu=20.04的

oe镜像的版本要求是针对个人开发机

那么针对rdkx3的最新的oe镜像就是上面的2.6.6版本了么

是的 2.6.6为最新版本

我这边使用了最新的2.6.6的oe镜像进行转换,上面所描述的结果依旧存在。
另外,当我们将在ubuntu20.04、rdkos=2.1.0环境中运行的很正常的调用python的dnn推理接口的算法直接迁移到Ubuntu22.04、rdkos=3.0.3环境中调用python的dnn推理接口进行推理时,模型输出结果是异常的。这也是为什么需要构建c++版本算法调用c++接口运行。官方是否有针对rdkx3上部署ubuntu22.04进行dnn推理方面相应的适配?
以及上面调用c++接口推理结果依然出错,还可能是什么原因导致的?
感谢回复

应该是底层的dnn接口这块有更新,最新的系统镜像一定是适配最新的OE包的

但是环境1和环境2的hb_dnn的版本都是一样的,同一个模型调用推理结果却很大差别

两个版本用Cpp接口应该是一致的。rdk os 3.+ python接口有重新封装,要使用python建议是保持老版本了