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

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

3天内不再提示

基于FPGA的CNN加速项目案例解析

FPGA设计论坛 来源:未知 2023-08-25 12:30 次阅读

人工智能AI)长期以来一直是科幻作家和学者的主题。将人脑的复杂性复制到计算机中的挑战催生了新一代的科学家、数学家和计算机算法开发人员。持续的研究现在已经让位于人工智能的使用,通常被称为深度学习机器学习,这些应用正越来越成为我们世界的一部分。虽然基本概念已经存在很长时间,但商业现实从未完全实现。近年来,数据的生成速度飞速发展,开发人员不得不长时间思考如何编写算法来从中提取有价值的数据和统计数据。还,另一个关键因素是高度可扩展级别的计算资源的可用性,这是云自愿提供的。例如,您口袋里的智能手机可能会使用 Google 的 Now(“OK Google”)或 Apple 的 Siri 语音命令应用程序,这些应用程序使用深度学习算法(称为(人工)神经网络)的强大功能来实现语音识别和学习能力。然而,除了与手机通话的乐趣和便利之外,还有大量工业、汽车和商业应用程序现在受益于深度学习神经网络的强大功能。称为(人工)神经网络,以实现语音识别和学习能力。然而,除了与手机通话的乐趣和便利之外,还有大量工业、汽车和商业应用程序现在受益于深度学习神经网络的强大功能。称为(人工)神经网络,以实现语音识别和学习能力。然而,除了与手机通话的乐趣和便利之外,还有大量工业、汽车和商业应用程序现在受益于深度学习神经网络的强大功能。

卷积神经网络

在查看其中一些应用程序之前,让我们先研究一下神经网络工作原理以及它需要哪些资源。当我们一般谈论神经网络时,我们应该更准确地将它们描述为人工神经网络。作为软件算法实现,它们基于人类和动物的生物神经网络——中枢神经系统。多年来,人们构想了几种不同类型的神经网络架构,其中卷积神经网络(CNN) 得到了最广泛的采用。造成这种情况的主要原因之一是他们的架构方法使它们非常适合使用基于 GPUFPGA 设备的硬件加速器提供的并行化技术。CNN 受欢迎的另一个原因是它们适合处理具有大量空间连续性的数据,其中图像处理应用程序非常适合。空间连续性是指特定位置附近的像素共享相似的强度和颜色属性。CNN 由不同的层构成,每个层都有特定的目的,并且在它们的操作中使用了两个不同的阶段。第一部分是指令或训练阶段,它允许处理算法了解它拥有哪些数据以及每条数据之间的关系或上下文。CNN 是作为结构化和非结构化数据的学习框架创建的,计算机创建的神经元形成连接和中断网络。模式匹配是 CNN 背后的一个关键概念,


图 1:CNN 的层方法(来源:Wikipedia – credit Aphex34 1)。

更多关于 CNN 工作原理的信息可以在Cadence 1a的一篇论文中找到,以及一个有用的视频1b,该视频录制在最近的 IEEE 协会关于计算新前沿的会议上。当Microsoft 研究团队1c赢得 ImageNet 计算机视觉挑战时,CNN 对图像处理应用程序的有用性的证据获得了进一步的尊重。

CNN 的第二阶段是执行阶段。由不同的层节点组成,关于什么可能的图像可能变得越来越抽象的命题。卷积层从图像源中提取低级特征,以检测图像中的线条或边缘等特征。其他层,称为池化层,用于通过平均或“池化”图像特定区域的共同特征来减少变化。然后可以将其传递给进一步的卷积和池化层。CNN 层的数量与图像识别的准确性相关,尽管这增加了系统性能需求。如果内存带宽可用,这些层可以以并行方式运行,CNN 中计算最密集的部分是卷积层。

开发人员面临的挑战是他们如何提供足够高的计算资源来运行 CNN,以确定在应用程序的时间限制内所需的不同图像分类的数量。例如,工业自动化应用程序可能会使用计算机视觉来识别需要将零件传送到传送带上的下一个阶段。在神经网络识别出零件之前暂停该过程会破坏流程并减慢生产速度。

实现 CNN

加速部分 CNN 正在进行的“强化”学习和执行阶段将显着加速这项主要是数学任务。凭借其高内存带宽和计算能力,GPU 和 FPGA 是这项工作的潜在候选者。具有任何冯诺依曼架构所表现出的缓存瓶颈的传统微处理器可以运行算法,但将层抽象任务移交给硬件加速器。虽然 GPU 和 FPGA 都提供了显着的并行处理能力,但 GPU 固定架构的性质意味着 FPGA 具有灵活且可动态重新配置的架构更适合 CNN 加速任务。使用非常精细的方法,本质上是在硬件中实现 CNN 算法,与 GPU 的软件衍生算法方法相比,FPGA 架构有助于将延迟保持在绝对最小值,并且更具确定性。FPGA 的另一个优点是能够在设备结构中“硬化”功能块,例如 DSP。这种方法进一步加强了网络的确定性。就资源使用而言,FPGA 非常高效,因此每个 CNN 层都可以在 FPGA 结构内构建,并且它自己的内存靠近它。


