FPGA上实现YOLOv5的一般过程

FPGA上实现YOLOv5的一般过程

在FPGA上实现YOLOv5

YOLO算法现在被工业界广泛的应用,虽说现在有很多的NPU供我们使用,但是我们为了自己去实现一个NPU所以在本文中去实现了一个可以在FPGA上运行的YOLOv5。

YOLOv5的开源代码链接为

https://github.com/ultralytics/yolov5
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传


在这里插入图片描述

为了在FPGA中实现YOLOv5,我们首先在VOC数据集上面进行算法的训练,得到训练后的文件,并对训练后的文件进行8bit量化操作

在这里插入图片描述


得到三个权重文件。

之后为了将这个权重文件发送到FPGA上,所以我们再次使用python去解析这个权重文件,然后按照我们的FPGA加速器的架构对权重进行重组

解析的Python文件示意如下

得到的权重数据示意如下:

在这里插入图片描述

之后呢再来看一下yolov5的网络结构

在这里插入图片描述


放大一个局部来看一下,可以看到就是一些卷积,cat等操作

在这里插入图片描述


所以我们在FPGA实现的时候也是去实现这些基本的算子

在这里插入图片描述

FPGA上实现的结构图如下所示

在这里插入图片描述

在每个算子里面都是分为in_buf,out_buf,和控制模块计算模块组成

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传


然后每个模块会有一堆的控制信号来控制整个NPU的运行

在这里插入图片描述


总的控制由AXI Lite逻辑组成的寄存器模块来进行控制

在这里插入图片描述


最后实现的效果如下

在这里插入图片描述

Read more

Android端Whisper中文语音识别实战:从模型部署到性能优化

快速体验 在开始今天关于 Android端Whisper中文语音识别实战:从模型部署到性能优化 的探讨之前,我想先分享一个最近让我觉得很有意思的全栈技术挑战。 我们常说 AI 是未来,但作为开发者,如何将大模型(LLM)真正落地为一个低延迟、可交互的实时系统,而不仅仅是调个 API? 这里有一个非常硬核的动手实验:基于火山引擎豆包大模型,从零搭建一个实时语音通话应用。它不是简单的问答,而是需要你亲手打通 ASR(语音识别)→ LLM(大脑思考)→ TTS(语音合成)的完整 WebSocket 链路。对于想要掌握 AI 原生应用架构的同学来说,这是个绝佳的练手项目。 从0到1构建生产级别应用,脱离Demo,点击打开 从0打造个人豆包实时通话AI动手实验 在Android设备上实现高效的语音识别一直是个挑战,尤其是处理中文这种复杂的语言。最近我尝试将OpenAI的Whisper模型集成到Android应用中,过程中遇到了不少坑,也总结了一些优化经验,分享给大家。 移动端语音识别的特殊挑战 1. 算力限制:相比服务器,手机CPU和GPU性能有限,特别是低端设备。

告别复杂操作:灵感画廊极简AI绘画体验

告别复杂操作:灵感画廊极简AI绘画体验 "见微知著,凝光成影。将梦境的碎片,凝结为永恒的视觉诗篇。" 你是否曾经被复杂的AI绘画工具劝退?参数太多、界面太乱、学习成本太高...现在,这一切都将成为过去。灵感画廊(Atelier of Light and Shadow)基于Stable Diffusion XL 1.0打造,却彻底摒弃了工业化的复杂界面,为你提供一个如艺术沙龙般恬静的创作空间。 1. 为什么选择灵感画廊? 传统的AI绘画工具往往让人望而生畏。密密麻麻的参数滑块、晦涩难懂的技术术语、需要反复调试的复杂设置...这些都不是创作者想要的。 灵感画廊完全不同。它相信:真正的创作应该专注于灵感本身,而不是技术细节。 这里没有"提示词",只有"梦境描述";没有"反向词"

ClawdBot效果展示:语音消息→Whisper转写→英译日→Telegram推送全链路

ClawdBot效果展示:语音消息→Whisper转写→英译日→Telegram推送全链路 你有没有试过在 Telegram 群里听一段英语语音,想立刻知道它在说什么,又不想手动点开翻译软件、复制粘贴、再切回群聊?或者收到朋友发来的日语语音,却只能干瞪眼? ClawdBot 不是概念演示,也不是半成品 Demo。它是一套真正跑在你本地设备上的「端到端多模态翻译流水线」——从 Telegram 收到一条语音,到你在手机上看到准确的日语文字回复,全程无需上传云端、不依赖境外服务、不经过第三方服务器,耗时不到 3 秒。 这不是科幻设定,而是今天就能搭起来的真实体验。 1. 全链路效果实测:一条语音,三秒落地 我们不做抽象描述,直接看真实操作流。以下所有步骤均在一台普通笔记本(i5-1135G7 + 16GB 内存 + RTX3050)上完成,模型全部本地运行,无网络请求穿透防火墙。 1.1 场景还原:群聊中的一条英语语音

Matlab报错找不到编译器?5分钟搞定MinGW-w64 C/C++环境配置(附环境变量设置)

Matlab报错找不到编译器?5分钟搞定MinGW-w64 C/C++环境配置(附环境变量设置) 最近在尝试用Matlab调用一些C/C++写的算法库,或者想编译一个别人分享的.mex文件时,是不是经常在命令行里敲下 mex -setup 后,迎面而来的就是一个冰冷的报错窗口?"未找到支持的编译器或 SDK"——这句话对很多刚接触Matlab混合编程的朋友来说,简直像一盆冷水。别担心,这几乎是每个Matlab用户进阶路上的必经之坎。问题的核心,往往不在于Matlab本身,而在于你的电脑缺少一个它认可的“翻译官”:C/C++编译器。对于Windows用户,官方推荐且免费的解决方案就是MinGW-w64。这篇文章,就是为你准备的从报错到成功配置的完整路线图。我们不只告诉你步骤,更会解释每一步背后的逻辑,并附上那些容易踩坑的细节和验证方法,目标是让你一次配置,终身受益。 1. 理解问题根源:为什么Matlab需要单独的编译器? 在深入操作之前,花几分钟搞清楚“为什么”,能帮你避免未来很多“是什么”的困惑。Matlab本身是一个强大的解释型语言环境,