【2021集创赛】Digilent杯二等奖:基于FPGA的动态视觉感知融合的运动目标检测系统

杯赛题目:Diligent杯:基于FPGA开源软核的硬件加速智能平台
参赛组别:A组
设计任务:
利用业界主流软核处理器(仅限于Cortex-M系列及 RISC-V系列)在限定的DIGILENT官方FPGA平台上构建SoC片上系统,在 SoC中添加面向智能应用的硬件加速器(如从最简单的矩阵乘加加速到更复杂的神经网络硬件优化实现)以提高和优化系统的性能,并基于该SoC实现一个基于该SoC的智能信息处理系统,系统具有创新性、实用性和具体的应用场景。
参赛单位:中山大学
总决赛奖项:二等奖

1.项目介绍:

在物联网背景下, 能够高效地实现低功耗、低成本的边缘计算平台越来越受到关注。在无人驾驶和智能监控等领域有了长远的发展,其中高效的运动目标检测算法备受瞩目。对于运动目标检测的高效性需求,Event-based Camera (基于事件的相机)这一概念开始兴起, 动态视觉传感器(DVS)就是其中一类。基于模拟生物形态而开发的用于图像捕捉的DVS, 可快速捕捉并识别动态目标。一方面, 事件驱动的DVS可以快速获得运动目标所激活触发的地址-事件相关数据;另一方面,目前CNN在目标识别和目标检测等计算机视觉领域表现优异。

因此, 本项目采用了一种动态视觉传感器(DVS)和卷积神经网络相结合的运动目标检测混合算法策略。在实际应用中,基于硅视网膜的动态视觉传感器需要特定的运行环境和昂贵的价格,所以本项目使用了一种基于帧图像的动态视觉传感器建模方法。该方法对常见的帧图像视频流进行处理,使得像素矩阵中的像素单元相互独立,从时间和空间的维度上进行连续的差分与逻辑判断。并在此基础上,根据该方法生成的数据特征,使用聚类算法进行对运动目标的提取。并将提取的运动目标活跃区域输入到分类卷积神经网络,完成基于动态视觉传感器的目标检测算法的运算过程。与 Faster R-CNN和SSD卷积神经网络相比,基于动态视觉传感器的目标检测算法在检测运动物体时可以获得优异的检测精度,同时因为计算量的减少,检测速度预计可大幅提升。

普通相机与DVS相机之间的差别。DVS是使用CMOS集成的特定硅视网膜结构,该硅视网膜工作方式类似于生物视网膜,进行光传导与信号处理。不同于常规的图像传感器,DVS放弃了帧概念,因此不会限制响应等待时间和时间分辨率。同时,DVS是对局部亮度变化做出响应的成像传感器,不会像普通CMOS相机那样使用快门捕获图像,而是每个像素单元独立且异步运行,即每个像素可以独立响应亮度发生的变化。DVS中所包含的像素单元异步运行,可以独立响应光强亮度发生的变化,每个像素单元对光强变化进行连续的比较。

DVS中所包含的像素单元异步运行,可以独立响应光强亮度发生的变化,每个像素单元对光强变化进行连续的比较,其工作原理可以表述为:如果DVS中像素单元前后光强变化幅度超过设定阈值,则该像素单元重置其参考电平并生成事件,输出包含时间戳信息的地址-事件离散信息数据;如果变化幅度未达到设定阈值,则该像素单元保持静默,不输出信息数据。为了体现DVS逐像素差分的特点,我们将DVS建模中像素色域增的像素点转化为绿色,减的像素点转化为红色。
在这里插入图片描述

2.软硬件设计介绍:

在这里插入图片描述

我们提出了一种基于DVS和CNN混合框架的目标检测算法,其系统结构概述如图所示,该混合框架的目标检测算法检测过程可以分为三个步骤。首先,需要检测的图像数据流经过基于帧图像的DVS建模处理后,获得对应的地址-事件数据。第二步,使用DBSCAN聚类算法对获得的数据进行处理以提取活跃的运动目标区域。最后一步,将活跃的运动目标区域进行预处理,通过裁剪与缩放以适应CNN网络尺寸大小,处理后的活跃区域作为CNN模型的输入数据,经过卷积池化等运算后提取目标特征,输出识别后的结果

在这里插入图片描述

