阅读《FFNet: Video Fast-Forwarding

2018-08-07  本文已影响0人  winddy_akoky

本文的目的

Selection_013.png

如上图所示,我们的输入的是一段视频,然后通过我们提出的算法FFNet,
来跳过一些不重要的帧数,保留一些重要的帧数。

背景

对于一些对计算量/通信/存储/能源消耗等有消耗的应用来说,十分有必要去寻找一些
方法来处理视频,使得我们能从原视频中抽取一些关键的帧数,去掉了一些无关要紧的
帧数。

对于这个问题,目前主要有两个大方向:

  1. 从原视频中提取帧数,以“预告片”的形式替代原来的视频
  2. 快进视频。

相关工作

本文涉及到的一些领域:

  1. 视频快进
  2. 视频概括
  3. 强化学习

算法

把问题提炼成决策链问题

Selection_013.png

如上图所示,问题可以简化如下:

  1. 给定一个未处理的原视频, 假设快进可以看作一个时序的处理过程
  2. 在程序每一回合中的每一次迭代里,我们只处理当前帧
  3. 在当前帧下,用程序决定接下来要快进多少帧数
  4. 根据步骤3跳到“下一帧”,回到步骤2

State 和 Action

  1. State: 状态 s_k 表示当前帧
  2. Action: 动作 a_k 表示在某个状态下,需要快进多少帧数
    A = \{a^1, a_2,...,a^M\}

Reward 设计

先假设每一个帧都有对应的标签:l(i). 如果l(i)=1表示第i帧是一个重要的帧,
那么它就不应该被跳过。如果l(i)=0表示第i帧不是一个重要的帧,那么我们希望它
会被跳过。

  1. 初步的,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.png
Selection_002.png
  1. RL算法采用的是简单的Q-Learning, 考虑到state的状态空间过大,所以用网络来估计
    Q function
  2. 算法中exploration部分采用的是decay \epsilon-greedy
上一篇下一篇

猜你喜欢

热点阅读