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

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

3天内不再提示

从神经网络入门嵌入式视觉应用的机器学习

YCqV_FPGA_EETre 来源:未知 作者:佚名 2018-01-07 09:37 次阅读

作者:Nick Ni 和 Adam Taylor

目前嵌入式视觉领域最热门的话题之一就是机器学习。机器学习涵盖多个行业大趋势,不仅在嵌入式视觉 (EV) ,而且在工业物联网 (IIoT) 和云计算中均发挥着极为显赫的作用。对不熟悉机器学习的人来说,很多时候机器学习是通过神经网络创建和训练来实现的。神经网络一语极为宽泛,包含相当数量的截然不同的子类别。这些子类别的名称一般用于识别被实现的网络的具体类型。这些网络均在大脑皮层上建模,在大脑皮层中每个神经元接收输入、处理输入并将其传达给另一个神经元。因此神经元一般由输入层、多个隐藏内部层和一个输出层组成。

图1:简单的神经网络

在最简单的层面上,神经元获得输入,施加权重给输入,然后在加权输入总和上执行传递函数。结果随后传递给隐藏层中的另一个层,或传递给输出层。将一级的输出传递给另一级且不构成循环的神经网络被称为前馈神经网络 (FNN),而那些有反馈、内含定向循环的神经网络则被称为递归神经网络 (RNN)。在众多机器学习应用中极为常用的神经网络是深度神经网络 (DNN)。这类神经网络拥有多个隐藏层,能实现更复杂的机器学习任务。为确定每层使用的权重和偏差值,需要对神经网络进行训练。在训练过程中,该神经网络施加有一定数量的正确输入和错误输入,并使用误差函数教授网络所需的性能。训练深度神经网络可能需要庞大的数据集来正确训练所需性能。

机器学习最重要的应用之一是嵌入式视觉领域,各类系统正在从视觉使能系统演进为视觉引导自动化系统。嵌入式视觉应用与其他更简单的机器学习应用的区别在于它们采用二维输入格式。因此,在机器学习实现方案中,通过使用称为卷积神经网络 (CNN) 的网络结构,因为它们能够处理二维输入。CNN 是一类前馈网络,内置多个卷积层和子采样层以及一个单独的全连通网络,以执行最终分类。鉴于 CNN 的复杂性,它们也归属深度学习类别。在卷积层中,输入图像被细分为一系列重叠的小模块。在进行进一步的子采样和其它阶段之前,该卷积的结果先通过激活层创建激活图,然后应用到最终的全连通网络上。CNN 网络的具体定义因实现的网络架构而异,但它一般会包含至少下列元:● 卷积 – 用于识别图像中的特征● 修正线性单元(reLU)- 用于在卷积后创建激活图的激活层● 最大池化 – 在层间进行子采样● 全连通 - 执行最终分类

这些元中每一个元的权重通过训练决定,同时 CNN 的优势之一在于训练网络相对容易。通过训练生成权重需要庞大的图像集,其中既有需要检测的对象,也有伪图像。这样能让我们为 CNN 创建所需的权重。由于训练流程中所涉及的处理要求,训练流程一般运行在提供高性能计算的云处理器上。

框架

机器学习是一个复杂的课题,尤其是在每次不得不从头开始,定义网络、网络架构和生成训练算法的时候。为帮助工程师实现网络和训练网络,有一些行业标准框架可供使用,例如 Caffe 和 Tensor Flow。Caffe 框架为机器学习开发人员提供各种库、模型和 C++ 库内的预训练权重,同时提供 PythonMatlab 绑定。该框架能让用户无需从头开始即能创建网络并训练网络,以开展所需的运算。为便于重复使用,Caffe 用户能通过 model zoo 共享自己的模型。Model Zoo 提供多种能根据所需的专门任务实现和更新的模型。这些网络和权重定义在 prototxt 文件中。在用于机器学习环境时,prototxt 文件是用于定义推断引擎的文件。

图2:定义网络的 Prototxt 文件实例

实现嵌入式视觉和机器学习

