【集创赛】arm杯国奖作品推荐–技术文档!

本次推荐中科大的三位大佬2020年集创赛arm杯的作品!赛题要求实现”基于 Arm 处理器核的智能化 SoC 设计”,该作品成功晋级决赛,并获得国奖,下面是他们的作品介绍!

本次转载已通过作者授权

整理人:郭丹


“基于 ARM Cortex-M3 处理器与 FPGA 的实时人脸检测 SOC”的概述请看《基于 ARM Cortex-M3 处理器与 FPGA 的实时人脸检测 SOC(查看公众号上篇内容)》,本篇文章是对“基于 ARM Cortex-M3 处理器与 FPGA 的实时人脸检测 SOC”中涉及到的技术细节的介绍,希望您能有所收获。

1. 系统功能简介

1.1 系统功能

本系统利用ARM Cortex-M3处理器内核以及由我们团队在FPGA平台上独立设计的SOC架构,实现了对摄像头采集人脸数据的实时检测功能。

系统运行期间,摄像头将采集一帧图像数据并存放到DDR,Cortex-M3处理器在检测到图像数据成功写入后,将执行智能算法的处理流程,协同硬件加速器计算所采集图像中包含人脸的数量及所处位置等信息。

将得到的人脸检测结果通过HDMI输出到显示器,在显示器上框出被检测到的人脸,并通过FPGA板载LED灯将人脸的数目以二进制的格式显示出来,同时,所检测到的人脸在图像中的位置、大小、检测时间等信息可以通过UART连接到计算机串口助手中显示。为了满足在Cortex-M3处理器上对图像进行实时检测的要求,我们特地采用了经过我们团队根据Cortex-M3处理器的特点进行精心优化的决策树算法,测试表明该算法在我们的系统中实现了检测准确率及检测速度的优秀平衡。

1.2 应用场景分析

我们的实时人脸检测系统有着巨大的市场前景。在家居安防领域,可以通过我们的系统实现人类闯入报警装置,在摄像头捕捉到的区域检测到人脸后触发报警。在智慧城市建设中,可以在人行道的两端安装我们的系统,实现交通灯的实时智能联动,当检测到等待过马路的行人数目大于一定阈值或有行人正在过马路后,给机动车道亮警示信号灯,以保障行人安全。在新冠疫情期间,我们的系统可以安装在商圈、旅游景点,实时检测人流密度,为实时限流措施提供参考。

不难发现,我们的生产生活中有着大量的轻量级人脸检测需求,它们并不需要检测分析人脸的细节,因此不需要动辄耗费大量昂贵的硬件处理器和能耗的卷积神经网络算法去实现对这些轻量级应用场景的覆盖。我们开发的基于ARM Cortex-M3处理器的实时人脸检测系统为这些应用场景提供了低成本、高效率、低能耗的绝佳解决方案。

2. 系统框架及硬件介绍

2.1 系统总框图

本系统的主要功能部件包括ARM Cortex-M3核、决策树算法硬件加速器、AHB总线矩阵、DDR控制器、片上存储模块、摄像头模块、显示器模块、APB外设等,系统框图见图2.1。

【集创赛】arm杯国奖作品推荐--技术文档!

图2.2 CMSDK总线矩阵地址映射配置

为了达到更好的性能,我们并不直接将低速的LED、UART等外设连接到M3的AHB系统总线上。对于低速外设,我们采用的是APB协议,这将涉及到AHB协议与APB协议的相互转换。得益于CMSDK的“AHB to APB”转接模块,我们可以先将LED、UART等外设通过APB协议挂载到APB Bridge模块上,然后再把APB Bridge模块挂载到AHB总线上。

从下面的小节开始,我们将详细讨论一些关键模块的实施。

2.2 摄像头模块

我们使用OmniVision公司的ov5640型摄像头实时采集图像数据。经过测试,我们发现当采集图像大小设置为640×480时能够在检测速度和检测准确度上取得良好平衡。

【集创赛】arm杯国奖作品推荐--技术文档!

图2.4 显示器模块

【集创赛】arm杯国奖作品推荐--技术文档!

【集创赛】arm杯国奖作品推荐--技术文档!

图3.2 LED访问结构体

