ActionVLAD算法详解

2023-05-16

文章地址:https://rohitgirdhar.github.io/ActionVLAD/
代码地址:https://github.com/rohitgirdhar/ActionVLAD/

该文章由CMU、Adobe、法国国立计算机及自动化研究院联合提出,被CVPR2017收录。

该文章的创新点在于将vlad使用到动作分类任务上,而该文章中使用的VLAD是由文章《NetVLAD: CNN architecture for weakly supervised place recognition》提出(该文章发表在CVPR2016上)的可训练VLAD层基础上的扩展。所以下面先来介绍一下VLAD。

一、传统的VLAD

假设现在有特征维度为 N ∗ D N*D ND,其中N表示特征的个数,D表示一个特征的维度。
VLAD的计算流程如下:

  1. 对全部的特征 N ∗ D N*D ND进行K-means聚类,获得K个聚类中心,记为 C k C_k Ck
  2. 通过以下公式,将 N ∗ D N*D ND的特征转为shape为 K ∗ D K*D KD的特征,公式如下:
    V ( j , k ) = ∑ i = 1 N a k ( x i ) ( x i ( j ) − c k ( j ) ) , k ∈ K , j ∈ D V(j, k)=\sum^N_{i=1}a_k(x_i)(x_i(j)-c_k(j)), k\in K, j\in D V(j,k)=i=1Nak(xi)(xi(j)ck(j)),kK,jD
    公式中 x i x_i xi表示第i个局部特征, c k c_k ck表示第k个聚类中心, x i x_i xi c k c_k ck都是D为向量。 a k ( x i ) a_k(x_i) ak(xi)表示符号函数,如果 x i x_i xi不属于聚类中心 c k c_k ck a k ( x i ) = 0 a_k(x_i)=0 ak(xi)=0;如果 x i x_i xi属于聚类中心 c k c_k ck a k ( x i ) = 1 a_k(x_i)=1 ak(xi)=1

从上式中,可以看出最终的 V ( j , k ) V(j, k) V(j,k)特征是所有原始特征与聚类中心的差值,可以理解为是去除了特征本身的特征分布差异,只保留了局部特征与聚类中心的分布差异。

二、NetVLAD层

由上面所说,VLAD里面存在符号函数所以为了能将VLAD融入网络的训练中,需要将公式中的符号函数 a k a_k ak从hard assignment改为soft assignment,公式如下:
a k ‾ ( x i ) = e − α ∣ ∣ x i − c k ∣ ∣ 2 ∑ k ′ e − α ∣ ∣ x i − c k ′ ∣ ∣ 2 \overline{a_k}(x_i)=\frac{e^{-\alpha||x_i -c_k||^2}}{\sum_{k'}e^{-\alpha||x_i -c_{k'}||^2}} ak(xi)=keαxick2eαxick2

