强化学习在视觉上的应用(RL for computer Vision)

文章 iker peng(知乎:https://www.zhihu.com/people/ikerpeng/)原创,转载请与我联系~

 

 

深度强化学习在很多决策领域当中都取得了比较不错的结果,尤其是在游戏领域,多个游戏已经达到甚至是超过了人类水平。计算机视觉领域,必定也会尝试这种神奇的算法。然而,到目前为止我们并没有看到在这个领域当中特别成功的例子。计算机视觉任务似乎并没有像游戏那样直观的对应到一个决策的环境或者是可解释的动作步骤。然而我们还是能够在顶级的会议当中发现一些他们的踪迹。


早在2014年,Google DeepMind团队就将深度强化学习应用到了注意力机制当中[1]:

最终,网络的训练采用的是一种策略梯度的算法,也就是REINFORCE算法。


那我们接下来看一些在经典的视觉任务当中使用强化学习的例子。

图像修复(image restoration),以下为CVPR2018的文章[4]:

以上是图像修复的一个例子(注:示意图,不是文章效果),要从左图达右图的效果,我们最能够想到的最直接的方式也就是采取滤波降噪等等的方式。显然,我们也知道对于损害程度不同的地方我们采取的滤波的核和方式肯定不一样。那么,我们是否能够训练出一个网络,使得对于不同程度的情况采取不同的恢复方式呢?

我想经过我这样的描述,大家都很清楚应该如何将强化学习应用到这个任务当中了吧。首先,我们需要创建一个工具箱,在这个工具箱当中,应该具备适合于不同情况的恢复工具,如不同核大小的高斯滤波器。其次,我们需要有一个决策的网络,这个网络能够根据图片的状况选择最合适的工具来对图像进行修复。

该算法是首次将RL框架应用到图像恢复的任务当中,上图当中的(b)(c)是概算法的效果。而图中所示的VDSR要达到同等的效果需要两倍以上的参数量。比较于一般的CNN方法,该算法甚至能够减少80%以上的计算量。


目标跟踪(Object tracking),以下为ICCV2017文章[3]:

所谓的目标跟踪,或者叫做视频目标跟踪也就是在一个视频序列当中持续的标记出在第一帧当中指定的目标。相比于传统的目标识别任务,其最大的难点就是训练样本少,容易出现误差的累计同时对于障碍物遮挡等等的情况非常的脆弱。同时,本文所关注的重点也在于 Tracking-By-Detection,也就是通过检测来完成跟踪的算法。

对于这种训练样本极其缺乏的情况,想要训练一个神经网络那是非常的困难,如果在一个比较健壮的模型上微调那么又会极大地影响实时性。那么我们来看看强化学习可以在这个任务上作什么呢?

如图所示,下部展示了两种不同的样本,第一种背景简单,人物的面部为正面,是一个简单的识别场景,因此经过一层网络便可以进行分类了;相比之下,第二个样本是一个侧面面部,同时背景和前景的区分度不大,因此希望经过多层网络之后能够得到一个区分度比较大的高层特征。

那这样做有什么好处呢? 能够大量的提高计算的效率,因为大量的样本尤其是某个简单场景附近的场景一般也是简单场景,也就是说场景几乎没有变化。因此,这种方式能够很好的提高计算的效率。具体好到什么样的程度呢?那我们先来看一下输出的结果吧。、

特征再继续探索吧。那么剩下的就是Q学习当中的奖励函数了。这个很直观,跟踪的结果和Ground truth之间的重叠度(这里准确的说应该是:Intersection-over-Union (IoU))就可以衡量了。但是,其实应该考虑的是这个重叠度的增量,也就是我采取该动作使得重叠度增加了多少。因此,奖励函数表示为:

文章的算法到此已经讲清楚了,那么我们来看看上图当中的两个例子。左边个那个任务相对比较简单,在第一个当中响应值的中心已经非常的集中,因此在下一层当中就直接输出结果了。而比较右边的那个结果,在比较低层的时候根本没有办法区分,于是采取的动作是不变,然后到下一次继续提取特征。通过多层的提取特征,相关性特征图在最后终于得到了一个响应度比较大的尖峰点,于是输出跟踪的结果。


接下来看下强化学习在视频总结当中的应用,以下为AAAI2018文章[2]

 

DSN 整体使用的是一个Auto Encoder-Decoder框架。编码器和解码器分别采用的是CNN:GoogLeNet以及一个双向的LSTM。对于任意一个输入到网络的视频,DSN通过 CNN对每一帧提取特征,然后输入到LSTM得到该视频帧对应的一个被选中的概率;接下来使用该概率对样本进行伯努利采样得到一个视频序列;然后对采样的视频求解奖励函数,反馈更新网络。

因此,接下来的重点就是如何构建奖励函数。直观上来看,一个好的总结性的视频应该是一个既能够全面地总结输入视频(具有代表性)被选中的视频帧内部又要有很大的变化(不要重复最好)的视频。那么对于其中的差异性带来的奖励用Rdiv表示,代表性带来的奖励用 Rrep表示,因此,得到的奖励函数为:

那么整个网络已经设计完成。接下来就是要怎么训练的问题了。显然算法需要学习到一个智能体,它能够做出一个最优的决策使得获得的奖励最大。该算法接下来引入1992年的基于策略梯度的REINFORCE 算法。于是,得到梯度为:

 

Reference:

[1] Mnih, Volodymyr, Nicolas Heess, and Alex Graves. "Recurrent models of visual attention." NIPS. 2014.

[2] Zhou, Kaiyang, and Yu Qiao. "Deep reinforcement learning for unsupervised video summarization with diversity-representativeness reward." AAAI.2018.

[3] Chen Huang, Simon Lucey, Deva Ramanan. "Learning Policies for Adaptive Tracking with Deep Feature Cascades." ICCV (2017 Spotlight).

[4] Yu, Ke, et al. "Crafting a Toolchain for Image Restoration by Deep Reinforcement Learning." Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2018.

没有更多推荐了,返回首页