小白视角看ros_openvino_toolkit

计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决
Any problem in computer science can be solved by anther layer of indirection.


1. 背景

在AI落地应用的重要关口,机器人在成本控制、批量生产、AI功能应用等方面面临着诸多挑战。如何在降低机器人成本的同时,满足其工业生产和生活中的性能需求?如何平衡机器人现有成本和性能,是每个机器人AI从业者都需要仔细思考的问题。

Intel针对AI实际应用场景,推出了Intel® OpenVINO Toolkit开源工具包。Intel® OpenVINO Toolkit是基于卷积神经网络(CNN)提供的一整套深度学习推断和神经网络优化的工具链和方法集,并提供了接口统一的跨Intel硬件及其加速器的异构计算框架,将DL算力水平发挥到最大,获得了业界认可。
在这里插入图片描述
ROS(机器人操作系统)是最流行的开源机器人软件框架,为机器人(特别是移动机器人)提供了一整套接口统一、分布式、功能齐全的全栈软硬件解决方案,拥有健全的生态系统和高度活跃的贡献者社区。

因此,搭载intel硬件的机器人使用ROS+OpenVINO是一个很好的选择。

然而,在实际开发过程中,开发人员需要面对以下问题:

  1. 在ROS机器人上部署OpenVINO并实现对应的AI功能,首先需要有接口上的支持:代码如何调用OpenVINO的底层接口?如何将AI视觉相关功能封装成ROS所能实现的接口?

  2. 智能机器人需要处理的数据是多种多样的。以AI视觉为例,机器人可能要处理视频、图片、多种图像传感器(RGB摄像头、深度相机)数据。由于机器人数据采集的多样性,如何将所有的相关数据统一整合成机器人需要的结构化输入数据,并将整合后的数据导入给 OpenVINO Toolkit 来进行底层处理?

  3. 针对不同的业务场景,进行AI推理的硬件也有可能不同。能否只在软件层面上进行极少量的修改,即可快速切换机器人AI推理的硬件,使开发和验证更具有效率?

  4. OpenVINO可以选定使用同步/异步推理。针对于不同的机器人业务场景,能否选用不同的策略模式,拓展 OpenVINO 使用过程中标准化、流水(批量)化处理的实现?

  5. 对于用户而言,总是希望能够自主开发和扩展,针对自身产品进行功能定制。那么如何给用户提供标准的软件实现接口和归纳,让机器人开发人员能对产品功能快速迭代和更新?

  6. 之前工程中编写好的代码和新版本OpenVINO的接口API不兼容,进行代码更新和维护需要花费很多精力和时间。如何针对新版本的OpenVINO进行快速二次开发?

正如《程序员的自我修养——链接、装载和库》一书中所提到,计算机系统软件体系结构采用一种层的结构,计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决(Any problem in computer science can be solved by anther layer of indirection.) 对于大批量的开发而言,OpenVINO的接口依赖会非常多,工程需要不断的理解、修改、扩展和维护,需要花费大量的时间和精力。因此机器人开发人员期望将ROS和OpenVINO以及普通的深度学习框架进行隔离,在软件层次上进行提炼,使其更专注于机器人感知和控制决策开发。

因此,ros_openvino_toolkit应运而生,为上述问题提供解决方案。
在这里插入图片描述

2. ros_openvino_toolkit应用流程:

在这里插入图片描述

ros_openvino_toolkit会遵循OpenVINO的基本操作模式:通过第三方的方法,训练出一个模型(train a model),然后基于 OpenVINO 的模型优化器,可将模型转化成 OpenVINO 可识别的IR格式。随后基于OpenVINO推理引擎(Inference Engine)来做出目标识别,这个流程是标准的OpenVINO流程。

从流程图中橙色部分可以看出, ros_openvino_toolkit作为OpenVINO到其他ROS应用的一个中间环节,需要起到了很好的抽象和隔离作用。

