【2021集创赛】Arm杯三等奖:基于FPGA的人脸检测SoC设计

news2024/11/16 1:30:20

本作品参与极术社区组织的有奖征集|秀出你的集创赛作品风采,免费电子产品等你拿~活动。

团队介绍
参赛单位:合肥工业大学
队伍名称:芯创之家
指导老师:邓红辉、尹勇生
参赛杯赛:Arm杯
参赛人员:王亮 李嘉燊 金京
获奖情况:全国总决赛三等奖

1.项目简介

人脸检测系统在诸多领域都有实际作用,比如自动进行出入登记:人员或车辆出入小区时可自动抓拍扫描记录,省去人工记录,省时省力;安防应用:可利用此识别技术对小区常住人口和流动人口进行分类识别,对可疑人员行动轨迹提前预警,为小区安防工作带来极大便利。并且本设计可以不断扩展,用于识别车辆、设备等,更换算法后还可以实现人脸识别,应用于管理或者刑侦破案中,可以通过训练以识别一些难以观察到的微小疾病,用于医学观测。

本SoC是基于ARM官方提供的Cortex-M3软核和Xilinx Artix-7系列开发板实现,使用AMBA2和AMBA3总线协议以及ARM提供的CMSDK工具设计SoC。外设搭配一个摄像头用于数据的采集,一个液晶显示屏用于显示处理结果,同时绑定数码管显示人脸数量等信息。基于Viola-Jones算法完成人脸检测的功能,实现了Viola-Jones算法完成人脸检测的功能。

2.系统运行流程介绍

a. 在线上使用PyTorch等前端框架对该算法进行训练,得到权重等参数提前存储在FPGA例化的RAM中,用C语言完成算法的实现,生成相应的指令存储在例化好的RAM中。
b. 摄像头采集图像数据,传递给Cortex-M3处理器。
c. 处理器接收图片后,开始读取指令和参数,调用FPGA的计算资源进行计算
d. 算法完成后将处理好的图像数据通过HDMI传递到显示屏,并将一些信息传递给绑定的数码管,完成输出结果的显示。

3.系统架构

3.1架构简介

本系统的架构如下图3.1所示。整个框架搭载在一块FPGA开发板上。可简单地分为软件和硬件两个部分,Cortex-M3和上面的RAM是软件部分,RAM中存储指令,ARM处理器通过轻量级的AHB总线协议和它通信,通过指令总线取指,通过数据总线进行数据访问。可以使用Keil在线调试SoC,通过J-link连接开发板与PC机,将C语言代码编译成的汇编代码烧录至指令RAM中即可。
在这里插入图片描述

图3 1整体系统架构图

3.2软硬件功能划分

软件部分主要包括Cortex-M3和上面的RAM是软件部分。硬件部分主要用于数据采集和计算,我们将高速外设(显示器、摄像头等)和低速外设(LED、UART等)分别挂载到不同的总线上,这样可以避免资源的浪费。

4.外设挂载

4.1 液晶显示屏

在这里插入图片描述

图4.1 1 显示屏模块框架
上图是显示屏模块,摄像头采集到的数据会存储在DDR中供处理器和显示屏读取,处理器计算结束后会将画框后的图片通过AHB-AXI转换传输到DDR,DDR再经过HDMI传递到显示屏上。HDMI驱动里使用了两个FIFO来避免读写时的数据冲突。

4.2 摄像头

在这里插入图片描述

图4.2 1 摄像头模块框架
上图3所示是摄像头模块的框架,摄像头用于采集数据,并将采集数据传送给DDR,与显示屏类似,我们也使用了FIFO避免数据冲突。由于我们使用的摄像头采集的图像中,每个像素点的位数为16bits,但总线协议每个时钟周期只能传送8bits,因此需要首先经过一个位宽转换器,打一拍完成像素完整传递后再传递给FIFO模块。其余模块再通过相应的总线发出请求从DDR中读写数据。

