嵌入式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/7/22 6:26:39 阅读更多 →
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/7/22 4:13:57 阅读更多 →
400电话合规指南:2026年最新监管要求与技术实现方案

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

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

2026/7/20 20:26:11 阅读更多 →

最新新闻

C++实现文本内容重复识别:N-Gram哈希与Jaccard相似度算法详解

C++实现文本内容重复识别:N-Gram哈希与Jaccard相似度算法详解

1. 项目概述与核心价值 最近在准备华为OD机试的朋友,尤其是瞄准C卷的同学,应该对“音乐小说内容重复识别”这个题目不陌生。它频繁出现在各类真题回忆和备考资料中,俨然成了检验候选人字符串处理、算法设计乃至工程思维的一道经典关卡。我当年…

2026/7/22 6:50:21 阅读更多 →
Go指针从入门到精通:安全高效的内存操作指南

Go指针从入门到精通:安全高效的内存操作指南

1. 从“谈指针色变”到“得心应手”:为什么Go指针值得你重新认识一提到“指针”,很多从Java、Python这类语言转过来的开发者,第一反应可能就是“内存泄漏”、“野指针”、“复杂难懂”。这种恐惧感,很大程度上源于对C/C时代指针复…

2026/7/22 6:50:21 阅读更多 →
Mysql——第二次作业

Mysql——第二次作业

一、作业内容二、建库建表create database mydb11_stu;use mydb11_stu;CREATE TABLE student(id INT(10) NOT NULL UNIQUE PRIMARY KEY,name VARCHAR(20) NOT NULL,sex VARCHAR(4),birth YEAR,department VARCHAR(20),address VARCHAR(50));CREATE TABLE score(id INT(10) NOT …

2026/7/22 6:50:21 阅读更多 →
别死磕硬实力!标书会 “装” 才能中

别死磕硬实力!标书会 “装” 才能中

为啥你的同事课题年年拿立项?不是人家运气好,而是她比你更懂怎么装,别误会,不是造假吹牛,而是把如何直接亮点摆到评审眼前,让他一眼认准你的价值,学会怎么包装这两部部分,你也能年年…

2026/7/22 6:50:21 阅读更多 →
猜出下一个字,AI 就学会了“说话”?——给高中生的大语言模型原理科普

猜出下一个字,AI 就学会了“说话”?——给高中生的大语言模型原理科普

# 猜出下一个字,AI 就学会了“说话”?——给高中生的大语言模型原理科普> 吴国锋 7/21你有没有和 ChatGPT 聊过天?你问它“今天天气真好,适合……”,它马上接“出去走走”,甚至还会给你安排一场野餐攻略…

2026/7/22 6:50:21 阅读更多 →
AI辅助4K视频制作全流程:从Higgsfield提示词到侏罗纪主题成品

AI辅助4K视频制作全流程:从Higgsfield提示词到侏罗纪主题成品

在数字内容创作领域,4K分辨率视频已经成为主流标准,而AI技术的融入正以前所未有的方式降低高质量视频制作的门槛。Higgsfield Seedance2.0作为一款结合AI生成能力的视频制作工具,特别适合想要创作如“穿越侏罗纪”这类高视觉冲击力主题的创作…

2026/7/22 6:49:21 阅读更多 →

日新闻

TI DSP系统配置模块SYSCFG详解:中断机制与主设备优先级配置实战

TI DSP系统配置模块SYSCFG详解:中断机制与主设备优先级配置实战

1. 项目概述与SYSCFG模块的核心价值在嵌入式系统,尤其是像TI C6000系列这样的高性能DSP开发中,我们常常会与芯片手册里那些密密麻麻的寄存器打交道。很多开发者可能更关注算法实现、内存优化或者外设驱动,但对于一个稳定、高效的系统而言&…

2026/7/22 0:00:26 阅读更多 →
微信Server酱:高到达率的应急通知方案实践

微信Server酱:高到达率的应急通知方案实践

1. 为什么我们需要"最次"的通知方案? 在数字化协作环境中,消息通知系统的重要性不言而喻明。但现实情况是,企业级通知方案往往需要复杂的API对接(如企业微信、钉钉、飞书),个人开发者的小项目又经…

2026/7/22 0:00:26 阅读更多 →
甲方要的“简洁“PPT,到底是简洁还是省事?

甲方要的“简洁“PPT,到底是简洁还是省事?

甲方说"简洁一点",乙方听到的是"少做几页"。甲方说"不要太复杂",乙方理解成"别放图表了"。结果交过去,甲方说"我说的简洁不是这个意思"。"简洁"这个词在PPT语境里,是…

2026/7/22 0:00:26 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/21 8:48:31 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/21 5:34:47 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/21 8:25:39 阅读更多 →

月新闻