当前位置: 首页 > news >正文

ZYNQ7045之YOLO部署——FPGA-ZYNQ Soc实战笔记1

一、简介

1、目标检测概念

2、目标检测应用

3、目标检测发展历程

二、YOLO V1

 1、输入

必须为448x448分辨率

2、网络结构

卷积 池化 卷积 池化

3、输出

最终7x7x30表示,7x7个各自,每个格子有30个数据,30个数据包含两个部分

1:位置信息(第一个候选框中心点x) 2:预测中心点纵坐标 y  3:候选框W宽度  4:高度H

5:第一个候选框置信度

6:位置信息(第二个候选框中心点x) 7:预测中心点纵坐标 y  8:候选框W宽度  9:高度H

10:第一个候选框置信度

11~20:类别信息

  -->/300 / 300

-->x2 x2  --> /300 /300

数据举例:

4、损失函数

(1)中心点误差:

X-\hat{X} 真实值与预测值的平方差        _{S}2  我们有多少网格单元    B有多少个候选框  含有物体为1    不含物体为0   不含物体损失函数直接为0 

中心点误差只针对含有物体的候选框进行计算    计算与真实中心点之间的距离    

(2)高度宽度误差:

使用根号目的减小误差

(3)置信度误差:

含有物体的时候:

不含有物体的时候:

(4)类被误差 : 

5、YOLO V1总结 

输入时固定的,因为存在全连接层,网络有24层卷积,2个全连接层,包含大量1x1卷积,最终7x7x30表示,7x7个各自,每个格子有30个数据,30个数据包含两个部分

1:位置信息(第一个候选框中心点x) 2:预测中心点纵坐标 y  3:候选框W宽度  4:高度H

5:第一个候选框置信度

6:位置信息(第二个候选框中心点x) 7:预测中心点纵坐标 y  8:候选框W宽度  9:高度H

10:第一个候选框置信度

11~20:类别信息

以及最后的损失函数

三、YOLO V2

1、模型的输入

不同与V1 引入了ImageNet448 x 448的训练  同时引入高精度的分类器  多尺度训练

 

2、网络部分

BN层:

无全连接层!!

3、输出部分

13*13*5   不同于V1的 7*7*2

4、损失函数

M = 5 第一行置信度损失  第二行前12800次计算收敛先验框   第三行正样本位置损失    第四行正样本置信损失    第五行类别损失

 1、第一行负责检测物体置信度损失    

2、预测框与先验框损失

3、预测框负责预测的位置损失

4、预测框负责预测物体他的置信度损失

5、物体的类别损失(分类损失)

四、YOLO V3

1、输入 网络 输出

2、损失函数

3、网络结构

 (1)特征提取 backbone  

        

  五、ZYNQ部署思路

  

 

        

HLS 01 向量加法器设计:

1、目标——两个向量对应元素相加

#include "vector_add.h"#define MAXNUM 50void vector_add_top(float A[MAXNUM],float B[MAXNUM],float C[MAXNUM]){for(int i = 0;i < MAXNUM ; i++){C[i] = A[i] + B[i];}
}

2、开发问题——数据类型对生成电路的影响

float型

int型 (最优)

fixed型

  3、如何并行加速?

        bug1当数组过大,采用unroll展开循环报错

        bug2减小数组,采用unroll展开循环,仍不能同时进行每个元素的对应加法

 原因:受限于RAM端口数量,RAM最多双端口,最多支持两个数据同时读写

将ABC进行展开:

#include "vector_add.h"#define MAXNUM 50void vector_add_top(D32 A[MAXNUM],D32 B[MAXNUM],D32 C[MAXNUM]){
#pragma HLS ARRAY_PARTITION variable=A complete dim=1
#pragma HLS ARRAY_PARTITION variable=B complete dim=1
#pragma HLS ARRAY_PARTITION variable=C complete dim=1for(int i = 0;i < MAXNUM ; i++){
#pragma HLS UNROLLC[i] = A[i] + B[i];}
}

