基于FPGA的边缘设备开发深度神经网络检测程序.docx

上传人:lao****ou 文档编号:841735 上传时间:2024-06-17 格式:DOCX 页数:7 大小:107.83KB
下载 相关 举报
基于FPGA的边缘设备开发深度神经网络检测程序.docx_第1页
第1页 / 共7页
基于FPGA的边缘设备开发深度神经网络检测程序.docx_第2页
第2页 / 共7页
基于FPGA的边缘设备开发深度神经网络检测程序.docx_第3页
第3页 / 共7页
基于FPGA的边缘设备开发深度神经网络检测程序.docx_第4页
第4页 / 共7页
基于FPGA的边缘设备开发深度神经网络检测程序.docx_第5页
第5页 / 共7页
亲,该文档总共7页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《基于FPGA的边缘设备开发深度神经网络检测程序.docx》由会员分享,可在线阅读,更多相关《基于FPGA的边缘设备开发深度神经网络检测程序.docx(7页珍藏版)》请在第一文库网上搜索。

1、基于FPGA的边缘设备开发深度神经网络检测程序机器学习是使用算法解析数据,从中学习,然后做出决策或预测的过程。机器不是准备程序代码来完成任务,而是使用大量数据和算法“训练”以自行执行任务。机器学习正在使用粒经囱络(NN)算法发生革命性变化,神经网络算法是我们大脑中发现的生物神经元的数字模型。这些模型包含像大脑神经元一样连接的层。许多应用程序都受益于机器学习,包括图像分类/识别、大数据模式检测、ADAS.欺诈检测、食品质量保证和财务预测。作为机器学习的算法,神经网络包括由多个层组成的广泛的拓扑结构和大小;第一层(“输入层”)、中间层(“隐藏层”)和最后一层(“输出层”)。隐藏层对输入执行各种专用

2、任务并将其传递到下一层,直到在输出层生成预测。一些神经网络相对简单,只有两层或三层神经元,而所谓的深度神经网络(DNN)可能包含多达IOOO层。为特定任务确定正确的NN拓扑和大小需要与类似网络进行实验和比较。设计高性能机器学习应用程序需要网络优化,这通常使用修剪和量化技术完成,以及计算加速,使用ASIC或FPGA执行。在本文中,我们将讨论DNN的工作原理、为什么FPGA在DNN推理中越来越受欢迎,并考虑使用FPGA开始设计和实现基于深度学习的应用程序所需的工具。开发DNN应用程序的设计流程设计DNN应用程序是一个三步过程。这些步骤是选择正确的网络,训练网络,然后将新数据应用于训练模型进行预测(

3、推理)。如前所述,DNN模型中有多个层,每一层都有特定的任务。在深度学习中,每一层都旨在提取不同层次的特征。例如,在边缘检测神经网络中,第一个中间层检测边缘和曲线等特征。然后将第一个中间层的输出馈送到第二层,第二层负责检测更高级别的特征,例如半圆或正方形。第三个中间层组装其他层的输出以创建熟悉的对象,最后一层检测对象。在另一个示例中,如果我们开始识别停车标志,则经过训练的系统将包括用于检测八边形形状、颜色以及其中的字母“S”、T”、“0”和“P”的层秩序和孤立。输出层将负责确定它是否是停车标志。DNN学习模型有四种主要的学习模型:监督:在这个模型中,所有的训练数据都被标记了。NN将输入数据分类

4、为从训练数据集中学习的不同标签。无监督:在无监督学习中,深度学习模型被交给一个数据集,而没有明确说明如何处理它。训练数据集是没有特定期望结果或正确答案的示例集合。然后,NN会尝试通过提取有用的特征并分析其结构来自动找到数据中的结构。半监督:这包括带有标记和未标记数据的训练数据集。这种方法在难以从数据中提取相关特征时特别有用,并且标记示例对于专家来说是一项耗时的任务。强化:这是奖励网络以获得结果并提高性能的行为。这是一个迭代过程:反馈的轮次越多,网络就越好。这种技术对于训练机造特别有用,机器人会在诸如驾驶自动驾驶汽车或管理仓库库存等任务中做出一系列决策。训练与推理在训练中,未经训练的神经网络模型

5、从现有数据中学习新的能力。一旦训练好的模型准备好,它就会被输入新数据并测量系统的性能。正确检测图像的比率称为推理。在图1给出的示例中(识别猫),在输入训练数据集后,DNN开始调整权重以寻找猫;其中权重是每个神经元之间连接强度的度量。如果结果错误,错误将被传播回网络层以修改权重。这个过程一次又一次地发生,直到它得到正确的权重,这导致每次都得到正确的答案。如何实现高性能DNN应用使用DNN进行分类需要大数据集,从而提高准确性。然而,一个缺点是它为模型产生了许多参数,这增加了计算成本并且需要高内存带宽。优化DNN应用程序有两种主要方法。首先是通过修剪冗余连接和量化权重并融合神经网络来缩小网络规模的网

