ActionSpotter Deep Reinforcement Learning Framework for Temporal Action Spotting in Videos

ActionSpotter: Deep Reinforcement Learning Framework for Temporal Action Spotting in Videos

论文阅读笔记

1.abstract

action spot 最近被提出用来代替动作检测和关键帧检测的任务,目前最有效的 action spot 方法需要昂贵的 ground truth,由人类注释的搜索序列组成——这是一个关键限制。在本文中,我们提出了一种使用强化学习算法去做 action spot 任务的算法,而且仅使用动作检测注释中的时间片段来执行,从而为视频理解提供了一个有趣的解决方案。

2.Introduction

许多工作都对动作分析感兴趣,因为它又大量的应用,比如说我们可以根据这个功能对 youtube 视频索引,也可以使用手势控制机器人等等。

在本文的工作中,将动作检测视为一项单独的任务(而不是为了加速分类或者改进检测),所以任务结果的输出不是关键帧,而且没有任何注释,只包括一些动作片段。对于给定的动作片段,选择这个时间间隔的任何帧作为 spot frame 都是正确的。因此两个 spot outputs 可以不一样,但是都是正确的。当且仅当对于每个真实的动作片段,我们都确切的选出了一个帧来代表这个片段,并且给出了正确的标签,我们就认为是一次完美的预测。因此问题是不对成的,ground truth 是一组动作片段,而预测的结果是一组 spot frame。所以我们的评价指标使用 mean Average Precision(mAP)

本文的贡献总结为以下几点:

  • 本文为 action spot 任务发布了一个新的度量指标
  • 我们提出了一种使用深度强化学习算法去避免长时间的人工注释,并且我们用半监督的方式去提取 spot frame (训练中只使用动作片段)
  • 本文提出了 ActionSpotter,一种强化学习算法,在观看尽可能少的帧的情况下提取 spot frame,基于 actor critic 架构的。
  • 我们证明了这种算法比以往的 SOTA 算法跟适合 action spot 任务。

3.RELATED WORKS

4.Method

就像 introduction 中提到的那样,我们的目标是浏览一段 video 去选择能够很好的概括人类行为的 spot frame,因此我们还对优化 spot frame 的质量和跳过帧的比例(skip ratio)有兴趣。

在这里插入图片描述

A:Action spotting and proposed evaluation metric

spot frame C C C 是预先定义好的动作类别, V = { v t } t = 1 T V=\{v_t\}_{t=1}^T V={vt}t=1T 是包含 T T T 帧的视频序列,包含了一系列有序的 K K K 个我们感兴趣的 action proposal 集合 Q = { q k ∣ q k = ( a k , [ I k , J k ] ) } k = 1 K Q=\{q_k|q_k=(a_k, [I_k, J_k])\}_{k=1}^K Q={qkqk=(ak,[Ik,Jk])}k=1K ,其中 a k ∈ C a_k\in C akC I k I_k Ik J k J_k Jk 是这个 proposal 的起始时间和结束时间,然后我们的目标就是从中用概率选择出 spot frame V = { ( τ k , l k , α k ) } k = 1 K \mathcal{V}=\{(\tau_k,l_k, \alpha_k)\}_{k=1}^K V={(τk,lk,αk)}k=1K , ∀ k ∈ { 1 , ⋯   , K } , τ k ∈ [ I k , J k ] , α k = a k \forall k\in \{1, \cdots, K\}, \tau_k \in [I_k, J_k],\alpha_k=a_k k{1,,K},τk[Ik,Jk],αk=ak l k l_k lk 是概率。

Evaluation Metric:本文使用的度量指标为 mAP,并且提出了一个新的 evaluation script publicly 以确保有一个公平的评测环境。

为了计算这个度量指标,对于每个预测的类别,spot frame 根据他们的可能性递减排序。然后迭代的计算他们的 spot frame和 ground truth 片段相交的时间戳。一个 spot frame 被标记为正确的当且仅当他的时间戳和一个 ground truth 片段相交,并且分类正确且是与这个 ground truth 片段第一个相交的 frame。一个 spot frame 没有匹配到任何 ground truth 片段或者不是第一个匹配的,则是 false alarm。最后,一个ground truth 片段如果没有任何的 spot frame 与其匹配,则被称为 missed detection。然后,对于没有一个动作类别,我们在每个位置计算精确率和召回率,画出 PR 曲线,计算曲线下的面积,然后计算所有类别的平均值就得到了 mAP。

