0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何为基于FPGA的边缘设备开发高性能深度神经网络对象检测/识别应用

星星科技指导员 来源:嵌入式计算设计 作者:Farhad Fallah 2022-11-30 14:12 次阅读

本文介绍了 DNN 的工作原理,以及为什么 FPGA 在推理任务中越来越受欢迎。它继续展示如何使用真实世界的演示在开发平台上执行 DNN 工作负载。

机器学习是使用算法解析数据,从中学习,然后做出决策或预测的过程。机器不是准备程序代码来完成任务,而是使用大量数据和算法进行“训练”,以自行执行任务。

使用神经网络(NN)算法正在彻底改变机器学习,这些算法是我们大脑中发现的生物神经元的数字模型。这些模型包含像大脑神经元一样连接的层。许多应用受益于机器学习,包括图像分类/识别、大数据模式检测ADAS、欺诈检测、食品质量保证和财务预测。

作为机器学习的算法,神经网络包括由多层组成的各种拓扑和大小;第一层(“输入层”),中间层(“隐藏层”)和最后一层(“输出层”)。隐藏层对输入执行各种专用任务,并将其传递到下一层,直到在输出层生成预测。

一些神经网络相对简单,只有两层或三层神经元,而所谓的深度神经网络(DNN)可能包含多达1000层。为特定任务确定正确的 NN 拓扑和大小需要实验并与类似网络进行比较。

设计高性能机器学习应用需要网络优化(通常使用修剪和量化技术)和计算加速(使用 ASIC 或 FPGA 执行)。

在本文中,我们将讨论 DNN 的工作原理、为什么 FPGA 在 DNN 推理中越来越受欢迎,并考虑使用 FPGA 开始设计和实现基于深度学习的应用程序所需的工具 [1]。

开发 DNN 应用程序的设计流程

设计 DNN 应用程序的过程分为三个步骤。这些步骤是选择正确的网络,训练网络,然后将新数据应用于训练的模型进行预测(推理)。

如前所述,DNN 模型中有多个层,每个层都有一个特定的任务。在深度学习中,每一层都旨在提取不同级别的特征。例如,在边缘检测神经网络中,第一中间层检测边缘和曲线等特征。然后将第一中间层的输出馈送到第二层,第二层负责检测更高级别的特征,例如半圆形或正方形。第三层中间层组装其他层的输出以创建熟悉的对象,最后一层检测对象。

在另一个例子中,如果我们开始识别停车标志,训练好的系统将包括用于检测八角形、颜色和字母“S”、“T”、“O”和“P”的层,这些顺序是孤立的。输出图层将负责确定它是否为停车标志。

DNN 学习模型

有四种主要的学习模型:

监督:在此模型中,所有训练数据都被标记。NN 将输入数据分类为从训练数据集中学习的不同标签。

监督:在无监督学习中,深度学习模型被交给一个数据集,而没有明确的说明如何处理它。训练数据集是没有特定所需结果或正确答案的示例集合。然后,NN 尝试通过提取有用的特征并分析其结构来自动查找数据中的结构。

半监督:这包括一个训练数据集,其中包含标记和未标记的数据。当难以从数据中提取相关特征时,此方法特别有用,并且标记示例对专家来说是一项耗时的任务。

加固:这是奖励网络以获得结果并提高性能的行为。这是一个迭代过程:反馈的轮次越多,网络就越好。这种技术对于训练机器人特别有用,机器人在驾驶自动驾驶汽车或管理仓库库存等任务中做出一系列决策。

训练与推理

在训练中,未经训练的神经网络模型从现有数据中学习新功能。一旦训练好的模型准备就绪,就会向其提供新数据并测量系统的性能。正确检测图像的比例称为推理。

在图 1 给出的示例(识别猫)中,输入训练数据集后,DNN 开始调整权重以查找猫;其中权重是每个神经元之间连接强度的量度。

如果结果错误,错误将被传播回网络层以修改权重。这个过程一次又一次地发生,直到获得正确的权重,从而每次都得到正确的答案。

如何实现高性能 DNN 应用程序

使用 DNN 进行分类需要一个大数据集,这提高了准确性。但是,缺点是它为模型生成许多参数,这增加了计算成本并且需要高内存带宽。

有两种主要方法可以优化 DNN 应用程序。第一种是通过修剪冗余连接、量化权重和融合神经网络来缩小网络规模的网络优化。

修剪:这是 DNN 压缩的一种形式。它减少了与其他神经元的突触连接数量,从而减少了数据总量。通常,删除接近零的权重。这有助于消除冗余连接,而分类等任务的精度略有下降[2]。

