人体姿态估计动作识别调研报告

news2024/11/27 8:44:48

人体姿态估计&动作识别

视频演示

Refs: https://www.zhihu.com/zvideo/1227562268420235264

姿态估计与行为识别(行为检测、行为分类)的区别

Refs:姿态估计与行为识别(行为检测、行为分类)的区别

姿态估计

  1. 定位图片和视频中的人体关节,重建人的关节和肢干。
  2. 四个方向:
    1. 单人姿态估计(Single-Person Skeleton Estimation):先定位人体,再根据行人区域,找出关键点。
    2. 多人姿态估计(Multi-Person Pose Estimation):两种方式:
      1. Top-down: 先定位到图片中的所有人体,在找出关键点。
      2. bottom-up:先找出关键点,再组装成行人。
    3. 人体姿态跟踪(Video Pose Tracking):
      1. 人体关键点在视频中的temporal motion会比较大,比如一个行走的行人,手跟脚会不停的摆动,所以跟踪难度会比跟踪人体框大。
      2. 数据集:PoseTrack
    4. 3D人体姿态估计(3D skeleton Estimation): ^764e2c
      1. VS 2D:
        1. 2D姿势估计:从RGB图像估计每个关节的2D姿势(x,y)坐标。
        2. 3D姿势估计:从RGB图像估计3D姿势(x,y,z)坐标。
        3. 即使基于轻量主干网络(MobileNetV2)所预测的2D姿态用于动作识别时,效果也好于任何来源的3D人体姿态估计。Ref
      2. 数据集:Human3.6M

行为识别(Action Detection/Regnition)

