image.png

论文链接:https://arxiv.org/abs/2210.11035
代码链接:https://github.com/MCG-NJU/PointTAD

 

导读

PointTAD 基于一组稀疏时序点(query points)来形成更加精细的动作时序表征,解决多类别时序动作检测中并发动作定位和复杂动作建模两大难题。配合稀疏点设计,我们提出了基于时序点表示的有效训练策略和多尺度动作解码结构,大大增强了我们在较复杂的多类别视频中的动作检测能力。PointTAD只基于RGB输入,支持端到端训练和测试、易于部署,在MultiTHUMOS和Charades这两个多类别视频数据集上获得了SOTA的detection-mAP。

 

贡献

时序动作检测(Temporal Action Detection, TAD)旨在对一段未经剪辑的视频检测其中人类动作的开始、结束时间和动作类别。经典的时序动作检测面向的是一个较为理想的视频场景。在常用的TAD数据集(THUMOS,ActivityNet,HACS)中,大部分视频只被标注了同一个类别的动作:85%的THUMOS视频只标注了同一个类别的动作。不仅如此,这些动作标注之间也基本不存在时序上的重合。因此,主流的经典TAD工作常常将任务简化成由时序候选框生成和视频分类组成的两阶段问题。然而在现实场景中的视频里,不同类别的动作往往会同时发生。因此,我们将研究重心转移到更加复杂的多类别时序动作检测(Multi-label Temporal Action Detection, Multi-label TAD),在包含多种类别的动作标注的视频中检测出所有动作。

过往的Multi-label TAD方法采用密集预测的方法来解决这个问题:在输入视频的每一帧预测一个类别向量进行多类别分类。密集预测无法生成由一对开始-结束时间点组成的动作预测,容易形成不完整的预测框,因此定位效果较弱。类似图片实例分割,我们认为很有必要将Multi-label TAD从一个帧级别的分割问题重新定义为一个实例检测问题,其输出除了包括动作标签外,还应该包括由开始-结束时间戳表示的确切时序位置。

虽然经典TAD方法是从实例检测的角度来解决动作的时序定位,但直接套用经典TAD框架并不能很好的解决Multi-label TAD中存在的并发动作精细定位复杂动作建模这两大挑战。经典的TAD框架依赖于动作segment,并采用均匀采样从segment上形成动作表征。这样的策略无法灵活的同时关注动作内部重要的语义帧和动作边缘具有区分性的边界帧。如图1所示,在检测动作"Jump"的时候,基于segment的动作检测方法往往会产生两类错误预测:

  • S1虽然正确的预测了动作类,但因为只捕捉到了动作的语义关键帧而形成了不完整的动作框;

  • S2较好的预测了动作的边界,但由于粗糙的动作表征导致了分类错误。

因此,我们需要一种更加精细的时序动作检测框架来同时建模动作内部的语义关键帧和动作边界帧。

image.png

图1. 基于segment的时序动作检测模型在Multi-label TAD任务上的预测和错误案例。

 

基于上述的问题,我们基于先进的query-based框架提出了一种基于稀疏点表示的时序动作检测框架。相比于在segment上均匀采样,稀疏的时序点可以较为灵活的为不同的动作学到较为重要的帧的位置,通过提取点对应的特征即可获得一个更加精细的特征表示。为约束时序点的学习,我们 follow RepPoints [1],用回归损失函数直接规约点的位置分布。给定groundtruth动作的位置和类别,时序点可以自适应的定位到动作的边界帧和动作内部的语义关键帧。

因此,有较大重叠的动作可以通过不同的时序点位置获得不同具有区分性的特征。配合稀疏点表示,我们提出多尺度交互模块(Multi-level Interactive Module)来增加并发、复杂动作解码能力。多尺度交互模块在point-level利用基于动作特征向量的可变形算子在邻域连续帧上进行时序建模,为每个时序点生成局部点特征;在动作instance-level采用基于动作特征向量的frame-wise和channel-wise的动态一维卷积,沿着同一动作预测中的时序关键帧和特征通道并行地完成mixing操作。

 

方法

PointTAD采用query-based时序动作检测框架,包含两个部分:backbone network 和 action decoder,模型支持端到端训练和测试,结构图如图2。类似 AdaMixer[2]等query-based检测器,我们将动作query解耦为一组query points和一个query vector,其中query points主要表示动作的时序位置,query vector表征动作特征。在每一个解码层,依据query point特征通过多尺度交互模块更新query vector,更新后的query vector再预测偏移量更新query point,每一层输出的query points和query vector都作为输入传递到下一层。

