姿态估计与行为识别(行为检测、行为分类)的区别[通俗易懂]

姿态估计与行为识别(行为检测、行为分类)的区别[通俗易懂]姿态估计和行为识别作为计算机视觉的两个领域,对于新人来说,较为容易弄混姿态估计和行为识别两个概念。 姿态估计(PoseEstimation)是指检测图像和视频中的人物形象的计算机视觉技术,可以确定某人的某个身体部位出现在图像中的位置,也就是在图像和视频中对人体关节的定位问题,也可以理解为在所有关节姿势的空间中搜索特定姿势。简言之,姿态估计的任务就是重建人的关节和肢干,其难点主要在于…

大家好,又见面了,我是你们的朋友全栈君。

姿态估计和行为识别作为计算机视觉的两个领域,对于新人来说,较为容易弄混姿态估计和行为识别两个概念。

 

姿态估计(Pose Estimation)是指检测图像和视频中的人物形象的计算机视觉技术,可以确定某人的某个身体部位出现在图像中的位置,也就是在图像和视频中对人体关节的定位问题,也可以理解为在所有关节姿势的空间中搜索特定姿势。简言之,姿态估计的任务就是重建人的关节和肢干,其难点主要在于降低模型分析算法的复杂程度,并能够适应各种多变的情况、环境(光照、遮挡等等)。姿态估计的输出,是一个高维的姿态向量,而不是某个类别的类标,因此这一类方法需要学习的是一个从高维观测向量到高维姿态向量的映射。

姿态估计可分为四个子方向:

单人姿态估计(Single-Person Skeleton Estimation)

单人姿态估计,首先识别出行人,然后再行人区域位置内找出需要的关键点。常见的数据集有MPII、LSP、FLIC、LIP,每种数据集都有不同的精确度指标。其中MPII是当前单人姿态估计中最常见的benchmark,使用的是PCKh指标(可以认为预测的关键点与GT标注的关键点经过head size normalize后的距离),目前有的算法已经可以在上面达到93.9%的准确率。

多人姿态估计(Multi-Person Pose Estimation)

单人姿态估计算法往往被用来做多人姿态估计,一般有两种方式。Top-down先找到图片中所有行人,然后对每个行人做姿态估计,寻找每个人的关键点;bottom-up先寻找图片中所有的parts(关键点,比如头部、手、膝盖等),然后把这些parts组装成一个个行人。

测试集主要有COCO、CrowdPose等。

人体姿态跟踪(Video Pose Tracking)

如果把姿态估计往视频中扩展,就有了人体姿态跟踪的任务。主要是针对视频场景中的每一个行人,进行人体以及每个关键点的跟踪。这是一个综合且难度较大的工作,相比于行人跟踪来说,人体关键点在视频中的temporal motion会比较大,比如一个行走的行人,手跟脚会不停的摆动,所以跟踪难度会比跟踪人体框大。

主要的数据集是PoseTrack

3D人体姿态估计(3D skeleton Estimation)

将人体姿态往3D方向进行扩展,则是输入RGB图像,输出3D的人体关键点。

经典数据集Human3.6M

除了输出3D的关键点之外,有一些工作开始研究3D的shape,比如数据集DensePose,而且从长线来讲,这个是非常有价值的研究方向。

 

2D姿势估计——从RGB图像估计每个关节的2D姿势(x,y)坐标。

3D姿势估计——从RGB图像估计3D姿势(x,y,z)坐标。

行为识别可以借助姿态估计的相关研究成果来实现,比如HDM05这类姿态库就提供了每一帧视频中人的骨架信息,可以基于骨架信息判断运动类型。

 

参考文献

人体姿态估计文献综述,简单介绍了大约十种方法

https://blog.csdn.net/BockSong/article/details/81037059

深度学习人体姿态估计算法综述

https://www.infoq.cn/article/6Btg0-1crfmb7svRGa6H

2019深度学习人体姿态估计指南(翻译的文章)

https://blog.csdn.net/u010636181/article/details/90036365

https://nanonets.com/blog/human-pose-estimation-2d-guide/

 

行为识别(Action Detection/Regnition),最终的结果是得到图像或视频段中目标的行为类别。视频中人体行为识别主要分为两个子方向。

一个是给定一个视频片段进行分类(行为分类 Action Recognition),一般使用的数据库都先将动作分割好了,一个视频片段中包含一段明确的动作,时间较短(几秒钟)且有唯一确定的标签。所以也可以看作是input为视频,输出为label。

一个是不仅要知道一个动作在视频中是否发生,还需要知道动作发生在视频的哪段时间(包括开始和结束时间)(行为检测 Temporal Action Localization)。特点是需要处理较长的、未分割的视频,且视频中通常有较多干扰,目标动作一般只占视频的一小部分。也可以说是对视频进行指定行为的检测

Action Recegniton和Temporal Action Localization之间的关系,同image classification和object detection之间的关系比较像。基于image classification问题,发展出了许多强大的模型,比如ResNet、VGGNet等,这些模型在object detection的方法中起到了很大的作用。同样的,action recognition的相关模型如two-stream、C3D、iDT等也被广泛的应用在action detection中。

 

 

参考文献

行为识别的综述博客:

https://blog.csdn.net/neu_chenguangq/article/details/79504214

给出了行为识别的一些概述及资源合集(文章、代码)

https://blog.csdn.net/Gavinmiaoc/article/details/81179630

时序动作检测综述

http://www.pianshen.com/article/5760138121/

 

常用的行为分类的数据集:

UCF101:来源为YouTube视频,共计101类动作,13320段视频。共有5个大类的动作:1)人-物交互;2)肢体运动;3)人-人交互;4)弹奏乐器;5)运动。

