英特尔Movidius神经元计算棒(NCS)基于ROS的实现与封装

如今,人工智能的热潮正在席卷各行各业,而计算力和数据、算法一同支撑着人工智能的蓬勃发展。作为人工智能的一个重要分支, 深度学习以其良好的表现,越来越受到业界的广泛关注。深度学习模型包含海量的参数,需要强大的计算力进行大规模的神经网络矩阵运算;而终端和物联网设备往往更多考虑小体积和功耗的要求,以至于很难兼顾满足高性能神经网络计算力和低功耗的要求。英特尔在去年发布的针对神经网络矩阵运算优化的Movidius神经元计算棒 (NCS) 就很好的适应了这一应用领域的需求。本文将向您介绍基于 Movidius NCS 的ROS开发包的功能及其使用方法,您可以轻松地将深度学习技术引入项目,和其他ROS节点无缝连接,为您的机器人装上人工智能的利器。

与Movidius神经元计算棒一同发布的还有NCSDK和NCAppZoo,为用户在Movidius 神经元计算棒之上开发各自的应用提供了良好的软件支持。

NCSDK目前提供了C和Python两种语言的编程的接口,通常应用开发者通过调用这些接口就能操作NCS做深度学习方面的图像预测工作。然而,在机器人研究领域,人们广泛采用ROS框架,这一框架下的各个应用通常采用消息(message)和话题(topic)的方式进行通信。在这种特殊情况下,机器人应用开发者不得不对NCSDK做进一步的封装才能使其无缝工作在ROS系统中。针对NCSDK到ROS系统的衔接问题,我们提出并实现了一种基于ROS系统的对NCSDK的封装。该项目目前已经在github上面开源(github 地址)。

项目介绍

1、软件架构设计

本项目主体由一个ROS发布节点和一个ROS服务节点组成,以适应不同的应用场景。ROS发布节点用于处理来自相机的视频流数据,预测结果以消息(message)的形式发布到相应的话题(topic)中,供上层应用调用。ROS服务节点用于处理单张图片数据,预测结果直接返回给上层消费服务的节点做进一步处理。为了更好的演示这两个节点的使用方法,我们还开发了多个客户端节点,最终处理结果会以图像的形式展现出来。

目前项目可以支持物体分类和物体识别两种应用。物体分类可以采用不同的CNN模型,例如,GoogleNet, AlexNet和SqueezeNet等。物体识别可以支持TinyYolo, mobilenet-SSD等。

图1 ROS NCS架构

2、运行条件

  • 运行Ubuntu16.04的x86_64计算机
  • ROS Kinetic
  • Movidius神经元计算棒(NCS)
  • NCSDK和NCAppZoo
  • RGB相机

具体环境配置可以参考这里。

3、编译与安装

下载源码到本地ROS工作区,切换到最新发布,编译、安装。

复制CNN标签文件到指定目录。

4、运行演示程序

目前本项目可以支持一般的USB camera和Intel RealSense camera。也允许用户根据需要配置不同的相机。以下以一般USB Camera和RealSense D400系列为例进行说明。其他使用方式请参考文档。

  • 物体分类

视频流处理

在一个终端启动视频流处理节点:

在另一个终端启动demo节点显示分类结果:

静态图像处理

在一个终端启动图像处理节点:

在另一个终端启动demo节点显示分类结果,例如:

ROS客户端软件的输出效果如下图所示。

  • 物体识别 (不仅给出物品分类,还给出物体所在图像中的二维坐标)

视频流处理

在一个终端启动视频流处理节点:

在另一个终端启动demo节点显示物体识别结果:

静态图像处理

在一个终端启动图像处理节点:

在另一个终端启动demo节点显示物体识别结果,例如:

ROS客户端软件的输出效果如下图所示。

应用领域

本项目提供的物体分类和物体检测的能力,可以运用于多种机器人使用场景,例如:

1、3D物体识别与追踪

