Toybrick

标题: 设置了rknn_batch_size后,推理出现段错误 [打印本页]

作者: 11111qq    时间: 6 天前
标题: 设置了rknn_batch_size后,推理出现段错误
我用一个双模态的onnx模型(这个onnx模型是一个batch_size=1的静态模型)成功量化转成了rknn模型,进行板端rknn_lite推理时也没有问题(batch_size=1),能够得到正常的mAP。但是我用其他批次比如2,4,8推理这个rknn模型,虽然能成功运行,但是得到的mAP就会有很大的波动,不准确了。

我现在想要推理不同批次的rknn模型,是需要在构建rknn模型的时候设置rknn_batch_size参数把?
我设置rknn_batch_size=2之后放到rk3588板子上推理会经常出现Segmentation fault,但也不是每次都会出现Segmentation fault,偶尔也能运行完,但得到的mAP也是不准确的。





作者: jefferyzhang    时间: 5 天前
设2就一定要传递2,他其实就只是一个新的维度的输入,nhwc,那你这四个维度就必须是固定的长度和空间,否则访问就会越界。
建议你用batch_size=1就好了,n=2时候就是推理两次而已,设置多了并不会有更高的推理效率提升
作者: 11111qq    时间: 前天 10:20
jefferyzhang 发表于 2025-3-7 11:01
设2就一定要传递2,他其实就只是一个新的维度的输入,nhwc,那你这四个维度就必须是固定的长度和空间,否则 ...

在rk3588上的多batch_size和batch_size=1的性能是差不多的吗?
我设置rknn_batch_size=2时,传进去的输入数据是固定的,shape都是是(2,3,640,640),输出的out是(2,25200,11),输入输出尺寸和pytorch模型是一样的,应该没问题把?为什么会出现Segmentation fault,您能讲一下可能是什么原因引起的吗,是npu内存分配的原因,内存不够,还是需要修改前后处理代码?我是在板端直接推理的,用的rknn_lite
作者: jefferyzhang    时间: 前天 10:50
11111qq 发表于 2025-3-10 10:20
在rk3588上的多batch_size和batch_size=1的性能是差不多的吗?
我设置rknn_batch_size=2时,传进去的输入 ...

我不是npu的开发者,无法就靠字面问题解释具体原因,段错误可以自己用gdb跟下,或者全部更新到最新版本再试。

性能方面我个人觉得是一样的,因为3588有3个npu核,你一个个图送和一次性送3张,耗费的时间是一样的,甚至有可能你在等待准备三张图的过程耗费时间还更多。




欢迎光临 Toybrick (https://t.rock-chips.com/) Powered by Discuz! X3.3