ros不能在包中检测到可执行文件_可能是最好的能运行在CPU上的深度学习框架:OpenVINO之ROS/ROS2版...

ba045c1de68bd5e277ee848ad348863b.png

2018年下半年,Intel公布了一套基于视觉推断与神经网络优化(Visual Inference and neural network optimization)的AI工具集OpenVINO。截止到发稿,OpenVINO的最新版本是2019R2。

这套工具集很大地扩展了Intel的各类算力硬件以及相关加速器,将传统的基于CPU以及OpenCV算法的图像图形处理,扩展到更多的Intel的各类算力硬件与相关加速器上,实现了AI领域的异构计算,使视觉推断能力得到了很大程度的提高。

OpenVINO一经推出,就获得了很多使用者的青睐,它至少包含如下的一些功能:

  • 将基于CNN模型的深度学习推断能力扩展到工作站、边缘计算甚至云服务

efc128bcf2b49c854582dc4ed80687df.png
  • 过计算机视觉(Computer Vision)加速器的实现,支持异构计算。OpenVINO实现了一套通用的API,可以混合调用CPU、GPU、Movidius NCS (Neural Compute Stick)和FGPA的算力来共同完成一次视觉推断。

48980d070331692b406f28384a1033ec.png
  • OpenVINO预先实现了一系列的功能库、OpenCL kernel等等,可以缩短产品面世时间

a51127a6ed3369f34b6782f7c8c0d48d.png
  • 优化了OpenCV、OpenVX等的一些功能调用。

现在,Intel又将对OpenVINO的应用扩展到了ROS/ROS2系统上。ROS/ROS2作为智能机器人(包括无人机)开发的基础系统的事实标准,OpenVINO对ROS/ROS2系统的支持必将填补智能机器人领域在神经网络应用框架方面的空白。

需要注意的是,Intel OpenVINO Toolkit跟ROS2 OpenVINO Runtime Framework是两个不同的概念。Intel OpenVINO Toolkit是一个SDK,也就是软件开发包,它提供的是一整套针对于Intel硬件和Deep Learning的库和API,任何人都可以基于这些库和API做针对某些特定功能的应用扩展。而ROS2 OpenVINO Runtime Framework是在OpenVINO SDK的基础上开发的适用于机器人应用场景的一个应用扩展,它足够灵活,在不需要改动任何代码的情况下,就可以满足在机器人领域对于Deep Learning的主要需求,例如物体识别、人物分析、物体分割等等。

下面以OpenVINO Runtime Framework的ROS2版本作为例子,对OpenVINO的这个NN框架做一些探究。


ROS2 OpenVINO的框架设计

从架构设计的角度来看,ROS2 OpenVINO神经网络框架不仅将Intel OpenVINO工具集的主要功能做了一次针对ROS系统的移植,也实现了一个初步的运行时神经网络应用框架。

下图展示了该应用框架的基本模块架构。

353357e1996e1e17feca9e6108b45fac.png

从图中可以看出,该应用框架可以粗略地分为这么几个部件:

  • Intel OpenVINO工具集:如上文所提,Intel开源的这个免费软件包提供了该应用框架的基本的视觉推断能力。该工具集提供了一系列的软件库、示例代码,对于视觉推断业界的开发者跟数据学家来说,是一个很好的加速器。同时,针对不同领域的不同需求,Intel还训练并公布了许多面向人脸物体、物体分析、交通等用途的网络模型。
  • ROS2 OpenVINO 运行时框架:Intel OpenVINO工具集提供的是一系列的库与示例代码,还不能直接被终端用户(特别是对深度学习、视觉推断了解比较少的用户)所使用。该运行时框架正是对该功能的补充。它提供了更为灵活的接口,适用于更多更多变的应用场景,而且不需要修改代码,通过配置文件就可以获得你期望的视觉推断结果。
  • Input Resource 数据输入来源: 该应用框架集成了各种各样的图像输入来源,例如普通的USB摄像头、ROS的标准接口Topic、各种图片和视频等等,同为Intel旗下的RealSense深度摄像头,自然也在支持之列。
  • ROS Interface and outputsROS接口:目前支持ROS的标准接口Topic,另外一种标准接口service,也即将支持。通过应用这些标准的ROS接口,RViz工具(ROS系统中常用的显示工具)以及openCV的图像显示工具Image Window也被默认支持了。
  • 优化的网络模型:Intel OpenVINO工具集提供了优化现有的网络模型的功能。对于经过训练的已有系统(如Caffe、Tensorflow, MxNet, ONNX,Kaldi等等)的网络模型,必须经过转换与优化之后才能被OpenVINO应用所使用。