image.png

图2. PointTAD模型示意图

 

基于可学习时序点的稀疏表示

由于视频内容在时序上存在冗余、且在不同时序位置的冗余程度不一致,因此基于segment生成的动作表征(用一对开始-结束时间点表示一个动作)很难在定位动作边界位置的同时从内容中准确提取关键内容。我们提出了一组可学习的query points集合\( \mathcal{P} = \{t_j\}_{j=1}^{N_s} \)来更加灵活地采样动作表征:同时采样动作的边界帧和语义关键帧。我们主要介绍query points的迭代过程和学习策略。

时序点的迭代更新 在训练过程中, query points被初始化在输入视频的中点,而后在每个解码层被对应的query vector所更新。在第 l 层解码层, query vector为 个 query points预测偏移量 \( \left\{\Delta t_{j}^{l}\right\}_{j=1}^{N_{s}} \) ,偏移量被参数 \( s^{l} \) 缩放后更新点的位置:\( \mathcal{P}^{l+1}=\left\{\left(t_{j}^{l}+\Delta t_{j}^{l} \cdot s^{l} \cdot 0.5\right)\right\}_{j=1}^{N_{s}} \)。缩放参数\( s^{l}=max \left(\left\{t_{j}^{l}\right\}\right)-min \left(\left\{t_{j}^{l}\right\}\right) \)度量了当前query points的时序分布直径,在动作较短时缩短更新步长,帮助较短动作的精细调整。

基于伪框的学习策略 由于query points的分布灵活,因此需要可靠的训练策略约束这些点学习动作的边界帧。我们设计了一种基于pseudo segments(伪框)的训练策略,将每层解码层更新后的query points转化为 pseudo segments加入样本标签分配和回归损失函数计算。将query points映射为 sseudo segments的函数记为 \( \mathcal{T}: \mathcal{P}=\left\{t_{j}\right\}_{j=1}^{N_{s}} \rightarrow \mathcal{S}=\left(t^{s}, t^{e}\right) \)。我们探究两 种不同的转换函数:Min-max ( )和 Partial Min-max(  )。

  • Min-max 取点集 中的时序位置最小值和时序位置最大值作为pseudo segment的开始和结 束帧: \( \mathcal{T}_{1}: \mathcal{P} \rightarrow min \left(\left\{t_{j}\right\}_{j \in \mathcal{P}}\right), max \left(\left\{t_{j}\right\}_{j \in \mathcal{P}}\right) \) 。在Min-max的训练策略下, query points只会学习到动作内部的关键帧,而对动作上下文的建模较少。

  • Partial Min-max首先从点集 中取子集 \( \mathcal{P}_{{local }} \) ,而后在 \( \mathcal{P}_{{local }} \) 中取时序最小最大位置形成伪框: \( \mathcal{T}_{2}: \mathcal{P} \rightarrow min \left(\left\{t_{j}\right\}_{j \in \mathcal{P}_{{local }}}\right), max \left(\left\{t_{j}\right\}_{j \in \mathcal{P}_{{local }}}\right) \)。Partial Min-max 在Min-max的基础上允许 \( \mathcal{P} \backslash \mathcal{P}_{{local }} \) 中的点不受回归损失函数约束,可以在全局范围结合动作的上下文特征。

多尺度交互模块

除了动作的segment表示带来的问题,之前的时序动作检测器在对采样帧的解码过程中也缺乏对帧之间多尺度语义信息的考察。配合稀疏点表示,我们在动作解码器设计了多尺度交互模块,从点层次结合局部时序信息生成query point 特征、从实例层次对候选框内的时序点的关系建模。点层次和实例层次的可变形参数和动态卷积参数都由动作特征(query vector)通过线性变换得到,使得每个动作预测对其对应的时序点都有各自的变换,形成具有区分性的特征。模块的示意图如图3。

image.png

图3. 多尺度交互模块(Multi-level Interactive Module)示意图

 

点层次的局部可变形算子 在point-level,我们利用局部可变形卷积为每个时序点建模邻域的时序结构。以每个query point为中心点,我们基于query vector预测4个偏移量和对应的权重,形成4个sub-point。用双线性插值采样sub-point之后,对权重归一化并加权相加sub-point特征,得到中心query point的特征。

