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

本文主要是介绍【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年集创赛获奖作品合集(持续更新中)

这篇关于【2021集创赛】Digilent杯二等奖:基于FPGA的动态视觉感知融合的运动目标检测系统的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/273313

相关文章

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

Python如何实现PDF隐私信息检测

《Python如何实现PDF隐私信息检测》随着越来越多的个人信息以电子形式存储和传输,确保这些信息的安全至关重要,本文将介绍如何使用Python检测PDF文件中的隐私信息,需要的可以参考下... 目录项目背景技术栈代码解析功能说明运行结php果在当今,数据隐私保护变得尤为重要。随着越来越多的个人信息以电子形

在不同系统间迁移Python程序的方法与教程

《在不同系统间迁移Python程序的方法与教程》本文介绍了几种将Windows上编写的Python程序迁移到Linux服务器上的方法,包括使用虚拟环境和依赖冻结、容器化技术(如Docker)、使用An... 目录使用虚拟环境和依赖冻结1. 创建虚拟环境2. 冻结依赖使用容器化技术(如 docker)1. 创

CentOS系统Maven安装教程分享

《CentOS系统Maven安装教程分享》本文介绍了如何在CentOS系统中安装Maven,并提供了一个简单的实际应用案例,安装Maven需要先安装Java和设置环境变量,Maven可以自动管理项目的... 目录准备工作下载并安装Maven常见问题及解决方法实际应用案例总结Maven是一个流行的项目管理工具

Java使用POI-TL和JFreeChart动态生成Word报告

《Java使用POI-TL和JFreeChart动态生成Word报告》本文介绍了使用POI-TL和JFreeChart生成包含动态数据和图表的Word报告的方法,并分享了实际开发中的踩坑经验,通过代码... 目录前言一、需求背景二、方案分析三、 POI-TL + JFreeChart 实现3.1 Maven

Java导出Excel动态表头的示例详解

《Java导出Excel动态表头的示例详解》这篇文章主要为大家详细介绍了Java导出Excel动态表头的相关知识,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录前言一、效果展示二、代码实现1.固定头实体类2.动态头实现3.导出动态头前言本文只记录大致思路以及做法,代码不进

vue基于ElementUI动态设置表格高度的3种方法

《vue基于ElementUI动态设置表格高度的3种方法》ElementUI+vue动态设置表格高度的几种方法,抛砖引玉,还有其它方法动态设置表格高度,大家可以开动脑筋... 方法一、css + js的形式这个方法需要在表格外层设置一个div,原理是将表格的高度设置成外层div的高度,所以外层的div需要

C#实现系统信息监控与获取功能

《C#实现系统信息监控与获取功能》在C#开发的众多应用场景中,获取系统信息以及监控用户操作有着广泛的用途,比如在系统性能优化工具中,需要实时读取CPU、GPU资源信息,本文将详细介绍如何使用C#来实现... 目录前言一、C# 监控键盘1. 原理与实现思路2. 代码实现二、读取 CPU、GPU 资源信息1.

SpringBoot实现动态插拔的AOP的完整案例

《SpringBoot实现动态插拔的AOP的完整案例》在现代软件开发中,面向切面编程(AOP)是一种非常重要的技术,能够有效实现日志记录、安全控制、性能监控等横切关注点的分离,在传统的AOP实现中,切... 目录引言一、AOP 概述1.1 什么是 AOP1.2 AOP 的典型应用场景1.3 为什么需要动态插

在C#中获取端口号与系统信息的高效实践

《在C#中获取端口号与系统信息的高效实践》在现代软件开发中,尤其是系统管理、运维、监控和性能优化等场景中,了解计算机硬件和网络的状态至关重要,C#作为一种广泛应用的编程语言,提供了丰富的API来帮助开... 目录引言1. 获取端口号信息1.1 获取活动的 TCP 和 UDP 连接说明:应用场景:2. 获取硬