有关高效的视频行为识别架构设计

有关高效的视频行为识别架构设计

[1] TSM

[2] STM: SpatioTemporal and Motion Encoding for Action Recognition

[3] TEA: Temporal Excitation and Aggregation for Action Recognition

  • STM是并行的channel-wise空时模块+channel-wise运动激励模块

  • TEA是串行的运动激励+多时序聚合

[4] TEINet: Towards an Efficient Architecture for Video Recognition

  • TEINet和TEA的运动激励模块基本一样,两个方法没有互相比较,算是同期工作,在考虑长期时序依赖时的处理方式不同
  • TSM、STM、TEA、TEINet计算复杂度基本相当;TEA精度最高

[5] Grouped Spatial-Temporal Aggregation for Efficient Action Recognition

ICCV文章。在ResNet block中,利用通道分割加分组卷积学习的方式,思想简单且有效。

(在本人提出的HGCT文章里已经用到了这个思想,最近应用到卷积Transformer架构中,无效果,手工设定的通道分割策略也是次优选择吧。)

[6] TAM:Temporal Adaptive Module for Video Recognition。

  • TAM与先前工作相比更有新鲜感,采用的时序建模方式很不一样,应用动态卷积的思想。

[6] Temporal Distinct Representation Learning for Action Recognition

ECCV文章。这篇文章无代码。文章表述不够清晰。渐进式增强模块有利用强化学习的思想,用先前block的特征,增强当前block的特征,实际上文章对这个block怎么理解都没表述清楚。

TEINet: Towards an Efficient Architecture for Video Recognition

王利民组工作

Temporal Enhancement-and-Interaction (TEI module)

  • 主要思想:

TEI模块通过解耦通道相关性和时序相互作用的建模,提出了一种不同的范式来学习时间特征。

  • 模块设计:

    • 运动增强模块(Motion Enhancement Module, MEM)

      增强运动相关的特征、抑制不相关的特征

    • 时序交互模块(Temporal Interaction Module, TIM)

      以通道级的方式补充时序上下文信息

    两阶段的建模方案可以灵活且有效地获取时序结构高效进行模型推理

  • 论文中对时序信息建模发展的一些思考

    • TSN 直接忽略时间顺序,在最后一层分类层聚合时序信息

    • Stnet 和 TSM 实现缓慢且更早地表征时间特征(逐层表征),但涉及一些手动的设计,缺乏清晰的解释所以更能在时序建模上是次优的

    • 3D学习时间信息固然有效,但是2D到3D卷积的直接扩展导致的关键性问题是昂贵的计算开销。

    • 直觉上讲,视频中的时序结构可以多方面的受益

  • 视频中的时序信息对动作识别来说有什么用?

    • 运动信息 帮助关注运动的对象和人,这对动作识别来说是更有判别力的
    • 视觉特征的时序变化 这能够让我们获取视频中的动态变化,关联邻近帧的特征

    作者从这两点出发,先捕获判别式特征,再构建时序交互

    这种独特的设计使我们能够以更原则和更有效的方式分别捕获通道级相关性和时间关系。事实证明,这种独立的建模方案不仅能够灵活有效地捕获时间结构,而且在实践中保持较高的推理效率。

问题:通道级的相关性能表示时序运动?

在这里插入图片描述

  • 模块具体设计:

1, Motion Enhanced Module (MEM)

使用邻近帧级特征的时序差,以通道级的方式,增强运动相关的特征

输入特征 $x_{t} \in R^{C \times H\times W} $,

沿着空间维度 H × W H\times W H×W作平均池化聚合特征图,得到$\hat{x}_{t} \in R^{C \times 1\times 1} $;

利用池化得到的特征,生成通道注意力权重。

  • x t x_t xt x t + 1 x_{t+1} xt+1; 空间上的全局平均池化
  • 两个 1 × 1 1\times 1 1×1的卷积分别处理两个邻近帧的特征,降维
  • 降维后的邻近帧特征作差,再利用 1 × 1 1\times 1 1×1卷积恢复为原来维度
  • Sigmoid激活得到注意力权重 s t ^ \hat{s_t} st^
  • 增强运动显著的特征: u t = s t ^ x t u_t=\hat{s_t}x_t ut=st^xt

