揭秘机器人是如何“看懂”这纷扰世界的 | 机器人大家说第18期干货整理

来源:机器人创新生态 | 发布时间:2017-09-11 16:35:50

人工智能的技术应用非常广阔,机器人是人工智能应用的一个特别重要和重大的产业领域。而作为人工智能趋势下的核心组件,视觉传感器是整个机器视觉系统信息的直接来源,其重要性一如人的眼睛之于人类一样。

如何提升机器的视觉感知水平?机器视觉如何应用于对实时运算要求极高的领域?我国目前智能感知行业面临哪些问题,未来这一行业将走向何方?

关于嵌入式机器人视觉技术,我们邀请到了触景无限硬件产品副总裁——常清璞,为我们深度揭秘“机器人嵌入式视觉系统”。

嘉宾简介

常清璞

触景无限硬件产品副总裁

以下为本期嘉宾演讲实录↓↓↓

一、嵌入式视觉与机器人

首先让我们以家庭服务机器人为例子,来对嵌入式视觉在机器人上的应用做一个说明。

我们想家庭服务机器人为咱们做些什么工作呢?比如像物体的传送,端茶倒水、送报纸、杂志,还有照顾老人和看护儿童、安全巡视等。

家庭服务机器人要具备上述功能,就需要拥有视觉能力。

第一,机器人需要有适应环境的能力。一般自然的地面是不平稳的,机器人在这样的地面移动,拍摄的视频也不会是很稳定的,这就需要视觉识别系统有防抖动的功能。此外在家庭室内的环境,有时候可能很亮,有时候可能很黑,有可能半亮半黑,那么这样我们的视觉系统就要有宽动态这样的功能。

第二,机器人通过嵌入视觉能够感知环境,感知到室内房间的结构、家具的位置,区分哪些是静态物体,哪些是动态的人和宠物等。

第三,机器人还需要有识别功能,如对人脸的识别,可以识别出哪个是家庭成员、哪个不是家庭成员、哪个是老人、哪个是小孩;然后,同时他还要能对宠物有识别功能,比如识别哪些是狗猫等等;机器人还需要有识别物体的功能,比如识别出茶杯、杂志等等这样的功能。

第四,他还有能分析人类情绪、行为的能力,比如机器人要陪护小孩,就要对小孩的情绪有分析能力,小孩是高兴,还是生气等等;对老人也应该有这种情绪的分析能力。能分析人类情绪,这样机器人才能给出更好的服务。同时他还要有对行为的分析能力,能分辨哪些是危险的行为,并及时报警等等。此外,因为机器人一般也不会只固定在一个地方,他要自主移动来服务,就需要自在房间里来回行走,因此他还要有能感知障碍、进行避障、路径规划的功能。

第五,对机器视觉的要求是要延时短、反应快,而且因为家庭内部拍摄的一些视频、图像、都是具有私密性,都不希望被扩散出去。因此我嵌入式视觉的解决方案,正好适合机器人这样的应用,即机器人数据在本地。因为有了上述这些适应环境,感知环境,识别物体和分析情绪和行为的能力,机器人就不会太依靠在云端进行的大量的数据双向传输,这样就只传出一些理解后的信息。同时他的传输带宽也就相应会非常低。

既然嵌入式视觉适合家庭服务机器人的应用,那么嵌入式视觉究竟怎么回事呢?其实嵌入式视觉工作的流程,就是通过图像、传感器,摄取图像的数据,数据可能是YUV、RGB或者是RAW各种类型,先对这些数据进行了图像预处理,然后进行图像分割、图像分析和判断推理,这是概括来说的几个步骤。要实现这几个步骤他需要完成,以下这三个任务。

