Two-Stream SR-CNNs for Action Recognition in Videos

该博客介绍了用于视频动作识别的两流SR-CNNs框架,通过Faster R-CNN提取场景、人和物体的特征,并使用多种融合策略进行得分整合。实验在UCF101和JHMDB数据集上取得高准确率。详细内容包括框架设计、语义通道、实现细节和评估。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

paper:http://www.bmva.org/bmvc/2016/papers/paper108/index.html
code:https://github.com/yifita/action.sr_cnn
三作主页:http://wanglimin.github.io/

Two-Stream SR-CNNs for Action Recognition in Videos

dataset : UCF101 JHMDB(split 1)
accuracy: 92.6 53.77

framework

输入仍然是双流,但是将RGB和flow都经过了faster-rcnn,得到不同的区域分为了场景、人、物体三类,分别输入网络进行训练。
这里写图片描述

The inputs are first passed through standard convolutional and pooling layers.We replace the last pooling layer with a RoiPooling [2] layer, which separate features for different semantic cues into parallel fully connected layers (called channels) using bounding boxes proposed from a Faster R-CNN [18] object detector (see subsection 3.2).

每个channel都会得到独立的分数,由于有多个物体,作者采用了MIL((Multiple Instance Learning)来结合最有用的信息。最后所有的score都通过一个fusion layer,得到最终的预测结果。

Fusion

fusion的策略,作者提出了4个:

  • Max fusing takes the maximum score value among all channels for each class, essentially picking the strongest channel.
  • Sum fusion directly adds up the scores from different channels, i.e. each channel is treated equal.
  • Category-wise weighted fusion (Weighted-1) combines channel scores via weighted sum, aiming to represent varied relative contribution of each channel for different classes using their corresponding weights.
  • As for correlationwise weighted fusion (Weighted-2), the scores of other classes are also taken into consideration
### 基于Transformer的空间时间网络在人体动作识别中的研究论文与实现 #### 研究背景与发展现状 近年来,随着深度学习技术的发展,基于Transformer架构的空间时间网络逐渐成为人体动作识别领域的重要方法之一。这类模型通过引入自注意力机制来捕捉视频序列中复杂的时空关系,显著提升了动作识别的效果。 #### 关键技术特点 - **多尺度特征提取**:利用卷积神经网络(CNNs)对输入帧进行初步处理,获取不同层次的视觉特征表示[^1]。 - **空间编码器**:采用标准的ViT(Visual Transformer)结构作为骨干网,在单个图像上构建强大的局部感知能力的同时保持全局理解力。 - **时间建模模块**:不同于传统的RNN/LSTM单元,这里设计了一种特殊的Temporal Encoder Layer用于表征相邻帧间的关系变化规律,从而增强对于动态行为的理解程度。 #### 实现框架概述 一种典型的基于Transformer的人体姿态估计方案可以概括如下: ```python import torch.nn as nn class SpatialTemporalTransformer(nn.Module): def __init__(self, num_classes=400): super(SpatialTemporalTransformer, self).__init__() # 定义CNN层以获得基础特征图谱 self.backbone = BackboneNet() # 构造一系列堆叠起来的时间维度上的transformer blocks self.temporal_transformers = nn.Sequential(*[ TemporalBlock() for _ in range(num_layers)]) # 分类头部分 self.classifier = ClassifierHead(num_classes) def forward(self, x): batch_size, seq_len, c, h, w = x.shape # 提取每帧的基础特征向量 features = [] for t in range(seq_len): feature_t = self.backbone(x[:,t,:,:,:]) features.append(feature_t.unsqueeze(dim=1)) spatial_features = torch.cat(features,dim=1) # 序列化后的数据送入temporal transformer做进一步加工 temporal_output = self.temporal_transformers(spatial_features) # 获取最终预测结果并返回 logits = self.classifier(temporal_output.mean(dim=1)) return logits ``` 此代码片段展示了如何定义一个简单的Spatio-Temporal Transformer模型来进行分类任务。实际应用时还需要考虑更多细节优化以及针对具体场景调整参数配置等问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值