图 2:图像处理 CNN 概述(来源:Cadence 2)。

图 2 突出显示了为工业图像处理应用程序设计的 CNN 的关键组件块,中间的两个块代表 CNN 的核心。

使用 C 语言的OpenCL 2a并行编程扩展来补充基于 FPGA 的 CNN 加速应用程序的开发。适用于卷积神经网络的 FPGA 器件的一个示例是英特尔可编程解决方案集团 (PSG)的Arria 10系列器件,其正式名称为Altera

为了帮助开发人员开展基于 FPGA 的 CNN 加速项目,英特尔 PSG 提供了 CNN 参考设计。这使用 OpenCL 内核来实现每个 CNN 层。数据使用通道和管道从一层传递到下一层,该功能允许数据在 OpenCL 内核之间传递,而无需消耗外部内存带宽。卷积层是使用 FPGA 中的 DSP 模块和逻辑实现的。硬化块包括浮点功能,可进一步提高设备吞吐量,而不必影响可用内存带宽。

图 3 所示的框图突出显示了可以使用 FPGA 作为加速处理单元的示例图像处理和分类系统。


图 3:使用 FPGA 进行加速的图像分类系统框图(来源:FPGA 上的深度学习,过去、现在和未来3)。

英特尔 PSG 还在其网站4上提供了许多有关将 FPGA 卷积神经网络用于工业、医疗和汽车应用的主题的有用文档和视频。为深度学习应用程序选择框架是关键的第一步。为了帮助开发人员,有越来越多的工具,例如OpenANN (openann.github.io),这是一个用于人工神经网络的开源库,以及诸如deeplearning.net和Embedded-vision.com等信息丰富的社区站点。包括对使用 OpenCL 的支持的流行深度学习设计框架包括Caffe(caffe.berkeleyvision.org),基于 C++ 和基于 Lua 的 Torch。DeepCL 是另一个完全支持 OpenCL 的框架,尽管它尚未获得前两者的用户群。

结论

工业市场热衷于利用深度学习神经网络可以为许多制造和自动化控制应用带来的特性。由于德国的工业 4.0 等举措以及更广泛的工业物联网概念,这一重点得到了进一步的推动。与高质量的视觉相机、CPU 和 FPGA 解决方案以及相关控制相结合,卷积神经网络可用于自动执行大量制造过程检查,从而提高产品质量、可靠性和工厂安全性。

凭借其动态可配置的逻辑结构、高内存带宽和功率效率,FPGA 非常适合加速 CNN 的卷积层和池化层。在大量社区驱动的开源框架和并行代码库(如 OpenCL)的支持下,未来在此类应用中使用 FPGA 是安全的。FPGA 提供了一种高度可扩展和灵活的解决方案,可以满足许多工业部门的不同应用需求。




有你想看的精彩



至芯科技FPGA就业培训班——助你步入成功之路、8月12号西安中心开课、欢迎咨询!
在FPGA上优化实现复数浮点计算
如何通过RTL分析、SDC约束和综合向导更快推出FPGA设计





扫码加微信邀请您加入FPGA学习交流群




欢迎加入至芯科技FPGA微信学习交流群,这里有一群优秀的FPGA工程师、学生、老师、这里FPGA技术交流学习氛围浓厚、相互分享、相互帮助、叫上小伙伴一起加入吧!


点个在看你最好看






原文标题:基于FPGA的CNN加速项目案例解析

文章出处:【微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。

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

    关注

    1628

    文章

    21722

    浏览量

    602885

原文标题:基于FPGA的CNN加速项目案例解析