概述

  1. 图像或视频中目标的行为类别。
  2. 两个方向:
    1. 行为分类(Action Recognition)
      1. 定义:一般使用的数据集会将动作分割好,一个视频片段包含一段明确的动作。
      2. 特点:时间短且有唯一确定标签。所以input为视频,输出为label。类似Image Classification。
      3. 数据集:
        1. https://zhuanlan.zhihu.com/p/86461157 (都是剪切好的视频,不符合行为检测的要求)
    2. 行为检测(Temporal Action Localization)
      1. 当前主流利用I3D来做:
        在这里插入图片描述

        Refs: https://paperswithcode.com/sota/temporal-action-localization-on-thumos14

      2. 定义:需要输出动作发生的起始和结束时间,以及这个动作的类别。

      3. 特点:需要处理较长的、未分割的视频,且视频中通常有较多干扰,目标动作一般只占视频的一小部分。类似图像中的Object Detection。

      4. 相关模型:two-stream、C3D、iDT。

      5. 难点:

        • 时序信息。与行为识别/分类一样,视频理解的通用难点就是时序信息的处理。所以针对这一点目前的主要方法基本上都是使用RNN读入CNN提取的特征,或者直接使用C3D一样的时序卷积。
        • 边界不明确。不同于行为识别的是,行为检测要求做精确的动作区间检测,而生活中一个动作的产生往往边界不是十分确定的,所以这也是导致目前行为检测mAP偏低的原因。
        • 时间跨度大。在生活中,一个行为动作往往跨度非常大,短的动作几秒左右,比如挥手。长的动作有的持续数十分钟,比如攀岩、骑行等等。这使得我们在提取Proposal的时候变得异常的艰难。
      6. 数据集:

        1. 动作检测最大的数据集:HACS.
        2. 行为检测方向常用的数据集主要是: THUMOS 2014和ActivityNet
        3. THUMOS 2014来自于THUMOS Challenge 2014,。它的训练集为UCF101数据集,验证集和测试集分别包括1010和1574个未分割的视频片段。在行为检测任务中只有20类动作的未分割视频是有时序行为片段标注的,包括200个验证集(3007个行为片段)和213个测试集视频(包含3358个行为片段)。
        4. MEXaction2:MEXaction2数据集中包含两类动作:骑马和斗牛。该数据集由三个部分组成:YouTube视频,UCF101中的骑马视频以及INA视频。其中YouTube视频片段和UCF101中的骑马视频是分割好的短视频片段,被用于训练集。而INA视频为多段长的未分割的视频,时长共计77小时,且被分为训练,验证和测试集三部分。训练集中共有1336个行为片段,验证集中有310个行为片段,测试集中有329个行为片断。且MEXaction2数据集的特点是其中的未分割视频长度都非常长,被标注的行为片段仅占视频总长的很低比例。
        5. ActivityNet: 目前最大的数据库,同样包含分类和检测两个任务。这个数据集仅提供视频的youtube链接,而不能直接下载视频,所以还需要用python中的youtube下载工具来自动下载。该数据集包含200个动作类别,20000(训练+验证+测试集)左右的视频,视频时长共计约700小时。由于这个数据集实在太大了,我的实验条件下很难完成对其的实验,所以我之前主要还是在THUMOS14和MEXaction2上进行实验。
      7. 技术方案:
        19年以前:
        1. CDC
        2. BMN

  3. 难点:
    1. 类内和类间差异, 同样一个动作,不同人的表现可能有极大的差异。
    2. 时间变化, 人在执行动作时的速度变化很大,很难确定动作的起始点,从而在对视频提取特征表示动作时影响最大。
    3. 缺乏标注良好的大的数据集。
  4. 以CVPR组织的ACTIVITYNET为例,2017年总共有5个Task被提出。
    • Task1:未修剪视频分类(Untrimmed Video Classification)。这个有点类似于图像的分类,未修剪的视频中通常含有多个动作,而且视频很长。有许多动作或许都不是我们所关注的。所以这里提出的Task就是希望通过对输入的长视频进行全局分析,然后软分类到多个类别。
    • Task2:修剪视频识别(Trimmed Action Recognition)。这个在计算机视觉领域已经研究多年,给出一段只包含一个动作的修剪视频,要求给视频分类。
    • Task3:时序行为提名(Temporal Action Proposal)。这个同样类似于图像目标检测任务中的候选框提取。在一段长视频中通常含有很多动作,这个任务就是从视频中找出可能含有动作的视频段。
    • Task4:时序行为定位(Temporal Action Localization)。相比于上面的时序行为提名而言,时序行为定位于我们常说的目标检测一致。要求从视频中找到可能存在行为的视频段,并且给视频段分类。
    • Task5:密集行为描述(Dense-Captioning Events)。之所以称为密集行为描述,主要是因为该任务要求在时序行为定位(检测)的基础上进行视频行为描述。也就是说,该任务需要将一段未修剪的视频进行时序行为定位得到许多包含行为的视频段后,对该视频段进行行为描述。比如:man playing a piano

Refs: 姿态估计与行为识别(行为检测、行为分类)的区别

PoseC3D: 基于人体姿态的动作识别新范式

Comments: CVPR 2022 Oral

  1. 已在[[MMAtion2]]开源。

  2. 使用3D-CNN, 超越了基于GCN的SOTA.

  3. 去冗余:

    1. 对2D姿态先由热图存储为坐标,在行为识别时再由坐标转换为热图。
    2. 选取每帧的最紧的框以包含图片中的所有人,然后再缩放只特定大小。
    3. 均匀采样:需要采 N 帧时,我们先将整个视频均分为长度相同的 N 段,并在每段中随机选取一帧。在实验中,我们发现这样的采帧方式对骨骼行为识别尤其适用。
      在这里插入图片描述
  4. 使用3D-CNN进行行为识别:

    1. 骨骼 + RGB 模态:RGBPose-SlowFast。
    2. 包含两个分支,分别处理 RGB 和骨骼两个模态。
    3. RGB 分支具有低帧率以及更大的网络宽度,骨骼分支具有高帧率和更小的网络宽度。
    4. 两分支间存在双向连接,以促进模态间的特征融合。我们将两分支的预测结果融合,作为最终的预测。
    5. 在训练时,我们用两个单独的损失函数分别训练两个分支,以避免过拟合。
    6. 网络结构:
      在这里插入图片描述
  5. 可扩展性:GCN 所需计算量随人数增加线性增长,在群体识别中并不高效,而3D-CNN不存在这个问题。
    Refs:

  6. 知乎: PoseC3D: 基于人体姿态的动作识别新范式

  7. Papers: Revisiting Skeleton-based Action Recognition

