Look-ahead before you leap: end-to-end active recognition by forecasting the effect of motion 讲解
我看了一下,基本上没有什么资料对这篇文章【1】进行描述【2】,那我就试着讲一讲这个东西,尽量试着把各个模块搞清楚。这玩意涉及CNN,RNN,RL这些东西,确实需要不少积淀才能搞清楚。
转载请注明出处: http://blog.****.net/c602273091/article/details/78918015
Introduction
该论文主要解决的是给定了initial view,如何调整摄像头的位置,使得object recognition或者是scene recognition更加准确。这就是所谓的active vision(主动视觉)。另外,还提出了一个叫做look-ahead的东西,就是在active vision中加入一个可以预测执行某个action之后看到的东西。
做这个东西是因为目前计算机视觉的算法,更多偏向于one-shot recognition,但是很多时候,一副图片能够有效表达这些信息么?答案是不能,比如下面这幅图片,俯视图无法让我们分辨出这具体是神马。
那么如果是人的话会怎么样呢?会低头看看,然后就结合之前的信息就更容易知道这个东西是啥。那么到了计算机视觉这里,active vision就是输入当前图片,你觉得不行,然后输出action,调转camera的pose来获得新的状态,把新的状态又加入之前的history做融合。那么从当前的图片到action这个动作,就是主动的行为,主动去获取更有利于目标识别的信息。
一般来说,active recognition的框架如下:perception,action selection,evidence fusion。
这里的perception就是对单幅的图片的识别,可以用一个CNN实现。Action Selection就是根据当前的状态,输出action,得到那个action是比较合理的。这个东西使用文中使用了神经网络加RL来实现。evidence fusion就是把多个perception的结果进行融合,得到更为准确的结果,文中使用了RNN。
把整个结构展开就是:十分明显,总的架构是RNN。
一共是有五个部分:
Perception:获取图片(输入为pose和camera)
Aggregator:把之前的(比如前一帧)和当前的图片进行evidence fusion,提取特征。
Look-ahead:比如你猜测它是神马,通过action之后,他应该是怎么样的,那么在时刻t的ground truth和t-1的prediction就会有一个error,一个loss的分布。那么通过error的比较也对后期做recognition提供了帮助。(纯脑补)
Actor:就是当前什么状态,根据融合的feature,应该进行怎么样的action。
Classifier:在如今的aggregator的信息获取下,决策属于哪一个object。
以上解读更多的是脑补,具体的需要我进行进一步的研究。
Details and Question
settings
在在T个时间戳都可以进行最后的识别X,每个时间戳recognition system会发送指令给motor,来改变它的pose,但是这个pose是改变是离散的,当然,这样就更简单了。最开始的pose设定为一个随机值,反正也是建立一个相对坐标系,无所谓。
每次更新之后的相机的pose就是:
system architecture
从上面的图可以看出,其实最基本的架构是有四个Module:ACTOR,SENSOR,AGGREGATOR,CLASSIFIER,它们的weight用
在时间戳t,ACTOR会发出一个motor command
得到的就是C维的不同object的一个probability。
在这些模块中,ACTOR是一个标准的神经网络加上RL,产生了一个概率密度函数
在训练的时候,四个模块是一起训练的(实际上还包括下一节要介绍的look-ahead,那就是5个) label就是时间T,W的更新涉及了标准的BP和RL的梯度计算。其中CLASSIFIER、AGGREGATOR、SENSOR这三个可以采用BP的梯度下降方法进行W更新,使用的是Softmax classification loss。ACTOR采用的是RL的梯度求导。(我觉得论文中更新
ACTOR的下降梯度会对SENSOR有影响,SENSOR的下降梯度对AGGREGATOR有影响,AGGREGATOR对CLASSIFIER有影响。
梯度计算如下:
权值更新如下:
look-ahead module
预测motion会对下一个的观测有什么影响,主要是对AGGREGATOR的影响,这里不是用了multiple view geometry,是给AGGREGATOR进行一个类似于“auto-encoder”,这篇文章为什么要用这个是基于能够预测下一个motion和能够选择optimal motion是紧密联系的。在文中,提出了一个LOOKAHEAD模块,其实不算是预测,因为用的数据都是上一帧的,并且ground truth就是当前时刻的aggregator feature。在look-ahead模块中的预测:
loss function就是预测的aggregator feature与实际feature vector之间的distance,可以计算为:
使用的是consine distance的算法。所以,在这个模块中,会生成一个新的weight用来更新其它模块(AGGREGATOR和SENSOR)的weight。
所以SENSOR和AGGREGATOR的weight更新为:
在Suppliment Material中对于整个流程进行了描述:3D 物体用X表示,然后通过对于计算机pose和物体X进行映射得到2维的图片P(X,
整篇论文的精髓在于下面整个end-to-end的网络:具体的描述不在这里展开,还是比较清晰的。
参考链接:
【1】论文地址: http://vision.cs.utexas.edu/projects/lookahead_active/lookahead_active_eccv16.pdf
【2】参考博客: http://blog.****.net/xizero00/article/details/51386629