3. ros_openvino_toolkit功能简介与优势分析

  1. ros_openvino_toolkit实现了OpenVINO Toolkit与ROS之间的功能封装并实现接口。
    ros_openvino_toolkit对 OpenVINO 进行技术上的隔离、封装,完成对ROS环境的接口支持,提供对应接口。

  2. 支持多种数据输入方式,例如普通USB摄像头、Intel Realsense深度摄像头、ROS Image topic、图片或视频文件等等。

  3. 支持多种常见的视觉推断功能,例如人脸识别(表情、年龄、性别、头部朝向等等)、物体识别、基于交通场景的车辆、行人和道路识别以及物体分割等等功能。

  4. 推断结果的多种结构化输出,包括ROS Topic,OpenCV的image window,Rviz 机器人视觉呈现工具等等。

  5. 硬件加速与软件优化ros_openvino_toolkit继承自 OpenVINO ,实现了硬件加速功能和软件编程思路上的优化。
    在这里插入图片描述

  6. 灵活的推理流水线管理及用户扩展:可以在工程中选择流水线的同/异步运行机制,针对于不同的机器人业务场景,可以选择不同的应对策略。

  7. 模块化设计,即插即用 :ROS 本身即是一个基于模块化的设计。ros_openvino_toolkit把 OpenVINO 做成一个模块化的设计,提高功能模块的内聚度并降低耦合度,使开发更加简单和高效,更有利于其推广使用,也体现出其扩展方面的灵活性。

  8. 基于配置文件的流水线化模块管理,用户只需要修改yaml配置文件,即可对整个pipeline的运行机制进行重新定义,这样可以轻松响应多变的场景、部署需求。
    在这里插入图片描述

4. ROS + OpenVINO 的应用场景

在这里插入图片描述

对于常见深度学习应用场景而言来说,最标准和常见的输入数据来自于摄像头(RGB,3D点云等),从摄像头输入的数据经过ros_openvino_toolkit的pipeline机制,传递给深度学习推理硬件(比如CPU、GPU、FPGA、NCS2等)。得到的推理结果再经过 ros_openvino_toolkit的封装成ROS topic、ROS Service、Rviz、Image Window等输出,推理结果可以被广泛运用于机器人、机械臂、无人机、自动驾驶等应用场景…

参考资料

  1. 6月20日直播回放 | OpenVINO + ROS 加速机器人应用 - 英特尔物联网技术大咖在线分享: https://www.bilibili.com/video/BV1iv411B7Lg
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
手把手讲授如何搭建成功OpenVINO框架,并且使用预训练模型快速开发超分辨率、道路分割、汽车识别、人脸识别、人体姿态和行人车辆分析。得益于OpenVINO框架的强大能力,这些例子都能够基于CPU达到实时帧率。课程的亮点在于在调通Demo的基础上更进一步:一是在讲Demo的时候,对相关领域问题进行分析(比如介绍什么是超分辨率,有什么作用)、预训练模型的来龙去脉(来自那篇论文,用什么训练的)、如何去查看不同模型的输入输出参数、如何编写对应的接口参数进行详细讲解;二是基本上对所有的代码进行重构,也就是能够让例子独立出来,并且给出了带有较详细注释的代码;三是注重实际运用,将Demo进一步和实时视频处理框架融合,形成能够独立运行的程序,方便模型落地部署;四是重难点突出、注重总结归纳,对OpenVINO基本框架,特别是能够提高视频处理速度的异步机制和能够直接部署解决实际问题的骨骼模型着重讲解,帮助学习理解;五是整个课程准备精细,每一课都避免千篇一律,前一课有对后一课的预告,后一课有对前一课的难点回顾,避免学习过程中出现突兀;六是在适当的时候拓展衍生,不仅讲OpenVINO解决图像处理问题,而且还补充图像处理的软硬选择、如何在手机上开发图像处理程序等内容,帮助拓展视野,增强对行业现状的了解。基本提纲:1、课程综述、环境配置2、OpenVINO范例-超分辨率(super_resolution_demo)3、OpenVINO范例-道路分割(segmentation_demo)4、OpenVINO范例-汽车识别(security_barrier_camera_demo)5、OpenVINO范例-人脸识别(interactive_face_detection_demo)6、OpenVINO范例-人体姿态分析(human_pose_estimation_demo)7、OpenVINO范例-行人车辆分析(pedestrian_tracker_demo)8、NCS和GOMFCTEMPLATE9、课程小结,资源分享

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值