Toybrick

RK3566板子尝试跑yolov8实例分割失败

肉盾局特工

新手上路

积分
19
楼主
发表于 2023-5-16 13:40:44    查看: 3195|回复: 3 | [复制链接]    打印 | 只看该作者
本帖最后由 肉盾局特工 于 2023-5-16 15:15 编辑

我想将基于onnxruntime的yolov8实例分割推理代码,用rknn推理框架移植到3566的开发板上,但是失败了。我有一下几点疑问:
1. 在转换模型的时候,未使用量化。onnx是fp32的,但是打印rknn的输入和输出节点信息,都是fp16的。如何导出fp32的模型?或者,因为我预处理之后的图片是CV_32FC3的,输入的格式是NHWC,该如何正确的设置输入节点信息并将输入buffer传递给input.buf?目前我已能正常进行预处理+推理+后处理,但结果对应不上。
2. 在while执行推理的时候会有内存泄露发生,不知道是哪里设置的不正确。
3. 3566这块开发板是否支持其他的推理框架,比如onnxruntime?

可以确定的是我onnxruntime的推理结果没问题,也没有内存泄露。

输入输出节点信息:
index=0, name=images, n_dims=4, dims=[1, 640, 640, 3], n_elems=1228800, size=2456700, fmt=NHWC, type=FP16, qnt_type=AFFINE, zp=0, scale=1.000000
index=0, name=output0, n_dims=4, dims=[1, 38, 8400, 1], n_elems=319200, size=638400, fmt=NCHW, type=FP16, qnt_type=AFFINE, zp=0, scale=1.000000
index=1, name=output1, n_dims=4, dims=[1, 32, 160, 160], n_elems=819200, size=1638400, fmt=NCHW, type=FP16, qnt_type=AFFINE, zp=0, scale=1.000000
input[0].type应该选择 RKNN_TENSOR_FLOAT32 还是 RKNN_TENSOR_FLOAT16;
input[0].size = H * W * C * sizeof(float);
input[0].pass_through应该选择 false 还是 true;
input[0].buf = (void*)preProcessedMat.data;
output[0].want_float应该选择 false 还是 true?
output[1].want_float应该选择 false 还是 true?


回复

使用道具 举报

肉盾局特工

新手上路

积分
19
沙发
 楼主| 发表于 2023-5-16 14:22:08 | 只看该作者
本帖最后由 肉盾局特工 于 2023-5-16 14:56 编辑

我打印同一段的输出tensor,tensorrt的结果是这样的

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

肉盾局特工

新手上路

积分
19
板凳
 楼主| 发表于 2023-5-16 14:26:28 | 只看该作者
本帖最后由 肉盾局特工 于 2023-5-16 14:57 编辑

onnxruntime的结果是这样的

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

肉盾局特工

新手上路

积分
19
地板
 楼主| 发表于 2023-5-16 15:01:41 | 只看该作者
rknn的结果却是这样的:
pfOutput0_BOX[10000] = 75.5, pfOutput1_MASK[10000] = 0.282471
pfOutput0_BOX[10001] = 0, pfOutput1_MASK[10001] = 0.25415
pfOutput0_BOX[10002] = 0, pfOutput1_MASK[10002] = 0.279541
pfOutput0_BOX[10003] = 0, pfOutput1_MASK[10003] = 0.255371
pfOutput0_BOX[10004] = 77.625, pfOutput1_MASK[10004] = 0.282471
pfOutput0_BOX[10005] = 0, pfOutput1_MASK[10005] = 0.256592
pfOutput0_BOX[10006] = 0, pfOutput1_MASK[10006] = 0.281982
pfOutput0_BOX[10007] = 0, pfOutput1_MASK[10007] = 0.252441
pfOutput0_BOX[10008] = 79.375, pfOutput1_MASK[10008] = 0.277832
pfOutput0_BOX[10009] = 0, pfOutput1_MASK[10009] = 0.252197

看上去mask输出分支没什么问题,但是box输出分支每4个数当中有3个是0。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

产品中心 购买渠道 开源社区 Wiki教程 资料下载 关于Toybrick


快速回复 返回顶部 返回列表