2,时序交互模块

针对运动增强获取的局部时间窗口信息,挖掘视觉模式的时序演变

T × C × H × W T\times C\times H\times W T×C×H×W -> C × T × H × W C\times T\times H\times W C×T×H×W

TAM: Temporal Adaptive Module for Video Recognition

Motivation

时序动态的复杂性由多种因素导致:摄像机运动、速度变化和不同的活动。

作者为了捕获这种运动模式上的差异(diverse motion pattern),提出时序自适应模块(Temporal adaptive module, TAM)。

先前工作对时序结构的处理

1,3D CNN

  • 简单的2D扩展引入昂贵的计算开销
  • 应用固定数量的视频不变的时序核,无法很好描述运动差异

2,最近为了更高效地获取视频的时序结构,一些工作:a . 在2D CNN的基础上设计轻量的时序模块;b. 设计专门的时序模块。

但是如何设计高效且具有很好灵活性的时序模块仍然是未解决的问题

TAM

概述

1,主要想法:基于自身的特征图生成特定视频的时序核(video-specific temporal kernels)

2, 怎么做:两层的自适应建模方案,将video-specific temporal kernels解耦为位置敏感的重要性图位置不变的聚合权重

location sensitive importance map: 在局部时间窗口中获取短期时间信息,增强local view中具有判别力的时序信息

location invariant aggregation weight: 全局地关注长期的时序结构,获取global view中的时序依赖

3,TAM的设计遵循两个准则: high efficiency and strong flexibility

具体细节

在这里插入图片描述

1,保证TAM的低计算开销:

应用全局空间池化,squeeze特征图;

以channel-wise的方式构建TAM来保证效率

2,TAM由两个分支组成:

Local branch: $\mathcal{L} $

Global branch: $\mathcal{G} $

实施细节

一个视频clip的输入特征图:

X ∈ R C × T × H × W X\in R^{C\times T\times H\times W} XRC×T×H×W的方式,,输入到TAM中。

经过空间全局平均池化,得到 X ^ ∈ R C × T \hat{X}\in R^{C\times T} X^RC×T

Local branch

1, Conv1D(kernel_size=3)+BN+ReLU : 减少通道数目 C − > C β C -> \frac{C}{\beta} C>βC; β = 4 \beta=4 β=4

2, Conv1D(kernel_size=3)+Sigmoid 得到注意力权重, V ∈ R C × T V\in R^{C\times T} VRC×T

3, Rescale V ∈ R C × T V\in R^{C\times T} VRC×T -> V ^ ∈ R C × T × H × W \hat{V}\in R^{C\times T\times H \times W} V^RC×T×H×W

4, 与原始输入特征 X X X作元素级点乘,得到 Z ∈ R C × T × H × W Z\in R^{C\times T\times H \times W} ZRC×T×H×W

Global branch

全局的分支是局部不变的,目的是基于长期的时序信息生成一个自适应的核。它结合全局上下文信息,学习生成位置不变量和视频自适应卷积核,用于动态聚合。

怎么做呢?

这里作者选择为每个视频片段生成动态时序核,并以卷积的方式聚合时间信息。

为了简化过程且保证高效性,以channel-wise的方式应用自适应卷积,学习到的自适应核用于建模时序关联,而不考虑通道关联。

因此,TAM不会改变输入特征图的通道数目,学习到的自适应核以channel-wise的方式卷积输入特征图。

公式化表达如下

c t h c^{th} cth个通道,the adaptive kernel的学习过程如下:

Θ c = G ( X ) c = s o f t m a x ( F ( W 2 ) , δ ( F ( W 1 ) , ϕ ( X ) c ) \Theta_{c}=\mathcal{G}(X)_c=softmax(\mathcal{F}(W_2),\delta(\mathcal{F}(W_1),\phi (X)_c) Θc=G(X)c=softmax(F(W2),δ(F(W1),ϕ(X)c)

Θ c ∈ R K \Theta_{c}\in R^{K} ΘcRK

1,FC_layer1+ReLU: X ^ ∈ R C × T \hat{X}\in R^{C\times T} X^RC×T-> X ^ ∈ R α C × T \hat{X}\in R^{\alpha C\times T} X^RαC×T;( α = 2 \alpha=2 α=2

2, FC_layer2+Softmax

softmax产生的是positive aggregation weight

学习到的聚合权重

Θ = Θ 1 , Θ 2 , . . . Θ C \Theta={\Theta_1, \Theta_2,...\Theta_C} Θ=Θ1,Θ2,...ΘC

视频自适应聚合: Y = G ( X ) ⊗ X Y=\mathcal{G}(X)\otimes X Y=G(X)X,

G \mathcal{G} G生成的Kernel可以进行自适应卷积,但仍然在所有的时序维度共享,并且仍然是location invariant(位置不变的)。
在这里插入图片描述

位置敏感的激励和位置不变的聚合都是从输入特征图中推理得到的,但是关注了短期和长期两种时序模式。

Note

1,作者在局部和全局分支中都利用了两层的Conv1D堆叠或,两个FC层来实现非线性拟合能力和模型复杂度的折中。

2,全局分支借鉴了动态卷积的思想,直接生成动态核的权重,论文中设置动态核的接受域为K。

对每个通道,学习到的动态核的形式为:[0,0,1];[0,1,0];[1,0,0]三种么?还是更多排列组合?

ECCV-Temporal Distinct Representation Learning for Action Recognition

Motivation

2D CNN在分析视频时,不同的视频帧共享相同的卷积核,这可能导致重复且冗余的信息利用,尤其是在空间语义提取上,因此忽略了关键的帧间变化信息。

Mian idea

作者尝试通过两种方式来解决这个问题,

  1. Design a sequential channel fifiltering mechanism, i.e., Progressive Enhancement Module (PEM),);

    一步步地从不同帧中,激励具有判别力的通道特征,从而避免重复的信息激励

  2. 构造时序差异损失,force卷积核关注帧间的时序变化,而不是具有相似外观的图像区域

Solutions

深层CNN中,高层输出的每一个特征通道都与某种语义模式相关。

因此在2D CNN中,不同帧生成的特征通道可能共享多个相似通道,这将导致重复且冗余的信息提取用于视频分析。

信息滤波模块Progressive Enhancement Module (PEM)

自适应地、顺序地增强具有判别力的通道, 同时在运动历史信息的帮助下,对每一帧的重复特征进行抑制。

1,PEM根据先前时间步骤中的运动观察逐步确定当前帧的特征映射的增强。

这种时序增强学习方式明确地考虑了帧的时间顺序,使网络本身能够有效地避免收集相似通道,并充分利用不同时间帧的信息

2,在PEM后,作者设置时序建模模块,时序上融合增强的特征,使来自不同帧的增强特征互相交互。

3,通过时序差异损失进一步校准卷积核,使卷积核的学习更关注于帧间的变化

具体方法

在这里插入图片描述

Progressive Enhancement Method

作者将每一个视频帧表示为一个特征block? 第一遍看没明白这个 block是啥意思,不同的特征表达块?

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OpenCV(Open Source Computer Vision Library)是一款开源的计算机视觉库,专门为图像和视频处理任务设计,广泛应用于学术研究、工业应用以及个人项目中。以下是关于OpenCV的详细介绍: 历史与发展 起源:OpenCV于1999年由英特尔公司发起,旨在促进计算机视觉技术的普及和商业化应用。该项目旨在创建一个易于使用、高效且跨平台的库,为开发者提供实现计算机视觉算法所需的基础工具。 社区与支持:随着时间的推移,OpenCV吸引了全球众多开发者和研究人员的参与,形成了活跃的社区。目前,OpenCV由非盈利组织OpenCV.org维护,并得到了全球开发者、研究机构以及企业的持续贡献和支持。 主要特点 跨平台:OpenCV支持多种操作系统,包括但不限于Windows、Linux、macOS、Android和iOS,确保代码能够在不同平台上无缝运行。 丰富的功能:库中包含了数千个优化过的函数,涵盖了计算机视觉领域的诸多方面,如图像处理(滤波、形态学操作、色彩空间转换等)、特征检测与描述(如SIFT、SURF、ORB等)、物体识别与检测(如Haar级联分类器、HOG、DNN等)、视频分析、相机校正、立体视觉、机器学习(SVM、KNN、决策树等)、深度学习(基于TensorFlow、PyTorch后端的模型加载与部署)等。 高效性能:OpenCV代码经过高度优化,能够利用多核CPU、GPU以及特定硬件加速(如Intel IPP、OpenCL等),实现高速图像处理和实时计算机视觉应用。 多语言支持:尽管OpenCV主要使用C++编写,但它提供了丰富的API绑定,支持包括C、Python、Java、MATLAB、JavaScript等多种编程语言,方便不同领域的开发者使用。 开源与免费:OpenCV遵循BSD开源许可证发布,用户可以免费下载、使用、修改和分发库及其源代码,无需担心版权问题。 架构与核心模块 OpenCV的架构围绕核心模块构建,这些模块提供了不同层次的功能: Core:包含基本的数据结构(如cv::Mat用于图像存储和操作)、基本的图像和矩阵操作、数学函数、文件I/O等底层功能。 ImgProc:提供图像预处理、滤波、几何变换、形态学操作、直方图计算、轮廓发现与分析等图像处理功能。 HighGui:提供图形用户界面(GUI)支持,如图像和视频的显示、用户交互(如鼠标事件处理)以及简单的窗口管理。 VideoIO:负责视频的读写操作,支持多种视频格式和捕获设备。 Objdetect:包含预训练的对象检测模型(如Haar级联分类器用于人脸检测)。 Features2D:提供特征点检测(如SIFT、ORB)与描述符计算、特征匹配与对应关系估计等功能。 Calib3d:用于相机标定、立体视觉、多视图几何等问题。 ML:包含传统机器学习算法,如支持向量机(SVM)、K近邻(KNN)、决策树等。 DNN:深度神经网络模块,支持导入和运行预训练的深度学习模型,如卷积神经网络(CNN)。 应用领域 OpenCV广泛应用于: 科研与教育:作为计算机视觉教学和研究的基础工具,OpenCV简化了算法原型开发与验证过程。 工业自动化:在视觉检测、机器人导航、产品质量控制等工业场景中,OpenCV用于实时图像分析与决策。 安防监控:用于人脸识别、行人检测、行为分析等智能监控系统。 医疗影像分析:在医疗领域,OpenCV可用于医学图像处理、病灶检测、诊断辅助等应用。 自动驾驶:在车辆视觉感知系统中,OpenCV用于道路标志识别、障碍物检测、车道线识别等任务。 多媒体应用:如图像编辑软件、AR/VR应用、游戏开发等,利用OpenCV进行图像和视频处理。 物联网与嵌入式系统:在资源受限的嵌入式设备上,OpenCV提供轻量级的计算机视觉解决方案。 学习与社区资源 OpenCV拥有丰富的官方文档、教程、示例代码以及活跃的开发者社区,包括GitHub、StackOverflow、官方论坛等,为学习和使用OpenCV提供了有力支持。此外,有许多书籍、在线课程、博客文章和研讨会专门讲解OpenCV的使用和计算机视觉技术。 综上所述,OpenCV作为一款功能强大、高效、跨平台且开源的计算机视觉库,为开发者提供了实现各类图像和视频处理任务所需的工具箱,其广泛的应用领域和活跃的社区支持使之成为计算机视觉领域不可或缺的开发工具。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值