量化:这样做是为了将神经网络调整到合理的大小,同时实现高性能的准确性。这对于边缘应用程序尤其重要,因为内存大小和计算数量必然受到限制。在此类应用中,为了获得更好的性能,模型参数保存在本地存储器中,以避免使用 PCIe 或其他互连接口进行耗时的传输。在该方法中,执行通过低位宽度数 (INT8) 神经网络近似使用浮点数 (FTP32) 的神经网络的过程。这大大降低了使用神经网络的内存需求和计算成本。通过量化模型,我们略微失去了精度和准确性。但是,对于大多数应用程序,不需要 32 位浮点数。

优化 DNN 的第二种方法是使用 ASIC 或 FPGA 进行计算加速。其中,后一种选择对机器学习应用程序有很多好处。其中包括:

功率效率:FPGA 提供灵活且可定制的架构,支持仅使用我们需要的计算资源。拥有用于 DNN 的低功耗系统在许多应用中至关重要,例如 ADAS。

可重配置性:与ASIC相比,FPGA被认为是原始的可编程硬件。此功能使它们易于使用并显着缩短了上市时间。为了赶上日常发展的机器学习算法,能够对系统进行重新编程是非常有益的,而不是等待SoC和ASIC的漫长制造时间。

低延迟:与最快的片外存储器相比,FPGA 内部的块 RAM 提供至少快 50 倍的数据传输速度。对于机器学习应用程序来说,这是一个游戏规则的改变者,对于这些应用程序来说,低延迟是必不可少的。

性能可移植性:您 可以 获得 下一代 FPGA 设备 的 所有 优势, 而 无需 任何 代码 修改 或 回归 测试。

灵活性:FPGA 是原始硬件,可以针对任何架构进行配置。没有固定的架构或数据路径来束缚您。这种灵活性使FPGA能够进行大规模并行处理,因为数据路径可以随时重新配置。这种灵活性还带来了任意对任意的 I/O 连接功能。这使得 FPGA 能够连接到任何设备、网络或存储设备,而无需主机 CPU

功能安全:FPGA用户可以在硬件中实现任何安全功能。根据应用的不同,可以高效地进行编码。FPGA 广泛用于航空电子、自动化和安全性,这证明了这些设备的功能安全性,机器学习算法可以从中受益。

成本效益:FPGA是可重新配置的,应用的上市时间相当短。ASIC非常昂贵,如果没有出现错误,制造时间需要6到12个月。这对于机器学习应用程序来说是一个优势,因为成本非常重要,NN 算法每天都在发展。

现代 FPGA 通常在其结构中提供一组丰富的 DSP 和 BRAM 资源,可用于 NN 处理。但是,与 DNN 的深度和层大小相比,这些资源已不足以进行完整和直接的映射;当然不是像前几代神经网络加速器那样经常这样做。即使使用 Zynq MPSoC 等设备(即使是最大的设备也仅限于 2k DSP 切片,BRAM 总大小小于 10 MB),也无法将所有神经元和权重直接映射到 FPGA 上。

那么,我们如何利用FPGA的能效、可重编程性、低延迟和其他特性进行深度学习呢?

需要新的 NN 算法和架构修改,以便在内存资源有限的平台(如 FPGA)上实现 DNN 的推理。

现代 DNN 将应用程序划分为较小的块,由 FPGA 处理。由于FPGA中的片上存储器不足以存储网络所需的所有权重,因此我们只需要存储当前阶段的权重和参数,这些权重和参数是从外部存储器(可能是DDR存储器)加载的。

但是,在FPGA和存储器之间来回传输数据将使延迟增加多达50倍。首先想到的是减少内存数据。除了上面讨论的网络优化(修剪和量化)之外,还有:

权重编码:在FPGA中,可以无条件地选择编码格式。可能会有一些准确性损失,但是与数据传输造成的延迟及其处理的复杂性相比,这可以忽略不计。权重编码创建了二进制神经网络(BNN),其中权重减少到只有一位。这种方法减少了用于传输和存储的数据量,以及计算的复杂性。但是,此方法仅导致具有固定输入宽度的硬件乘法器的小幅减少。

批处理:在这种方法中,我们使用流水线方法将芯片上已有的权重重用于多个输入。它还减少了从片外存储器传输到 FPGA 的数据量 [5]。

在 FPGA 上设计和实现 DNN 应用

让我们深入了解如何在 FPGA 上实现 DNN。在此过程中,我们将利用最合适的商用解决方案来快速跟踪应用程序的开发。

例如,Aldec有一个名为TySOM-3A-ZU19EG的嵌入式开发板。除了各种外设外,它还搭载了赛灵思 Zynq UltraScale+ MPSoC 系列中最大的 FPGA,该器件拥有超过 100 万个逻辑单元,包括一个运行频率高达 1.5GHz 的四核 Arm Cortex-A53 处理器