将ABC进行分块:

#include "vector_add.h"#define MAXNUM 50void vector_add_top(D32 A[MAXNUM],D32 B[MAXNUM],D32 C[MAXNUM]){
#pragma HLS ARRAY_PARTITION variable=A block factor=2 dim=1
#pragma HLS ARRAY_PARTITION variable=B block factor=2 dim=1
#pragma HLS ARRAY_PARTITION variable=C block factor=2 dim=1for(int i = 0;i < MAXNUM ; i++){
#pragma HLS UNROLLC[i] = A[i] + B[i];}
}

4、对乘法进行测试

#include "vector_add.h"#define MAXNUM 50void vector_add_top(float A[MAXNUM],float B[MAXNUM],float C[MAXNUM]){for(int i = 0;i < MAXNUM ; i++){C[i] = A[i] + B[i];}
}

float型 

int型  (最优)

fixed型(精度有保障)

5、如何与PS交互?AXI接口

5.1AXI->HP->DDR

5.2AXIS->DMA->HP->DDR

6、存储测试

(1) RAM_2P_BRAM:

#pragma HLS RESOURCE variable=A_buffer core=RAM_2P_BRAM
#pragma HLS RESOURCE variable=B_buffer core=RAM_2P_BRAM
#pragma HLS RESOURCE variable=C_buffer core=RAM_2P_BRAM

(2) RAM_T2P_BRAM:

#pragma HLS RESOURCE variable=A_buffer core=RAM_T2P_BRAM
#pragma HLS RESOURCE variable=B_buffer core=RAM_T2P_BRAM
#pragma HLS RESOURCE variable=C_buffer core=RAM_T2P_BRAM

(3) RAM_S2P_BRAM:

(4) RAM_2P_LUTRAM:

#pragma HLS RESOURCE variable=A_buffer core=RAM_2P_LUTRAM
#pragma HLS RESOURCE variable=B_buffer core=RAM_2P_LUTRAM
#pragma HLS RESOURCE variable=C_buffer core=RAM_2P_LUTRAM

 (5) RAM_S2P_LUTRAM:

#pragma HLS RESOURCE variable=A_buffer core=RAM_S2P_LUTRAM
#pragma HLS RESOURCE variable=B_buffer core=RAM_S2P_LUTRAM
#pragma HLS RESOURCE variable=C_buffer core=RAM_S2P_LUTRAM

相关文章:

ZYNQ7045之YOLO部署——FPGA-ZYNQ Soc实战笔记1

一、简介 1、目标检测概念 2、目标检测应用 3、目标检测发展历程 二、YOLO V1 1、输入 必须为448x448分辨率 2、网络结构 卷积 池化 卷积 池化 3、输出 最终7x7x30表示&#xff0c;7x7个各自&#xff0c;每个格子有30个数据&#xff0c;30个数据包含两个部分 1&#xff1a;…...

Spring中的资源以及分类

Spring中的资源都被封装成 Resource 对象 以上是我测试代码的项目编译后的目录结构&#xff0c;target 所在的目录是 D:\\IdeaProjects\\study-spring\\ public void printStream(InputStream inputStream) throws IOException {Reader reader new InputStreamReader(input…...

初步认识Java,及使用

JAVA 特点 简单性 面向对象 分布式 健壮性 安全性 体系结构中立&#xff08;平台无关&#xff09; 可移植性 解释执行 高性能 多线程 动态 发展史 JDK&#xff0c;Eclipse下载&#xff0c;…...

C,C++被static标记的变量和函数分别是什么意思

被static关键字标记的变量和函数的含义 在C中&#xff0c;static关键字可以用于变量和函数的声明&#xff0c;它具有不同的语义和用途&#xff1a;static变量 1.全局静态变量&#xff1a;当全局变量被声明为static时&#xff0c;其作用域被限制为声明它的文件&#xff0c;即使使…...

Map 不常用方法介绍

