阅读《FFNet: Video Fast-Forwarding
2018-08-07 本文已影响0人
winddy_akoky
本文的目的
Selection_013.png如上图所示,我们的输入的是一段视频,然后通过我们提出的算法FFNet,
来跳过一些不重要的帧数,保留一些重要的帧数。
背景
对于一些对计算量/通信/存储/能源消耗等有消耗的应用来说,十分有必要去寻找一些
方法来处理视频,使得我们能从原视频中抽取一些关键的帧数,去掉了一些无关要紧的
帧数。
对于这个问题,目前主要有两个大方向:
- 从原视频中提取帧数,以“预告片”的形式替代原来的视频
- 快进视频。
相关工作
本文涉及到的一些领域:
- 视频快进
- 视频概括
- 强化学习
算法
把问题提炼成决策链问题
Selection_013.png如上图所示,问题可以简化如下:
- 给定一个未处理的原视频, 假设快进可以看作一个时序的处理过程
- 在程序每一回合中的每一次迭代里,我们只处理当前帧
- 在当前帧下,用程序决定接下来要快进多少帧数
- 根据步骤3跳到“下一帧”,回到步骤2
State 和 Action
- State: 状态 s_k 表示当前帧
-
Action: 动作 a_k 表示在某个状态下,需要快进多少帧数
A = \{a^1, a_2,...,a^M\}
Reward 设计
先假设每一个帧都有对应的标签:l(i). 如果l(i)=1表示第i帧是一个重要的帧,
那么它就不应该被跳过。如果l(i)=0表示第i帧不是一个重要的帧,那么我们希望它
会被跳过。
- 初步的,reward可以表示如下:
r_k = -SP_k + HR_k
它包含两部分:跳过惩罚(SP)和击中奖励(HR)
SP_k表示在跳过的t_k帧里,重要帧数越多,惩罚越严重,不重要帧数越多,奖励越过,表示如下:
SP_k = \frac{\sum_{i\in t_k}\textbf{1}(l(i)=1)}{T} - \beta \frac{\sum_{i\in t_k} \textbf{1}(l(i) = 0)}{T}
其中\beta是跳过重要帧数的惩罚和跳过不重要帧数的奖励两者之间的权衡
HR_k表示跳到”下一帧“,即下一个状态时,该帧是不是重要帧或是不是在重要帧附近,若是,则HR的奖励就越大,反之则小
为了把第i帧周围的帧数也考虑进去,我们引入一个高斯分布作为加权系数:
f_i(t) = \frac{1}{\sqrt{2\pi \sigma^2}} \!exp ( -\frac{(t-i)^2}{2\sigma^2}) \ ,t\in [i-\omega, i+\omega]
所以,最后HR_k表示如下:
HR_k = \sum^{z+\omega}_{z - \omega} \textbf{1}(l(i)=1)\cdot f_i(z)
算法框架
Selection_001.pngSelection_002.png
- RL算法采用的是简单的Q-Learning, 考虑到state的状态空间过大,所以用网络来估计
Q function - 算法中exploration部分采用的是decay \epsilon-greedy