将上面公式展开,可以将分子分母的 e − α ∣ ∣ x i ∣ ∣ 2 e^{-\alpha||x_i||^2} eαxi2抵消,得到下面公式:
a k ‾ ( x i ) = e w k T x i + b k ∑ k ′ e w k ′ T x i + b k ′ \overline{a_k}(x_i)=\frac{e^{w_k^Tx_i+b_k}}{\sum_{k'}e^{w_{k'}^Tx_i+b_{k'}}} ak(xi)=kewkTxi+bkewkTxi+bk
其中, w k = 2 α c k w_k=2\alpha c_k wk=2αck, b k = − α ∣ ∣ c k ∣ ∣ 2 b_k=-\alpha ||c_k||^2 bk=αck2

所以NetVLAD用公式表示如下:
V ( j , k ) = ∑ i = 1 N e w k T x i + b k ∑ k ′ e w k ′ T x i + b k ′ ( x i ( j ) − c k ( j ) ) V(j, k)=\sum^N_{i=1}\frac{e^{w_k^Tx_i+b_k}}{\sum_{k'}e^{w_{k'}^Tx_i+b_{k'}}}(x_i(j)-c_k(j)) V(j,k)=i=1NkewkTxi+bkewkTxi+bk(xi(j)ck(j))

说明:NetVLAD中的符号同传统的VLAD

三、ActionVLAD

ActionVLAD用公式可以表示如下:
V [ j , k ] = ∑ t = 1 T ∑ i = 1 N e − α ∣ ∣ x i t − c k ∣ ∣ 2 ∑ k ′ e − α ∣ ∣ x i t − c k ′ ∣ ∣ 2 ( x i t [ j ] − c k [ j ] ) V[j, k]=\sum^T_{t=1}\sum^N_{i=1}\frac{e^{-\alpha||x_{it} -c_k||^2}}{\sum_{k'}e^{-\alpha||x_{it} -c_{k'}||^2}}(x_{it}[j]-c_k[j]) V[j,k]=t=1Ti=1Nkeαxitck2eαxitck2(xit[j]ck[j])

上式中T表示总帧数, t ∈ 1 , . . . , T t\in{1, ..., T} t1,...,T。N表示每帧图片提取出的特征数量空间维度(例如,一张图片经过网络后空间大小为 25 × 25 25\times 25 25×25,那么N=625), i ∈ 1 , . . . , N i\in{1, ..., N} i1,...,N

从ActionVLAD的公式可以很明显的看出是NetVLAD在时序上的扩展。

四、ActionVLAD网络

ActionVLAD网络如下图所示:
在这里插入图片描述

从上图可以看出:

  1. action vlad网络采用1了rgb和光流两种流
  2. actionvlad层可以很自然的作为一层融入到网络中去

到这里ActionVLAD网络原理基本介绍完毕,对于ActionVLAD层应该放在哪个位置,具体效果如何,可以看文章的一些消融实验。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ActionVLAD算法详解 的相关文章

随机推荐

  • 利用redis的setIfAbsent()方法实现分布式锁

    再集群环境中 xff0c 存在定时任务多次执行 xff0c 浪费资源 xff0c 那么如何避免这种情况呢 xff0c 下面就说明一下如何利用一个注解解决问题 xff0c 利用切面配合redis可以简单实现分布式锁 xff0c 解决定时任务重
  • Virtualbox主机和虚拟机之间文件夹共享及双向拷贝(win7——centos7)

    一 双向拷贝 xff1a 然后 xff0c 还需要通过virtualbox上安装一个增强的工具 此时 xff0c 会在centos上安装一些工具 xff1a 鼠标自动在宿主机 虚拟机之间移出 同时 xff0c 在centos上会出现一个安装
  • Record something about DL

    这篇文章算是DL实践杂谈吧 xff0c 主要是想把自己模型调优和复现算法遇到的一些坑总结一下 xff08 里面的一行字可能是我当时花费了一周甚至更长时间得到的总结 xff09 xff0c 希望能对读者有所帮助 一 熟悉数据 模型是数据的浓缩
  • Image captioning任务常用的评价指标计算

    BLEU ACL 2002Meteor AMTA 2004ROUGE L ACL 2004CIDEr CVPR 2015SPICE ECCV 2016
  • Image captioning评价方法之BLEU (bilingual evaluation understudy)

    文章地址 xff1a BLEU a Method for Automatic Evaluation of Machine Translation 代码地址 非官方 xff1a https github com tylin coco capt
  • Image captioning评价方法之Meteor

    项目地址 xff1a http www cs cmu edu alavie METEOR 代码地址 xff08 非官方实现 xff0c 实现的是项目地址中的1 5版本 xff09 xff1a https github com tylin c
  • Image captioning评价方法之ROUGE-L

    文章地址 xff1a ROUGE A Package for Automatic Evaluation of Summaries 代码地址 非官方 xff1a https github com tylin coco caption 文章由U
  • Image captioning评价方法之CIDEr

    文章地址 xff1a CIDEr Consensus based Image Description Evaluation 代码地址 xff08 非官方 xff0c 且代码实现的是CIDEr D xff09 xff1a https gith
  • Image captioning评价方法之SPICE

    项目地址 xff1a https panderson me spice 上述的项目地址包含了论文地址和代码地址 该方法是由The Australian National University和Macquarie University联合发表
  • R3DS Wrap基本使用方法

    中文的R3DS Wrap软件的教程较少 xff0c 最近刚好实操了一遍 xff0c 特此记录下来 为了描述方便 xff0c 下面将R3DS Wrap简称Wrap 软件官网 xff1a https www russian3dscanner c
  • docker使用入门简介

    一 什么是docker xff1f https www docker com resources what container 使用docker时有两个重要概念 xff0c 一个是镜像 xff08 images xff09 xff0c 一个
  • SpringBoot整合Quartz 实现分布式定时任务调度

    一 Quartz 集群架构 Quartz 是 Java 领域最著名的开源任务调度工具 在上篇文章中 xff0c 我们详细的介绍了 Quartz 的单体应用实践 xff0c 如果只在单体环境中应用 xff0c Quartz 未必是最好的选择
  • 《Attention Is All You Need》算法详解

    该篇文章右谷歌大脑团队在17年提出 xff0c 目的是解决对于NLP中使用RNN不能并行计算 xff08 详情参考 译 理解LSTM xff08 通俗易懂版 xff09 xff09 xff0c 从而导致算法效率低的问题 该篇文章中的模型就是
  • 主流的视频动作类算法任务介绍

    动作识别 action recognition xff1a 是对每个输入视频进行分类 xff0c 识别出视频中人物做出的动作 即输入视频序列 xff0c 得到视频对应的类别 时序动作检测 temporal action detection
  • 视频时序动作识别(video action recognition)介绍

    一 视频时序动作识别算法分类 根据网络的工作方式 xff0c 可以将视频时序动作识别算法大致分为四大类 xff1a 采用2D卷积的方法采用3D卷积的方法双流法引入VLAD的方法 1 1 采用2D卷积的方法 TSM Temporal Shif
  • 视频时序动作检测(temporal action detection)介绍

    一 视频时序动作检测算法 本文中动作检测算法也包含了时序动作提名 xff08 Temporal Action Proposal Generation xff09 时序动作提名与检测的类别不一样的地方是 xff0c 检测一般指定位出动作的边界
  • 《Channel-wise Knowledge Distillation for Dense Prediction》论文详解

    原文地址 xff1a Channel wise Knowledge Distillation for Dense Prediction 代码地址 xff1a https git io Distille xff08 由原文提供 xff0c 好
  • 时序动作分割(temporal action segmentation)任务介绍

    时序动作分割任务 输入是一个未经裁剪的视频 xff0c 输出是视频中每一帧的动作类别 所以该任务可以理解为对每一帧视频进行打标签处理 xff08 类同于图片分割是给每个像素打标签 xff09 一 算法介绍 MS TCN MS TCN 43
  • 时空动作检测 (spatio-temporal action detection)

    时空动作检测 spatio temporal action detection xff1a 输入一段视频 xff0c 不仅需要识别视频中动作出现的区间和对应的类别 xff0c 还要在空间范围内用一个包围框 bounding box 标记出人
  • ActionVLAD算法详解

    文章地址 xff1a https rohitgirdhar github io ActionVLAD 代码地址 xff1a https github com rohitgirdhar ActionVLAD 该文章由CMU Adobe 法国国