第一个任务就是看得清,如何使图像传感器摄取的图像清晰呢在?这就需要机器人有图像预处理的功能,比如几何变形的矫正。以及降噪,自动曝光控制,自动白平衡色彩控制、锐度增强、抖动补偿、宽动态等功能。有了这些功能,我们就能把我们所感兴趣的东西拍摄得更为准确清楚,以便提高对后续的图像分割,图像分析,和判断推理的准确率。从经验来看,预处理做得好与坏,基本上会影响图像识别的准确率在15到20个点左右,所以在这方面的处理是非常关键的。

第二个任务就是要看得准,比如他还可以计算深度的准度,对深度图的应用他计算的准确率要高,对人脸识别的识别率要高,对物体识别要识别得准。当然还会应用深度学习这种方式来提高识别和深度计算的水平。

基于前两个(任务),第三个任务就是要看得懂,比如Vslam这样的技术,通过这样的技术,可以对环境有个理解;又比如说通过追踪技术,使得对我们的目标物,人或者车的运动轨迹有所理解;再比如情绪的判别、路径的规划等。当然以上需要用深度学习算法工具来实现完成。用深度学习的算法来完成,也是当下的一个趋势。

二、嵌入式视觉内涵和发展

下面我对这个嵌入式视觉在机器人应用中一些比较常用的算法做一些简单的介绍。

第一个就是双目深度计算算法,这种算法就是用两个摄像头来模拟人的双眼,来计算周边图像中的物体到图像传感器的距离,而这样的应用可以用于比如机器人的避障,还有行为分析等等。

这个视频就是触景无限做的一个双目深度摄像头,使用双目深度的算法所呈现的效果。那么在左下角的这个图像中就是我们对不同深度以不同的颜色来表示,越暖的深度,越暖的颜色表示离这个摄像头越近,越冷的颜色表示离摄像头越远。

第二个就是Vslam的算法,通过Vslam,机器人就能感知到周边3D的景象,达到对环境感知的目的,也能帮助对机器人行走的路径进行规划。

第三个就是对物体识别以及追踪的算法,可以对物体行为进行分析,比如周边的人,车是否越线或者超速,或者是有什么比较危险的行为,等这样的情景进行分析。

第四个就是把深度学习的算法,应用在嵌入式平台。深度学习,可以用在人脸识别,物体识别,情绪分析等等。

深度学习的算法现在非常热门,大家也都在想通过各种方式来把它嵌入前端,放到嵌入式的平台中,在前端来使用。深度学习本身,原本主要应用在分类这样的算法和应用上,比如人脸识别,物体识别,情绪分析、或者是手写体的识别等等。

现在深度学习也扩展到各种视觉处理当中,比如检测,人脸的检测,物体的检测;比如分割,场景的分割,把一个场景分成十几种这个区域,每个区域代表不同类型的环境因素;比如视频的持续分析,在视频中他的同一个人他的行走的路径;比如光流分析;比如可以用于行为的识别,还可以用于视频的压缩; 3D建模压缩传输这样的功能;比如还有双目深度的时候的匹配,可以用它来深度学习,来完成这种匹配的功能,或者是靠Slam计算这样的功能。总之,深度学习现在它的触角已伸到计算机视觉的各个领域。

上面提到嵌入式视觉以及在机器人领域里面的一些应用,这些内容落在实处,就是我们触景无限开发的视觉卡系列。

触景无限开发了两个系列,第一个是基于英伟达的TK1来开发的视觉图像处理的平台,第二个是基于英特尔Movidius MA2450这个图像处理芯片来开发的这个图像处理平台,这里我们标的比如V10几,都是英伟达的TK1图像处理器来开发的平台,V20几,都是基于英特尔Movidius MA2450来开发的图像处理平台。

那么我们各个平台框的大小,基本上按照我们平台实际大小的比例来做的,面积大的它的本身平台就大。我们这个平台上面都有,比如V101,V201就是全功能版,它装载的功能比较全,V102是用于比如安防监控的,这些功能都是按安防监控的需求来设计的,V203是双目立体视觉,做深度计算。V204是可穿戴版的, 下边就是我们在这上开发的一些算法的应用,比如Vslam,情绪的识别,双目,分类,人脸的识别等等。

