Toybrick
标题:
图像超分辨率模型部署过程中输出结果数据流保存为PNG
[打印本页]
作者:
弓长想学code
时间:
前天 17:05
标题:
图像超分辨率模型部署过程中输出结果数据流保存为PNG
本帖最后由 弓长想学code 于 2025-5-21 17:07 编辑
硬件主板型号:TB-RK3588C0-A+TB-RK3588B1
固件名称/系统版本:Debian11
自编的或固件下载地址:开发板自带
问题描述及复现步骤:
工程师,你好!我这边遇到一个问题,板端部署了一个2倍超分辨率的算法,输出结果出现了问题,我想知道用什么方法可以正确地取出内存中的数据流格式,并保存结果
在srx2.cc的模型文件中的模型推理部分inference_syenetx2_model中是使用一个image_buffer_t结构体sr_img->virt_addr址指向output.buf对应的缓存
// 后处理过程:将输出张量的数据地址指向sr_img
sr_img
->
width
=
app_ctx
->
model_width
*
2
;
// 如果是2倍超分辨率
sr_img
->
height
=
app_ctx
->
model_height
*
2
;
sr_img
->
format
=
IMAGE_FORMAT_RGB888
;
sr_img
->
size
=
get_image_size
(
sr_img
);
// 根据宽度、高度和格式计算所需的内存大小
sr_img
->
virt_addr
=
(
unsigned
char
*
)
malloc
(
sr_img
->
size
);
if
(
sr_img
->
virt_addr
==
NULL
) {
printf
(
"malloc buffer size:
%d
fail!
\n
"
,
sr_img
->
size
);
return
-
1
;
}
// caution: might have bug!!
// 数据拷贝
memcpy
(
sr_img
->
virt_addr
,
outputs
[
0
].
buf
,
sr_img
->
size
<
outputs
[
0
].
size
?
sr_img
->
size
:
outputs
[
0
].
size
);
在main.cc主函数中,保存上述得到的sr_img缓存中对应的推理结果:
// 执行推理
ret
=
inference_syenetx2_model
(
&
rknn_app_ctx
,
&
src_image
,
&
sr_image
);
if
(
ret
!=
0
)
{
printf
(
"init_yolov5_model fail! ret=
%d
\n
"
,
ret
);
goto
out
;
}
write_image
(
"./output.png"
,
&
sr_image
);
作者:
jefferyzhang
时间:
昨天 09:01
rknn-toolkit文档里有调试方式,包括逐层dump运算结果。请先阅读文档。
欢迎光临 Toybrick (https://t.rock-chips.com/)
Powered by Discuz! X3.3