实例层次的自适应动态卷积 在instance-level,我们不仅对每个query point的特征进行通道建模,也对描述同一个动作候选的所有query points之间的特征进行建模。我们采用Sparse R-CNN[3], AdaMixer[2]中的动态一维卷积沿着通道和关键帧进行Mixing(混合)。区别于之前的检测器,我们发现顺序卷积对检测性能有较大的损害(见消融实验),因此采用并行结构对通道和帧进行mixing (Parallel Mixing)。对通道维度我们采用bottle-neck的两层动态卷积,对时序维度我们采用一层动态卷积。Mixing后的特征沿着通道拼合,通过linear变换到query vector的维度,通过残差结构更新query vector。

训练与测试

损失函数 类似其他query-based时序动作检测框架RTD-Net[4],我们用hungarian matcher来进行正负样本分配,根据预测和gt的匹配结计算损失函数。

\( \mathcal{L} = \lambda_{loc} \cdot \mathcal{L}_{loc} + \lambda_{cls} \cdot \mathcal{L}_{cls}. \)

\( \mathcal{L}_{loc} = \sum_{n:\sigma_*(n) \neq \varnothing} \mathcal{L}_{L_1}(\mathcal{T}(\mathcal{P}_n), \hat{\psi}_{\sigma_*(n)}) + (1 - {\rm tIoU}(\mathcal{T}(\mathcal{P}_n), \hat{\psi}_{\sigma_*(n)})). \)

\( \mathcal{L}_{cls} = \sum_n \mathcal{L}_{ce}(c_n, \hat{c}_{\sigma_*(n)}) + \lambda_{seg} \mathcal{L}_{ce}(S, \hat{S}). \)

除此之外,为了保持与过往Multi-label TAD工作一致,我们基于预测结果计算segmentation-mAP,并额外密集预测per-frame的类别向量来辅助instance prediction结果。因此,在分类损失函数中我们加入一项per-frame loss,在dense prediction结果和dense groundtruth 之间计算cross-entropy loss来帮助学习per-frame的类别向量,得到最终的损失函数表示。

测试 PointTAD采用线性层从query vector中预测动作向量,用query points生成的伪框作为动作定位结果。对于detection-mAP,我们直接用instance预测结果计算。对于segment-mAP,我们将instance预测和dense per-frame 类别向量 S 融合得到密集预测结果 \( S_{final} \) 参与计算:

\( S_{final} = \beta \cdot \sum_{n=1}^{N_q}{\mathbb{1}_{c_n > \gamma} \cdot {\rm Gaussian}(\psi_n)}+ (1-\beta) \cdot S. \)

 

实验

我们在 MultiTHUMOS和Charades上进行实验,计算了detection-mAP和Segmentation-mAP。

可以看到,PointTAD在更能度量动作检测性能的detection-mAP上远远超过之前的Multi-label TAD方法,在依赖于密集预测的segmentation-mAP上也取得了comparable的结果。

image.png

我们在 MultiTHUMOS 上进行多个消融实验,验证各模块的效果。在此讨论几个比较有意思的实验。

image.png

表(a), (f) 来自正文Table2,表(S7a)来自附录Table7。
  • 表(a) 对比了动作segment + 时序RoI Align 和 Query Points + 可变形卷积的检测效果,可以看到基于segment的均匀采样显著弱于更加灵活的query point表示。

  • 表(f) 探究了Instance-level的channel-wise和frame-wise mixing,我们发现顺序组合相比单独进行通道混合和帧混合更加损害检测性能,而并行组合可以获得最佳的效果。

  • 表(S7a) 探究了端到端训练中输入RGB图片分辨率对结果的影响,结合最近的端到端TAD研究结果[5][6],我们发现Multi-label TAD需要更大的输入空间分辨率来支持更难的动作检测。

结果可视化

我们可视化了单个动作预测中每层的query point位置,可以看到local query points可以很快的定位到动作位置,并进一步精细回归动作边界,global points 分布在全局范围结合上下文信息。

image.png

单个动作预测中每层的query points位置可视化

 

我们还可视化了多类别场景下的query points对不同类别的并发动作的检测,并展示每个query point所对应的关键帧。可以看到对于重叠程度较大的动作 Fall,JavelinThrow(掷标枪)和 Run,我们的动作预测对应了不同的query points,并且在类似的background下,query points分别为fall动作的预测选中了人物摔倒的几帧,为掷标枪提取了描绘投掷动作的图片帧,为Run选中人物奔跑的帧而避开了投掷帧。由此可以看出,query point确实可以学到语义关键帧,同时保持较好的定位效果。

image.png

多类别场景下的基于query point的动作预测可视化