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

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

3天内不再提示

嵌入式视觉应用于机器学习的设计方案

Xilinx赛灵思官微 来源:djl 作者:赛灵思Nick Ni和Ad 2019-07-29 10:49 次阅读

目前嵌入式视觉领域最热门的话题之一就是机器学习。机器学习涵盖多个行业大趋势,不仅在嵌入式视觉 (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:不同权重表达的网络精度。

真 实 性 能

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

总 结

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

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

    关注

    1

    文章

    284

    浏览量

    18314
  • 机器学习
    +关注

    关注

    66

    文章

    8096

    浏览量

    130521
  • 嵌入式视觉
    +关注

    关注

    8

    文章

    115

    浏览量

    59042
收藏 人收藏

    评论

    相关推荐

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

    目前嵌入式视觉领域最热门的话题之一就是机器学习机器学习涵盖多个行业大趋势,不仅在
    的头像 发表于 01-07 09:37 1.3w次阅读
    从神经网络入门<b class='flag-5'>嵌入式</b><b class='flag-5'>视觉</b>应用的<b class='flag-5'>机器</b><b class='flag-5'>学习</b>

    嵌入式学习步骤

    开发板上测试固件以及在实际设备上进行测试。 嵌入式系统的多样化发展,它将更为广泛地应用于各个领域,实现智能化、网络化、自动化的目标。同时,随着人工智能和机器学习技术的发展,
    发表于 02-02 15:24

    嵌入式系统发展前景?

    应用领域。随着汽车电子化和智能化程度的不断提高,嵌入式系统将在汽车控制、安全系统、自动驾驶等方面发挥更为重要的作用。 工智能和机器学习技术的发展为嵌入式系统提供了新的发展机遇。
    发表于 02-22 14:09

    嵌入式系统与人工智能

    紧凑,强大的嵌入式视觉解决方案也可以从最高的识别率中受益。结论基于AI的技术(如深度学习和CNN)变得越来越重要,特别是在高度自动化的工业4.0环境中。这就是为什么它们目前是最先进的机器
    发表于 02-28 09:12

    嵌入式视觉的发展机遇

    相类似,嵌入式视觉技术有望在今后10年得到广泛应用。 很明显,嵌入式视觉技术能够为多种应用带来巨大的价值(图1)。两个例子是,Mobileye基于
    发表于 05-16 10:45

    嵌入式视觉和网络边缘智能应用市场发展迅速

    应用找到了用武之地。制造商一直以来都依赖于工业应用中的机器视觉系统,但随着先进机器人技术和机器学习技术的涌现以及向工业4.0制造模式的转变,
    发表于 07-18 07:52

    一种基于CPCI的嵌入式单板计算机电源的设计方案

    以及电源完整性提出更高的要求。这里介绍一种基于CPCI的嵌入式单板计算机电源的设计方案。该设计主要应用于航空设备和军用车载设备。
    发表于 07-22 06:51

    一种应用于嵌入式系统的电源监控模块设计

    ,并提供一个发光二极管检测直流电压的有无,并未过多的考虑系统工作时电源模块输出电压是否准确以及能否让各种器件正常运行。针对这一现象,这里给出一种应用于嵌入式系统的电源监控模块的设计方案以及具体的硬件实现。
    发表于 07-23 07:41

    一种基于CPCI的嵌入式单板计算机电源的设计方案

    以及电源完整性提出更高的要求。这里介绍一种基于CPCI的嵌入式单板计算机电源的设计方案。该设计主要应用于航空设备和军用车载设备。
    发表于 07-24 07:18

    如何推动嵌入式视觉技术发展?

    新的成像应用正在蓬勃发展,从工业 4.0 中的协作机器人,到无人机消防或用于农业,再到生物特征面部识别,再到家庭中的护理点手持医疗设备。出现这些新应用程序的一个关键因素是,嵌入式视觉
    发表于 10-24 08:11

    嵌入式机器视觉系统有什么特性?怎么优化?

    介绍了基于ARM+DSP架构的嵌入式机器视觉系统的特性,分析了制约嵌入式机器视觉系统性能的因素。
    发表于 03-11 06:47

    嵌入式框架EFC是什么? 使用EFC的设计方案有哪些实例?

    什么是框架?如何设计框架?嵌入式框架EFC是什么?使用EFC的设计方案有哪些实例?
    发表于 04-27 06:23

    嵌入式学习路线的相关资料分享

    查阅了很多资料,浏览很多网站,总结一下嵌入式学习路线。前期补习阶段:C语言基础补习课程C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器
    发表于 11-08 08:59

    浅析MATLAB和Simulink嵌入式视觉应用

    的 MATLAB 和 Simulink 工具,为嵌入式视觉系统设计算法和系统模型。借助用于采集摄像机和其他传感器实时图像和视频数据的应用程序,以及用于处理、分析、仿真和可视化这些数据的
    发表于 12-04 08:00

    三大厂商推出AI嵌入式视觉入门套件,用于计算机视觉机器学习设计

    Toradex,Amazon Web Services(AWS)和NXP Semiconductors合作推出了AI嵌入式视觉入门套件,用于开发与云连接的计算机视觉
    的头像 发表于 03-11 17:00 3551次阅读