本文是人工智能顶级国际期刊 TPAMI 入选论文《End to end Active Object Tracking and Its Real world Deployment via Reinforcement Learning》的深入解读。
该论文由北京大学信息科学技术学院计算机科学技术系/数字视频编解码技术国家工程实验室教授、前沿计算研究中心副主任王亦洲老师课题组与腾讯 AI Lab 合作共同完成,该研究也入选了 2018 腾讯 AI Lab 犀牛鸟专项研究计划。
博士生钟方威、腾讯 AI Lab 研究员罗文寒和孙鹏为论文共同第一作者。
该论文主要提出了一种基于强化学习的端到端主动目标跟踪方法,通过自定义奖赏函数和环境增强技术在虚拟环境中训练得到鲁棒的主动跟踪器,并在真实场景中对模型的泛化能力进行了进一步的验证。
简介
主动目标跟踪是指智能体根据视觉观测信息主动控制相机的移动,从而实现对目标物体的跟踪(与目标保持特定距离)。
主动视觉跟踪在很多真实机器人任务中都有需求,如用无人机跟拍目标拍摄视频,智能跟随旅行箱等。
然而,传统的实现方法是将图像中的目标跟踪和相机控制分成两个独立的任务,这导致系统在进行联调优化时变得繁琐复杂。
此外,要单独实现这两个任务的代价也是高昂的,既需要大量人工标注目标位置用于训练跟踪模块,也需要在真实系统中通过试错整定相机控制器参数。
为了解决上述问题,本文提出一种基于
深度强化学习
的端到端的解决方案,即用一个 Conv-LSTM 神经网络直接将图像序列输入映射成控制信号输出(如前进、左转等)。
为了避免人工标记数据和在真实环境试错,我们使用仿真环境进行训练。
我们进一步提出了一种环境增强技术和自定义的奖赏函数,以保证训练得到一个鲁棒的端到端主动跟踪器。
实验证明,在仿真环境训练得到的跟踪器能取得很好的泛化能力,在没见过的目标外观、移动轨迹、背景外观和干扰物体出现等情况下都能较稳定工作。
当目标偶然消失时,跟踪器也能鲁邦地恢复跟踪。
我们还发现,这种只在仿真器中训练得到的主动跟踪器是有可能直接迁移到真实场景中工作的。
我们分两阶段实验,验证了这种虚拟到现实迁移的能力。
首先,我们在 VOT 数据集进行了定性测试,即观察动作输出的合理性。
最终,我们系统解决了虚拟到现实的问题,将主动跟踪器成功部署在真实移动机器人上,并进行了定量测试。
左图:
一个机器人主动跟随目标移动(图源:
网络),
右图:对比基于强化学习的端到端主动跟踪和传统的跟踪方法
主要贡献
论文的主要贡献包括:
-
一种基于强化学习的端到端主动目标跟踪的方法;
-
设计了一种用于主动跟踪的奖赏函数用于训练,并采用环境增强技术提升模型泛化能力;
-
第一个实现将端到端主动跟踪器从虚拟环境迁移部署到现实世界。
本文以之前会议版本(ICML2018)的论文 [1] 为基础,主要扩展实现了从虚拟到现实的迁移(第三点贡献),即提供了将在虚拟环境中训练获得的端到端跟踪器成功部署在真实机器人上的实现方案。
具体地,为了克服因虚拟与现实之间的差异带来的挑战,我们主要考虑解决以下三个问题:
-
如何进一步增强环境来提升模型的泛化能力?
-
什么样的动作空间更适合真实机器人?
-
如何将网络输出的动作映射成真实的控制信号?
主要方法介绍
首先我们生成了大量的虚拟跟踪场景用于训练和测试。
然后,我们采用 Conv-LSMT 网络结构实现端到端的映射(输入图像,输出动作),并用经典的强化学习算法 A3C[2] 进行训练。
为了保证训练的鲁邦性和有效性,我们提出了环境增强方法和设计了奖赏函数。
具体的介绍如下:
跟踪环境
强化学习的训练需要大量试错,这导致在真实环境下训练主动跟踪器基本上是不可能的。
因此,我们基于两种游戏引擎(VizDoom 和 Unreal Engine)分别构建了不同的跟踪场景用于训练和测试,如下图所示:
Vizdoom 环境的地图和示例。
其中,绿色点代表跟踪器(箭头代表方向),灰色点代表目标, 蓝线代表规划的目标的路径,黑线代表墙壁。
最左边的场景为训练环境,其余场景为测试环境,包含了不同的目标轨迹、目标外观、背景颜色,以及干扰物体等情况。
Unreal Engine 环境的地图和示例。
从左到右分别为两种外观的目标(Stefani 和 Malcom),两种轨迹(Paht1 和 Path2)和地图(Square1 和 Square2),对应的两种场景的示例,通过不同组合构成了不同的跟踪场景。
我们用其中一种组合进行训练,其余组合环境进行测试。
网络结构
端到端的主动跟踪器主要由三个部分组成:
观测编码器(Observation Encoder),序列编码器(Sequence Encoder)和演员-批评家网络(Actor-Critic Network)。
如下图所示:
每个部件有着特定的功能,都是实现端到端主动跟踪必不可少的组成部分:
-
观测编码器主要将原始图像编码成一个特征向量,作为序列编码器的输入。
与很多图像编码网络一样,它通常包含了卷积层、池化层和全连接层等。
-
序列编码器将历史观测特征进行融合,从而获得一个包含时序特征的表示,作为后续演员-批评家网络的输入。
因为对于主动跟踪问题而言,除了要识别和定位目标,相应的时序特征(目标的速度、移动方向等)也是至关重要的。
一般,它的功能由循环神经网络来实现。
-
演员-批评家网络共享序列编码器的特征作为输入,分别输出近似的价值函数和动作策略。
近似的价值函数代表着期望的累计奖赏值,主要在训练时用于计算演员的策略梯度,来更新网络。
当动作空间为离散时,演员输出选择每种动作的概率;
当动作空间为连续时,演员输出每一维度动作的平均值和标准差,并用高斯分布来表示动作分布。
实验中,它们分别由全连接层来实现。
奖赏函数
在强化学习中,奖赏函数会引导智能体学习,对最终学习效果起着至关重要的作用。
针对主动目标跟踪任务,我们需要设计一个奖赏函数以引导智能体学习。
最直观的想法应该是在目标接近期望位置时给与奖励,在远离时给与惩罚。
因此,我们以跟踪器为中心定义了一个平行于地面的坐标系,y 轴指向相机前方,x 轴由相机左方指向正右方。
对应的,我们用 (x,y) 和ω分别表示目标相对跟踪器的位置和朝向。
从而,我们得到了如下一个奖赏函数:
其中,A,c,d,λ均大于 0,为可以调整的超参, d 代表了期望保持的距离。
在这个奖赏函数引导下,智能体最终学会控制相机位置,保持目标始终在其正前方距离为 d 处。
下图为地图俯视图下的示例:
绿点代表了跟踪器,灰点代表了不同位置和朝向(箭头指向)的目标,虚线与跟踪器的 y 轴相平行。
环境增强技术
为了保证模型的泛化能力,我们提出了简单但有效的环境增强技术用于训练。
我们主要采用了以下随机化方式:
上述三点(细节见原文),一定程度上保证了跟踪器的泛化能力。
为了更近一步提升模型的泛化能力以便直接迁移至真实场景,我们对关键要素进行了更进一步的随机化,包括:
-
目标和背景的表面材质(纹理图案、反射率、粗糙度等);
-
光照条件(光源位置、方向、颜色和强度);
-
目标移动(轨迹和移动速度)。
具体地,从地图中随机选择一个位置并用内置导航模块生成相应路径引导目标移动。
在移动过程中随机调节速度,其范围在(0.1m/s, 1.5m/s)之间。
纹理和光照的随机化主要为了提升观测编码器的泛化能力,避免网络对特定场景和目标外观过拟合。
而目标移动的随机化是为了提升序列编码器的泛化能力,避免网络对特定的移动轨迹过拟合。
下图为采用上述随机化方法后生成的示例:
实验验证
首先,我们分别在 ViZDoom 和 UE 环境中开展实验,并在 VOT 数据集中定性验证了模型迁移到真实场景的可能性。
之后,我们将介绍如何将主动跟踪器部署到真实机器人上工作,并分别在两个室内室外真实场景中进行了定量实验。
在虚拟环境中进行训练和测试
这里,我们将展示几段虚拟环境中的演示视频 (实验细节可参考原文),展示我们的方法训练得到的跟踪器在 VizDoom 和 UE 环境中的结果。
虚拟到真实迁移的可能性
我们选择了几段 VOT 数据集中的片段定性验证模型迁移到真实数据集的可能性。
因为输出动作无法直接作用到已经录制好的视频序列,控制下一时刻的观察,因此我们只能通过观察当模型输入给定视频序列时对应的动作输出与真实期望的情况是否一致来判定定性分析模型性能,如目标在画面左边时,观察是否输出左转动作。
跟踪器输出置之间的关动作与目标大小和位系图。
横坐标代表目标中心相对画面中心的偏差,纵坐标代表目标包围框的面积,绿点代表输出左转动作,红点代表右转动作,黄点代表停止/后退。
由上图可见,当目标在左(右)边上,跟踪器会倾向于输出左(右)转,以期望通过旋转将目标移动到画面中心,另外,当目标尺寸变大时,会更倾向于输出停止/后退动作, 以避免目标尺寸变得过大。
以上结果,可以说明当输入真实图像时,用纯虚拟环境训练的主动跟踪器仍然是可以输出合理的动作的。
但是,用录制好的视频作为输入时,相机无法被跟踪器所控制,这与真实的主动跟踪不完全符合,这就无法最终证明我们方法的实际应用价值。
因此,我们将开展实验,将虚拟环境训练的主动跟踪模型迁移到真实机器人上的。
在真实场景中的主动目标跟踪
我们在增强的虚拟环境中进行训练,尝试了不同动作空间(更多的候选动作,连续的动作),并直接将训练得到的模型在不同真实环境(室内,室外)中进行测试。
动作空间的选择
除了采用上文提到的更先进的环境增强技术,我们还尝试了不同的动作空间。
最早虚拟环境中的实验只提供了六种动作,而对于复杂的真实场景,要适应不同的目标速度和运动方向,这是不够的。
因此,我们扩展了原来六种动作至九种,新增的动作有后退和两种不同速度的前进和后退。
加入后退使得机器人可以适应更复杂的轨迹,如目标正面向跟踪器走来时。
不同速度使得机器人可以更好地适应不同的移动速度。
下表为九种动作在虚拟和真实场景下的设置(第二列为虚拟环境,第三列为真实机器人):
我们也对连续动作空间下的表现能力感兴趣,因此我们尝试了一种二维的动作空间,由线速度和角速度组成。
具体的虚拟和现实的设置如下表:
真实场景实验设置
我们采用一个轮式机器人进行实验,如下图 (a) 中所示。
机器人上方固定有一个 RGB-D 摄像头,离地面约 80cm 高。
我们用一个带有 8 核 Intel CPU 的笔记本电脑作为计算平台,执行图像采集,神经网络的推理和传送控制指令至底层控制器等系列任务。
每个 50ms (20Hz) 跟踪器的状态和动作会更新迭代一次。
我们分别在室内房间下图 (b) 和室外阳台下图 (c) 进行测试,以衡量模型部署到真实场景工作的性能。
真实场景实验的部署设置。
(a) 为实验所用的机器人;
(b) (c) 分别为用于测试的室内、室外场景。
室内房间包括了一张桌子和反射的玻璃墙,玻璃墙会使得机器人在运动过程中观测到的背景发生动态变化。
另外,墙上还贴了一张与目标外型接近的海报,可能会对跟踪者产生干扰。
为了控制变量,目标将沿着红线进行行走。
下图为执行连续动作的主动跟踪器在室内的演示序列。
执行连续动作的主动跟踪器在室内场景的观测与输出动作的关系。
注意,数值极性对应不同速度方向。
至于角速度,正值为左,负值为右。
至于线速度,正值为向前,负值为后退。
图像中心的红点是一个参考点,可以帮助我们标记目标和机器人的相对位置。