重要的是,就我们的目的而言,这款庞大的 MPSoC 还支持 Xilinx 的深度学习处理单元 (DPU),该单元是该公司为机器学习开发人员创建的。

DPU 是专用于卷积神经网络 (CNN) 处理的可编程引擎。它旨在加速计算机视觉应用(如图像/视频分类和对象跟踪/侦测)中使用的 DNN 算法的计算工作负载。

DPU有一个特定的指令集,使其能够有效地与许多CNN一起工作。与常规处理器一样,DPU 获取、解码和执行存储在 DDR 内存中的指令。该单元支持多个CNN,如VGG,ResNet,GoogLeNet,YOLO,SSD,MobileNet,FPN等[3]。

DPU IP 可以作为一个模块集成到所选 Zynq-7000 SoC 和 Zynq® UltraScale™+ MPSoC 器件的可编程逻辑 (PL) 中,并直接连接到处理系统 (PS)。

为了创建 DPU 指令,Xilinx 提供了深度神经网络开发套件 (DNNDK) 工具包。赛灵思表示:

DNNDK被设计为一个集成框架,旨在简化和加速深度学习处理器单元(DPU)上的深度学习应用程序开发和部署。DNNDK 是一个优化的推理引擎,它使 DPU 的计算能力变得容易访问。它为开发深度学习应用程序提供了最好的简单性和生产力,涵盖了神经网络模型压缩、编程、编译和运行时启用的各个阶段[4]。

DNNDK 框架包括以下单元:

体面:执行修剪和量化以满足低延迟和高吞吐量

DNNC:将神经网络算法映射到 DPU 指令

DNNAS:将 DPU 指令组装成 ELF 二进制代码

N2立方体:充当 DNNDK 应用程序的加载程序,并处理资源分配和 DPU 调度。其核心组件包括 DPU 驱动程序、DPU 加载器、示踪器和用于应用程序开发的编程 API

分析器:由DPU示踪剂和DSight组成。D 跟踪器在 DPU 上运行 NN 时收集原始分析数据。DSight 使用此数据生成可视化图表以进行性能分析。

探险家:提供 DPU 的运行模式配置、状态检查和代码签名检查。

DDump:将信息转储到 DPU ELF、混合可执行文件或 DPU 共享库中。它加快了用户的调试和分析速度。

这些适合图 2 所示的流程。

pYYBAGOG9HqAH252AAEh9B99PPI789.png

图2.上述深度神经网络开发工具包 (DNNK) 框架使开发人员能够更轻松地完成基于 FPGA 的机器学习项目的设计过程。

使用 DNNDK 使开发人员设计基于 FPGA 的机器学习项目的过程变得更加容易;此外,像Aldec的TySOM-3A-ZU19EG板这样的平台也提供了一个宝贵的启动。例如,Aldec 准备了一些针对电路板的示例,包括手势检测、行人检测、分段和交通检测,这意味着开发人员不会从一张白纸开始。

让我们考虑一下今年早些时候在Arm TechCon上展示的一个演示。这是一个使用TySOM-3A-ZU19EG和FMC-ADAS子卡构建的交通检测演示,该子卡为5倍高速数据(HSD)摄像头、雷达、激光雷达和超声波传感器提供接口和外设,这些传感器是大多数ADAS应用的感官输入。

图 3 显示了演示的体系结构。FPGA 中实现的两个 DPU 通过 AXI HP 端口连接到处理单元,以执行深度学习推理任务,例如图像分类、对象检测和语义分割。DPU 需要指令来实现神经网络,神经网络由 DNNC 和 DNNAS 工具准备。他们还需要访问输入视频和输出数据的内存位置。

pYYBAGOG9I2APvpCAAEt-6Z1wMY578.png

图3.流量检测演示具有 5 个视频输入管道,用于数据打包、AXI4 到 AXI 流数据传输、色彩空间转换 (YUV2RGB) 以及将视频发送到内存。

应用程序在应用程序处理单元 (APU) 上运行,通过管理中断和在单元之间执行数据传输来控制系统。DPU 和用户应用程序之间的连接是通过 DPU API 和 Linux 驱动程序实现的。有一些功能可以将新图像/视频读取到 DPU、运行处理并将输出发送回用户应用程序。

模型的开发和训练是在FPGA之外使用Caffe完成的,而优化和编译是使用作为DNNDK工具包的一部分提供的DECENT和DNNC单元完成的(图2)。在此设计中,SSD 对象检测 CNN 用于背景、行人和车辆检测。

在性能方面,使用四个输入通道实现了45 fps,展示了使用TySOM-3A-ZU19EG和DNNDK工具包的高性能深度学习应用。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1629

    文章

    21748

    浏览量

    604026
  • 机器学习
    +关注

    关注

    66

    文章

    8422

    浏览量

    132743
