博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于深度神经网络的动作检测:问题与解决方案
阅读量:3529 次
发布时间:2019-05-20

本文共 3281 字,大约阅读时间需要 10 分钟。

目录


介绍

动作检测是视频处理中最具挑战性的任务之一。它可用于安全系统和闭路电视(CCTV),情感和手势跟踪,体育赛事分析,行为观察,统计数据收集等。

在我们最近的一个项目中,我们面临的挑战是在高分辨率视频中检测特定的人体动作。在本文中,我们讨论了在准确性和性能之间找到平衡的重要性,我们在数据集准备和网络配置方面面临的挑战,以及如何解决这些问题。

使用DNN进行动作检测

  是机器学习的一个领域,它使用特征学习技术而不是特定于任务的算法。它使用多层人工神经网络,其工作方式与人脑中的神经网络类似。但是与大脑不同,神经网络被划分为单独的层,每个层都具有定义的数据处理方向。具有两层以上的网络称为深度神经网络(DNN)。

DNN可以在诸如图像分类,对象检测和分类,语音识别,手写识别和计算机视觉等任务中实现类似人类的准确性。通过适当的训练,神经网络可以比人类更准确地执行某些任务。例如,谷歌的LYNA算法——这对医生来说难以达到。

 CNN)是DNN,多层算法类似于视觉皮层的工作的子类型。CNN主要用于图像,视频和语言处理。基于R-CNN)是专门为对象检测而创建的新类别的CNN。有R-CNN神经网络(Fast R-CNN, Faster R-CNNMask R-CNN等)为不同的图像处理任务而创建。

卷积神经网络算法

视频处理解决方案的发展已成为卷积神经网络最常用的用例之一。CNN可以识别情绪,手势,语音和手写,检测和分类对象,以及检测和识别视频中的动作。

在我们的项目中,我们将动作检测定义为基于一系列感兴趣的区域(ROI)对不间断的图像序列进行分类。

然而,使用CNN识别和检测视频中的动作存在许多挑战。最近,我们开展了一个项目,其主要目标是检测视频流中的特定人类行为。在开展这个项目的过程中,我们遇到了一些重大挑战:

  • 在准确性和性能之间找到平衡点
  • 准备具有与网络应该使用的参数类似的参数的数据集
  • 为任务选择相关的CNN并进行配置

让我们通过深度神经网络找出如何解决这些问题。

平衡准确性和性能

如今,在准确性和性能方面,检测动作仍然是最具挑战性的任务之一。 

为了检测动作,处理图像的空间特征(物体识别方法做了什么)以及时间特征是至关重要的。

在图像处理方面,识别时间特征意味着在一段时间内确定其他特征的变化。对于视频,这可能是一个时间跨度或一定的帧序列。识别空间特征意味着确定图像属性(灰度,像素位置等)。

 至于性能,需要考虑的是视频处理解决方案通常用于修剪,未修剪和实时视频。问题是今天的视频编解码器可以产生具有非常高的帧速率和分辨率的视频(FullHDUHD等)。基本上,视频质量越高,处理数据所需的时间越长。因此,高质量视频成为需要实时或接近实时数据处理的项目(例如动作检测)的真正挑战。

精确度和处理速度之间的权衡在动作检测中尤为明显,因为虽然更高质量的视频通常意味着更高的准确性,但这些视频通常需要更多时间来处理。

我们的研究表明,这个问题可以通过神经网络的低级语言实现来解决,例如。这种基于区域的卷积神经网络旨在通过将区域提议计算移动到另一个称为区域提议网络(RPN)的预训练特征提取器来提供快速数据处理。这样,Faster R-CNN仅执行检测计算。

Faster R-CNN架构

Faster R-CNN可以使用等框架  ,以及推理服务器和可能的最佳GPU设置来实现。我们使用Caffe2进行计算。

准备数据集

训练神经网络模型需要大量数据。有很多用于图像分类和检测的好数据集,例如

还有一些用于检测操作的即用型数据集,例如

问题是,这些数据集是为行动分类而设计的,主要由某些动作的低分辨率修剪视频组成。由于我们面临着在高分辨率高帧率视频中准确检测特定人类动作的挑战,因此需要对此操作的高分辨率视频进行额外培训。

由于我们的任务没有现成的培训数据,我们必须准备自己的数据集。通过注释来准备训练数据。这些注释通常使用等工具制作。初步研究表明,我们需要考虑训练数据的空间和时间特征。

