关键词: 机器人 , 视觉处理 , 视觉智能
作者:Brian Dipert,嵌入式视觉联盟;Yves Legrand,飞思卡尔半导体;Bruce Tannenbaum,MathWorks公司
为了让机器人更好地与其周围的事物进行互动,并灵活地移动,机器人必须能够看到并辨别其周围的环境。经济高效且功能强大的视觉处理器(通过深度辨别图像传感器进行数据传输,并采用极具鲁棒性的软件算法)正在使人们盼望已久的自适应机器人成为现实。
机器人,这一长期出现在科幻世界和航运产品文档中的事物,被描述为能够帮助人类从呆板、单调和难以忍受的工作中释放出来,并利用其高速度及高精度的特点提升工作效果。无论是可完成吸尘、地毯清洗,甚至排水沟的清洁工作的第一代自主消费机器人系统,或是多种类型的生产环境下机器人的使用正不断增长,都可以说明上述观点(图1)。
图1:为消费者量身定制的自主产品(a)和工业制造系统(b)是众多可以通过视觉处理功能而得到增强的机器人中的一部分。
然而第一代消费类机器人采用了相对粗糙的方案来定位并感知其周围环境。这些基本技术包括由红外线发射器组成的人造壁垒,它可与内置在机器人当中的红外线传感器进行协作,从而防止机器人从楼梯上滚下或游荡到另一个房间。当自主机器人撞到了不可移动的物体时,震动传感器可通知机器人,让机器人不再继续前进。而更先进的绘图功能设计甚至让机器人不必再次回到这个特殊的位置。与人类的工作方式相比,机器人的工作不必考虑体力因素、更加快捷,并且更加准确,但机器人成功的前提是让来料到达固定的方向和位置,因此提升了制造流程的复杂性。来料部件的位置及方向出现任何偏离都将导致装配的失败。
人类用眼睛(以及感觉)和大脑对其周围的世界进行辨识和定位。从理论上讲,采用摄像头组件、视觉处理器和各种软件算法的机器人系统也应该可以做到。但纵观历史,这样的图像分析技术通常只有在复杂并且昂贵的系统中才能找到。但数字集成电路在成本、性能和功耗方面的进步,为视觉功能使用在多样化和高容量的应用上铺平了道路,其中包括机器人实现的功能越来越多。虽然机器人在功能实现方面仍然面临着诸多挑战,但与以往相比,今天已经可以更加轻松、快速、经济高效地解决这些问题。
软件技术
开发出可根据视觉适应其环境的机器人系统需要采用电脑视觉算法,该算法可将一个或多个图像传感器中的数据转换成该环境的可执行信息。机器人的两个常见任务分别是识别外部目标和方向,并决定机器人的位置和方向。许多机器人可与一个或多个特定目标进行互动。对于情境自适应机器人而言,必须能够检测到那些在未知地点和方向的目标,并且还要了解到这些目标很可能会移动。
摄像头每秒产生上百万像素的数据,从而形成了一个肩负着沉重处理负担的有效载荷。解决该问题的一种常见方法是检测这些多像素的特征,如视频数据每一帧的角、点、边或线(图2)。
图2:完整处理二维或三维机器人视觉传感器的原始输出涉及四个主要阶段,每个阶段都有自己的独特性并受其处理要求的制约。
这种像素到特征的转换可使在视觉处理管道的这个特殊阶段的数据处理需求降低一千倍或更多;上百万的像素降低成了上百个特征,机器人就可以高效地对目标进行识别,并确定其空间特征(图3)。
图3:视觉处理器可以集成多种类型的内核,以满足每个处理阶段的独特需求。
目标检测首先包括采用机器学习或其他算法与多个特征相结合。然后,通过利用这些特征的数据库(该数据库根据特定目标在不同角度和方向的大量已采集图像生成),用户可以采用分类器算法运行并训练机器人正确地识别每个新目标。最有名的目标检测算法之一是Viola-Jones framework,它采用类Haar的特征和大量Adaboost分类器。该算法非常擅长于识别脸部,也可经过训练来识别其他常见目标。而基于机器学习算法的一大缺点是:他们需要大量的训练数据集,才能准确地检测目标。
通过特征来确定目标方位需要一种像RANSAC (随机抽样和均测)那样的基于统计的算法。该算法采用一组特征来模拟一个潜在的目标方向,然后确定多少其他特征适合该模型。具有最大数量匹配特征的模型对应于被正确识别的目标方向。为了检测移动目标,用户可以将特征识别与跟踪算法相结合。一旦一组特征正确地识别了一个目标, KLT(Kanade-Lucas-Tomasi)或卡尔曼滤波等算法将在视频的帧之间跟踪这些特征的运动轨迹。无论方向和阻塞如何改变,这些技术都是非常可靠的,因为他们仅需要跟踪一组最初特征便可成功。
上面所述算法可能对于固定式机器人来说足够了。但对于移动机器人来说,还需要采用其他算法才能使机器人在其环境中安全地移动。SLAM(同步定位绘图)是一种可使机器人创建环境地图并跟踪其当前位置的算法。这种算法需要绘制三维环境地图。由于有许多深度感应传感器选件;因此常见的方法是采用一对被配置成“立体”摄像头的2D摄像头,其作用类似于人类视觉系统。
立体摄像头依靠对极几何,采用一对2D图像的投射为每个场景内的每个点提供3D位置。根据前面2D观点所提到的,特征可用于检测3D场景中的有效位置。例如,与平整的墙面相比,机器人更容易检测到桌角的位置。在给定的位置和方向,机器人可以检测特征,通过比较其内部地图以确定其位置并改进地图质量。考虑到目标经常会移动,因此静态地图对于试图适应其环境的机器人来说,用处不大。
处理器的选择
为了有效地打造出机器人视觉,我们将所需的处理步骤分为若干阶段。特别是我们前面所讨论的算法,其处理步骤可分为4个阶段,根据处理要求,每个阶段都具有独特的特征与限制(参考1)。市场中充斥着各种类型的视觉处理器,并且不同类型的视觉处理器(根据其性能、功耗、成本、功能灵活性和其他因素)可能适合不同的算法处理阶段。实际上,视觉处理器芯片可能集成了多个不同类型的处理器内核,从而满足多个处理阶段的独特需求(图4)。
图4:视觉处理器芯片可能集成了多个不同类型的处理器内核,从而满足多个处理阶段的独特需求
第一个处理阶段包含多种可处理各种传感器数据处理功能的算法,例如:
●调整大小
●色彩空间转换
●图像旋转和翻转
●去隔行
●色彩调整和色域映射
●伽玛校正,
●对比度增强
在此阶段,每一帧内的每个像素都会进行处理,因此每秒的工作量都是巨大的。在立体图像处理时,两个图像平面必须同时进行处理。面向这些操作的其中一个处理选项为专用硬件时钟,有时又被称为IPU(图像处理单元)。最近推出的视觉处理器(包含IPU)可在稳定的帧速率下同时处理两个图像,每个图像的分辨率都高达2048x1536像素(300多万像素)。
第二个处理阶段将进行特征检测,在这一阶段(如前面所讨论的),角、边和其他显著图形区域将会被提取。这个处理阶段仍在每个像素的基础上进行,因此非常适合那些高度并行的架构,但这一阶段可处理更加复杂的数学函数,如一阶和二阶导数。DSP、FPGA、GPU、IPU和APU(阵列处理器单元)都是常用处理选项。DSP和FPGA具有高度的灵活性,因此非常适用于那些不成熟和正在发展的应用(和实施这些应用的算法)。与其他方法相比,该灵活性虽然带来了更高的性能,但也带来更多的功耗和成本。
在灵活性/专用性比最高的选择是专用IPU或APU,他们特别适用于视觉处理任务。它每秒可处理数十亿的操作,但由于经过应用优化,它并不适合更广泛的功能。灵活性/专用性较为折衷的是GPU,GPU过去常常出现在电脑中,而现在也嵌入到应用在智能手机、平板电脑和其他大批量应用的应用处理器中。
浮点单元计算(如光流算法中的最小二乘功能)、SURF(用于快速显著点检测的快速鲁棒特征算法)中的描述符计算和点云处理都非常适用于高度并行的GPU架构。这种算法可运行在SIMD(单指令多数据)矢量处理引擎(如ARM的NEON或功率架构CPU中的AltiVec功能模块)上。无论如何,包括OpenCL(开放计算机语言)和OpenCV(开源代码计算机视觉库)在内的架构和库,都可简化并加快软件开发,还可能包括在多个内核上对一个任务的各个部分进行分配的能力。
在第三个图像处理阶段,系统将根据特征图对目标进行分类。与之前阶段基于像素的处理方法相比,这些目标检测算法以高度非线性的结构和方式进行数据访问。然而,仍需采用强大的处理“机制”通过丰富的分类数据库来评估多种不同的特性。这种需求非常适合单核和多核传统处理器,如基于ARM和Power架构的RISC设备。这种选择标准也同样适用于第四个图形处理阶段,该阶段将通过多帧跟踪检测目标、实施该环境的模块,并根据各种环境来评估是否应该实施动作。鉴于视觉处理的数据密集型属性,当评估处理器时,用户不仅应评估内核数量和每核速度,还应评估每个处理器的数据处理能力,如外部存储器总线带宽。
行业联盟援助
由于市场上出现了性能日渐强大的处理器、图像传感器、存储器和其他半导体器件,加上极具鲁棒性的算法,将计算机视觉功能整合到广泛的嵌入式系统中变得切实可行。在这里,“嵌入式系统”指的是基于微处理器的所有系统,而不是一台通用计算机。因此,嵌入式视觉是指在嵌入式系统、移动设备、专用电脑和云中加入计算机视觉技术。
嵌入式视觉技术有潜力支持大量电子产品(如本文讨论的机器人系统),比以前更智能、更灵敏,因而对用户更有价值。它可以向现有产品添加有用的功能。它可以为硬件、软件和半导体的制造商们开创有重大意义的新市场。嵌入式视觉联盟(Embedded Vision Alliance)是一个由技术开发人员和提供商组成的全球性组织,旨在使工程师能够将这种潜力转化为现实。 |