基于可编程逻辑的解决方案,例如异构赛灵思 All Programmable Zynq® -7000 SoC(片上系统)和 Zynq® UltraScale+™ MPSoC 等多处理器片上系统 (MPSoC) 越来越广泛地用于嵌入式视觉应用。这些器件将可编程逻辑 (PL) 架构与处理系统 (PS) 中的高性能ARM® 内核完美组合在一起。这种组合形成的系统拥有更快的响应速度,极为灵活便于未来修改,并且提供了高能效解决方案。对许多应用来说低时延决策与响应循环极为重要。例如视觉引导自主机器人,响应时间对避免给人员造成伤害、给环境造成破坏至关重要。缩短响应时间的具体方法是使用可编程逻辑实现视觉处理流水线和使用机器学习推断引擎实现机器学习。在这方面使用可编程逻辑,与传统解决方案相比可减少系统瓶颈问题。在使用基于 CPU/GPU 的方法时,运算每一阶段都需要使用外部 DDR,因为图像不能在有限内部缓存内的功能间传递。可编程逻辑方法使用内部 ARM 按需提供缓存,允许采用流媒体方法。避免在 DDR 内存储中间元不仅可降低图像处理的时延,而且还能降低功耗,甚至提高确定性,因为无需与其他系统资源共享访问。

图 3:可编程逻辑实现的好处

使用赛灵思提供的 reVISION™ 堆栈,在异构 SoC 中能轻松实现图像处理算法和机器学习网络。基于 SDSoC™ 工具,reVISION 能同时支持传统图像应用和机器学习应用。在 reVISION 内部,同时支持 OpenVX 和 Caffe 框架。为支持 OpenVX 框架,内核图像处理功能可被加速到可编程逻辑中,以创建图像处理流水线。同时机器学习推断环境支持可编程逻辑中的硬件优化库,以实现执行机器学习实现方案的推断引擎。

图4:reVISION 堆栈

reVISION 提供与 Caffe 的集成,这样实现机器学习推断引擎就如同提供 prototxt 文件和经训练的权重一样简单,框架负责处理其余工作。然后使用 prototxt 文件对运行在处理系统上的 C/C++ 调度器进行配置,以加速可编程逻辑中硬件优化库上的神经网络推断。可编程逻辑用于实现推断引擎,内含 Conv、ReLu 和 Pooling 等功能。

图5:Caffe 流程集成

机器学习推断引擎实现方案中使用的数值表示系统也对机器学习性能有重要作用。机器学习应用正越来越多地使用更高效的降精度定点数值系统,例如 INT8 表达式。与传统的浮点 32 (FP32) 方法相比,使用定点降精度数值系统不会造成显著的精度下降。因为与浮点相比,定点数学在实现难度上也明显更低,转而采用 INT8 能在一些实现中提供更高效、更快速的解决方案。使用定点数值系统对在可编程逻辑解决方案中的实现方案而言相当理想,reVISION 在可编程逻辑中能与 INT8 表达式协同工作。这些 INT8 表达式方便在可编程逻辑中使用专门的 DSP 模块。在使用相同的内核权重时,这些 DSP 模块架构能实现最多两个并发 INT8 乘法累加运算供执行。这样不仅能提供高性能实现方案,而且还能够降低功耗。只要采用,可编程逻辑的灵活性也还便于实现进一步降精度定点数值表达系统。

图6:不同权重表达的网络精度。

资料来源:https://arxiv.org/pdf/1510.00149v5.pdf

真实性能

在真实环境中,reVISION 堆栈能带来明显优势。在嵌入式视觉应用中使用机器学习的应用实例之一,如车辆避碰系统。在 reVISION 中针对赛灵思 UltraScale+ MPSoC 并开发相关应用,使用 SDSoC 在可编程逻辑中按需为各项功能加速以达到优化性能,能明显改善响应性。在都用于实现 GoogLeNet 解决方案的条件下,将 reVISION MPSoC 的响应时间与基于 GPU 的方法进行对比,差异相当明显。reVISION 设计能在 2.7ms 内发现潜在的碰撞事件并启动车辆制动(使用的批量规模为 1),而基于 GPU 的方法则需要用时49ms-320ms(具体取决于其实现方案)(对大批量规模)。GPU 架构需要大批量规模才能实现合理的吞吐量,但会以牺牲响应时间为代价,而 Zynq 在批量规模为 1 的情况下也能以极低时延实现高性能。这种反应时间上的差异可以决定碰撞发生与否。

总结

机器学习将继续成为众多应用的重要推动因素,尤其是在视觉导向机器人或所谓的“协作机器人”中。将处理器内核与可编程逻辑结合的异构 SoC, 能创建非常高效、极具响应性且可重配置的解决方案。像reVISION 这样的堆栈的推出,首次将可编程逻辑的好处带给了更广阔的开发者社群,同时还缩短了解决方案的开发时间。


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

    关注

    4981

    文章

    18278

    浏览量

    288374
  • 神经网络
    +关注

    关注

    42

    文章

    4572

    浏览量

    98737
  • 机器学习
    +关注

    关注

    66

    文章

    8120

    浏览量

    130550
  • 工业物联网
    +关注

    关注

    25

    文章

    2287

    浏览量

    60723