在这里插入图片描述

B. ActionSpotter: Actor Critic based semantic spot frame extractor

本文构造了一个 pipeline called ActionSpotter,包括三个网络结构,这个 pipeline 在时间戳 n n n 时给出的信息有:现在时刻的帧 τ n \tau_n τn,memory 信息 h n − 1 h_{n-1} hn1,并且还有一个 spot 集合 V n \mathcal{V}_n Vn

Memory:在时间戳 n n n ,将现在时刻的帧 v τ n v_{\tau_n} vτn 输入到 backbone 网络 B B BB BB 中,是基于 cnn 网络的,BB 提取出帧的空间信息 f n = B B ( v τ n ) f_n=BB(v_{\tau_n}) fn=BB(vτn) 。这个网络可以使用的当前的 sota 算法。然后输入到 GRU 网络中,为了记住其中的时序信息,它的输入是前一时刻的输出 h n − 1 h_{n-1} hn1 f n f_n fn ,得到输出 h n = G R U ( f n , h n − 1 ) h_n=GRU(f_n, h_{n-1}) hn=GRU(fn,hn1)

Classification Network:CL 网络读取的是现在时刻的隐藏单元 h n h_n hn ,输出是动作类别的概率分布 p n = C L ( h n ) ∈ R C p_n=CL(h_n)\in R^C pn=CL(hn)RC 。预测出的动作标签就是 α n = a r g m a x c ( p n , c ) \alpha_n=\underset{c}{argmax}(p_{n, c}) αn=cargmax(pn,c)

Spot Frame Selector Agent:输入是当前时刻的隐藏单元 h n h_n hn ,输出是当前帧为 spot frame 的概率 l n = S F ( h n ) l_n=SF(h_n) ln=SF(hn),然后更新 V n + 1 = V n ∪ { τ n , l n , α n } \mathcal{V}_{n+1}=\mathcal{V}_{n}\cup \{\tau_n,l_n, \alpha_n\} Vn+1=Vn{τn,ln,αn} ,在实验过程中,可以设置一个阈值 σ \sigma σ ,超过阈值将其设置为 spot frame。

Browser Agent h n h_n hn 同时也输入到 BROW 网络中,这个网络是决定下一个访问的帧, τ n + 1 = τ n + B R O W ( h n ) \tau_{n+1}=\tau_{n}+BROW(h_n) τn+1=τn+BROW(hn)

Skip ratio:我们不可能遍历全部的图像帧,令 τ N = T \tau_N=T τN=T (T 是视频的全部帧数),则 skip ratio 被定义为 1 − N T 1-\frac{N}{T} 1TN

Global dynamic

在这里插入图片描述

C. Training and objectives

网络 BB 是预训练好的,整个网络的训练目标是训练 G R U , B R O W , S F , C L GRU,BROW,SF, CL GRU,BROW,SF,CL 网络的,然后处理视频 V V V 的时候,根据策略 π = B R O W + S F \pi=BROW+SF π=BROW+SF 寻找 spot frame 。

Reward:当我们用 mAP 评估模型的表现时,我们也用 mAP 来指导模型的训练,根据 reward shaing 理论,我们可以添加一个额外的奖励以帮助算法更快的收敛

r π , n = γ m A P ( V n ) − m A P ( V n − 1 ) + ρ H ( π ( n ) ) r_{\pi, n}=\gamma mAP(\mathcal{V_n})-mAP(\mathcal{V_{n-1}})+\rho \mathcal{H}(\pi(n)) rπ,n=γmAP(Vn)mAP(Vn1)+ρH(π(n))

其中 H ( π ( n ) ) \mathcal{H}(\pi(n)) H(π(n)) 是熵,有正则化的效果。所以累计奖励为 R π , n = ∑ k = 1 n γ k r π , k R_{\pi, n}=\sum_{k=1}^{n}\gamma^kr_{\pi, k} Rπ,n=k=1nγkrπ,k ,其中 γ \gamma γ 为折扣系数。