4.3 数码管和LED灯

开发板上有一个四位数码管和四颗LED灯,我们使用LED来显示程序是否正常运行,数码管用来显示人脸的数量,四颗LED同时也会作为4位二进制数来表示人脸数量,最多表示15个,这些功能都是软件驱动的。

4.4 UART串口

UART串口可将识别速度等信息传送至上位机,用于监测SoC运行情况以及实时人脸检测的速度。

5.加速器设计

5.1 片上存储优化

在不使用 DMA 的情况下,内核通过 DCode 经过总线矩阵协调,使用 AHB 把外设采集的数据读取到内核,然后内核 DCode 再通过总线矩阵协调,把数据存放到内存 SRAM 中。DMA 正好可以取代这样的工作。由 DMA 控制器的 DMA 总线与总线矩阵协调,使用AHB 把外设的数据经由 DMA 通道存放到内存 SRAM。如果使用DMA,它是不经过内核的直接传到了SRAM,因此加快处理速度,MCU也可以处理其他事情 ,起到了给芯片减负的效果。因此可以将DDR换成DMA。

AC7050 核心板上配有两个 Micron(美光) 的 4Gbit( 512MB) 的DDR3 芯片(共计 8Gbit),型号为 MT41J256M16HA-125(兼MT41K256M16HA-125)。 DDR 的总线宽度共为 32bit。 DDR3 SDRAM 的最高运行时钟速度可达 333.3MHz(数据速率667Mbps)。该 DDR3 存储系统直接连接到FPGA 的BANK34和 BANK35的存储器接口上。因此可以将数据存储到DDR3中之后在由加速器读取里面的数据从而提高数据处理速度。

图5.1 加速器整体框架
当摄像头完成前两帧数据采集后开启目标检测单元,加速器模块与DDR交换数据并计算相关参数,检测完成后将目标进行框选,开始运行目标跟踪算法。
在这里插入图片描述

图5.1 DDR3 DRAM原理示意图 1

5.2 多线程移窗

在所用到的算法中采用决策时级联检测器是把摄像头采到的数据进行取。传统的采集方案是逐行检测这样会降低检测,因此需要前一步完成采集 才能进入下一步采集是一种串行运行的方式。因此提出并行采集的方案,采用多个加速器组成了一个多线程的并行加速器,因此就可以处理多个窗的数据检测,从而提高了人脸检测的速度。

6.模块及系统仿真

7.系统整体测试结果

在硬件平台上实现系统,并正确编译、下载软件程序, 现场编程调试,通过按键改变LED等的闪烁方式或频率证实系统运行情况。
在这里插入图片描述

·功能展示二
通过led来显示摄像头识别到的人脸数量仿真结果如下图所示。

在这里插入图片描述

8.参赛体会

本系统使用2001年CVPR提出的经典的人脸检测算法Viola-Jones,采用积分图像(integral image)技术,加速对Haar-like输入特征的计算,采用 AdaBoost 算法进行特征选择,选择出几个关键的视觉特征,采用检测级联技术提高准确率,允许图像的背景区域被很快丢弃,从而将更多的计算放在可能是目标的区域上,减少了计算开销算法。在算法的实现过程中,文献是非常好的工具,在文献中汇集了若干科研工作者的智慧,也在不断的实践中,修复了若干问题,在稳定性和性能方面都较好的实现。因此,通过对这些文献的认真研究,对有统一的、经过良好设计、实现、测试的基础模块适当引用,可以提高开发效率,集中注意力攻克更核心的部分。

在开发的过程中,要学习以及熟练使用各种开发工具来简化开发,如CMSDK、Matlab、system generator等。在整个系统的开发过程中,开发工具的使用至关重要,例如开发过程中需要使用CMSDK快速搭建基于CortexM3的专用SoC。对于这些软件的使用,可以大大节省时间,并且可以研发出更高效的系统。

