嵌入式AI部署---基于RK3588运行yolov5(2)
前言在上篇博客中撰写了关于yolov5在RK3588上运行的流程 在学习的过程中发现后处理很难我一直不理解输出结果是如何存储的它比较抽象对于我来讲很难理解经过一段时间的学习有了一个比较好的理解思路。1. 后处理的传参在rknn_outputs_get中获得了NPU推理后的处理结果这个结果有三个输出结果outputs[i].buf作为后处理的输入部分对应模型三个尺度的输出张量。rknn_outputs_get(ctx,outputs_num,outputs,NULL);post_process((int8_t*)outputs[0].buf,(int8_t*)outputs[1].buf(int8_t*)outputs[2].buf,....)这里的outputs是三个检测头的输出特征图YOLOv5采用多尺度检测三个输出头对应不同下采样步长这里输出有三个不同类型是因为有不同的检测目标输出头步长网格大小锚框尺寸检测目标output0880×80[10,13], [16,30], [33,23]小目标output11640×40[30,61], [62,45], [59,119]中目标output23220×20[116,90], [156,198], [373,326]大目标下面我们对于这个输出的结果进行理解有助于理解后续后处理code的编写2. 数据格式数据类型int8_t量化后的 8 位整数内存布局NCHW 或 NHWC取决于模型导出时的配置此处代码按NCHW处理每个输出是一个4 维张量形状为[batch图片数量, channels通道, grid_h特征图高度, grid_w特征图宽度]batch1例如output0[1, 255, 80, 80]stride8output1[1, 255, 40, 40]stride16output2[1, 255, 20, 20]stride32其中255 3 × (80 5)3每个网格预测 3 个锚框anchor0/1/280COCO 数据集的 80 个类别概率5x, y, w, h, objectness框坐标和置信度3. 数据内容每个网格的每个锚框对应一组长度为 85 的数据排列顺序通常是[x, y, w, h, obj_conf是否存在目标, cls0_prob第1个类, cls1_prob(第2个类), ..., cls79_prob(第80个类)]在这里你还是不知道如何存储的话听我下面的讲解4. 数据的立体讲解-----最重要理解方式想象一个三维立方体三个维度分别是通道 C0 ~ 254共 255 层高度 H0 ~ 79共 80 行宽度 W0 ~ 79共 80 列也就是说我们对立方体横向砍一刀得到一个横截面它的宽和高是H和W立方体的高是对应着通道C 我们可以将高度和C一一对应它一共有255层对应255个通道数**255个通道数如何排列**如下图所示[ x, y, w, h, obj_conf, cls0_prob, cls1_prob, ..., cls79_prob ]上面总计85个这个立方体有85*3 255,为什么有要× 3 有3个锚框那么锚框0对应通道0-84锚框1对应通道85-169锚框2对应通道170-254在这里插入图片描述5. 如何理解内存中的存储以output0[1, 255, 80, 80]stride8这个为例子特征图的宽和高为80×80 则x、y、w、h、c 将会分别占用6400的存储单元x占6400个y占6400个w占6400个…从立方体的从上往下看先对应的是x,后对应的是yw等那么存储的时候先在内存中存放6400个x 后存6400个y, 再就是6400个w依次存完。由于有三个锚框先存完「第 1 个锚框」的全部数据X/Y/W/H/C/80 个类再接着存「第 2 个锚框」的全部数据最后存「第 3 个锚框」的全部数据。单个锚框存储的总单元基础 5 参数X(6400) Y(6400) W(6400) H(6400) C(6400) 5×640080 个类别80×6400单个锚框总长度(580)×6400 85×6400 5440003个锚框5 80 * 3 * 6400 1,632,000内存地址低 → 高 ┌──────────────────────┐ │ 通道 0 (x_a0) │ 6400 个 int8 │ 通道 1 (y_a0) │ 6400 个 int8 │ 通道 2 (w_a0) │ 6400 个 int8 │ 通道 3 (h_a0) │ 6400 个 int8 │ 通道 4 (obj_a0) │ 6400 个 int8 │ 通道 5 (cls0_a0) │ 6400 个 int8 │ ... │ │ 通道 84 (cls79_a0) │ 6400 个 int8 ├──────────────────────┤ │ 通道 85 (x_a1) │ 6400 个 int8 │ ... │ │ 通道 169 (cls79_a1) │ 6400 个 int8 ├──────────────────────┤ │ 通道 170 (x_a2) │ 6400 个 int8 │ ... │ │ 通道 254 (cls79_a2) │ 6400 个 int8 └──────────────────────┘ 总大小 255 × 6400 1,632,000 个 int8总结相对来说比较清晰了吧后面再告诉如何写后处理部分的code如何找到对应的数据

相关新闻

Netflix-4K-DDplus字幕优化技巧:如何调整字幕样式和关闭imsc字幕

Netflix-4K-DDplus字幕优化技巧:如何调整字幕样式和关闭imsc字幕

Netflix-4K-DDplus字幕优化技巧:如何调整字幕样式和关闭imsc字幕 【免费下载链接】netflix-4K-DDplus MicrosoftEdge(Chromium core) extension to play Netflix in 4K(Restricted)and DDplus audio 项目地址: https://gitcode.com/gh_mirr…

2026/10/25 13:35:09 阅读更多 →
Netflix-4K-DDplus开发者深度解析:如何绕过Netflix播放限制的技术原理

Netflix-4K-DDplus开发者深度解析:如何绕过Netflix播放限制的技术原理

Netflix-4K-DDplus开发者深度解析:如何绕过Netflix播放限制的技术原理 【免费下载链接】netflix-4K-DDplus MicrosoftEdge(Chromium core) extension to play Netflix in 4K(Restricted)and DDplus audio 项目地址: https://gitcode.com/gh…

2026/10/23 20:52:42 阅读更多 →
400电话合规指南:2026年最新监管要求与技术实现方案

400电话合规指南:2026年最新监管要求与技术实现方案

摘要:400电话合规监管在2025-2026年持续收紧,实名制、录音告知、营销外呼限制、数据本地化四大要求成为企业通信系统的硬性门槛。本文从技术开发视角出发,系统梳理当前监管框架与真实处罚案例,给出外呼时段校验、DNC拒接名单管理、…

2026/10/25 6:31:37 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/10/26 12:00:21 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/27 4:06:49 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/27 7:21:53 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/10/26 12:00:21 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/27 6:20:47 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/27 4:06:50 阅读更多 →

日新闻

周新闻

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/27 13:55:19 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/27 7:21:50 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/26 8:34:37 阅读更多 →