导读:行为识别是指通过分析视频、深度传感器等数据,利用特定的算法,对行人的行为进行识别、分析的技术。这项技术被广泛应用在视频分类、人机交互、安防监控等领域。行为识别包含两个研究方向:个体行为识别与群体行为(事件)识别,而基于深度学习的人体行为识别成为了最近图像识别的标配。深度学习的方法包括基于无监督学习的行为识别、基于 卷积神经网络 的行为识别、基于循环神经网络以及一些拓展模型的方法,深思考小夏带给你最前沿的算法总结。
一 Two-stream
1. Two-Stream Convolutional Networks for Action Recognition in Videos
主页链接:http://www.robots.ox.ac.uk/~vgg/software/two_stream_action/
14年提出双流,利用帧图像和光流图像作为CNN的输入得到很好的效果。光流能够描述出视频帧的运动信息,一路是连续几帧的光流叠起来作为CNN的输入;另一路就是普通的单帧的CNN。其实就是两个独立的神经网络了,最后再把两个模型的结果平均一下。另外,它利用multi-task learning来克服数据量不足的问题。其实就是CNN的最后一层连到多个softmax的层上,对应不同的数据集,这样就可以在多个数据集上进行 multi-task learning。
2.Convolutional Two-Stream Network Fusion for Video Action Recognition
主页链接:http://www.robots.ox.ac.uk/~vgg/software/two_stream_action/
Github链接: https://github.com/feichtenhofer/twostreamfusion
16年针对双流融合问题进行研究,得到卷积结束之后在全链接之前融合效果比较好,左边是单纯在某一层融合,右边是融合之后还保留一路网络,在最后再把结果融合一次。论文的实验表明,后者的准确率要稍高。
3.Action Recognition with Trajectory-Pooled Deep-Convolutional Descriptors
Github链接: https://wanglimin.github.io/tdd/index.html
论文考虑了时间维的特性,引进了轨迹控制策略来采样,将手工设计的特征和深度学习结合。首先多个空间尺度上密集采样特征点,然后特征点跟踪得到轨迹形状特征,同时需要更有力的特征来描述光流,Fisher Vector方法进行特征的编码,最后svm采用one-against-rest策略训练多类分类器。
4.Temporal Segment Networks: Towards Good Practices for Deep Action Recognition
Github链接: https://github.com/yjxiong/temporal-segment-networks
16年香港中文大学针对双流不能很好利用长时间信息,提出segment思路,将视屏分为前中后三段,每段经过双流然后融合结果。其中港中文还做了很多其他工作,https://arxiv.org/abs/1507.02159
5.Spatiotemporal Residual Networks for Video Action Recognition
Github链接: https://feichtenhofer.github.io/
使用了两个流,但是名字不是取为空间流和时间流,而是motion stream和appearance stream,但是本质不变,运动流接收的输入依然是堆叠的多帧光流灰度图片,而appearance stream和原来的空间流一致,接收的输入都是RGB图片,但是这里使用的 双流的两个流之间是有数据交换的,而不是像TSN网络一样在最后的得分进行融。单帧的潜力挖尽之后自然就会有人上3D Conv,Recurrent CNN,Grid RNN之类的东西。虽然深度学习大法好,不过也得按基本法来,直接上fancy的模型有较大概率吃力不讨好。
二LSTM 结构
Long Short Term 网络一般就叫LSTM,它是一种 RNN 特殊的类型。LSTM通过刻意的设计来避免长期依赖问题。记住长期的信息在实践中是LSTM的默认行为,而非付出很大代价才能获得的能力!
1.Fusing Multi-Stream Deep Networks for Video Classification
主页链接:https://arxiv.org/abs/1509.06086
文章先CNN提取特征,包括rgb图光流图和语音频谱图,然后经过lstm最后融合。
2.Action Recognition using Visual Attention
主页链接:http://shikharsharma.com/projects/action-recognition-attention/
注意力模型终于来啦,人在看东西的时候,目光沿感兴趣的地方移动,甚至仔细盯着部分细节看,然后再得到结论。Attention就是在网络中加入关注区域的移动、缩放机制,连续部分信息的序列化输入。采用attention使用时间很深的lstm模型,学习视屏的关键运动部位。
Attention相关:
http://www.cosmosshadow.com/ml/%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C/2016/03/08/Attention.html
3.RNN Fisher Vectors for Action Recognition and Image Annotation
主页链接:http://www.eccv2016.org/files/posters/P-4A-30.pdf
文章典型的特征提取,分类思路文章采用卷积网络提取特征之后进过pca降维,然后Fisher Vector编码扔给RNN再pca降维,最后svm分类。Ucf101上实验结果到了94%.
三 C3D
3D CNN 应用于一个视频帧序列图像集合,并不是简单地把图像集合作为多通道来看待输出多个图像(这种方式在卷积和池化后就丢失了时间域的信息,如图6上), 而是让卷积核扩展到时域,卷积在空域和时域同时进行,输出仍然是有机的图像集合。
1.Learning Spatiotemporal Features with 3D Convolutional Networks
主页链接:https://github.com/facebook/C3D
https://gist.github.com/albertomontesg/d8b21a179c1e6cca0480ebdf292c34d2
将视频分成多个包含16帧的片段作为网络的输入。第一个池化层d=1,是为了保证时间域的信息不要过早地被融合,接下来的池化层的d=2。有所卷积层的卷积核大小为3x3x3,相对其他尺寸的卷积核,达到了精度最优,计算性能最佳。
2.Quo Vadis, Action Recognition? A New Model and the Kinetics Dataset
https://deepmind.com/research/publications/quo-vadis-action-recognition-new-model-and-kinetics-dataset/
以往的Conv3D效果很差的原因之一就是数据集太小,喂不饱网络。文章中的3D网络并不是随机初始化的,而是将在ImageNet训好的2D模型参数展开成3D,之后再训练。因此叫Inflating 3D ConvNets. 本文选用的网络结构为BN-Inception(TSN也是),但做了一些改动。如果2D的滤波器为N*N的,那么3D的则为N*N*N的。具体做法是沿着时间维度重复2D滤波器权重N次,并且通过除以N将它们重新缩放. 在前两个池化层上将时间维度的步长设为了1,空间还是2*2。最后的池化层是2*7*7。训练的时候将每一条视频采样64帧作为一个样本,测试时将全部的视频帧放进去最后average_score。除最后一个卷积层之外,在每一个都加上BN层和Relu。对于I3D的效果为什么好,作者解释说I3D有64帧的感受野。可以更好地学习时序信息。再就是先用ImageNet的模型做了预训练。
I3D这个网络结构的提出是很显然,但用2D的ImageNet模型做预训练以及参数展开分配还是挺具有创新性的,虽然在TSN中处理光流的第一个卷积层时就有使用过类似的方法。这个实验室真有能力,以往的数据集上效果很难提升,自己就搞了个大数据集。那个Kinetics的I3D模型是在 64块GPU 上跑出来的。
四 其他
1.A Key Volume Mining Deep Framework for Action Recognition
现即便是 trimmed video (例如 UCF101 数据集),实际的动作发生的时空位置也是非常不确定的:我们既不知道做动作的人在什么空间位置,也不知道真正的动作发生的精确时间位置。更糟糕的是,和动作类别直接相关的,具有区分性的 (discriminative)key volume 往往占比非常小,这在 flow stream 上表现得尤为突出。
于是我们就想能否先把这些 key volume 找出来,直接用以训练分类器,这样可以免受噪声数据的干扰,更加聚焦在动作本质上。但实际上,在得到一个好的分类器之前我们是很难自动地将key volume 挑出来的。于是我们陷入了一个鸡生蛋,蛋生鸡的困境。
借鉴 Multiple Instance Learning 的思想,我们把鸡和蛋的问题放在一起来优化解决:在训练分类器的同时,挑选 key volume;并用挑出来的 key volume 更新分类器的参数。这两个过程无缝地融合到了 CNN ( 卷积神经网络 )的网络训练的 forward 和 backward 过程中,使得整个训练过程非常优雅、高效。
2.Dynamic Image Networks for Action Recognition
https://github.com/hbilen/dynamic-image-nets
CNN的输入一般是图片,针对输入时视屏,能否将视屏压缩成一张图,以图来表征视屏的信息?答案是可疑的,针对对视频中的RGB图像进行rank pooling处理,以此作为cnn的输入。虽然最终的效果不是特别好,但是想法很nice。
深思考人工智能(iDeepWise Artificial Intelligence)是一家专注于类脑人工智能与深度学习核心科技的AI公司。核心团队由中科院自动化所、软件所、计算所、微电子所等中科院院所、清华大学一线青年AI科学家(博士10名)与领域顶级专家、营销专家组成。公司最为突出的技术是“多模态深度语义理解技术”,可同时理解文本、视觉图像背后的语义,主要面向场景为智慧医疗大健康和智能汽车。
入门 深度学习 人机交互 LSTM 行为识别 神经网络
相关数据
Neural Network
(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。
来源:机器之心
Dimensionality reduction
降维算法是将 p+1 个系数的问题简化为 M+1 个系数的问题,其中 M<p。算法执行包括计算变量的 M 个不同线性组合或投射(projection)。然后这 M 个投射作为预测器通过最小二乘法拟合一个线性回归模型。两个主要的方法是主成分回归(principal component regression)和偏最小二乘法(partial least squares)。
来源:机器之心
Convolutional neural network
卷积神经网路(Convolutional Neural Network, CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。卷积神经网路由一个或多个卷积层和顶端的全连通层(对应经典的神经网路)组成,同时也包括关联权重和池化层(pooling layer)。这一结构使得卷积神经网路能够利用输入数据的二维结构。与其他深度学习结构相比,卷积神经网路在图像和语音识别方面能够给出更好的结果。这一模型也可以使用反向传播算法进行训练。相比较其他深度、前馈神经网路,卷积神经网路需要考量的参数更少,使之成为一种颇具吸引力的深度学习结构。 卷积网络是一种专门用于处理具有已知的、网格状拓扑的数据的神经网络。例如时间序列数据,它可以被认为是以一定时间间隔采样的一维网格,又如图像数据,其可以被认为是二维像素网格。
来源:Goodfellow, I.; Bengio Y.; Courville A. (2016). Deep Learning. MIT Press. 维基百科
Human-computer interaction
人机交互,是一门研究系统与用户之间的交互关系的学问。系统可以是各种各样的机器,也可以是计算机化的系统和软件。人机交互界面通常是指用户可见的部分。用户通过人机交互界面与系统交流,并进行操作。小如收音机的播放按键,大至飞机上的仪表板、或是发电厂的控制室。
来源: 维基百科
Pooling
池化(Pooling)是卷积神经网络中的一个重要的概念,它实际上是一种形式的降采样。有多种不同形式的非线性池化函数,而其中“最大池化(Max pooling)”是最为常见的。它是将输入的图像划分为若干个矩形区域,对每个子区域输出最大值。直觉上,这种机制能够有效的原因在于,在发现一个特征之后,它的精确位置远不及它和其他特征的相对位置的关系重要。池化层会不断地减小数据的空间大小,因此参数的数量和计算量也会下降,这在一定程度上也控制了过拟合。通常来说,CNN的卷积层之间都会周期性地插入池化层。
来源: cs231n
Supervised learning
监督式学习(Supervised learning),是机器学习中的一个方法,可以由标记好的训练集中学到或建立一个模式(函数 / learning model),并依此模式推测新的实例。训练集是由一系列的训练范例组成,每个训练范例则由输入对象(通常是向量)和预期输出所组成。函数的输出可以是一个连续的值(称为回归分析),或是预测一个分类标签(称作分类)。
来源: Wikipedia
Stacking
堆叠泛化是一种用于最小化一个或多个泛化器的泛化误差率的方法。它通过推导泛化器相对于所提供的学习集的偏差来发挥其作用。这个推导的过程包括:在第二层中将第一层的原始泛化器对部分学习集的猜测进行泛化,以及尝试对学习集的剩余部分进行猜测,并且输出正确的结果。当与多个泛化器一起使用时,堆叠泛化可以被看作是一个交叉验证的复杂版本,利用比交叉验证更为复杂的策略来组合各个泛化器。当与单个泛化器一起使用时,堆叠泛化是一种用于估计(然后纠正)泛化器的错误的方法,该泛化器已经在特定学习集上进行了训练并被询问了特定问题。
来源: Wolpert, D. H. (1992). Stacked generalization. Neural networks, 5(2), 241-259
Deep learning
深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。
来源: LeCun, Y., Bengio, Y., & Hinton, G. (2015). Deep learning. nature, 521(7553), 436.
Accuracy
分类模型的正确预测所占的比例。在多类别分类中,准确率的定义为:正确的预测数/样本总数。 在二元分类中,准确率的定义为:(真正例数+真负例数)/样本总数
Long Short-Term Memory
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- JavaScript数组的十八般武艺
- 看深度学习十九般武艺:它还能帮助保护濒危动物
- 圣思园《精通Spring Boot/Cloud》与《精通Java并发》课程现已宣布
- Charles 从入门到精通
- MAT 入门到精通(一)
- Git 从入门到精通
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。