Look-Ahead Before You Leap: End-to-End Active Recognition by Forecasting the Effect of Motion
来源:Texas 大学
Abstract
主要提出了一个通过移动摄像机(控制机械臂或者机器人运动)来转换观测的视角,从而进行主动目标识别的方法。整个模型是端到端的。
Introduction
第一个是物体识别(Object Recognition):像上面的图片所示,从俯视来看很难分辨这个具体是什么东西,转换一个视角就能发现这是一个杯子或者平底锅。
第二个是场景识别(Scene Recognition):像上面的图片所展示,如果没有找到一个好的角度,无法识别出这个场景是什么,转换到右边的图片后才知道这个是篮球场。
本文主要做的任务就是这两个,移动摄像机找到一个比较好的识别物体的角度。
Related Work
本文主要范畴是Active Vision
Attention机制:Recurrent models of visual attention
Approach
Setting
摄像机的位置(camera pose)用一个二维向量 p p p来表示,两个维度分别表示俯仰角和方位角。
在系统迭代T步后,输出系统识别物体的类别。
每一步执行如下:
- 系统输出电机控制命令 m t m_t mt,如”俯仰角提高20°,方位角提高10°” , m t m_t mt是从一串预先定义的、可行的相机动作中取出,记作M。在 t = 1 t=1 t=1时刻,初始位置 p 0 p_0 p0被设置为一个随机值。
- 在t时刻,相机位于 p t p_t pt,识别目标为 X X X,系统从当前视角得到图片 x t = P ( X , p t ) x_t=P(X,p_t) xt=P(X,pt),函数 P P P是一个投影函数。通过上一次的电机指令和上一时刻的位置得到本时刻的位置,也就是: p t = p t − 1 + m t p_t=p_{t-1}+m_t pt=pt−1+mt。
最后时刻,也就是 t = T t=T t=T时,系统输出对物体 X X X的预测标签 y ^ \hat{y} y^。
Active Recognition System Architecture
整个系统模型基于Google Deep Mind的模型RAM(原文),采用 Attention机制+RNN。
系统包括四个模块:
- ACTOR:输入AGGREGATOR的输出,产生控制指令 m t m_t mt。也就是 m t + 1 m_{t+1} mt+1 = ACTOR( a t a_t at)。
- SENSOR:产生 m t m_t mt后位置更新—— p t p_t pt = p t − 1 p_{t-1} pt−1+ m t m_t mt,然后从新的位置得到2D的图片 x t x_t xt。 x t x_t xt和 m t m_t mt一起输入到SENSOR。然后SENSOR输出 s t s_t st=SENSOR( x t x_t xt, m t m_t mt)。
- AGGREGATOR:上面SENSOR的输出这一步输入到AGGREGATOR,这里是对过去所有数据的累计,也就是 a t a_t at=AGGREGATOR( s 1 s_1 s1,…, s t s_t st)。然后这里的输出再输入到ACTOR里产生控制指令
- CLASSIFIER:在上面的模块执行T步之后,把AGGREGATOR的输出 a t a_t at输入到CLASSIFIER里,得到分类的结果,也就是 y ^ ( W , X ) \hat{y}(W,X) y^(W,X)=CLASSIFIER( a t a_t at),其中 W = [ W a , W s , W r , W c ] W=[W_a,W_s,W_r,W_c] W=[Wa,Ws,Wr,Wc]是网络里可以学习的参数。
AGGREGATOR是一个RNN,CLASSIFIER是一个全连接隐藏层+softmax。
前向传播算法流程如下:
整个系统图例:
拆分来看
上面是整个系统的鸟瞰图
把下面具体的系统结构图拆分来看:
- Actor
如上图所示,输入为t-1时刻的AGGREGATOR的输出 a t − 1 a_{t-1} at−1和t-1时刻的位置 p t − 1 p_{t-1} pt−1,Linear(256,35)表示把输入长度为256的向量转换为长度为35的输出。Clamp是一个截断算子,对输入设定上限和下限,把在范围之外的设定为上限或下限,其余不变。也就是:
| min, if x_i < min
y_i = | x_i, if min <= x_i <= max| max, if x_i > max
譬如说在torch包里有方法:
torch.clamp(input,min,max,out=None)
以此为例:
a=torch.randint(low=0,high=10,size=(10,1))
print(a)
a=torch.clamp(a,3,9)
print(a)
输出如下:
tensor([[9.],[3.],[0.],[4.],[4.],[2.],[4.],[1.],[2.],[9.]])
tensor([[9.],[3.],[3.],[4.],[4.],[3.],[4.],[3.],[3.],[9.]])
也就是把向量的值给限定在一定范围内了。
再回到Actor模块,图片再贴一下
看到这里红色的层,也就是Sampler,这一层把多项式概率分布函数的权值作为输入,然后从分布中随机抽样作为输出(注意这层不能用方向传播,通过REINFORCE方法来对分类误差进行训练而不是随机梯度下降SGD)。
对于这里的L1 Normalization,概念如下:假设一副图像表示为Y=[ x 1 , x 2 , x 3 , x 4 , x 5 x_1,x_2,x_3,x_4,x_5 x1,x2,x3,x4,x5],那么L1-Normalization的结果为
Y i = x i / ∑ i = 1 5 x i Y_i = x_i/\sum_{i=1}^5x_i Yi=xi/i=1∑5xi
而L2 Normalization的方法为:
Y i = x i / ∑ i = 1 5 x i 2 Y_i = x_i/\sum_{i=1}^5x_i^2 Yi=xi/i=1∑5xi2
对于SENSOR模块:
可以看到SENSOR是一个CNN的结构,用的是GoogleNet,在对SUN数据集进行训练时不需要随机丢弃。AGGREGATOR
AGGREGATOR是RNN的结构,Delay层把上一次的输出暂存。
对于算法的细节提供在supplyment里
Training
训练时把整个网络的权重W一起训练,训练的目的是最大化最后输出的分类精度。
CLASSIFIER、AGGREGATOR、SENSOR可以通过softmax分类损失进行反向传播训练,ACTOR通过REINFORCE训练。REINFORCE目的是为了学习策略 π ( m t ∣ a t − 1 , W ) π(m_t|a_{t-1},W) π(mt∣at−1,W)。对于产生更高回报的指令 m m m,概率 π ( m ) π(m) π(m)的权重就相应升高。对于奖励函数的规定:如果类别 y ^ \hat{y} y^分类正确,那么 R c ( y ^ ) = 1 R_c{(\hat{y})}=1 Rc(y^)=1,如果分类错误为0。
W ∖ c W_{\setminus c} W∖c表示 [ W a , W s , W r ] [W_a,W_s,W_r] [Wa,Ws,Wr],也就是整体的权值 W W W排除 W c W_c Wc。同样, W ∖ a W_{\setminus a} W∖a表示 [ W c , W s , W r ] [W_c,W_s,W_r] [Wc,Ws,Wr],梯度更新公式如下:
Δ W ∖ c R L = ∑ i = 1 N ∑ t = 1 T ▽ W ∖ c l o g π ( m t i ∣ a t − 1 i ; W ∖ c ) R i ΔW_{\setminus c}^{RL} = \sum_{i=1}^N \sum_{t=1}^T ▽_{W_{\setminus c}}logπ(m_t^i|a_{t-1}^i;W_{\setminus c})R^i ΔW∖cRL=i=1∑Nt=1∑T▽W∖clogπ(mti∣at−1i;W∖c)Ri
Δ W ∖ a S M = − ∑ i = 1 N ▽ W ∖ a L s o f t m a x ( y ^ i ( W , X ) , y i ) ΔW_{\setminus a}^{SM} = -\sum_{i=1}^N ▽_{W_{\setminus a}} L_{softmax}(\hat{y}^i(W,X),y^i) ΔW∖aSM=−i=1∑N▽W∖aLsoftmax(y^i(W,X),yi)
i代表第i个训练样本。最后的权值更新为: Δ W a = Δ W a R L , ΔW_a = ΔW_a^{RL}, ΔWa=ΔWaRL, Δ W s = Δ W s R L + Δ W s S M , Δ W r = Δ W r R L + Δ W r S M , Δ W c = Δ W c R L + Δ W c S M ΔW_s = ΔW_s^{RL}+ΔW_s^{SM},ΔW_r = ΔW_r^{RL}+ΔW_r^{SM},ΔW_c = ΔW_c^{RL}+ΔW_c^{SM} ΔWs=ΔWsRL+ΔWsSM,ΔWr=ΔWrRL+ΔWrSM,ΔWc=ΔWcRL+ΔWcSM
\
Look-Ahead: Predicting the Effects of Motions
我们假设预测下一个视角的能力和选择最佳运动的能力紧密相关。我们的想法是,从视图预测学到的经验对主动物体识别有帮助。 因此,我们提出了一个统一方法来同时学习视图转换和动作选择策略,这个模块叫LOOKAHEAD。LOOKAHEAD模块输入 a t − 1 和 m t − 1 a_{t-1}和m_{t-1} at−1和mt−1,输出下一时刻对AGGREGATOR的输出 a t a_t at的估计 a ^ t \hat{a}_t a^t,计算估计值和真实值的差距 d ( a ^ t , a t ∣ a t − 1 , m t − 1 ) d(\hat{a}_t,a_t | a_{t-1},m_{t-1}) d(a^t,at∣at−1,mt−1),通过cosine计算误差。这个损失位系统提供了第三个权值的训练梯度 Δ W ∖ c a L A ΔW_{\setminus ca}^{LA} ΔW∖caLA,通过AGGREGATOR和SENSOR进行反向传播:
Δ W ∖ c a L A = ∑ i = 1 N ∑ t = 2 T ▽ W ∖ c a d ( a ^ t , a t ∣ a t − 1 , m t − 1 ) ΔW_{\setminus ca}^{LA} = \sum_{i=1}^N \sum_{t=2}^T ▽_{W_{\setminus ca}}d(\hat{a}_t,a_t|a_{t-1},m_{t-1}) ΔW∖caLA=i=1∑Nt=2∑T▽W∖cad(a^t,at∣at−1,mt−1)
现在整个系统的权重 W W W包括了Look-ahead模块的权重 W l W_l Wl,同时,LA表示look-ahead。look-ahead模块的权值只通过上面的损失来训练,所以 Δ W = Δ W l L A ΔW=ΔW_l^{LA} ΔW=ΔWlLA。
SENSOR和AGGREGATOR的权值训练公式也需要更新: Δ W s = Δ W s R L + Δ W s S M + λ Δ W s L A , Δ W r = Δ W r R L + Δ W r S M + λ Δ W r L A ΔW_s = ΔW_s^{RL}+ΔW_s^{SM}+λΔW_s^{LA},ΔW_r = ΔW_r^{RL}+ΔW_r^{SM}+λΔW_r^{LA} ΔWs=ΔWsRL+ΔWsSM+λΔWsLA,ΔWr=ΔWrRL+ΔWrSM+λΔWrLA。λ是一个超参数,用来控制核心网络受到look-ahead模块误差损失影响的程度。
Experiments
Datasets and Baselines
在SUN360和GERMS上进行测试
SUN360是一个带标签的3D场景数据集,包括室内和室外。数据集里的每个全景图代表了一个3-D场景实例,通过转动摄像头实现”移动“,如下图所示。
在本次实验中,机器人视角为45°,我们把俯仰角和方位角的转动都均分为12份,每次转动30°(30°×12=360°)。从一张1024×2048的全景图开始,视图输入为224×224的图像。设置T=5。GoogleNet特征图从倒数第二层输出。在每一步,agent可以选择移动到一个以当前位置为中心的5×7的viewpoint。
第二个训练在GEMRS上进行
Results
Look-Ahead Before You Leap: End-to-End Active Recognition by Forecasting the Effect of Motion相关推荐
- leap smear是什么
用来解决润秒突变时可能会造成的系统运行异常.对时间同步也有一定参考意义. 原文:https://googleblog.blogspot.com/2011/09/time-technology-and- ...
- ECCV 2018 完整论文集 -- List 下载链接
下文列表为ECCV2018官网得到了今年接收论文列表,共779篇: 下文为ECCV2018的全部接收论文汇总 Oral: Convolutional Networks with Adaptive Co ...
- 高级口译 WordList2
Jakarta 雅加达 last leg of his current southeast Asian tour 此行的最后一占 与...进行了会谈 held talks with counterpa ...
- 全球首个Magic Leap One体验:吓到你不敢进房间
来源:智东西 概要:业内备受关注的AR技术公司Magic Leap,在获得19亿美元融资历经七年之后,终于放出其第一款头盔产品Magic Leap One,很快在科技圈.VR圈引起刷屏式关注. 昨夜, ...
- 吊打Magic Leap,微软HoloLens 2不只为炫技
近几日网上关于HoloLens 2的话题颇多.Infinite Retina联合创始人,拥有40多万关注者的Robert Scoble发推写道,HoloLens 2一出,Magic Leap就没那么& ...
- 新产品扑朔迷离,Magic Leap又跑去收购3D扫描公司
Magic Leap收购Dacuda的3D扫描资产,很可能是为了解决其产品的位置追踪问题. 对于神秘的AR公司Magic Leap来说,他们的一举一动都会成为科技圈的头条,上周被外媒曝出产品原型机,不 ...
- 终于要揭开神秘面纱?Magic Leap将要展示产品
Magic Leap准备下周召开董事会,并且会在会议上展示Magic Leap的原型机 "PEQ ". 自打去年年底被爆出产品无法小型化的问题之后,Magic Leap沉寂了一段时 ...
- 维塔与 Magic Leap 的MR游戏发布概念片
(52VR重新整理了原译文并进行了润饰编译) 在游戏方面,Magic Leap 可谓是最为壁垒森严的世界之一.除了知道这涉及混合现实技术,以及<雪崩>作者尼尔·尼尔·斯蒂芬森等大神加盟之外 ...
- 使用Leap Motion Orion开发酷炫的手势识别VR/AR应用
Leap Motion Orien支持Oculus和HTC Vive开发,当然对Unity的支持显然是必须的. 不过前提是: 1.Windows 7 64位或者windows 10 2.Leap Mo ...
最新文章
- lstm 文本纠错_中文文本纠错算法错别字纠正的二三事
- javascript 注意事项
- 《大道至简》第二章 读后感
- 第 36 章 RRDTool
- 解决 Cmder 的光标跟文字有个间距 及常用配置
- 手把手教你搭建springboot程序
- 从一个表查询数据插入另一个表
- 指针数组 | 数组指针
- Qimage像素级操作
- DOS下Debug工具使用
- K8S高可用集群架构部署 dashborad插件部署 Nginx实现动静分离 K8S在线升级
- PYQT5|一键自动生成并应用QRC资源文件
- 如何理解CRM软件里的销售机会与线索
- ubuntu16.04 更新清华镜像源详细操作步骤
- java打星星_java初学打印星星以及九九乘法表
- 记录2017/9/7趋势科技笔试题
- 静息态功能磁共振成像:关于静息态功能连接和脑网络分析方法
- (笔记)罗辑思维-学习的真相
- 沙龙报名:PPT演示专家秘技(7月26日北京)
- inux下安装xrdp