Refs: https://zhuanlan.zhihu.com/p/34439558

I3D

  1. 2018年工作。

  2. 任务:Action Recognition。

  3. 4种结构: 在这里插入图片描述

    1. ConvNet+LSTM
      1. 利用最后一帧对视频特征表示。
      2. 缺点:由于LSTM,所以不能捕捉low-level motion的特征。
    2. 3D ConvNets:
      1. 问题:
        1. 参数量大,训练困难。
        2. 无法利用在Imagenet上的预训练模型。
    3. Two-Stream Networks:
      1. 用每个clip的预测分数平均的方式获得最终预测(最原始的,或者在最后softmax做融合)。
      2. 10张optical flow(其实是5张,x/y两个方向,运动特征)
      3. 论文实现一个类似的two-stream方案,在最后一层用3d conv将spatial和flow特征进行融合。
    4. Two-Stream Inflated 3D ConvNets:
      1. 利用imagenet的预训练模型, 对预训练的2D conv增加temporal维度,把N×N的filter变为N×N×N。简单的办法就是对N×N的filter重复复制N遍,并归一化,这样多的出发点是短期内时间不变性的假设,姑且把这当成3D filter初始化的一种策略吧。
      2. 考虑到时间因素,对称感受野不是必须的,这主要还是依赖帧率和图片大小。时间相对于空间变化过快,将合并不同object的边信息,过慢将不能捕捉场景变化。
      3. 对RGB和光流,分开训练网络。

Refs:

  1. https://zhuanlan.zhihu.com/p/34919655

CDC

  1. CDC: convolutional-de-convolutional networks for precise temporal action localization in untrimmed videos(2017)
  2. 主要贡献点:
    1. 第一次将卷积、反卷积操作应用到行为检测领域,CDC同时在空间下采样,在时间域上上采样。
    2. 利用CDC网络结构可以做到端到端的学习。
    3. 通过反卷积操作可以做到帧预测(Per-frame action labeling)。
  3. 网络结构:
    1. CDC网络在C3D的基础上用反卷积,将时序升维。做到了帧预测。以下是CDC网络的结构图:
      在这里插入图片描述

    2. 网络步骤如下所示:

      1. 输入的视频段是112x112xL,连续L帧112x112的图像
      2. 经过C3D网络后,时间域上L下采样到 L/8, 空间上图像的大小由 112x112下采样到了4x4
      3. CDC6: 时间域上上采样到 L/4, 空间上继续下采样到 1x1
      4. CDC7: 时间域上上采样到 L/2
      5. CDC8:时间域上上采样到 L,而且全连接层用的是 4096xK+1, K是类别数
      6. softmax层
    3. CDC FILTER

      1. 文章的还有一大贡献点是反卷积的设计,因为经过C3D网络输出后,存在时间和空间两个维度,文章中的CDC6完成了时序上采样,空间下采样的同时操作。
      2. 如下图所示,一般的都是先进行空间的下采样,然后进行时序上采样。但是CDC中设计了两个独立的卷积核(下图中的红色和绿色)。同时作用于4x4xL/8的特征图上。每个卷积核作用都会生成2个1x1的点,如上conv6,那么两个卷积核就生成了4个。相当于在时间域上进行了上采样过程。

![[Pasted image 20230630211843.png]]

Refs: https://zhuanlan.zhihu.com/p/34439558

R-C3D

R-C3D(Region 3-Dimensional Convolution)网络[10]是基于Faster R-CNN和C3D网络思想。对于任意的输入视频L,先进行Proposal,然后用3D-pooling,最后进行分类和回归操作。文章主要贡献点有以下3个:

  • 可以针对任意长度视频、任意长度行为进行端到端的检测
  • 速度很快(是目前网络的5倍),通过共享Proposal generation 和Classification网络的C3D参数。
  • 作者测试了3个不同的数据集,效果都很好,显示了通用性。