6、络优化。修剪:这是DNN压缩的一种形式。它减少了与其他神经元的突触连接数,从而减少了数据总量。通常,接近零的权重会被移除。对于分类2等任务,这有助于消除冗余连接,但精度会略有下降。量化:这样做是为了使神经网络达到合理的大小,同时实现高性能的准确性。这对于内存大小和计算数量必然受到限制的边缘应用程序尤其重要。在此类应用中,为了获得更好的性能,模型参数保存在本地内存中,以避免使用PCIe或其他互连接口进行耗时的传输。在该方法中,执行通过低位宽数的神经网络(INT8)来逼近使用浮点数的神经网络(FTP32)的过程。这极大地降低了使用神经网络的内存需求和计算成本。通过量化模型,我们稍微损失了精度和准确

7、度。但是,对于大多数应用程序来说,不需要32位浮点。优化DNN的第二种方法是通过计算加速,使用ASIC或FPGAo其中,后一种选择对机器学习应用程序有很多好处。这些包括:电源效率:FPGA提供了一种灵活且可定制的架构,它只允许使用我们需要的计算资源。在ADAS等许多应用中,为DNN配备低功耗系统至关重要。可重构性:与ASIC相比,FPGA被认为是原始可编程硬件。此功能使它们易于使用,并显着缩短了上市时间。为了赶上每天发展的机器学习算法,拥有对系统重新编程的能力是非常有益的,而不是等待SoC和ASIC的长时间制造。低延迟:与最快的片外存储器相比,FPGA内部的B1ockRAM提供的数据传输速度至

8、少快50倍。这是机器学习应用程序的游戏规则改变者,低延迟是必不可少的。性能可移植性:您无需任何代码修改或回归测试即可获得下一代FPGA设备的所有优势。灵活性:FPGA是原始硬件,可以针对任何架构进行配置。没有固定的架构或数据路径可以束缚您。这种灵活性使FPGA能够进行大规模并行处理,因为数据路径可以随时重新配置。灵活性还带来了任意对任意I/O连接能力。这使FPGA无需主机CPU即可连接到任何设备、网络或存储设备。功能安全:FPGA用户可以在硬件中实现任何安全功能。根据应用程序,可以高效地进行编码。FPGA广泛用于航空电子设备、自动化和安全领域,这证明了这些设备的功能安全性,机器学习算法可以从中

9、受益。成本效率:FPGA是可重新配置的,应用程序的上市时间非常短。ASIC非常昂贵,如果没有出现错误,制造时间需要6到12个月。这是机器学习应用程序的一个优势,因为成本非常重要,而且NN算法每天都在发展。现代FPGA通常在其架构中提供一组丰富的DSP和BRAM资源,可用于NN处理。但是,与DNN的深度和层大小相比,这些资源己不足以进行完整和直接的映射;当然不会像前几代神经网络加速器中经常使用的那样。即使使用像ZynqMPSoC这样的设备(即使是最大的设备也仅限于2kDSP片和总BRAM大小小于10MB),将所有神经元和权重直接映射到FPGA上也是不可能的。那么,我们如何利用FPGA的功率效率、

10、可重编程性、低延迟等特性进行深度学习呢?需要新的NN算法和架构修改才能在FPGA等内存资源有限的平台上进行DNN推理。现代DNN将应用程序分成更小的块,由FPGA处理。由于FPGA中的片上存储器不足以存储网络所需的所有权重,我们只需要存储当前阶段的权重和参数,它们是从外部存储器(可能是DDR存储器)加载的。然而,在FPGA和内存之间来回传输数据将使延迟增加多达50倍。首先想到的是减少内存数据。除了上面讨论的网络优化(剪枝和量化)之外,还有:权重编码:在FPGA中,编码格式可以随意选择。可能会有一些准确性损失,但是与数据传输引起的延迟及其处理的复杂性相比,这可以忽略不计。权重编码创建了二元神经网