getOrDefault 尝试获取key对应的值&#xff0c;如果未获取到&#xff0c;就返回默认值。 例子&#xff1a; private static void testGetOrDefault() {Map<String, String> map new HashMap<>(4);map.put("123", "123");String key "…...

论文翻译:ICLR 2024.DETECTING PRETRAINING DATA FROM LARGE LANGUAGE MODELS

文章目录 检测大型语言模型的预训练数据摘要1 引言2 预训练数据检测问题2.1 问题定义和挑战2.2 WIKIMIA&#xff1a;动态评估基准 3 MIN-K% PROB&#xff1a;简单的无参考预训练数据检测方法4 实验4.1 数据集和指标4.2 基线检测方法4.3 实现和结果4.4 分析 5 案例研究&#xff…...

Spring 框架精髓:从基础到分布式架构的进阶之路

一、概述 &#xff08;一&#xff09;Spring框架概念 1.概念&#xff1a; Spring框架是一个用于简化Java企业级应用开发的开源应用程序框架。 2.Spring框架的核心与提供的技术支持&#xff1a; 核心&#xff1a; IoC控制反转|反转控制&#xff1a;利用框架创建类的对象的…...

深入理解C++ Lambda表达式:语法、用法与原理及其包装器的使用

深入理解C Lambda表达式&#xff1a;语法、用法与原理及其包装器的使用 lambda表达式C98中的一个例子lambda表达式语法lambda表达式各部分说明捕获列表说明 函数对象与lambda表达式 包装器function包装器 bind &#x1f30f;个人博客主页&#xff1a; 个人主页 本文深入介绍了…...

C# 编程语言:跨时代的革命

C# 是一种由微软开发的现代、类型安全、面向对象的编程语言&#xff0c;自2000年推出以来&#xff0c;它已经成为.NET平台的核心组成部分。在本文中&#xff0c;我们将探讨C#语言的特点、优势以及它在软件开发领域中的应用。 C# 语言特点 类型安全和自动垃圾回收 C# 是一种类…...

恋爱脑学Rust之Box与RC的对比

在遥远的某个小镇&#xff0c;住着一对年轻的恋人&#xff1a;阿丽和小明。他们的爱情故事就像 Rust 中的 Rc 和 Box 智能指针那样&#xff0c;有着各自不同的「所有权」和「共享」的理解。 故事背景 阿丽和小明准备共同养一株非常珍贵的花&#xff08;我们称之为“心之花”&…...

Rust 力扣 - 1423. 可获得的最大点数

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 题目所求结果存在下述等式 可获得的最大点数 所有卡牌的点数之和 - 长度为&#xff08;卡牌数量 - k&#xff09;的窗口的点数之和的最小值 我们遍历长度为&#xff08;卡牌数量 - k&#xff09;的窗口&#…...

Android15音频进阶之Cuttlefish搭建音频开发环境(九十二)

简介: CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布:《Android系统多媒体进阶实战》🚀 优质专栏: Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏: 多媒体系统工程师系列【原创干货持续更新中……】🚀 优质视频课程:AAOS车载系统+…...

发现不为人知的AI宝藏:发现AI新天地! —— 《第八期》

在人工智能&#xff08;AI&#xff09;领域&#xff0c;尽管ChatGPT、Midjourney等知名产品广为人知&#xff0c;但还有许多小众而有趣的AI工具等待你的探索。本文将推荐五款实用的AI工具&#xff0c;它们不仅功能强大&#xff0c;而且使用简单&#xff0c;帮助你在各种场景中提…...

基于物联网设计的地下煤矿安全监测与预警

文章目录 一、前言1.1 项目介绍【1】项目开发背景【2】设计实现的功能【3】项目硬件模块组成 1.2 设计思路1.3 系统功能总结1.4 开发工具的选择【1】设备端开发【2】上位机开发 1.5 模块的技术详情介绍【1】NBIOT-BC26模块【2】MQ5传感器【4】DHT11传感器【5】红外热释电人体检…...