系统的总体框架如图所示。系统以ARM Cortex-m3片上系统为核心,通过AXI总线控制GPIO、UART、QSPI、DAP-LINK Debugger等基本外设以及针对车牌识别的外设。其中GPIO用于实现Cortex-m3波形输出,UART用于反馈系统信息与测试,QSPI用于访问FLASH,调试器对程序进行下载与调试。
Ov5640reset用于产生SCCB时序,对OV5640摄像头初始化。
VDMA由ARM核初始化好后,成为图像缓存与硬件加速通路的桥梁,且可以通过寻址在调试时实时查看DDR3内存内部数据。可以将各种中间结果存入存储,则ARM通过寻址的方式即可访问数据结果,方便调试。
HDMI输出可选择VDMA不同读出地址,便于实时查看处理数据过程,以及当前电路的效果。

3.总结与展望

首先,本设计通过软件与硬件的结合,将ARM Cortex-M3软核嵌入FPGA,完整地搭建出嵌入式系统,该系统可实现摄像头驱动并传输数据、运动目标定位检测、结果可视化输出至HDMI等。系统具有采集视频图像实时,定位准确,识别误差低,速度快等特点。完成了DVS的目标检测算法在更底层的嵌入式系统移植验证。

在算法方面,我们实现了对图像的采集到DVS建模的全流程硬件化,神经网络识别也成功硬件化。软核完成初始化与实现DBSCAN聚类算法的功能。
参赛感想

本次比赛是高校集成电路领域最为突出的赛事,可以和来自全国各地高校的优秀同学们的互相学习和交流,收获颇丰。我们团队以赛促学,在项目推进的过程中学到了很多课堂外的知识,受益匪浅。最后,感谢本次赛事组委会的工作人员和老师们的高效组织工作与指导,让我们能够参与到这样的大赛之中,接触到贴近于实际又富有新技术与挑战的题目,锻炼提高自身能力。

更多集创赛作品请查看2021年集创赛获奖作品合集(持续更新中)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/116551.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python数据挖掘 | 升级版自动查核酸

📕作者简介:热爱跑步的恒川,致力于C/C、Java、Python等多编程语言,热爱跑步,喜爱音乐的一位博主。 📗本文收录于恒川的日常汇报系列,大家有兴趣的可以看一看 📘相关专栏C语言初阶、C…

GoLong的学习之路(五)语法之数组

书接上回,上回书说到,循环语句,在go中循环语句的少了whlie这个关键词,但是与之for可以改这个改这个特点。并且在终止关键词中,又有标签可以方便,停止。这次说数组 文章目录 Array(数组)数组的初始化方法一方…

计算机网络_03_tcp/ip四层模型

文章目录 1.为什么会有tcp/ip?2.tcp/ip是什么?3.为什么会有tcp/ip四层模型?4.tcp/ip四层模型介绍 1.为什么会有tcp/ip? 早期的计算机(计算机网络没有出现之前)几乎都是各自为战, 各种操作系统厂家百花齐放, 市面上的大部分计算机使用的都是不同的操作系统, 为每个人提供定…

git简介和指令

git是一个开源的的分布式版本控制系统,用于高效的管理各种大小项目和文件 用途:防止代码丢失,做备份 项目的版本管理和控制,可以通过设置节点进行跳转 建立各自的开发环境分支,互不影响,方便合并 在多终端开…

【Javascrpt】比较,逻辑运算符