在SoC的搭建过程中,对整体框架的把握至关重要。本次设计中,框架可分为软件和硬件两个部分,每部分的组成成为设计的重要部分,连接和通信均建立于框架的基础上,因此在设计中要结合开发板与应用需要,对各个部分进行设计划分,实现系统的统一高效协作。

在这次比赛中,很荣幸可以与全国各地200余所高校参赛队伍共同努力。非常感谢赛事组委会的老师和工作人员在本次大赛中的辛苦付出!

作品内容来源于芯创之家,转载请标明出处。欢迎大家参加极术社区组织的有奖征集|秀出你的集创赛作品风采,免费电子产品等你拿~活动,10月1日截止~

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

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

相关文章

Cn2线路异常采用Nginx反代灾备解决方案

香港机房因出口带宽较小,抗攻击能力相对 较差。这是绝大部分香港机房的通病。CN2的稳定性要好一些,163线路价格相对便宜,稳定性较CN2要差一些。在受到扫段攻击( https://anquan.baidu.com/article/1343 )等特殊情况下&…

ASO优化之我们该如何本地化应用

ASO优化涉及优化各种元素,包括应用标题、关键词、描述、屏幕截图和预览视频,能够提高应用的排名、吸引相关用户并最大限度地提高特定区域内的下载量。在竞争激烈的应用商店中,本地化是确保应用成功的关键因素,首先是了解目标受众的…

C++:哈希

目录 一、unordered系列关联容器 二、底层的结构 哈希结构 哈希冲突/哈希碰撞 ①、闭散列 —> 开放定址法 闭散列的模拟实现 ②、开散列 —> 拉链法/哈希桶 哈希桶的模拟实现 三、哈希应用 位图 位图的特点 位图的模拟实现 布隆过滤器 布隆过滤器的模拟实现…

ubuntu 安装串口工具和添加虚拟串口

目录 一、串口工具安装 二、使用Windows本身虚拟的串口 (一)添加串口 1、保证虚拟机是关闭状态,打开“虚拟机设置”,点击“添加”。 2、选中“串行端口”,点击“完成”。 3、选中刚添加的串口,下拉选…

XXXSpringMVC“框架的简单创建与使用,快速上手;

前言 【描述】 " 【环境】 系统"Windows",软件"IntelliJ IDEA 2021.1.3(Ultimate Edition)";“Java版本"1.8.0_202”,“Spring"版本"2.5.9”; 实操 【实操1】 说明 【描述】 创建&quo…

大学生学习新途径:视频号视频下载助你获取学术资源

​在这个信息爆炸的时代,大学生们为了获取更多的学术资源常常面临诸多挑战。然而,随着互联网的发展,视频号平台逐渐成为了学生们学习的新途径。本文将介绍如何通过视频号视频下载来获取学术资源,帮助大学生们更好地学习。 1. 视频…

测试内容总结

目录 面试题类型 测试用例 非软件题型 软件类型 代码题型 关于个人的项目设计测试类型 万能公式 自动化面试 什么是自动化以及为什么要做 selenium驱动浏览器的工作原理 设计自动化测试的思路(个人的自动化亮点) 1、明确个人项目里哪些页面需要做web做自动化测试—…

FreeRTOS 消息队列 详解

目录 什么是队列? 消息队列特点 1. 数据入队出队方式 2. 数据传递方式 3. 多任务访问 4. 出队、入队阻塞 消息队列相关 API 函数 1. 创建队列 2. 写队列 3. 读队列 消息队列实操 什么是队列? 队列又称消息队列,是一种常用于任务间…

SpringBoot+SpringMVC+MybatisPlus

文章目录 SpringBootSpringMVCMybatisPlus怎样在SpringBoot中引入SpringMVC?首先看下引入的依赖创建数据库表创建DO类创建MyBatisPlus动态代理接口创建controller控制器接收http请求创建SpringBoot配置文件application.yml最后创建启动类 SpringBootSpringMVCMybatisPlus 怎样…

管理Secrets

使用 kubectl 管理 Secret 创建 Secret Secret 对象用来存储敏感数据,如 Pod 用于访问服务的凭据。例如,为访问数据库,你可能需要一个 Secret 来存储所需的用户名及密码。 使用原始数据 kubectl create secret generic db-user-pass \--from…

【字符串】【将字符数组转为字符串】Leetcode 122 路径加密

【将字符数组转为字符串】Leetcode 122 路径加密 解法1 在Java中,char数组没有直接的toString()方法来将其转换为字符串。如果你想将char数组转换为字符串,可以使用String类的构造函数来实现: ⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐️⭐…

使用vue3 搭建一个H5手机端访问的项目

首先说明,我本地之前运行过vue的项目,所以具有一些基础的运行环境,这里直接按步骤讲我项目框架搭建的过程。 这个不建议使用驼峰,按规范单词中间加横杠就可以。一般会出现选择项,按方向键选择,我这边选择了…

MS COCO数据集的评价标准以及不同指标的选择推荐(AP、mAP、MS COCO、AR、@、0.5、0.75、1、目标检测、评价指标)

目标检测模型性能衡量指标、MS COCO 数据集的评价标准以及不同指标的选择推荐 0. 引言 0.1 COCO 数据集评价指标 目标检测模型通过 pycocotools 在验证集上会得到 COCO 的评价列表,具体参数的含义是什么呢? 0.2 目标检测领域常用的公开数据集 PASCAL …

【23真题】招600+,太火爆!题目略难!快来挑战!

今天分享的是23年重庆邮电大学801的信号与系统试题及解析。 本套试难度分析:22年重庆邮电大学801考研真题我也发布过,如有需要戳这里自取!本套试题内容难度中等偏上,没有选择计算题,涉及的知识点较多,题量…

干洗店软件,洗鞋店软件小程序,洗衣收银系统,洗衣工厂系统;

洗衣洗鞋店软件功能介绍: 预约上门收衣智能提醒+员工手机抢单+地图导航+拍照同步上传 智能通知会员,消费通知+取衣通知+衣物到期提醒+消费提醒+取衣提醒 快速完成订单&#xff0c…

esp32-S3 + visual studio code 开发环境搭建

一、首先在下面链接网页中下载esp-idf v5.1.1离线安装包 ,并安装到指定位置。dl.espressif.cn/dl/esp-idf/https://dl.espressif.cn/dl/esp-idf/ 安装过程中会提示需要长路径支持,所以windows系统需要开启长路径使能 Step 1: 打开运行&…

Jenkins部署失败:no space left on device

Jenkins部署到最后一步时报错:no space left on device,没有可用的空间使用了。 查看磁盘空间使用情况: df -h发现/home/data路径空间已经使用100%。 排查此路径下存在哪些大文件。 //查看系统中文件的使用情况 df -h -T //查看当前目录下各…

众和策略可靠吗?中国资产,一夜狂飙!

可靠 当地时间10月24日,美股三大股指收高,其间道指涨0.62%,接连四个生意日下跌之后反弹,标普指数涨0.73%,纳斯达克指数涨0.93%。 10年期美国国债收益率小幅下滑。可口可乐等公司的财报表现弱小。美10月企业活动加速&…

Dynamics 365 重写自带按钮

必备工具:Ribbon Workbench 步骤: 1、查看默认按钮使用的方法名称 右键按钮选择自定义命令(Customise Command),然后查看command使用的命令 2、在前台chrome浏览器中搜索对应的命令,查看命令细节 3、基于命令细节新建command&am…

c语言进制的转换16进制转换2进制

c语言进制的转换16进制转换2进制 c语言的进制的转换 c语言进制的转换16进制转换2进制一、16进制的介绍二、八四二一法则三、16进制转换2进制 一、16进制的介绍 十六进制: 十六进制逢十六进一,所有的数组是0到9和A到F组成,其中A代表10&#x…