Refs: https://zhuanlan.zhihu.com/p/34439558

BMN

  1. 百度,ActivityNet Challenge 2019 冠军模型。

Refs: https://zhuanlan.zhihu.com/p/337432552

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

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

相关文章

两分钟倒计时 - 啊哈C语言 第4章第5节

题目要求&#xff1a; 尝试编写一个两分钟的倒计时&#xff0c;形如&#xff1a;2:00 1:59 1:58 … 1:00 0:59 0:58 … 0:02 0:01 0:00 代码&#xff1a; #include<stdio.h> #include<stdlib.h> #include<windows.h> int main(){int a2,b0;while(a>0 &…

SpringMVC的XML配置解析-spring18

SpringMVC的有很多组件&#xff1a;&#xff08;这些我们都可以用配件进行配置&#xff09; 1、充沛器 2、映射器 3、视图解析器 默认情况下他们要使用哪个组件&#xff0c;我们可以挖一下&#xff1a; 第一个重叠器映射器 第二个 重叠器适配器 第三个 视图适配器 打开看…

Vue生命周期详解学习笔记

生命周期 生命周期又名生命周期回调函数&#xff0c;生命周期函数&#xff0c;生命周期钩子。生命周期是Vue在关键时刻帮我们调用的一些特殊名称的函数。生命周期函数的名字不可更改&#xff0c;但函数的具体内容是程序员根据需求编写的。生命周期中的this指向vm或组件实例对象…

【PHP面试题48】Redis的事务?事务都有哪些注意的地方?

文章目录 一、关于事务1.1 事务的概念和优势1.2 Redis事务的基本用法 二、Redis事务的注意事项2.1 使用WATCH监视关键变量2.2 避免长时间事务2.3 避免事务中的循环2.4 处理事务执行结果2.5 考虑使用管道2.6 使用合适的事务隔离级别2.7 考虑事务的并发性2.8 监控事务执行情况 总…

项目管理进度管理神器:有效方法分享

在项目管理中&#xff0c;进度管理是至关重要的环节&#xff0c;它可以帮助项目团队及时发现和解决问题&#xff0c;确保项目按计划顺利进行。一个有效的进度管理方案需要考虑多方面的因素&#xff0c;包括任务分解、时间控制、资源分配、风险管理等。 如何有效的管理项目进度&…

剑指 Offer 68 - II. 二叉树的最近公共祖先

题目介绍 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为&#xff1a;“对于有根树 T 的两个结点 p、q&#xff0c;最近公共祖先表示为一个结点 x&#xff0c;满足 x 是 p、q 的祖先且 x 的深度尽可能大&#xff08;一个节点也可以…

FL Studio2023最新中文版混音编曲宿主软件及电脑配置要求

现在大部分音乐的制作过程都是在宿主软件中完成的&#xff0c;宿主软件又称数字音频工作站&#xff0c;简写为DAW软件。目前市面上有非常多的宿主软件供大家选择&#xff0c;例如Cubase、Logic Pro以及我一直使用的FL Studio。每款不同的宿主软件都有不同的优缺点&#xff0c;所…

MFC第十七天 CFont类与LOGFONT结构体、记事本文件打开和保存及是否保存的逻辑流程分析、PreTranslateMessage虚函数与快捷键

文章目录 CFont类与LOGFONT结构体CFontDialog字体信息结构体与HFONT句柄的关系 记事本文件拖入、打开和保存及是否保存的逻辑流程分析PreTranslateMessage虚函数与快捷键附录 CFont类与LOGFONT结构体 CFontDialog 构造函数介绍 public: //用于指定字体对话框的初始字体属性&…

C# Modbus通信从入门到精通(4)——Modbus RTU(0x02功能码)

1、02(0x02)读线圈输入 使用该功能码能从远程地址中读取1到2000个输入线圈的状态,每个线圈的状态只能是0或者1,读取的线圈数量由主站读取时指定。 2、发送报文格式 更详细的格式如下: 从站地址+功能码+起始地址高位+起始地址低位+线圈数量高位+线圈数量低位+CRC,一共8个…