忽略熵的话,我们有 R π , N = ∑ k = 1 N γ k r π , k = γ N + 1 m A P ( V N ) − m A P ( V 0 ) R_{\pi, N}=\sum_{k=1}^{N}\gamma^kr_{\pi, k}=\gamma^{N+1}mAP(\mathcal{V}_N)-mAP(\mathcal{V}_0) Rπ,N=k=1Nγkrπ,k=γN+1mAP(VN)mAP(V0) ,其中 m A P ( V 0 ) = 0 mAP(\mathcal{V}_0)=0 mAP(V0)=0

Actor-Critic optimization:actor 网络通过极大化下面的式子来训练

J a c t o r = E [ R π , N ] J_{actor}=E[R_{\pi, N}] Jactor=E[Rπ,N]

critic 衡量当前的策略有多好并且产生值函数的估计 c r i t i c ( h n ) ≈ E [ R π , N − R π , n ∣ h n ] critic(h_n)\approx E[R_{\pi, N}-R_{\pi, n}|h_n] critic(hn)E[Rπ,NRπ,nhn],因此损失函数定义为

L c r i t i c = 1 2 ∣ ∣ c r i t c ( h n ) − E [ R π , N − R π , n ∣ h n ∣ ∣ 2 \mathcal{L}_{critic}=\frac{1}{2}||critc(h_n)-E[R_{\pi, N}-R_{\pi, n}|h_n||_2 Lcritic=21critc(hn)E[Rπ,NRπ,nhn2

在强化学习中平衡 exploration 和 exploitation 是至关重要的,往奖励函数中添加一项即可平衡两者,就是 π ( n ) \pi(n) π(n) 的熵。

在本文的算法中,actor 是结合 BROW 和 SF 的。

另一方面,CL网络的训练方法就像普通的监督学习多分类任务那样,使用交叉熵损失函数。

L c l s = C E ( p n , a τ n ) L_{cls}=CE(p_n, a_{\tau_n}) Lcls=CE(pn,aτn)

根据上面所有的 loss, 我们得到该算法最终的 loss 函数

L g o b a l = L c l s + λ 1 L c r i t i c − λ 2 J a c t o r \mathcal{L}_{gobal}=\mathcal{L}_{cls}+\lambda_1\mathcal{L}_{critic}-\lambda_2 J_{actor} Lgobal=Lcls+λ1Lcriticλ2Jactor

其中 J a c t o r J_{actor} Jactor 项是不可微分的,我们用 REINFORCE 算法取得到的其期望梯度

▽ J a c t o r = ▽ E [ ∑ n = 1 N log ⁡ ( π ( n ) ) ( R π , n − E [ R π , n ∣ h n ] ) ] \bigtriangledown J_{actor}=\bigtriangledown E[\sum_{n=1}^N\log (\pi(n))(R_{\pi, n}-E[R_{\pi, n}|h_n])] Jactor=E[n=1Nlog(π(n))(Rπ,nE[Rπ,nhn])]

我们可以用蒙特卡洛采样方法近似这个等式,然后使用梯度下降最小化我们的 L g o b a l \mathcal{L}_{gobal} Lgobal

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
多智能体深度强化学习,用于群组分发中的任务卸载。 多智能体深度强化学习是一种强化学习的方法,可以应用于群组分发中的任务卸载问题。在群组分发中,有多个智能体,每个智能体都拥有一定的处理能力和任务需求。任务卸载是指将任务从一个智能体卸载到其他智能体上进行处理,以实现任务优化和系统性能的提升。 多智能体深度强化学习通过使用深度神经网络来构建智能体的决策模型,并基于强化学习框架进行智能体的训练和决策制定。在任务卸载中,每个智能体的状态可以由其当前的任务负载、处理能力和通信延迟等因素来表示。智能体的动作则是选择是否将任务卸载到其他智能体上进行处理。通过与环境交互,智能体可以通过强化学习来调整其决策策略,以优化任务卸载过程中的系统性能。 在多智能体深度强化学习中,可以使用任务奖励来指导智能体的行为。例如,当一个智能体选择将任务卸载给处理能力更高的智能体时,可以给予奖励以鼓励这种行为。同时,如果任务卸载导致较高的通信延迟或任务负载不均衡等问题,可以给予惩罚以避免这些不良的决策。 通过多智能体深度强化学习,可以实现群组分发中的任务卸载优化。智能体可以通过学习和适应来提高系统的整体性能和效率,从而实现任务分配的最优化。这种方法可以应用于各种领域,例如云计算、物联网和机器人协作等多智能体系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值