当前位置:   article > 正文

视频行为识别检测综述 IDT TSN CNN-LSTM C3D CDC R-C3D_深度学习视频行为识别

深度学习视频行为识别

Video Analysis之Action Recognition(行为识别)

行为识别就是对时域预先分割好的序列判定其所属行为动作的类型,即“读懂行为”。 
  • 1

本文github地址

博文末尾支持二维码赞赏哦 _

[行为检测|论文解读]行为检测调研综述 较新

基于Deep Learning 的视频识别技术

科研成果----中国科学院深圳先进技术研究院 面向人体姿态行为理解的深度学习方法

CVPR 2014 Tutorial on Emerging Topics in Human Activity Recognition

行为检测 Action Detection 类似图像目标检测

但在现实应用中更容易遇到的情况是序列尚未在时域分割(Untrimmed),
因此需要同时对行为动作进行时域定位(分割)和类型判定,这类任务一般称为行为检测。
传统 DTW 动态时间规整 分割视频
现在 利用RNN网络对未分割序列进行行为检测(行为动作的起止点的定位 和 行为动作类型的判定)

Action Detection

目的:不仅要知道一个动作在视频中是否发生,还需要知道动作发生在视频的哪段时间

特点:需要处理较长的,未分割的视频。且视频通常有较多干扰,目标动作一般只占视频的一小部分。

分类:根据待检测视频是一整段读入的还是逐次读入的,分为online和offline两种

Offline action detection:
特点:一次读入一整段视频,然后在这一整段视频中定位动作发生的时间

Online action detection:
特点:不断读入新的帧,在读入帧的过程中需要尽可能早的发现动作的发生(在动作尚未结束时就检测到)。
     同时online action detection 还需要满足实时性要求,这点非常重要。
     这导致online action detection不能采用计算复杂度过大的方法(在现有的计算能力下)
     
现有方法:
     逐帧检测法:
              即在视频序列的每帧上独立判断动作的类型,可以用CNN等方法,仅用上了spatial的信息
     滑窗法:  即设置一个固定的滑窗大小,在视频序列上进行滑窗,然后对滑窗得到的视频小片断利用action recognition的方法进行分类。
     
现状:由于此问题难度比action recognition高很多,所以现在还没有效果较好的方法
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

论文总结参考

博客参考2

微软亚洲研究院 行为识别:让机器学会“察言观色”第一步

1. 任务特点及分析

目的

给一个视频片段进行分类,类别通常是各类人的动作
  • 1

特点

简化了问题,一般使用的数据库都先将动作分割好了,一个视频片断中包含一段明确的动作,
时间较短(几秒钟)且有唯一确定的label。
所以也可以看作是输入为视频,输出为动作标签的多分类问题。
此外,动作识别数据库中的动作一般都比较明确,周围的干扰也相对较少(不那么real-world)。
有点像图像分析中的Image Classification任务。
  • 1
  • 2
  • 3
  • 4
  • 5

难点/关键点

强有力的特征:
    即如何在视频中提取出能更好的描述视频判断的特征。
    特征越强,模型的效果通常较好。
特征的编码(encode)/融合(fusion):
    这一部分包括两个方面,
    第一个方面是非时序的,在使用多种特征的时候如何编码/融合这些特征以获得更好的效果;
    另外一个方面是时序上的,由于视频很重要的一个特性就是其时序信息,
         一些动作看单帧的图像是无法判断的,只能通过时序上的变化判断,
         所以需要将时序上的特征进行编码或者融合,获得对于视频整体的描述。
算法速度:
    虽然在发论文刷数据库的时候算法的速度并不是第一位的。
    但高效的算法更有可能应用到实际场景中去.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

2. 常用数据库

【数据集整理】人体行为识别和图像识别

行为识别的数据库比较多,这里主要介绍两个最常用的数据库,也是近年这个方向的论文必做的数据库。
1. UCF101:来源为YouTube视频,共计101类动作,13320段视频。
   共有5个大类的动作:
            1)人-物交互;
            2)肢体运动;
            3)人-人交互;
            4)弹奏乐器;
            5)运动。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

数据库主页

2. HMDB51:来源为YouTube视频,共计51类动作,约7000段视频。
  HMDB: a large human motion database
  • 1
  • 2

数据库主页

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

4. ACTIVITYNET Large Scale Activity Recognition Challenge
  • 1
  • 2
  • 3
  • 4
  • 5

3. 研究进展

如今人体行为识别是计算机视觉研究的一个热点,
人体行为识别的目标是从一个未知的视频或者是图像序列中自动分析其中正在进行的行为。
简单的行为识别即动作分类,给定一段视频,只需将其正确分类到已知的几个动作类别,
复杂点的识别是视频中不仅仅只包含一个动作类别,而是有多个,
系统需自动的识别出动作的类别以及动作的起始时刻。
行为识别的最终目标是分析视频中
哪些人       who
在什么时刻    when
什么地方,    where
干什么事情,  what
即所谓的“W4系统”

