AdaTAD(CVPR 2024)视频动作检测方法详解

news2025/5/14 13:04:31

前言

论文:End-to-End Temporal Action Detection with 1B Parameters Across 1000 Frames
代码:AdaTAD

  从论文标题可以看出,AdaTAD 可以在 1B 参数且输入视频在 1000 帧的情况下实现端到端的训练,核心创新点是引入 Temporal-Informative Adapter (TIA) 模块来减少训练内存提高性能。
  本文先根据代码说明模型训练全过程,再根据论文部分内容说明训练策略和改进思路。

Backbone

在这里插入图片描述
  本文调试的模型使用 VideoMAE-S 作为 Backbone,此处简单介绍一下 MAE 的思想。CV 领域通常用分来任务来获取预训练模型,如图像分类、动作分类。MAE 是借鉴 NLP 完形填空的方式来训练预训练模型,遮住句子中的单词预测单词 → \to 遮住图像中的像素预测像素 → \to 遮住视频序列帧中的每张图像的像素预测像素。本质上都是对原始输入抽特征。

  • Conv3d 上方参数分别代表在时间维度 size=2, stride=2, padding=0,空间维度 size=16, stride=16, padding=0
  • 位置编码 Pos 按原版 Transformer 的方式用三角函数生成,词向量的数量为 ( 224 / 16 = 14 ) 2 × 8 (224/16=14)^2\times8 (224/16=14)2×8,为了适应不同的分辨率会对原始 Pos 做插值调整,具体过程为 [1,1568,384] → \to [8,14,14,384] → \to [8,384,14,14] → \to 线性插值 [8,384,10,10] → \to [8,100,384] → \to [1,800,384]
  • 在训练时会冻结除了 AdapterDropPath 以外的部分,关于训练策略方面之后和论文一起说明。
  • 预处理 Preprocess 将输入数据的 768 帧拆分成 48 段 16 帧的小切片,后处理 Postprocess 的具体过程为 [96,384,8,10,10] → \to 空间维度求均值 [96,384,8] → \to 维度变换 [(b,t1),c,t]->[b,c,(t1,t)]=[2,384,384] → \to 时间维度线性插值 [2,384,768]
  • AttentionFFN 的具体细节如下,其中 attention 为 torch.nn.functional.scaled_dot_product_attention,激活函数为 torch.nn.GELU。
    在这里插入图片描述
  • 从上面 Transformer 的结构可以看出,注意力的计算局限于小切片的 16 帧,Adapter 模块就是对整个时间维度做一次特征融合,具体操作如下所示。第一个 Conv1d 上方参数 groups=96,具体请看 此处。与论文中结构图对应,FC 替换为 Conv1d。从操作上看就是把 BatchSize 中的时间部分提取出来,把空间部分合并进去,然后对整体的时间维度做一维卷积。
    在这里插入图片描述

在这里插入图片描述

projection

在这里插入图片描述

  • CLR 代表 Conv1d + LayerNorm + ReLU,具体过程为 x = ReLU(LN(conv(x) * mask)) * mask,其中 Mask 形状为 [2,768] 代表原始帧是否为 padding 所得,在后续的操作中会一直用到 Mask(Backbone 阶段没有用)。
  • 输入按照上图的流程得到了第一个特征 Feature [2,512,768],在这之后还有 5 个结构相同的 block,每个 block 会对时间维度下采样 2 倍得到其余 5 份特征构成特征金字塔 [2,512,768/384/192/96/48/24]
  • AttentionMLP 的具体细节如下,基本就是将原始 Transformer 结构中全连接层用卷积替代了。对于后 5 个下采样的 block,将 Attention3,1,1,512 的卷积参数改为 3,2,1,512
    在这里插入图片描述
att = (q * self.scale) @ k.transpose(-2, -1)
att = att.masked_fill(torch.logical_not(kv_mask[:, None, None, :]), float("-inf"))
att = F.softmax(att, dim=-1)

Head

在这里插入图片描述

  • 特征经过分类和回归分支,分别对应动作类别和动作时间段。这里每一层特征使用的 Head 权重是共享的。