11、络(BNN),其中权重减少到只有一位。这种方法减少了传输和存储的数据量,以及计算复杂度。然而,这种方法只会导致具有固定输入宽度的硬件乘法器的小幅减少。批处理:在这种方法中,我们使用流水线方法将廷左上已有的权重用于多个输入。它还减少了从片外存储器传输到FPGA5的数据量。在FPGA上设计和实现DNN应用让我们深入研究在FPGA上实现DNNo在此过程中,我们将利用最合适的商用解决方案来快速跟踪应用程序的开发。例如,A1dec有一个名为TySoM-3A-ZU19EG的嵌入式开发板。除了广泛的外设,它还搭载Xi1inxZynqU1traSca1e+MPSoC系列中最大的FPGA,该器件具有超过一百万个

12、逻辑单元,并包括一个运行频率高达1.5GHz的四核ArmCorte-A53处理器C)重要的是,就我们的目的而言,这款庞大的MPSoC还支持赛灵思为机器学习开发人员创建的深度学习处理单元(DPU)。DPU是专用于卷积神经网络(CNN)处理的可编程引擎。它旨在加速计算机视觉应用中使用的DNN算法的计算工作量,例如图像/视频分类和对象跟踪/检测。DPU有一个特定的指令集,使其能够有效地与许多CNN一起工作。与常规处理器一样,DPU获取、解码和执行存储在DDR内存中的指令。该单元支持多种CNN,如VGGResNetGoog1eNet.YO1OSSD.Mobi1eNet.FPN等0DPUIP可以作为一个

13、块集成到所选Zynq-7000SoC和ZynqU1traSca1ew+MPSoC器件的可编程逻辑(P1)中,并直接连接到处理系统(PS)0为了创建DPU的说明,Xi1inx提供了深度神经网络开发套件(DNNDK)工具包。赛灵思声明:DNNDK被设计为一个集成框架,旨在简化和加速深度学习处理器单元(DPU)上的深度学习应用程序开发和部署。DNNDK是一个优化推理引擎,它使DPU的计算能力变得容易获得。它为开发深度学习应用程序提供了最佳的简单性和生产力,涵盖了神经网络模型压缩、编程、编译和运行时启用4的各个阶段。DNNDK框架包括以下单元:DECENT:执行剪枝和量化以满足低延迟和高吞吐量DNNC

14、:将神经网络算法映射到DPU指令DNNAS:将DPU指令组装成E1F二进制代码N2Cube:充当DNNDK应用程序的加载器,处理资源分配和DPU调度。其核心组件包括DPU驱动程序、DPU加载程序、跟踪器和用于应用程序开发的编程APIoProfi1er:由DPU跟踪器和DSight组成。D跟踪器在DPU上运行NN时收集原始分析数据。DSight使用此数据生成可视化图表以进行性能分析。Dexp1orer:为DPU提供运行模式配置、状态检查和代码签名检查。DDump:转储DPUE1F、混合可执行文件或DPU共享库中的信息。它加速了用户的调试和分析。这些符合图2所示的流程。Unoptim1zed,de

15、nseNNCompmsion(DECENT)Pruned&QuantizedNNCompi1er&Assemb1er图2.上述深度神经网络开发套件(DNNK)框架使基于FPGA的机器学习项目的设计过程对开发人员来说更加容易。使用DNNDK可以让开发人员更轻松地设计基于FPGA的机器学习项目;此外,A1dec的TyS0M-3A-ZU19EG板等平台也可提供宝贵的启动功能。例如,A1dec准备了一些针对板的示例一一包括手势检测、行人检测、分割和交通检测一一这意味着开发人员不是从一张白纸开始的。让我们考虑一下今年早些时候在ArmTechCon上展示的一个演示。这是使用TySOM-3A-ZU19EG和

16、FMC-ADAS子卡构建的交通检测演示,该子卡为5倍高速数据(HSD)摄像头、雷达、激光雷达和超声波传感番提供接旦和外围设备大多数人的感官输入ADAS应用程序。图3显示了演示的架构。FPGA中实现了两个DPU,它们通过AXIHP遍旦连接到处理单元,以执行深度学习推理任务,例如图像分类、对象检测和语义分割。DPU需要指令来实现由DNNC和DNNAS工具准备的神经网络。他们还需要访问输入视频和输出数据的内存位置。图3.流量检测演示具有5个视频输入管道,用于数据打包、AXI4到AXI流数据传输、色彩空间转换(YUV2RGB)以及将视频发送到内存。应用程序在应用程序处理单元(APU)上运行,以通过管理中断和执行单元之间的数据传输来控制系统。DPU和用户应用程序之间的连接是通

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 应用文档 > 工作总结

copyright@ 2008-2022 001doc.com网站版权所有   

经营许可证编号:宁ICP备2022001085号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有,必要时第一文库网拥有上传用户文档的转载和下载权。第一文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第一文库网,我们立即给予删除!



客服