目录 比较运算符 逻辑运算符 &&(与) ||(或) 两真(||左侧为真,||右侧为真) 两假(||左侧为假,右侧为假) 一真一假(||一侧为假,另一侧为…

需要在 MySQL 服务器中监控的重要指标

MySQL是一个开源的关系数据库管理系统,它基于客户端-服务器模型运行,使用SQL作为其通信模式。它具有灵活性和可扩展性、高安全性、易用性以及无缝处理大型数据集的能力,由于其广泛的功能,MySQL 被用作数据库管理系统的一部分。 什…

ubuntu20.04运用startup application开机自启动python程序

运用startup application开机自启动python程序。在终端中输入gnome-session-properties,如果显示没有则先进行安装,sudo apt-get update 和sudo apt install StartupApplications(根据显示提示安装)。在显示程序中搜索startup,打开应用程序。 在程序目录…

【React Router】React Router学习笔记

React Router学习笔记 React Router1.什么是React Router?2.为什么要用React Router?3.基础3.1 路由配置3.2 路由匹配原理3.3 History3.3.1 browerHistory3.3.2 hashHistory3.3.3 createMemoryHistory3.3.4 实现示例 3.4 默认路由(IndexRoute)与IndexLink3.4.1 IndexRoute3.4…

爬虫爬取数据时怎么配置代理IP来精准导航分析大数据?

在这个数字盛宴中,每一刹那都充满了无数的信息流转。就像瀑布中的水滴,每一滴都承载着可能性。爬虫代理IP与穿云API就像是这场盛宴中的精准导航仪,帮助我们捕捉那些最有价值的信息滴点,确保在这个时代的快速迭代中,我们…

【C++项目】高并发内存池第二讲中心缓存CentralCache框架+核心实现

CentralCache 1.框架介绍2.核心功能3.核心函数实现介绍3.1SpanSpanList介绍3.2CentralCache.h3.3CentralCache.cpp3.4TreadCache申请内存函数介绍3.5慢反馈算法 1.框架介绍 回顾一下ThreadCache的设计: 如图所示,ThreadCache设计是一个哈希桶结构&…

软件测开记录(四)

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

【剑指Offer】37.序列化二叉树

题目 请实现两个函数,分别用来序列化和反序列化二叉树,不对序列化之后的字符串进行约束,但要求能够根据序列化之后的字符串重新构造出一棵与原二叉树相同的树。 二叉树的序列化(Serialize)是指:把一棵二叉树按照某种遍历方式的结…

v-on 可以监听多个方法吗?

目录 ​编辑 前言:Vue 3 中的 v-on 指令 详解:v-on 指令的基本概念 用法:v-on 指令监听多个方法 解析:v-on 指令的优势和局限性 优势 局限性 **v-on 指令的最佳实践** - **适度监听**: - **方法抽离**&#x…

OpenGL —— 2.9、摄像机之模拟CS鼠标视角转动(附源码,glfw+glad)

源码效果 C源码 纹理图片 需下载stb_image.h这个解码图片的库,该库只有一个头文件。 具体代码: vertexShader.glsl #version 330 corelayout(location 0) in vec3 aPos; layout(location 1) in vec2 aUV;out vec2 outUV;uniform mat4 _modelMatrix; …

Kubernetes技术与架构-Ingress Controller

Ingress Controller控制器是实现Ingress对象的定义的组件,也即网关,负责Kubernetes集群内流量的分发,Kubernetes可以运行多个Ingress Controller控制器实例,不同的Ingress定义可以使用不同的Ingress Controller控制器实现&#xf…

JVM工具使用(jstat + jmap)

命令格式 jstat -gcutil pid interval(ms) 举例: jstat -gcutil 16361 1000 线上服务器的GC情况如下: 参数说明如下: S0: 新生代中Survivor space 0区已使用空间的百分比S1: 新生代中Survivor space 1区已使用空间的百分比E: 新生代已使用空…

查看当前cmake版本支持哪些版本的Visual Studio

不同版本的的cmake对Visual Studio的版本支持不同,以下图示展示了如何查看当前安装的cmake支持哪些版本的Visual Studio。 1.打开cmake-gui 2.查看cmake支持哪些版本的Visual Studio

Unity读取写入Excel

1.在Plugins中放入dll,118开头的dll在Unity安装目录下(C:\Program Files\Unity\Editor\Data\Mono\lib\mono\unity) 2.写Excel public void WriteExcel(){//文件地址FileInfo newFile new FileInfo(Application.dataPath "/test.xlsx…

无障碍阅读他人开源项目结构:看完本文,你将信心满满

先看看阿里是怎么约定的 我印象中,以前在看《阿里巴巴Java开发手册》时,好像有关于工程结构和应用分层相关的内容,于是我回翻了一下,果然有: 它这里面讲的内容大概就是:关于一个正常的企业项目里一种通用的…

一款功能强大的音乐曲谱软件Guitar Pro 8 .1.1for Mac 中文破解版

Guitar Pro 8 .1.1for Mac 中文破解版是一款功能强大的音乐曲谱软件,非常适合学习如何玩,改进技巧,重现喜爱的歌曲或陪伴自己。可以帮助我们进行吉他的学习、绘谱与创作,它包含了几乎所有的吉他现有指法及音色,在做弹拨…