人体行为识别应用背景很广泛,主要集中在智能视频监控,
病人监护系统,人机交互,虚拟现实,智能家居,智能安防,
运动员辅助训练,另外基于内容的视频检索和智能图像压缩等
有着广阔的应用前景和潜在的经济价值和社会价值,
其中也用到了不少行为识别的方法。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

3.1 传统方法

特征综述

密集轨迹算法(DT算法) iDT(improved dense trajectories)特征

 Action Recognition by Dense Trajectories
 Action recognition with improved trajectories
  • 1
  • 2

iDT算法

iDT算法用法与代码解析

Stacked Fisher Vector 编码 基本原理

[DT论文](Action Recognition by Dense Trajectories)

基本思路:
        DT算法的基本思路为利用光流场来获得视频序列中的一些轨迹,
        再沿着轨迹提取HOF,HOG,MBH,trajectory4种特征,其中HOF基于灰度图计算,
        另外几个均基于dense optical flow计算。
        最后利用FV(Fisher Vector)方法对特征进行编码,再基于编码结果训练SVM分类器。
        而iDT改进的地方在于它利用前后两帧视频之间的光流以及SURF关键点进行匹配,
        从而消除/减弱相机运动带来的影响,改进后的光流图像被成为warp optical flow
总结:        
A. 利用光流场来获得视频序列中的一些轨迹;
    a.	通过网格划分的方式在图片的多个尺度上分别密集采样特征点,滤除一些变换少的点;
    b.	计算特征点邻域内的光流中值来得到特征点的运动速度,进而跟踪关键点;
B. 沿轨迹提取HOF,HOG,MBH,trajectory,4种特征
    其中HOG基于灰度图计算,
    另外几个均基于稠密光流场计算。
    a.	HOG, 方向梯度直方图,分块后根据像素的梯度方向统计像素的梯度幅值。
    b.	HOF, 光流直方图,光流通过当前帧梯度矩阵和相邻帧时间上的灰度变换矩阵计算得到,
        之后再对光流方向进行加权统计。
    c.	MBH,运动边界直方图,实质为光流梯度直方图。
    d.	Trajectories, 轨迹特征,特征点在各个帧上位置点的差值,构成轨迹变化特征。
C.特征编码—Bag of Features;
    a. 对训练集数据提取上述特征,使用K_means聚类算法,对特征进行聚类,得到特征字典;
    b.  使用字典单词对测试数据进行量化编码,得到固定长度大小的向量,可使用VQ或则SOMP算法。
D. 使用SVM进行分类
    对编码量化之后的特征向量使用SVM支持向量机进行分类。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
iDT(improved dense trajectories) 改进

iDT论文

LEAR实验室 这个实验室个人感觉很不错,放出来的代码基本都能work,而且有不错的的效果。

我的代码 idt+fv+svm

    1. 剔除相机运动引起的背景光流
        a. 使用SURF特征算法匹配前后两帧的 匹配点对,这里会使用人体检测,剔除人体区域的匹配点,运动量大,影响较大;
        b. 利用光流算法计算匹配点对,剔除人体区域的匹配点对;
        c. 合并SURF匹配点对 和 光流匹配点对,利用RANSAC 随机采样序列一致性算法估计前后两帧的 单应投影变换矩阵H;
        d. 利用矩阵H的逆矩阵,计算得到当前帧除去相机运动的状态I’= H.inv * I ;
        e. 计算去除相机运动后的帧I' 的 光流。
        f. 光流算法 Ft
           假设1:光照亮度恒定:
                  I(x, y, t) =  I(x+dx, y+dy, t+dt) 
                 泰勒展开:
                  I(x+dx, y+dy, t+dt) =  
                                        I(x, y, t) + dI/dx * dx + dI/dy * dy + dI/dt * dt
                                      =  I(x, y, t) + Ix * dx  + Iy * dy + It * dt
                 得到:
                      Ix * dx  + Iy * dy + It * dt = 0
                 因为 像素水平方向的运动速度 u=dx/dt,  像素垂直方向的运动速度 v=dy/dt
                 等式两边同时除以 dt ,得到:
                      Ix * dx/dt  + Iy * dy/dt + It = 0
                      Ix * u  + Iy * v + It = 0
                 写成矩阵形式:
                      [Ix, Iy] * [u; v] = -It,  式中Ix, Iy为图像空间像素差值(梯度), It 为时间维度,像素差值
           假设2:局部区域 运动相同
                 对于点[x,y]附近的点[x1,y1]  [x2,y2]  , ... , [xn,yn]  都具有相同的速度 [u; v]
                 有:
                  [Ix1, Iy1;                      [It1
                   Ix2, Iy2;                       It2
                   ...               *  [u; v] = - ...
                   Ixn, Iyn;]                      Itn]
                 写成矩阵形式:
                  A * U = b
                 由两边同时左乘 A逆 得到:
                  U = A逆 * b
                 由于A矩阵的逆矩阵可能不存在,可以曲线救国改求其伪逆矩阵
                  U = (A转置*A)逆 * A转置 * b
           得到像素的水平和垂直方向速度以后,可以得到:
               速度幅值: 
                        V = sqrt(u^2 + v^2)
               速度方向
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小惠珠哦/article/detail/995941
推荐阅读
相关标签
  

闽ICP备14008679号