原文标题:嵌入式视觉应用中的机器学习

文章出处:【微信号:FPGA-EETrend,微信公众号:FPGA开发圈】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    神经网络解决方案让自动驾驶成为现实

    的越来越大的挑战。结论机器学习神经网络将沿着一条挑战高效处理性能的发展道路继续阔步前进。先进的神经网络架构已经显现出优于人类的识别精确性。用于生成
    发表于 12-21 17:11

    AlexNet到MobileNet,带你入门深度神经网络

    俊楠分享了典型模式-深度神经网络入门。本文详细介绍了关于深度神经网络的发展历程,并详细介绍了各个阶段模型的结构及特点。直播回顾请点击以下是精彩视频内容整理:问题引出学习知识
    发表于 05-08 15:57

    机器学习神经网络参数的代价函数

    吴恩达机器学习笔记之神经网络参数的反向传播算法
    发表于 05-22 15:11

    嵌入式视觉系统揭秘

    今年嵌入式视觉峰会的论文为以光为输入的嵌入式系统建议了多种方法,以及使这些输入发挥作用所需要的各种算法和硬件实现。应用包括了简单的静态机器视觉
    发表于 07-17 07:13

    怎么设计ARM与神经网络处理器的通信方案?

    人工神经网络在很多领域得到了很好的应用,尤其是具有分布存储、并行处理、自学习、自组织以及非线性映射等特点的网络应用更加广泛。嵌入式便携设备也越来越多地得到应用,多数是基于ARM内核及现
    发表于 09-20 06:15

    ETPU-Z2全可编程神经网络开发平台

    TPU神经网络加速器开发流程 EEP-TPU的开发流程与传统的嵌入式开发流程类似,拥有Host(主机)和Device(机)两类设备。ETPU的开发流程通常也被分为两部分:神经网络算法
    发表于 05-18 17:13

    解析深度学习:卷积神经网络原理与视觉实践

    解析深度学习:卷积神经网络原理与视觉实践
    发表于 06-14 22:21

    嵌入式神经网络有哪些挑战

    能。  这些挑战如果处理不当,将构成重大威胁。一方面,必须要克服硬件限制条件,以在嵌入式平台上执行NN。另一方面,必须要克服挑战的第二部分,以便快速达成解决方案,因为上市时间是关键。还原至硬件解决方案以加速上市时间也不是一个明智选择,因为它无法提供灵活性,并将快速成为发展进化神经
    发表于 06-30 11:01

    针对Arm嵌入式设备优化的神经网络推理引擎

    专门针对Arm嵌入式设备优化的神经网络推理引擎Tengine + HCL,不同人群的量身定制
    发表于 01-15 08:00

    嵌入式中的人工神经网络的相关资料分享

    人工神经网络在AI中具有举足轻重的地位,除了找到最好的神经网络模型和训练数据集之外,人工神经网络的另一个挑战是如何在嵌入式设备上实现它,同时优化性能和功率效率。 使用云计算并不总是一个
    发表于 11-09 08:06

    机器学习的相关资料下载

    https://www.toutiao.com/a6712245202418926083/机器学习最重要的应用之一是嵌入式机器视觉领域,各类
    发表于 12-14 07:03

    轻量化神经网络的相关资料下载

    原文链接:【嵌入式AI部署&基础网络篇】轻量化神经网络精述--MobileNet V1-3、ShuffleNet V1-2、NasNet深度神经网络模型被广泛应用在图像分类、物体检测等
    发表于 12-14 07:35

    如何实现开发嵌入式神经网络

    已经有很多关于将人工智能用于日益智能的车辆的文章。但是,您如何将在服务器群上开发的神经网络 (NN) 压缩到量产汽车中资源受限的嵌入式硬件中呢?本文探讨了我们应该如何授权汽车生产 AI 研发工程师在
    发表于 12-23 06:30

    卷积神经网络一维卷积的处理过程

    以前的神经网络几乎都是部署在云端(服务器上),设备端采集到数据通过网络发送给服务器做inference(推理),结果再通过网络返回给设备端。如今越来越多的神经网络部署在
    发表于 12-23 06:16

    卷积神经网络简介:什么是机器学习

    抽象人工智能 (AI) 的世界正在迅速发展,人工智能越来越多地支持以前无法实现或非常难以实现的应用程序。本系列文章解释了卷积神经网络 (CNN) 及其在 AI 系统中机器学习中的重要性。CNN 是
    发表于 02-23 20:11