Loss

  分类损失使用 torch.nn.functional.binary_cross_entropy_with_logits,回归损失为 1 − D I o U 1-\mathrm{DIoU} 1DIoU。正样本选取的具体细节需要结合代码说明比较复杂,这里简单说一下整体思路。

  • 输入数据与标签
    数据最原始的标签是动作发生的起始时间和结束时间(单位:s),在 DataLoader 阶段对原始视频每 4 帧取 1 帧得到原始输入,视频的起点随机,不足的帧会做 padding 并对应生成 Mask,同时标签转化为对这个视频段的帧索引(转化过程按照原始视频帧索引操作,因此最终索引并非是整数)。总之,输入为 768 帧构成的视频段,标签为第几帧至第几帧为什么动作。
  • Anchor Free Points
    AdaTAD 使用 Anchor Free 的方式做检测,对应图像目标检测特征图上空间分辨率的点作为一个 Anchor Point,动作检测用时序上点作为 Anchor Point。具体 Points 的构成如下,对应 6 层特征,每个 Point 有 4 个值,p[0] 代表的是时序点坐标,p[1]p[2] 代表一个范围在后续正样本选取中说明,p[3] 代表时间维度的下采样倍率 stride。

在这里插入图片描述

  • 正样本选取
    • 条件1
      p[0] 是否在 box 全范围或是 box 中心范围的内部(取较小的范围),这个中心范围大小由 p[3] 生成。
    • 条件2
      p[0] 距离 box 两端边界的较大值是否在 p[1]p[2] 定义的范围内,可以看出和目标检测相对于,分辨率高的浅层特征用于检测小目标 / 短动作。
    • 当一个 Anchor 可以和多个 box 匹配时,选择动作时间最短的。

论文

  论文的一个核心研究点在于训练策略,表1 探索了输入形式和预训练模型的使用方式。Setting 中 Frozen 代表冻结 Backbone,End-to-End 代表开放 Backbone 做微调。输入形式中,Snippet 代表每个时间点是一个视频切片包含 16 帧,切片与切片之间可以有重叠区域。

在这里插入图片描述
  本文调试的代码模型对应图2.c,使用了 parameter-efficient tuning (PEFT) 机制,在 Backbone 中插入 TIA 模块,只训练模块参数,但是梯度仍然需要通过整个 Backbone 来进行反向传播,因此提出了 d 方式,将 TIA 放置在 Backbone 外面,输出直接加到最后一层的输出中,梯度便不需要经过整个网络。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2215760.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STM32传感器模块编程实践(六) 1.8寸液晶屏TFT LCD彩屏简介及驱动源码

文章目录 一.概要二.TFT彩屏主要参数三.TFT彩屏参考原理图四.TFT彩屏模块接线说明五.模块SPI通讯协议介绍六.TFT彩屏模块显示1.显示英文字符串2.显示数字3.显示中文 七.TFT彩屏实现图片显示八.STM32单片机1.8寸 TFT LCD显示实验1.硬件准备2.软件工程3.软件主要代码4.实验效果 九…

【C++】——list 容器的解析与极致实现

人的一切痛苦,本质上都是对自己的无能的愤怒。 —— 王小波 目录 1、list 介绍 2、list的使用 2.1 list 的构造 2.2 iterator 的使用 2.3 list 的修改 2.4一些特殊接口 2.5 迭代器失效问题 3、实现list 3.1底层结构 结点类 list类 迭代器类 3.2功能接…

VLOG视频制作解决方案,开发者可自行定制包装模板

无论是旅行见闻、美食探店,还是日常琐事、创意挑战,每一个镜头背后都蕴含着创作者无限的热情和创意。然而,面对纷繁复杂的视频编辑工具,美摄科技凭借其前沿的视频制作技术和创新的解决方案,为每一位视频创作者提供了开…

服务端负载均衡和客户端负载

负载均衡分为服务端负载均衡和客户端负载均衡,图解: 客户端的负载均衡还需要从注册中心获取集群部署的服务地址,其中客户的负载均衡器定时读取注册中心的IP和端口,然后缓存起来,这样以后可以先判断缓存IP和端口是否可用…

矩阵基础知识

矩阵定义 矩阵的定义 1.矩阵是由一组数按照矩形排列而成的数表。矩阵通常用大写字母表示,例如 AA、BB 等。矩阵中的每个数称为矩阵的元素或元。 一个 mn的矩阵 AA 可以表示为: 其中 aij表示矩阵 A中第i行第j列的元素。 矩阵的维度 1.矩阵的维度由它…

城市形态计算方法