HMDB51:来源为YouTube视频,共计51类动作,约7000段视频。

骨架数据库,比如MSR Action 3D,HDM05,SBU Kinect Interaction Dataset等。这些数据库已经提取了每帧视频中人的骨架信息,基于骨架信息判断运动类型。

 

常用的行为检测的数据集:

THUMOS2014:在行为检测任务中只有20类动作的未分割视频是有序行为片段标注的

MEXaction2:骑马和斗牛

ActivityNet:目前最大的数据集,同时包含分类和检测两个任务,包含200个动作类别

 

行为识别的难点:

(1)类内和类间差异, 同样一个动作,不同人的表现可能有极大的差异。

(2)环境差异, 遮挡、多视角、光照、低分辨率、动态背景.

(3)时间变化, 人在执行动作时的速度变化很大,很难确定动作的起始点,从而在对视频提取特征表示动作时影响最大。

(4)缺乏标注良好的大的数据集

 

行为识别领域内的重要方法

传统方法——iDT

利用光流场来获取视频序列中的一些轨迹,再沿着轨迹提取HOF、HOG、MBH、trajectory等特征。HOF基于灰度图计算,另外几个基于optical(密集光流)计算。最后对其进行特征编码,再基于编码结果训练SVM分类器。iDT利用前后两帧之间的光流和surf关键点进行匹配,从而消除或减弱相机运动带来的影响。

优点:稳定性最高、可靠性高

缺点:速度慢

 

深度学习——Two-Stream(双流CNN

对视频序列中每两帧计算密集光流,得到密集光流的序列(即temporal信息)。然后对于视频图像(spatial)和密集光流(temporal)分别训练CNN模型,两个分支的网络分别对动作的类别进行判断,最后直接对两个网格的class score进行fusion(包括直接平均和SVM

两种方法),得到最终的分类结果。

优点:精度高,在UCF-101上达到0.96的准确率

缺点:速度慢

 

深度学习——C3D(3D卷积)

通过3D卷积操作核去提取视频数据的时间核空间特征。这些3D特征提取器在空间和时间两个维度上操作,因此可以捕捉视频流的运动信息。然后基于3D卷积提取器构造一个3D卷积神经网络,这个架构可以从连续视频帧中产生多通道的信息,然后在每一个通道都分离地进行卷积和下采样操作。最后将所有通道的信息组合起来得到最终的特征描述。

优点:速度快,300fps

缺点:精度低,在UCF-101上为0.85准确率

 

参考文献

三种方法的对比引自于:

https://www.jianshu.com/p/2c2c7e96b9b7

按照时间顺序整理了部分视频行为检测&分类方案

https://www.jianshu.com/p/583c26bbb675

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/152033.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • apache rewritecond_hfile数据格式中的data字段用于

    apache rewritecond_hfile数据格式中的data字段用于RewriteCond就像我们程序中的if语句一样,表示如果符合某个或某几个条件则执行RewriteCond下面紧邻的RewriteRule语句,这就是RewriteCond最原始、基础的功能,为了方便理解,下面来看看几个例子。复制代码代码如下:RewriteEngineonRewriteCond %{HTTP_USER_AGENT} ^Mozilla//5/.0.*

  • 卷积与反卷积关系超详细说明及推导(反卷积又称转置卷积、分数步长卷积)

    卷积与反卷积关系超详细说明及推导(反卷积又称转置卷积、分数步长卷积)  以CNN为代表的卷积神经网络在图像的相关领域得到了较为长足的发展。在CNN中卷积实际分类两大类,一种是卷积,另一种是转置卷积(transposedconvolutional),或者称为分数步长卷积(fractionallystridedconvolutionallayers),亦或者是反卷积(deconvolution)。  虽然在一些文章中将反卷积与转置卷积认为是等价的…

  • Xshell安装docker「建议收藏」

    Xshell安装docker「建议收藏」docker基本组成镜像(image):docker镜像好比一个模板,可以通过这个模板创建容器服务,例如:tomcat镜像===>run===>tomcat01容器(提供服务器)通过这个镜像可以创建多个容器(最终服务或项目在容器中运行)容器(container):docker利用容器技术,独立运行一个或一组应用,通过镜像来创建。启动、停止、删除基本命令目前就可以把这个容器理解为就是一个简易的linux系统仓库(repository):存放镜像的地方,类似maven中央仓库仓库

  • java输入Scanner基本用法[通俗易懂]

    java输入Scanner基本用法[通俗易懂]1.基本介绍java.util.Scanner是Java5的新特征,我们可以通过Scanner类来获取用户的输入,每个next获取输入对应的字符。Scannersc=newScanner(System.in);当我们通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前我们一般需要使用hasNext与hasNextLine判断是否还有输入的数据:next()–>hasNext() nextLine()–…

  • docker部署web项目_docker web管理工具

    docker部署web项目_docker web管理工具前言前面我们运行的容器并没有一些什么特别的用处。接下来让我们尝试使用docker构建一个web应用程序。我们将在docker容器中运行一个PythonFlask应用来运行一个web

  • scrollIntoView 与 scrollIntoViewIfNeeded API 介绍

    scrollIntoView 与 scrollIntoViewIfNeeded API 介绍本文转自:scrollIntoView与scrollIntoViewIfNeededAPI介绍根据MDN的描述,Element.scrollIntoView()方法让当前的元素滚动到浏览器窗口的可视区域内。而Element.scrollIntoViewIfNeeded()方法也是用来将不在浏览器窗口的可见区域内的元素滚动到浏览器窗口的可见区域。但如果该元素已经在浏览器窗口的可见区域…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号