而用户程序部分,我们采用C语言实现所选用的决策树智能算法。在利用keil编译软件代码时,需要用fromelf工具将axf可执行文件转换为面向Verilog HDL内存模型的hex文件,如图3.3所示。hex文件是由axf文件的32位指令翻译成16进制表示后的可执行代码。得到特定格式的hex文件后,我们就可以在ITCM的Verilog代码中通过readmemh语句将编译得到的可执行代码初始化到ROM中。需要注意的是,需要在执行fromelf工具时添加–vhx参数(转换为面向Verilog HDL内存模型的hex文件),否则系统软件将无法启动,这个问题曾阻碍了我们队伍较长时间。

【集创赛】arm杯国奖作品推荐--技术文档!

图4.1 从DDR读取数据耗时与加速器常规操作耗时对比

我们通过计算分析发现,算法读取参数文件的数据传输量占据总数据传输量的40%。为了尽可能减少DDR的访问频率,我们将预先训练好的决策树参数文件从DDR转移到FPGA片上块状存储(Block RAM)内。相比于延时较长的DDR访问,加速器对片上存储Block RAM的访问仅需要2个时钟延时就能完成。

4.3 多线程移窗并行加速器

多线程移窗并行加速器是硬件加速系统的核心成员。它由AXI控制单元、加速核、中断控制单元等部件所组成,如图4.2所示。

【集创赛】arm杯国奖作品推荐--技术文档!

图4.3 单线程串行移窗与多线程并行移窗对比

4.4 其他加速优化策略

我们团队还持续监测检测系统每一次迭代优化后的性能瓶颈,并根据瓶颈分析结果给下一步优化方向提供参考。因此,除了上述由我们团队独立设计的硬件加速模块外,我们还找到了许多细节性而十分关键的算法加速方法。

其中,我们关注的比较多的仍然是对DDR的访问优化。尽管我们为硬件加速器添加了片上存储(Block RAM),并有效减少了40%的DDR访问量,而剩下60%的DDR访问量仍然是消耗计算时间的大头。经过分析发现,绝大部分的DDR访问都是从DDR读数据,因此在内存界面控制器(MIG)中将读数据的优先级提到写数据之前,使得读数据的操作周期得以减少。

我们对DDR进行的数据访问都是随机地址的,为此我们将用户层地址到物理层地址的映射模式设置为更适合数据随机访问的Bank-Row-Column模式,进一步优化了DDR的访问速度。

【集创赛】arm杯国奖作品推荐--技术文档!

图4.5 未采用硬件加速器(左)和采用硬件加速器(右)

参考文献

[1] Nenad Marku V S, Frljak Miroslav,Pand V Z I C Igor-S, et al. Object detection with pixel intensity comparisonsorganized in decision trees[J]. arXiv preprint arXiv:1305.4537, 2013.

[2] ARM. Cortex-M System Design KitTechnical Reference Manual[M].

[3] AMBA 3 AHB-Lite ProtocolSpecification v1.0[S]. 2010.

[4] AMBA 3 APB Protocol Specificationv1.0[S]. 2004.

[5] AMBA AXI and ACE ProtocolSpecification AXI3, AXI4, and AXI4-Lite ACE and ACE-Lite[S]. 2013.

[6] ARMv7-M Architecture ReferenceManual[S]. 2018.

[7] Cortex-M3 Devices Generic UserGuide[S]. 2010.

[8] Floating-Point Operator v7.1LogiCORE IP Product Guide[S]. 2019.

[9] Block Memory Generator v8.4 LogiCOREIP Product Guide[S]. 2019.

[10] HDL Coding Practices to AccelerateDesign Performance[M]. 2006.

 

项目地址:

原作者项目地址链接(GitHub):

https://github.com/WalkerLau/DetectHumanFaces

或访问国内备份仓库(速度较快):

https://gitee.com/gongwenhong/DetectHumanFaces

记得给作者点个小星星!!

【集创赛】arm杯国奖作品推荐--技术文档!

【集创赛】arm杯国奖作品推荐--技术文档!

长按识别图中二维码关注

欢迎关注微信公众号【数字积木】,更精彩的内容等着你!

文章知识点与官方知识档案匹配,可进一步学习相关知识算法技能树首页概览33962 人正在系统学习中

来源:数字积木

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年7月22日
下一篇 2020年7月22日

相关推荐