1、天空可视率(Sky view factor sky) (1)准备地形数据、带高度的建筑矢量数据 (2)将建筑矢量数据投影栅格,利用栅格计算器和镶嵌至新栅格得到带有建筑高度数据的地形数据 (3&…

[Windows] 屏幕截图工具Snipaste 开发过程更轻松

前言 老大:你去把用户登录代码写完。 老大:你把这周的周报发一下 老大:你把生产的数据清理一下。 结果… 今天刚把登录代码写完,下班,明天就处理别的事情去了!!! 之后我就… 直接…

MATLAB智能算法 - AntColonyOptimization蚁群算法

AntColonyOptimization蚁群算法 智能算法是路线规划、深度学习等等一系列领域所使用的优化算法,是算法进阶之路的必备之路。 前言:本文主要围绕解决TSP旅行商问题展开,对于机器人的路线规划以及非线性方程求解的问题等解决方案 对于一些其他优…

线上找工作小程序源码系统 带完整的安装代码包以及搭建部署教程

系统概述 这款线上找工作小程序源码系统是一款集成了岗位发布、简历投递、在线沟通等核心功能的一站式解决方案。系统采用主流的技术栈开发,如PHP后端配合MySQL数据库,前端则利用了Vue.js框架或原生微信小程序技术,确保了系统的高性能与良好…

AWS账号与邮箱的关系解析

在当今数字化时代,云计算服务的普及使得越来越多的企业和个人用户开始使用亚马逊网络服务(AWS)。作为全球领先的云服务平台,AWS为用户提供了丰富的计算、存储和数据库服务。然而,对于许多新用户来说,关于AW…

IT圈大实话!卷运维不如卷网络安全

前言 在刚刚过去的金九银十,我进行了多场网络安全的技术面试,我发现最近很多从事运维的选择了辞职,转行到了网络安全这个发展路线。 说实话,运维工程师这个岗位在IT行业里面确实是处于最底层的,不管什么环节出现问题…

从“寻鲜市集”看巴奴产品主义的「新生命力」

【潮汐商业评论/原创】 “这个就是获得‘国家地理标志产品’的金阳青花椒,七分麻三分香,是麻辣火锅的灵魂;这个菌汤用了3种云南野生牛肝菌熬制,味道鲜香,口感顺滑;还有这个龙竹鲜笋可不得了,它…

【基于docker的深度学习训练环境】关键步骤记录

最近给公司搭建了一个小型的深度学习环境,实现了多人通过SSH对GPU资源的利用,下面对一些关键架构和易用性部分进行记录。 一、整体软硬件框架 1、硬件配置,采用的双GPU的方案,两块消费级显卡。 2、应用层架构 宿主机系统为ubunt…

猎板PCB:军工武器系统中的PCB线路板技术要求

PCB线路板在军工武器系统中的应用非常广泛,它们是现代军事装备中不可或缺的组成部分。军工级PCB因其在极端环境下的稳定性和可靠性而受到重视,这些环境可能包括高温、低温、高湿度、强辐射、高震动等条件。以下是一些关键点,概述了PCB线路板在…

基于华为云智慧生活生态链设计的智能鱼缸

一. 引言 1.1 项目背景 随着智能家居技术的发展和人们对高品质生活的追求日益增长,智能鱼缸作为一种结合了科技与自然美的家居装饰品,正逐渐成为智能家居领域的新宠。本项目旨在设计一款基于华为云智慧生活生态链的智能鱼缸,它不仅能够提供…

vue3播放m3u8格式hls监控流

1. 摄像头的hls监控流不同于普通m3u8的视频,video标签,iframe,videojs,vue-video-player无法解析 2. 解决办法 更换LivePlayer插件 官网https://www.liveqing.com/docs/manuals/LivePlayer.html#%E5%B1%9E%E6%80%A7-property 3…

kubernets(二)

集群操作 查看集群信息 kubectl get查看各组件信息 格式:kubectl get 资源类型 【资源名】 【选项】 events #查看集群中的所有日志信息 -o wide # 显示资源详细信息,包括节点、地址... -o yaml/json #将当前资源对象输出至 yaml/json 格式文…

windows安装VMware虚拟机 在虚拟机中安装Centos系统

文章目录 安装虚拟机Centos7.5 软硬件安装安装Centos所需的硬件配置处理器与内核 安装虚拟机 Centos7.5 软硬件安装 安装Centos所需的硬件 配置处理器与内核 一个CPU可以有多个内核 此处可以看出该电脑一个处理器,四个内核。配置虚拟器的原则是不能超过总数的一半…

Mybatis全局配置介绍

【mybatis全局配置介绍】 mybatis-config.xml,是MyBatis的全局配置文件,包含全局配置信息,如数据库连接参数、插件等。整个框架中只需要一个即可。 1、mybatis全局配置文件是mybatis框架的核心配置,整个框架只需一个&#xff1b…

BFS处理最短路问题

BFS与最短路问题小结 - AcWing 题目 这题就可以BFS&#xff08;边权值相同&#xff09;&#xff08;g[i][j]也可以为inf&#xff0c;g[i][i]还能为0&#xff09; 代码 #include <bits/stdc.h> using namespace std; const int N 510; const int inf 0x3f3f3f3f; int n…