首先,我们专注于空间特征,因为我们的服务中有许多训练有素的特征提取器。幸运的是,他们也善于检测人,这就是我们所需要的。我们在预训练的  框架上使用了流行的最先进的数据集  ,在视频的每一帧上生成ROI

然后,我们研究了注释动作的方法,并发现了 ,其由使用XML格式的帧跨度形式的ROI和动作注释组成:

           
...

XML代码描述了执行操作的对象。对象的属性表示在对象出现的每个帧中的位置和动作。

注释的位置数据来自Mask R-CNN; 我们使用了一个自定义脚本,该脚本跳过掩码并将ROI转储到带有框架注释的文件中。为了在单个帧中支持多个人的动作检测,我们使用这种格式作为起点并使用唯一识别器对其进行修改。

配置网络

对于我们的项目,我们实施了Faster R-CNN,即使Mask R-CNN在准确性方面被认为优于Faster R-CNN。我们有两个主要原因选择Faster R-CNN而不是Mask R-CNN

  • Faster R-CNN具有更好的性能
  • 我们的项目中不需要面具

然而,将Faster R-CNN架构从对象识别调整到动作检测需要大量的定制。

受到的研究启发  ,我们实现了一种定制逻辑,将来自我们的数据集注释的空间和时间特征组合到所谓的管中。

管是由ROI组成的三维结构。Xiaojiang PengCordelia Schmid这两位研究人员发表了一篇论文,这篇论文启发了我们,他们的使用  生成这些用于帧的管。但是,由于我们需要检测的动作的性质,我们决定使用更简单的方法。我们对序列中的所有ROI使用了近似坐标,这导致了更少的计算。在目前的项目中,我们没有比较这两种方法。

此外,我们实现了用于训练不同长度的帧序列的脚本。

与最初的Faster R-CNN相比,我们重新设计了网络以处理帧序列并仅检测两个类(背景+动作)。这是通过修改Faster R-CNN解决方案的原型 文件来实现的  。这些文件在Caffe2中用于描述神经网络的每一层。这些文件中的典型图层描述如下所示:

layers {  bottom: "data"  top: "conv1_1"  name: "conv1_1"  type: CONVOLUTION  convolution_param {    num_output: 64    pad: 1    kernel_size: 3  } }

图层的bottomtop属性表示与其他图层的连接。类型属性表示当前层执行的操作,该层是与第一个输入层(底部属性)连接的卷积层。它有64个输出神经元,每个神经元都作为下一个连接层的输入(顶部 属性)。

附加测试表明,在修剪过的低分辨率图像上预先训练网络对检测精度没有显着影响。这可能是由于DNN在低分辨率和高分辨率视频的训练过程中获得的特征之间存在显着差异。

结论

在视频流或录音中检测和识别特定人类行为的能力在许多领域显示出巨大的潜力,从体育分析到网络安全和监视系统。但是,为了实现动作检测功能,您需要考虑:

  • 为了提高准确性,您需要利用空间和时间特征;
  • 需要将基于ROI的神经网络架构合并到管中以表示动作(单独的ROI并不意味着发生任何动作);
  • 培训需要使用分辨率类似于您的网络应该使用的数据;
  • 如果高性能是您项目的优先级,则不应使用您不需要的功能,因为任何额外的计算都会显著影响高质量视频的性能。

通过我们在本文中描述的方法,我们在第一个测试阶段实现了63%的动作检测准确度。向数据集添加新的训练数据和进一步的网络微调可能会带来更好的结果。

 

原文地址:

转载地址:http://iczhj.baihongyu.com/

你可能感兴趣的文章
python opencv视频提取前景
查看>>
python opencv视频中对象跟踪
查看>>
python opencv流光
查看>>
python将numpy多维数据转换成以为数组
查看>>
python opencv Kmeans聚类
查看>>
python将字符串形式的列表转换成真实列表
查看>>
python list按第二个元素排序
查看>>
pyinstaller打包folium相关项目
查看>>
python tkinter的简要应用
查看>>
python将pandas底层数据转numpy
查看>>
python pandas入门(1)
查看>>
ubuntu pip升级以后报错sys.stderr.write(f“ERROR: {exc}“)
查看>>
python pandas入门(2)
查看>>
python 格式化日期time
查看>>
django models增、删、改、查
查看>>
python numpy转list
查看>>
Django IntegerField设置取值范围
查看>>
python三个常用函数
查看>>
python优化提速技巧
查看>>
解决浏览器报跨域访问本地json等文件报错问题
查看>>