Linux进程理解【程序地址空间】

Linux进程理解【程序地址空间】 文章目录 Linux进程理解【程序地址空间】1. 话题引入2. 进程地址空间2.1 虚拟地址2.2 写时拷贝 3. 知识扩展 我们先来看看C/C程序地址空间的分布图 如此多区域的划分是为了更好的使用和管理空间&#xff0c;但是真实的内存空间也是按照图上的地址…

nginx的下载与安装

https://nginx.org/en/download.html 下载地址&#xff08;我下载的是1.20.2&#xff09; 1、首先保证可以连接外网 2、将包拖入opt/nginx 3、安装gcc环境 &#xff08;如果出现问题可以参考https://www.cnblogs.com/lzxianren/p/4254059.html&#xff09; yum -y install gc…

你还在手动对比代码差异?这些高质量工具太香了

B站|公众号&#xff1a;啥都会一点的研究生 我发现相当一部分初学者&#xff08;甚至搬砖多年的老同志&#xff09;在对比文件差异的时候居然还是 观察法 文本内容少还凑活能用&#xff0c;成百上千行的时候把眼睛累坏了不说&#xff0c;关键还容易漏信息 接触的人与事多了会…

volatile的可见性探讨

我跟volatile修饰对象和数组能保证其内部元素的可见性&#xff1f;一文的作者有类似的疑惑&#xff0c;按语义&#xff0c;volatile修饰数组时&#xff0c;只是保证其引用地址的可见性&#xff0c;可为什么给数组加了volatile之后&#xff0c;似乎单个数组元素也有了可见性&…

Android Glide同步阻塞方式submit获得Bitmap,kotlin

droid Glide同步阻塞方式submit获得Bitmap&#xff0c;kotlin 需要放入后台线程&#xff0c;不能在主线程。 Android Glide预加载preload ,kotlin_zhangphil的博客-CSDN博客【代码】Android Paging 3,kotlin&#xff08;1&#xff09;在实际的开发中&#xff0c;虽然Glide解决了…

AC+AP 旁挂式连接配置(华为)

AR1路由器配置 # interface GigabitEthernet0/0/0 ip address 10.1.30.1 255.255.255.0 ip route-static 10.1.20.0 255.255.255.0 10.1.30.2 # LSW1核心交换机 # dhcp enable vlan batch 10 20 30 interface Vlanif20 ip address 10.1.20.1 255.255.255.0 dhcp select in…

nacos启动多个集群

nacos启动多个集群,只需要改动集群的名称,然后再次实例服务即可。

Vue3正式发布那么久了,你认识Pinia了吗?

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;正逐渐往全干发展 &#x1f4c3;个人状态&#xff1a; 研发工程师&#xff0c;现效力于中国工业软件事业 &#x1f680;人生格言&#xff1a; 积跬步…

一个无经验的大学毕业生,可以转行做软件测试吗?

先说答案&#xff0c;一个无经验的大学毕业生&#xff0c;可以转行做软件测试。 首先什么人会提出这个问题?应该是个大学生&#xff0c;而且肯定不是计算机系毕业的&#xff0c;甚至都不可能是一个工科生。因为哪怕是工科毕业的学生&#xff0c;大学期间最少也学习过C语言编程…

数据结构(王道)——栈的应用

一、括号匹配检查 思路&#xff1a; 算法结构&#xff1a; 代码实现&#xff1a; 算法思路总结&#xff1a; 二、表达式求值 中缀、后缀、前缀表达式&#xff1a; 中缀转后缀表达式 三、栈在递归当中的应用 递归在斐阶乘的应用 缺陷&#xff1a;递归层数过多的话可能会导致栈溢…

小程序MobX创建store并实现全局数据共享

查看小程序根目录中是否存在package.json文件 在项目根目录运行cmd 没有package.json文件输入npm init -y初始化一下,初始化一个包管理 安装MobX npm install --save mobx-miniprogram4.13.2 mobx-miniprogram-bindings1.2.1 小程序菜单栏工具–构建npm 根目录创建store文…