如果说传统物联网更多体现的是线性思维,即物体产生数据,通过互联网传到云端,然后分析产生价值。那么今天的物联网则完全是立体三维概念,需要同时解决实时应用、成本、分析预测、精准性、人工智能、信息安全等多重问题。如何让这些元素之间产生和谐的动力,将计算浓度和计算分布变成“边云协同”的分布式架构,是当前业界最为关注的话题。
物联网正从边缘侧趋向负载整合
人工智能的发展离不开数据,因为它需要大量的数据进行训练。在当前这样一个万物智能互联的时代,数据量的产生速度超出了一般人的想象。以智能摄像头为例,随着摄像头的分辨率从1080P转向4K,其一天所采集到的数据量将达到200GB。面临同样问题的还包括智能医院、自动驾驶和智能工厂,它们一天所产生的数据将分别超过3TB、4TB和1PB。有人做过这样的预测,到2020年,一个互联网用户平均每天将产生的数据量大概是1.5GB。
然而物联网行业体量巨大,碎片化程度严重,将人工智能推向边缘侧其实并不是一件简单的事情。况且在2012年以前,人工智能在做图像识别时的准确度是低于人类的。下图中,虚线代表人类识别水平,实线代表机器识别错误率。可以看到,2012年以前机器识别的错误率还是高于人类的,但呈逐渐下降趋势,2012年之后,随着AlexNet等神经网络的出现,人工智能水平才出现了质的飞跃。
因此,在一个边缘协同的端到端系统中,由于不同网源的功耗、计算性能和所能承担的成本各不相同,在选取硬件架构时往往会有特定要求。英特尔副总裁兼物联网事业部中国区总经理陈伟博士对《电子工程专辑》表示,英特尔的做法是根据用户需求提供不同架构的解决方案,涵盖至强处理器、至强融核处理器、Movidius/Nervana神经网络处理器和FPGA、网络、存储技术等硬件平台,以及多种软件工具及函数库,优化开源框架,来让他们进行自主选择。
英特尔中国区物联网事业部首席技术官兼首席工程师张宇博士则强调了在边缘侧趋向负载整合是物联网演进的一个必然趋势。也就是说,原来在不同设备上分立的负载会越来越多地通过虚拟化等技术,整合到一个单一的高性能的计算平台上,来实现一个综合的复杂的功能,各个功能子系统既能分享设备提供的计算、存储、网络等资源,还能具有一定的独立性,避免彼此的相互影响,从而可以简化系统架构,降低系统总体。
同时,负载整合实际上也为边缘计算的实现以及为实施人工智能的应用提供了条件。整合后的设备既是边缘数据的汇聚节点,同时也是边缘控制的中心,这为边缘智能提供了处理所需的数据,同时也提供了控制的入口。因此英特尔认为人工智能和负载整合的结合,会在今后的边缘计算的系统里发生。
视频是终极物联网传感器
来自《战略师的物联网指南》 的数据显示,到2021年,边缘到云行业支出预计将达到110亿美元。在这一涵盖智能制造、智慧城市等领域的巨大物联网机遇中,智能设备、传感器和互联事物捕捉的视频将会占据60亿美元的份额。
为此,英特尔日前面向软件开发人员以及开发、监控、零售、医疗、办公自动化、自动驾驶等领域的数据科学家,最新推出了OpenVINO(Open Visual Inference & Neural Network Optimization, 开放视觉推理及神经网络优化)软件平台。这是一个快速开发高性能计算机视觉和深度学习视觉应用的工具包,包括英特尔深度学习部署工具包,具有模型优化器、推理引擎、超过20个预先训练的模型,以及面向OpenCV和OpenVx的优化计算机视觉库。OpenVINO工具包可通过CPU、GPU、FPGA、Movidius VPU等硬件进行部署,增强视觉系统功能和性能,轻松实现边缘到云的异构执行。
测试结果显示,在英特尔酷睿i7 7800X处理器上运行Google Nex网络,相应的性价比是目前市场上主流解决方案的两倍以上;如果选用FPGA,其性能、功耗、成本比值的综合考量性能大概能达到1.4倍以上;而使用Movidius的话,性能可进一步提升至5倍以上。
作为一家平台化的公司,英特尔锁定高性能计算机视觉和深度学习视觉两大热点领域,并提供包括CPU、核显(Integrated GPU)和深度学习加速器(FPGA、Movidius VPU)在内的完整硬件解决方案都不令人意外。但在陈伟看来,实际应用中,不但指望产生一个一劳永逸方案的想法是不切实际的,即便在如何深度挖掘这些硬件的计算潜力方面,也仍然存在很多壁垒。
计算机视觉和深度学习开发工具OpenVINO
从人工智能的演进过程中可以看到,早期的人工智能计算,无论是训练还是推理都发生在数据中心,因为只有数据中心才能够提供如此惊人的计算力和电力的消耗。然而近年来,随着网络压缩算法的广泛使用,以及人工智能专用芯片的出现,使得一些深度学习运算可以从云端推送到边缘,使得智能摄像机、智能网络视频存储器、NVR等产品逐步面世。
在整个端到端的网络中,不同的网源所能提供的计算量是不一样的,能够支持的操作系统也各不相同,因此有各自适用的芯片架构。比如在摄像机里,一个摄像机的功耗大概15瓦,从15瓦里能够提供给做智能运算的能量有2-3瓦,对于这样的使用场景,类似于ASIC这样的架构是最适宜的;然而在数据中心中,通用处理器又是最适宜的,这就给开发者带来了一定的困扰。简单而言,就是说为某一种芯片所开发的软件在面对一个新架构时,很可能是不适用的,这样无形中就增加了开发的门槛。
张宇说自己跟很多从事人工智能应用开发的开发者交流过,发现最大的困扰来自以下两个方面:一是网络模型已经训练完毕,但由于推理平台能力有限,只能下载网络模型的一部分而不是全部;另外一个则是将训练好的模型推送到推理平台之后,不是性能达不到设计要求,就是模型框架得不到英特尔Movidius或是FPGA架构的支持。
在视觉领域,传统的计算机视觉和深度学习方法都在被广泛使用中。深度学习方法在物体检测、目标识别方面已经开始替代传统的计算机视觉,但在光流计算或是图像增强领域,计算机视觉仍然有自己的用武之地。
OpenVINO对这两类方法都有很好的支持,从而帮助开发者将已经训练好的网络模型部署到目标平台之上进行推理操作。考虑到目前比较流行的深度学习框架包括Caffe、Tensor Flow、MxNet三种,模型优化器和推理引擎可以把开发者基于开放的深度学习框架所开发的网络模型,针对所选用的目标平台进行优化,然后将这些优化的结果转换成包含网络拓扑结构、模型参数和模型变量的中间表述文件(IR文件)供推理引擎读取,再利用相应的硬件插件将IR文件下载到目标平台上进行执行,开发者可以通过测试程序或应用来验证结果的正确性。
传统计算机视觉工具库则是经过预编译的,支持OpenCV3.3版本。此外,OpenVINO还包含了对OpenVX以及OpenVX在神经网络扩展的支持,同时在媒体、视频、图像处理领域还包含了已经非常成熟的英特尔媒体软件开发套件(Media SDK),可以帮助开发者非常方便的利用英特尔CPU里面集成显卡的资源来实现多种视频格式(H.264、H.265)的编码、解码以及转码的操作。这样,一个工具库同时支持多种操作系统,用户可以非常方便的调用英特尔硬件资源,实现性能的提升,达到事半功倍的效果。
让我们一起看看集成了高级软硬件的英特尔视觉解决方案是如何在边缘节点(包括摄像头和本地服务器)处促进强大的深度学习推理功能在各行各业中的应用:
交通监控。采用英特尔FPGA和Movidius™ VPU的摄像头可捕捉数据,并自动将其发送至下游十字路口系统,帮助交通部门优化交通和做好规划。这些信息可通过车载系统或应用直接传达给司机,帮助他们规划路线。
公共安全。借助使用OpenVINO™工具包开发的Myriad VPU和算法,经过训练的深度神经网络现在可利用推理功能通用面部识别分析并识别失踪儿童。采用了这一技术的城市执法机构可在经过训练的数据集匹配到人群中已报告失踪儿童的脸部时,即时收到相关通知。
工业自动化。英特尔视觉解决方案可帮助智能工厂融合OT和IT,重塑工业业务模式和增长战略。生产控制将可自动、流畅运转,缩短上市时间。
机器视觉。借助人工智能增强工业机器视觉,支持更精准的工厂自动化应用。解决方案组合摄像头、电脑和算法,以分析图像和视频,在边缘提供可以用于指导行动的重要信息。
响应式零售。在边缘使用英特尔计算机视觉解决方案的零售商,可以快速识别特定客户或客户行为模式,从而提供个性化的精准营销服务。
运营管理。通过使用基于英特尔架构的计算机视觉解决方案,零售商可简化运营、管理库存、优化供应链和增强推销能力,并帮助他们发掘数据的更高价值。
OpenVINO中的关键先生
既能够实现Caffe、Tensor Flow、MxNet框架之上所开发的模型导入,还能够进行模型优化,采用Python语言进行编写的模型优化器居功至伟。一个简单的使用场景就是在通用处理器上所产生的训练结果,由于受到数据精度、内存、操作系统等多方面的限制,在部署到前端的嵌入式推理平台上时会受到各种限制,而在模型优化器的帮助下,就可以自动实现。
张宇列举了两个优化的案例。第一,在做训练的时候,有可能会存在一个Dropout层,它的主要作用是在训练过程中让一定比例的神经元失效,从而避免在训练过程中让模型参数陷入局部极小值,导致失去最优效果。但Dropout层在做推理的时候是没有必要的,因此OpenVINO中的模型优化器可以自动检测当前的网络模型,如果发现有Dropout层存在,就会自动将其剔除掉。第二,将神经网络模型里包含的卷积层、全邻接层、激活函数层的网络优化工作交给模型优化器进项实现,目前英特尔已经验证超过了150个在Caffe、MxNet和Tensor Flow上所设计的模型。
推理引擎也是深度学习部署套件的一个重要组成部分,由一套C++函数库组成。它可经过简单、统一的API接口来支持英特尔的所有架构,实现深度学习推理所需要的操作,例如对数据的读取,对输入输出数据格式的定义、以及调用相应的硬件插件等。
目前,用户可以把中间文件下载到英特尔Arria10 FPGA板卡之上,调用DLA库,实现在FPGA上的网络推理操作;或者通过MKLDN插件,把中间文件下载到英特尔凌动、酷睿和至强处理器上,在这些通用CPU之上实现深度学习的运行;再或者,通过CLDNN和OpenCL的接口将神经网络运行在英特尔的集成显卡之上,以及利用Movidius插件把神经网络运行在基于Myriad2/Myriad X深度学习计算棒上。今后,如果有一个新的硬件架构需要支持,就可以设计一个相应的插件来实现功能的扩展,而不需要改变插件之上的软件,从而能够保护开发者的开发成本。
OpenVINO工具套件的另一个优势在于它的访问实际上是分层的,不同的开发者可以根据自己的使用要求和开发能力去选择不同的API接口进行调用。对于新手来说,OpenVINO里包含了很多应用的示例,比如物体检测、人脸识别等;对于能力更强的用户,OpenVINO可提供网络的实现,也被称作Model Zoo,他们可以在此基础之上实现相应的应用开发。如果要设计一些新的网络模型,或是直接调用硬件底层接口实现对硬件的直接访问,则可以利用模型优化器和推理引擎将网络模型转换成硬件可识别的语言后,再下载到硬件平台上进行执行。
关注最前沿的电子设计资讯,请关注“电子工程专辑微信公众号”