ROS2 OpenVINO的逻辑实现

从代码的逻辑实现上来看,ROS2 OpenVINO应用框架很好地考虑了终端用户的使用便利性。对于跟神经网络、深度学习、视觉推断等方面的内容做了不错的功能封装,而且用pipeline概念来代替。它把晦涩的深度学习的实现隐藏起来,归纳为浅显易懂的数据流管理。

下图粗线条地演示了在ROS2的相关应用被调用的过程。

70e593b4fb47bdbb79703e015343463e.png

相关的应用程序被调用时,需要传递一个代表配置文件路径的参数。在ROS2 OpenVINO运行时框架内部的Parameter Manager(配置管理器)会分析这个文件,形成结构化的参数信息。依赖这些参数信息,一个包含输入、推断器组合、输出3个部分的Pipeline被创建。Pipeline创建完成之后,Pipeline Manager会接管该pipeline,管理所有pipeline的生命周期。


ROS2 OpenVINO的主要功能

  • 支持多种数据来源,例如普通USB摄像头、Intel Realsense深度摄像头、ROS/ROS2 Image topic、图片或视频文件等等。
  • 支持多种常见的视觉推断功能,例如人脸识别(表情、年龄、性别、头部朝向等等)、物体识别、基于交通场景的车辆、行人和道路识别以及物体分割等等功能。
  • 推断结果的多种结构化输出,包括ROS2 Topic,OpenCV的image window,RViz机器人视觉呈现工具等等。

下面的这些图片演示了其中几个功能的运行截图。

1. 人物分析(Person Analytics)(包括人脸检测、性别、年龄、表情、头部动作识别):

4fb1f41a23b6567bee85f380949e2383.png

2. 物体识别(Object Detection)

fe995345f14f1b2fc84060c5ddad3d12.png

3. 基于交通要素的物体识别与分割(Object Segmentation):

a6e55b7399cbbce66c69a36c141d9c92.png

ROS2 OpenVINO计划中的新功能

作为该软件的第二阶段开发,有一些新的功能将会陆续发布,其中包括:

  • 输出结果的过滤功能。由于该框架支持视觉推断功能的串联或者并联组网功能,这样势必对于不同推断模块的输出结果需要做一定规则的过滤,才能获得更高效、更广泛的应用场景。譬如对一张车辆的图片我们可以这么来做,首先用物体识别(Object Detection)模型识别出不同的物体(例如汽车、车牌等等);然后将汽车的图片传递给汽车属性识别的模型做车辆的属性鉴别(颜色、类别等等),将车牌的图片传递给车牌识别模型,识别车牌号码;最后将不同的信息,按要求输出为不同的结构化结果。
  • 设计并实现资源管理器。对于普通用户来说,网络模型、算力引擎、pipeline等概念的理解、管理与使用需要相当的知识背景,有一定的难度。因此,设计一个易于使用的资源管理器,简化调用与配置过程,能够降低整个OpenVINO运行框架的使用门槛。同时,对于这些稀缺资源的统一管理,也能提高对他们的有效利用,在一定程度上会提高系统的运行性能。
  • 设计并开发一套基于图形用户界面的配置、管理、监控工具包。目的也是简化整个OpenVINO运行框架的运行步骤,降低使用门槛。

4369e31997c8bf2910d58ec07238514b.png

期望中的OpenVINO运行框架的最终版本,是一个具有极其简易的操作前端跟一个具备深度学习的各种常见推断能力的后端的一个集合体。对于使用者来说,可以通过“一步安装”-->"一步运行“-->”轻松配置“-->”可配置可过滤的结构化输出“等简单的几个步骤,实现机器人领域基本的AI需求。而对于开发者来说,可以通过预定义的一些接口,可以扩展DeepLearning的某些实现,例如增加新的模型支持、新的数据来源或新的输出类型等等。

目前该项目(包括ROS2和ROS两个版本)已经开源。有需要的同仁可以参阅ROS2 GitHub Repo or ROS Github Repo。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值