基于已经识别出的2D物体信息,结合深度传感器采集到的深度信息,可以定位到物体在三维空间当中的位置,从而对物体进行3D识别与跟踪。

2、机器人智能避障

传统的机器人避障对于障碍物不加以区分,采取相同的策略。而基于物体识别的避障,能够根据识别出的物体信息,通过指定不同的策略来应对不断变化的场景,使机器人避障更加智能。

3、基于语义的同步定位与建图(SLAM)

通过将识别出的物体标注在SLAM得到的地图上,可以极好地提高地图的可读性。

展望

本项目目前开发到v0.5.0版本,基于Movidius NCSDK 的不断演进,本产品在不断迭代开发当中。一方面,由于ROS2相对ROS具有更好的安全性和实时性,我们计划移植项目到ROS2中。另一方面,深度学习正经历着快速发展,所以我们希望能支持更多的CNN模型以适应不同的机器人使用场景的需要。

原文发布于微信公众号 - 机器人网(robot_globalsources)

原文发表时间:2018-04-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器人网

英特尔Movidius神经元计算棒(NCS)基于ROS的实现与封装

如今,人工智能的热潮正在席卷各行各业,而计算力和数据、算法一同支撑着人工智能的蓬勃发展。作为人工智能的一个重要分支,深度学习以其良好的表现,越来越受到业界的广泛...

1704
来自专栏目标检测和深度学习

资源 | Texture:一个优雅的开源学术论文书写工具

机器之心整理 作者:思源 近日,Substance 在 GitHub 上开源了一个用于结构文本的文字处理工具 Texture,他们表示该工具像 LaTeX 一样...

37210
来自专栏挖掘大数据

如何利用已有的大数据技术,搭建机器学习平台

人脑具备不断积累经验的能力,依赖经验我们便具备了分析处理的能力,比如我们要去菜场挑一个西瓜,别人或者自己的经验告诉我们色泽青绿、根蒂蜷缩、纹路清晰、敲声浑响的西...

5750
来自专栏应兆康的专栏

9. 优化指标和满足指标

1381
来自专栏计算机视觉life

Facebook Surround360 学习笔记--(4)色彩/视差不一致问题

surround360的开源资料地址: 下载好代码和测试数据集,配置好环境,关于环境配置可以参考这篇博客,写的挺详细: 运行代码的说明可以参考这篇博客...

2095
来自专栏腾讯技术工程官方号的专栏

如何节省 1TB 图片带宽?解密极致图像压缩

在不断出现的新格式被逐步应用之后,兼容性最好的传统老格式 JPEG 依然地位高居不下占据大幅带宽,如何在老格式上也继续挖掘优化点?

75010
来自专栏机器之心

业界 | Apache MXNet 发布 v0.11.0版,支持苹果Core ML和Keras v1.2

选自AWS 机器之心编译 参与:黄小天、路雪 近日,孵化于 Apache 软件基金会 Apache MXNet 发布了 v0.11.0 最终测试版本,它不仅具有...

32213
来自专栏AI科技评论

深度| OpenAI 教你如何构建深度学习研究的基础设施

编者按:OpenAI研究工程师Vicki Cheung, Jonas Schneider , Ilya Sutskever, and Greg Brockman...

3746
来自专栏腾讯大讲堂的专栏

如何节省1T图片带宽?解密极致图像压缩

图像已经发展成人类沟通的视觉语言。无论传统互联网还是移动互联网,图像一直占据着很大部分的流量。如何在保证视觉体验的情况下减少数据流量消耗,一直是图像处理领域研究...

4898
来自专栏达观数据

【经验分享】点击模型:达观数据提升算法精度的利器

? 在搜索、推荐、广告引擎中,系统会通过复杂算法生成一个最终的结果列表。用户在看到这个结果列表时,未必都会对排序满意,比如有时觉得排序的顺序有问题,或者发现一...

49910

扫码关注云+社区