Java 23 的12 个新特性!!

Java 23 来啦&#xff01;和 Java 22 一样&#xff0c;这也是一个非 LTS&#xff08;长期支持&#xff09;版本&#xff0c;Oracle 仅提供六个月的支持。下一个长期支持版是 Java 25&#xff0c;预计明年 9 月份发布。 Java 23 一共有 12 个新特性&#xff01; 有同学表示&…...

.NET 8 中 Entity Framework Core 的使用

本文代码&#xff1a;https://download.csdn.net/download/hefeng_aspnet/89935738 概述 Entity Framework Core (EF Core) 已成为 .NET 开发中数据访问的基石工具&#xff0c;为开发人员提供了强大而多功能的解决方案。随着 .NET 8 和 C# 10 中引入的改进&#xff0c;开发人…...

ai数字人分身123口播克隆数字人小程序源码_博纳软云

功能配置 一、用户 用户管理小黑屋用户反馈登录设置短信参数 二、作品 视频作品背景音乐库背景音乐分类 三、形象分身 上传记录视频要求参数配置 四、声音克隆 克隆记录参数配置声音要求文案示例 五、AI文案 生成记录创作模型模型分类Al配置 六、充值 充值订单积分套…...

从0开始学PHP面向对象内容之(类,对象,构造/析构函数)

上期我们讲了面向对象的一些基本信息&#xff0c;这期让我们详细的了解一下 一、面向对象—类 1、PHP类的定义语法&#xff1a; <?php class className {var $var1;var $var2 "constant string";function classfunc ($arg1, $arg2) {[..]}[..] } ?>2、解…...

openGauss数据库-头歌实验1-5 修改数据库

一、查看表结构与修改表名 &#xff08;一&#xff09;任务描述 本关任务&#xff1a;修改表名&#xff0c;并能顺利查询到修改后表的结构。 &#xff08;二&#xff09;相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a; 1.如何查看表的结构&#xff1b; 2.如…...

《JVM第3课》运行时数据区

无痛快速学习入门JVM&#xff0c;欢迎订阅本免费专栏 运行时数据区结构图如下&#xff1a; 可分为 5 个区域&#xff0c;分别是方法区、堆区、虚拟机栈、本地方法栈、程序计数器。这里大概介绍一下各个模块的作用&#xff0c;会在后面的文章展开讲。 类加载子系统会把类信息…...

Admin.Net中的消息通信SignalR解释

定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接&#xff1a;3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯&#xff0c;要想要能够将所有的电脑解锁&#x…...

汽车生产虚拟实训中的技能提升与生产优化​

在制造业蓬勃发展的大背景下&#xff0c;虚拟教学实训宛如一颗璀璨的新星&#xff0c;正发挥着不可或缺且日益凸显的关键作用&#xff0c;源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例&#xff0c;汽车生产线上各类…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

微信小程序云开发平台MySQL的连接方式

注&#xff1a;微信小程序云开发平台指的是腾讯云开发 先给结论&#xff1a;微信小程序云开发平台的MySQL&#xff0c;无法通过获取数据库连接信息的方式进行连接&#xff0c;连接只能通过云开发的SDK连接&#xff0c;具体要参考官方文档&#xff1a; 为什么&#xff1f; 因为…...

c#开发AI模型对话

AI模型 前面已经介绍了一般AI模型本地部署&#xff0c;直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型&#xff0c;但是目前国内可能使用不多&#xff0c;至少实践例子很少看见。开发训练模型就不介绍了&am…...

select、poll、epoll 与 Reactor 模式

在高并发网络编程领域&#xff0c;高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表&#xff0c;以及基于它们实现的 Reactor 模式&#xff0c;为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。​ 一、I…...

Fabric V2.5 通用溯源系统——增加图片上传与下载功能

fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

return this;返回的是谁

一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请&#xff0c;不同级别的经理有不同的审批权限&#xff1a; // 抽象处理者&#xff1a;审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...