从客户的实际应用中,我们这个版子设计的很成功,不管是英伟达的TK1,还是英特尔的Movidius,它都能够使这些处理器能够全速的稳定的在我们这版上运行,使它的运算能力得到充分的发挥。

同时在这个版子上还有各种各样的传感器,比如IMU,TOF,超声,GPS,这样的传感器都融合到里边了,同时还有各种各样的接口,比如USB的接口,HDMI,Wifi,网口等等。

三、嵌入式视觉硬件平台

这两个系列的视觉卡,成功主要是因为遵循了优良的设计理念。第一个就是面向制造的设计,比如在元器件选型上采用了比较成熟的元器件,使用了比较好的供应链,此外同样的功能元器件,比较重要的元器件都有备选备份。

第二个就是在电路上设计,基于便于制造和装配的理念来设计电路和电路板;在可靠性方面,在设计视觉卡这个平台的功能的时候,同时就准备了它的测试手段,所以在每个功能块设计实现的同时,就能测试它的性能,同时还对热设计也都比较在意,使它有比较好的散热功能。因为我们采用的一些处理器,工作负载比较大,会有一定的热量。同时版子的设计是便于迭代的,我们事先对目标市场需求做了比较好的了解,比如安防的市场,这样在设计版子上,比较容易对功能进行裁剪,从而实现迭代。

第三点就是选择成熟的芯片,比如英伟达的芯片,还有英特尔Movidius的芯片都是非常好很成熟的,用于图像处理的芯片。成熟的芯片,能保证产品的成熟度,那么能够快速的使我们产品上市。

这个就是我们使用英特尔Movidius的芯片开发的双目深度的模块,那么它按基线是十九毫米,这个版子可以看到,这个小版跟这个名片相比非常小,它的尺寸是5.5乘1.2厘米,它的面积也就跟一个硬币,一块钱的硬币大小一样,是非常紧凑的。

四、嵌入式视觉算法和应用

有了前边所述的硬件平台以及硬件平台相关的这些驱动,我们还有针对嵌入式视觉的算法的实现,那么其中它整个算法软件部分分了几层,第一层是驱动层,视觉卡都接了很多传感器,还有通讯的端口,我们相应的都有比较好的驱动,来完成对这些外围设备的控制。

在中间键上我们还构造了算法库,比如有人脸识别的算法库,VIO算法库,双目的算法,Slam的算法库,避障的算法库,追踪的算法库等等。

在驱动层上面就是中间键层,比如像神经元网络,计算机视觉的一些算法库,这个叫云库,传感器,MQTT这样的消息传递的这个环境,这些中间键我们都提供一些标准的API接口。

这样的软硬件的平台,我们希望它能应用在比如像机器人、安防、无人机、辅助驾驶、AR、教育等等这样的领域,我们也会根据不同的应用领域来裁剪这个平台。

在构造我们上面说的那些中间键也好,算法库也好,我有这样一个心得,在这个视觉算法嵌入式移植方面,第一个因为图像非常适合并行的算法,我们用的这个英伟达的TK1,英特尔的Movidius这样的芯片,也都是一个异构的多核的处理芯片,也非常适合异构的并行运算。那么怎样实现一个比较好的异构并行运算呢?首先就要考虑把精力放在这个存储器的分配上。要从存储器的分配,多线程的生成与管理,同步时序这几方面下功夫,大家可以参照比如酷达这样的一些并行处理运算的接口库。

在机器指令级别,还要充分的利用核心处理器的机器指令级别的并行性,比如在我们应用的英特尔Movidius这个芯片里面,它有12个shave核,就等于12个处理器。那么在12个shave调动上,就用到我刚才所说的异构并行运算的这样的考虑,那么每一个shave核,它同时最多能够并行的执行八个指令。那么怎么能充分实现它这个指令级别的并行性呢?也是要仔细考量的,首先应该对这样的产品非常熟悉,其次要对我们整个处理算法的一些比如分支、循环、输入输出,这样的指令进行精心的安排,来让它充分的实现多个指令级的并行运算处理。