文章出处:【微信号:gh_9d70b445f494,微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    FPAG技术问题合集

    1D-CNN,还有哪些神经网络算法可以在FPGA加速? A :以下是一个基于 FPGA 的一维卷积神经网络(1D-CNN)算法
    的头像 发表于 12-07 10:05 107次阅读

    FPGA加速深度学习模型的案例

    FPGA(现场可编程门阵列)加速深度学习模型是当前硬件加速领域的一个热门研究方向。以下是一些FPGA加速深度学习模型的案例: 一、基于
    的头像 发表于 10-25 09:22 210次阅读

    CNN与RNN的关系​

    在深度学习的广阔领域中,卷积神经网络(CNN)和循环神经网络(RNN)是两种极为重要且各具特色的神经网络模型。它们各自在图像处理、自然语言处理等领域展现出卓越的性能。本文将从概念、原理、应用场景及代码示例等方面详细探讨CNN与RNN的关系,旨在深入理解这两种网络模型及其在
    的头像 发表于 07-08 16:56 717次阅读

    CNN的定义和优势

    CNN是模型还是算法的问题,实际上它兼具了两者的特性,但更侧重于作为一种模型存在。本文将从CNN的定义、结构、原理、应用等多个方面进行深入探讨,旨在全面解析CNN的本质及其在计算机视觉
    的头像 发表于 07-05 17:37 4216次阅读

    如何利用CNN实现图像识别

    卷积神经网络(CNN)是深度学习领域中一种特别适用于图像识别任务的神经网络结构。它通过模拟人类视觉系统的处理方式,利用卷积、池化等操作,自动提取图像中的特征,进而实现高效的图像识别。本文将从CNN的基本原理、构建过程、训练策略以及应用场景等方面,详细阐述如何利用
    的头像 发表于 07-03 16:16 1301次阅读

    cnn卷积神经网络分类有哪些

    卷积神经网络(CNN)是一种深度学习模型,广泛应用于图像分类、目标检测、语义分割等领域。本文将详细介绍CNN在分类任务中的应用,包括基本结构、关键技术、常见网络架构以及实际应用案例。 引言 1.1
    的头像 发表于 07-03 09:28 597次阅读

    cnn卷积神经网络三大特点是什么

    卷积神经网络(Convolutional Neural Networks,简称CNN)是一种深度学习模型,广泛应用于图像识别、视频分析、自然语言处理等领域。CNN具有以下三大特点: 局部连接
    的头像 发表于 07-03 09:26 902次阅读

    卷积神经网络cnn模型有哪些

    卷积神经网络(Convolutional Neural Networks,简称CNN)是一种深度学习模型,广泛应用于图像识别、视频分析、自然语言处理等领域。 CNN的基本概念 1.1 卷积层
    的头像 发表于 07-02 15:24 715次阅读

    BittWare提供基于英特尔Agilex™ 7 FPGA最新加速

    BittWare 当前的加速板产品组合包括最新的英特尔 Agilex 7 FPGA F、I 和 M 系列,包括 Compute Express Link (CXL) 和 PCIe* 5.0
    的头像 发表于 04-30 15:22 817次阅读
    BittWare提供基于英特尔Agilex™ 7 <b class='flag-5'>FPGA</b>最新<b class='flag-5'>加速</b>板

    【国产FPGA+OMAPL138开发板体验】(原创)7.硬件加速Sora文生视频源代码

    OMAP-L138(定点/浮点DSP C674x+ARM9)+ FPGA处理器的开发板。 要用FPGA加速文本到视频生成模型Sora,首先需要了解该模型的复杂性和计算需求。文本到视频生成模型涉及深度学习
    发表于 02-22 09:49

    【国产FPGA+OMAPL138开发板体验】(原创)5.FPGA的AI加速源代码

    使用硬件加速器来进一步提升性能。我写的这个简化的代码只是为了帮助理解FPGA如何可能参与AI计算的过程。在实际的FPGA AI加速项目中,还
    发表于 02-12 16:18

    关于FPGA的开源项目介绍

    Hello,大家好,之前给大家分享了大约一百多个关于FPGA的开源项目,涉及PCIe、网络、RISC-V、视频编码等等,这次给大家带来的是不枯燥的娱乐项目,主要偏向老的游戏内核使用FPGA
    的头像 发表于 01-10 10:54 1428次阅读
    关于<b class='flag-5'>FPGA</b>的开源<b class='flag-5'>项目</b>介绍

    开源FPGA项目有哪些

    请问开源FPGA项目有哪些?
    发表于 12-26 12:09

    国外大学的FPGA开发项目盘点

    据我了解,目前国内很多大学是没有开设FPGA相关课程的,所以很多同学都是自学,但是自学需要一定的目标和项目,今天我们就去看看常春藤盟校Cornell University 康奈尔大学开设的FPGA
    发表于 12-22 10:27 1009次阅读
    国外大学的<b class='flag-5'>FPGA</b>开发<b class='flag-5'>项目</b>盘点

    fpga布局布线算法加速

    任务是将逻辑元件与连接线路进行合理的布局和布线,以实现性能优化和电路连接的可靠性。然而,FPGA布局布线的过程通常是一项繁琐且耗时的任务,因此加速布局布线算法的研究具有重要意义。本文将详尽探讨FPGA布局布线算法
    的头像 发表于 12-20 09:55 841次阅读