收藏 人收藏

    评论

    相关推荐

    深度学习中的卷积神经网络模型

    深度学习近年来在多个领域取得了显著的进展,尤其是在图像识别、语音识别和自然语言处理等方面。卷积神经网络作为深度学习的一个分支,因其在图像处理
    的头像 发表于 11-15 14:52 359次阅读

    FPGA深度神经网络中的应用

    、低功耗等特点,逐渐成为深度神经网络边缘计算和设备端推理的重要硬件平台。本文将详细探讨FPGA深度
    的头像 发表于 07-24 10:42 702次阅读

    深度神经网络在雷达系统中的应用

    深度神经网络(Deep Neural Networks,DNN)在雷达系统中的应用近年来取得了显著进展,为雷达信号处理、目标检测、跟踪以及识别等领域带来了革命性的变化。以下将详细探讨
    的头像 发表于 07-15 11:09 751次阅读

    残差网络深度神经网络

    残差网络(Residual Network,通常简称为ResNet) 是深度神经网络的一种 ,其独特的结构设计在解决深层网络训练中的梯度消失和梯度爆炸问题上取得了显著的突破,并因此成为
    的头像 发表于 07-11 18:13 1117次阅读

    pytorch中有神经网络模型吗

    处理、语音识别等领域取得了显著的成果。PyTorch是一个开源的深度学习框架,由Facebook的AI研究团队开发。它以其易用性、灵活性和高效性而受到广泛欢迎。在PyTorch中,有许多预训练的
    的头像 发表于 07-11 09:59 708次阅读

    如何在FPGA上实现神经网络

    随着人工智能技术的飞速发展,神经网络作为其核心组成部分,已广泛应用于图像识别、语音识别、自然语言处理等多个领域。然而,传统基于CPU或GPU的神经网络计算方式在实时性、能效比等方面存在
    的头像 发表于 07-10 17:01 2079次阅读

    深度神经网络与基本神经网络的区别

    在探讨深度神经网络(Deep Neural Networks, DNNs)与基本神经网络(通常指传统神经网络或前向神经网络)的区别时,我们需
    的头像 发表于 07-04 13:20 920次阅读

    人工智能神经网络芯片的介绍

    人工智能神经网络芯片是一类专门为深度学习和神经网络算法设计的处理器。它们具有高性能、低功耗、可扩展等特点,广泛应用于图像识别、语音
    的头像 发表于 07-04 09:33 809次阅读

    如何设计人脸识别神经网络

    识别技术主要分为两个步骤:人脸检测和人脸特征提取。人脸检测是指在图像中定位出人脸的位置和大小,人脸特征提取是指从人脸图像中提取出能够表征人脸特征的信息。人脸识别的关键在于人脸特征提取,
    的头像 发表于 07-04 09:20 676次阅读

    bp神经网络深度神经网络

    BP神经网络(Backpropagation Neural Network)是一种常见的前馈神经网络,它使用反向传播算法来训练网络。虽然BP神经网络在某些方面与
    的头像 发表于 07-03 10:14 865次阅读

    深度学习与卷积神经网络的应用

    随着人工智能技术的飞速发展,深度学习和卷积神经网络(Convolutional Neural Network, CNN)作为其中的重要分支,已经在多个领域取得了显著的应用成果。从图像识别、语音
    的头像 发表于 07-02 18:19 921次阅读

    深度神经网络模型cnn的基本概念、结构及原理

    ,其核心是构建具有多层结构的神经网络模型,以实现对复杂数据的高效表示和处理。在众多深度学习模型中,卷积神经网络(CNN)因其在图像识别等领域的卓越
    的头像 发表于 07-02 10:11 9773次阅读

    深度神经网络模型有哪些

    深度神经网络(Deep Neural Networks,DNNs)是一类具有多个隐藏层的神经网络,它们在许多领域取得了显著的成功,如计算机视觉、自然语言处理、语音识别等。以下是一些常见
    的头像 发表于 07-02 10:00 1494次阅读

    基于毫米波雷达的手势识别神经网络

    预处理后的信号输入卷积神经网络时域卷积网络(CNNTCN)模型,提取时空特征,并通过分类评估识别性能。实验结果表明,该方法在特定领域的识别中实现了98.2%的准确率,并在不同的
    发表于 05-23 12:12

    详解深度学习、神经网络与卷积神经网络的应用

    在如今的网络时代,错综复杂的大数据和网络环境,让传统信息处理理论、人工智能与人工神经网络都面临巨大的挑战。近些年,深度学习逐渐走进人们的视线,通过
    的头像 发表于 01-11 10:51 2069次阅读
    详解<b class='flag-5'>深度</b>学习、<b class='flag-5'>神经网络</b>与卷积<b class='flag-5'>神经网络</b>的应用