五、嵌入式视觉生态

嵌入式视觉的平台,包括硬件和软件,对这样的开发和设计都还是具有一定的挑战性的。现在我们公司都有了比较成功的一些经验,我们希望通过一些共享的方式来服务于大家。比如我们视觉卡V203,我们希望它主要能成为一个共享的平台。

那么首先它的系统有使用英特尔的Movidius的芯片,外部设备有USB3.0,还可以支持两个摄像头,有一千兆的网口,有HDMI,可以支持TOF的摄像头,还有USB插口,它还有比如IMU这样的外部(设备)等等。

硬件平台的顶视图和俯视图

它有很多功能,用这个平台可以实现很多种的算法。我们客户和开发者可以使用这个平台完成多种算法的实现,最后可以通过对这种平台的剪裁,完成面向最终应用的版子。这是一个性能好,成本有竞争力,功耗低的这样一个深度学习的使用平台。 在算法分层上面,比如在中间键层,还有算法库层我们都有第三方的软件,我们都希望有第三方的软件来不断的加入它,来充实整个环境,生态环境,来不断满足这个市场对嵌入式视觉的应用。

我们接下来计划是:在刚才说的V203的版子上,我们将在我们共享的硬件平台上把驱动软件都配齐了,比如传感器,图像的driver,还有比如USB的driver,比如IMU的driver,比如TOF的driver等。把这个都配好了,再提供一个工具,比如客户可以基于这个深度学习的训练,再通过比如训练深度学习的模型,然后通过我的工具把它加载到硬件平台上。这样的话客户最后最终就能得到一个性能非常好,成本也低的效果。

—— END ——

以下是本次分享精彩问答:

问题一:机器视觉在最近比较火的“无人售货店”的应用场景上如何实现更好?还有哪些新想法?

常清璞:机器视觉在无人售货店里,可以用于比如人流的监测,或者是数据的提取;比如通过人脸识别,对客户、顾客的身份的识别;可以通过分析顾客的行为知道顾客的消费习惯;统计顾客客流量,识别顾客的行走路径,和在哪些货架上停留的时间比较长,这样的话也能够知道哪种商品更吸引人;当然也有大数据的采集作用。

问题二:能说下系统架构吗?

常清璞:不知是不是您所要的这样的系统架构。这个就是刚才所说的分享平台的这么一个系统架构,它的中心处理器就是英特尔Movidius的mv2450,旁边比如有右下角是声音的语音的麦克风SBK这样的东西,那么右上边都是比如A加G的A加M,IMU这样的,还有超声波的接口,SD卡的接口,Flash,还有左边这边都是一些通讯的接口,然后左下角是两个摄像头,还有TOF模块。这些缓存和DDR,还都是比较宽的,有很宽的带宽的数据线连接,这样保证它图像处理的数据吞吐量能比较大。

问题三:没有预处理模块吗?是怎么进行视觉信息再学习的?

常清璞:英特尔Movidius这个MV2450芯片本身,有两个CPU核,都是sparc v8的CPU核,然后它又有12个shave核,那么12个shave核是一种叫做超VLIW,超长指令字这样结构形式的处理器。我刚才说了,最多能够同时执行八条指令,这个12个shave核都连在一个两兆字节的这一个缓存里边。

这个Movidius芯片有预处理模块,它有18个硬件用于预处理的这样的硬件,它叫SRPP,比如有转机,比如降噪,比如白平衡,直方图的统计等等等等,这样专门用于预处理的的芯片。这样的话,像素过来之后,可以直接进行预处理,然后再用到shave核那儿,再到CMX里边,再到shave核,对它进行视觉计算或者是深度学习。