人体行为识别及摔倒检测相关研究现状
人体行为识别及摔倒检测相关研究现状-------本文仅为学习笔记,不做任何商业用途-------前言近期由于需要做一些关于人体行为识别及摔倒检测的研究,故进行调研如下,如有错误请指正,欢迎交流。
一、行为识别在场景识别中,有很大一部分研究是针对于人体行为识别的,主要进行识别的也是一些家庭内的危险行为,如小孩、老人摔倒检测,外来人员闯入等,这些都可归为人体行为识别的范畴之内。 行为识别(actionrecognition),即根据视频图像完成对于人体动作的区分,这其中包括但不限于摔倒等危险动作。 在行为识别领域,主要包含以下几个子领域:
UntrimmedVideoClassification:一段未修剪很长的视频序列,其中在时序上包含多个类型的动作,且其中很多动作并不需要特别关注,所以这类视频需要进行全局分析进行分类。TrimmedActionRecognition:一段修剪的视频序列包含一类动作,序列时间长度不定,根据视频标签进行学习分类。TemporalActionProposal:在一段较长的视频序列中找到含有动作的视频段,并将其提取分类,类似于图像目标检测任务中的候选框提取分类。TemporalActionLocalization:与上述的类似,即在长视频序列中找到存在动作行为的视频段,然后对视频段进行分类研究。Dense-CaptioningEvents:对于一段未经修剪的长视频序列,里面可能包含很多动作,找到存在的动作视频行为段,并对其进行视频行为描述。接下来,将对行为识别领域的相关技术研究现状进行简单的分析和总结。
1.1行为识别相关数据集关于行为识别领域内的数据库有很多,而较为常用的主要是UCF101、HMDB51、Kinetics、THUMOS2014和ActivityNet。 前三个主要用于动作识别分类常用,主要包含大量不同类型的动作,其中UCF101含13320段视频及101类动作、HMDB51含7000段视频及51类动作、Kinetics含300k段视频及400类动作。 后两个主要用于行为检测,数据来源为youtube,也较为常用。
1.2行为识别技术研究现状考虑到对于人体行为识别的检测主要是实时的,需要对视频的每一帧进行检测分析,故对于视频序列的处理分析更符合于上述的TemporalActionProposal、TemporalActionLocalization以及Dense-CaptioningEvents相关领域,当然其他领域的相关研究也会在这里介绍。
1.2.1DT算法图1DT算法框架图如上图所示为算法的基本框架,包括密集采样特征点,特征点轨迹跟踪和基于轨迹的特征提取,以及还有后续的特征编码和分类。
图2DT算法提取的相关特征首先进行密集采样特征,将视频的每一帧分为不同尺度,并对不同尺度的图片进行网格划分采集特征点,并在时间序列上跟踪特征点变化,形成轨迹;之后对提取的轨迹进行操作,得到轨迹描述子和运动/结构描述子(HOG,HOF,MBH),并对其使用BagofFeatures的方法进行特征编码,并利用SVM分类器分类。 可以看到,DT算法可对任意长度的视频序列进行特征提取,提取主要基于人体光流变化的相关特征。 来源:论文DenseTrajectoriesandMotionBoundaryDescriptorsforActionRecognition
1.2.2iDT算法iDT算法是基于上述DT算法进行改进得到的算法,其基本框架与DT算法相同,如图1所示。关于iDT算法的改进主要是考虑了相机运动估计,从光流中消除相机运动带来的影响,使提取特征更为准确,如图3所示;除此之外,特征采取归一化方式也有所改进,同时采用FisherVector方式编码,极大的提升了算法效率。
图3humandetector效果图可以说,iDT算法是最经典的一种方法,尤其是在手工特征提取方面效果突出,而且算法的精度和效率也较为优秀。当然,基于深度学习的方法已经超过iDT,但通过一些ensemble后总能获得一些提升。 来源:论文ActionRecognitionwithImprovedTrajectories
1.2.3Two-StreamCNNTWO-STREAMCNN网络主要分为两个部分,一部分处理RGB图像信息,一部分处理光流图像,最后经过融合训练分类。首先,该网络结构可以充分考虑视频的时间和空间信息,空间部分包含目标及场景,时间部分包括帧与帧之间的相机运动或目标运动信息;其次,每个网络都由CNN和最后的softmax组成,并能在有限训练数据的情况下取得不错结果;最后,采用多任务训练的方法将数据集联合,并利用平均融合,在堆叠的softmax上训练SVM,并在公开数据集测试获得了很好的结果。
图4Two-Stream网络结构图尽管TWO-STREAMCNN网络可以提升目标检测准确率,但其最大的弊端就是不能对长时间的视频进行建模,只能对连续的几帧视频提取,小样本数据更能满足其要求。如果是针对时间较长的视频序列,通过逐帧访问的方式会造成运行效率变慢,不能满足时效性要求。
1.2.4TSNTSN(TemporalSegmentsNetworks)是在TWO-STREAMCNN网络上改进的网络,而目前基于two-stream的方法都是由TSN作为骨干网络的。
图5TSN网络结构与two-stream相同,TSN也是由空间流卷积网络和时间流卷积网络构成,而其不同于前者的地方在于TSN从整个视频中稀疏采样一系列短片段,对每个片段给出其初步预测,并综合片段共识得到视频级预测结果。 拥有与two-stream的共性问题,TSN的精度较高,但算法运行时间较长,实时性方面可能会有所折损。
1.2.5C3DC3D(3-DimensionalConvolution)是除了two-stream外的一大主流方式,而其盛行的原因则是因为其结构简单,速度快,同时还具有不错的识别准确率。
图6网络结构图由于视频是三维信息,通过将传统的二维卷积核改为三维卷积核来处理视频,可以很好的汇聚视频的目标、场景和动作等信息,同时通过它所提出的特征是高效的、紧凑的、使用简单的,被广泛使用。
1.2.6LSTM+Two-Stream通过LSTM做two-stream网络的时间和空间信息融合,可以保持很不错的识别准确率,同时相比CNN可以极大的节省时间,提升效率。
图7网络结构图来源:论文BeyondShortSnippets:DeepNetworksforVideoClassification
1.2.7R-C3D网络R-C3D(Region3-DimensionalConvolution)网络是基于FasterR-CNN和C3D网络的思想,可以对于任意长度的视频、任意长度行为进行端到端的检测,最主要的一点是速度快,而且模型通用性很好。
图8网络结构图来源:论文R-C3D-ResgionConvolutional3DNetworkforTemporalActivityDetection
1.2.8其他当然,除了这些上述方法外,还有很多通过ensemble的方式将相关网络进行融合进行行为识别的方式以及在时间、空间上提取关键帧的方法。 来源:其他相关研究方法
二、摔倒检测研究现状关于目标检测的方法,现在主流的算法可分为两类。一类是基于RegionProposal的R-CNN系算法,包括R-CNN,FastR-CNN,FasterR-CNN等,它们都是two-stage的,即需要先产生目标候选框,也就是目标位置,然后再对候选框做分类与回归。另一类是Yolo,SSD这类one-stage算法,其仅仅使用一个卷积神经网络CNN直接预测不同目标的类别与位置。相对来说,第一类方法的准确度更高,但是速度慢,第二给算法速度快,但是准确性要低一些。 针对于摔倒检测,现在有很多的研究都是基于可便携穿戴传感器检测实现的,而针对于计算机视觉的摔倒检测十分有限,接下来将介绍调研到的近些年关于通过视觉方法进行摔倒检测的研究。
2.1相关数据集2.1.1URFallDetectionDataset(URFD)数据集包含30条跌倒数据以及40条正常生活数据,数据集由两个摄像机所记录,一个平行安装于地板,一个安装于天花板,同时还有加速度计进行数据记录。数据集包含相机深度数据、RGB数据以及视频。
图9URFD数据集2.1.2FallDetectionDataset(FDD)该数据集总共包含21499张图像,由5名参与者进行录像,其中包括三名女性以及两名男性,同时所有集合都增添了原始图像和水平翻转图像,以增加数据集。数据集由一台摄像机所记录,位于房顶位置,高约2.4米,且数据集包含深度图像数据以及RGB图像,同时每张图片都有相应的标签。
图10FFD数据集2.1.3MultipleCamerasFallDataset(MCFD)该数据集共包含24个场景,每个场景用8个摄像机记录,前22个场景包含跌倒和正常时间,后两个场景仅包含混杂事件,摄像机位于屋内房顶的八个不同方向,且视频集不包含标签文档。
图11MCFD数据集2.2摔倒检测相关算法技术研究现状2.2.1YOLO目标检测算法系列1.YOLOv1 YOLOv1的核心思想就是利用整张图片作为网络的输入,在输出层回归边界框的位置和边界框所属的类别,而其只需要一次CNN运算即可,相比R-CNN系列算法速度会更快,但精度会出现一定的折扣,且对于后面出现的SSD算法其表现较差。
图12YOLOv1实例图YOLOv1尽管在速度方面很有优势,但其方法模型依赖于物体识别标注数据,而且对于非常规的物体形状或比例检测效果并不理想;除此之外,对于相互靠近的物体和小的群体检测效果不好,并对同一类物体出现的新的不常见的长宽比和其他情况时泛化能力偏弱。
2.YOLOv2&YOLO9000 YOLOv2的检测速度要优于FasterR-CNN,SSD等,但其精度就表现不是很好。 YOLO9000通过联合训练算法所训练出来的,可以实时检测超过9000种物体分类,具有很好的检测性能。
3.YOLOv3&YOLOv3-tiny YOLOv3在PascalTianX上处理608*608图像速度达到20FPS,速度有极大提升,但是其模型复杂度也提升了不少,可以通过改变模型结构的大小来权衡速度于精度。除此之外,它的背景误检率低,通用性强,对非自然图像物体的检测率也很高。当然,缺点方面则是其识别物体位置精准性差,召回率低。 YOLOv3-tiny在一些速度要求很好的项目中是首要选择,它是在YOLOv3的基础上去掉了一些特征层,只保留了2个独立预测分支,但是可能会出现精度低的问题。 当然,在摔倒检测中,也有学者通过基于YOLOv3的方法进行摔倒检测,并取得了不错的结果。 来源:论文HumanFallDetectionAlgorithmBasedonYOLOv3
4.YOLOv4 YOLOv4在原有YOLO目标检测架构的基础上,采用了近些年CNN领域中最优秀的优化策略,从数据处理、主干网络、网络训练、激活函数、损失函数等各个方面都有着不同程度的优化,同时开发了一个高效而强大的模型,并且在实时目标检测算法中精度最高,实现了精度和速度的最佳平衡,可以很好的用于工业界。
2.2.2SSD算法SSD算法是FasterRCNN和YOLO的结合,采用了基于回归的模式(类似于YOLO),在一个网络中直接回归出物体的类别和位置,因此检测速度很快;同时也利用了基于区域的概念(类似于FasterRCNN),在检测的过程中,使用了许多候选区域作为ROI。 相比于YOLO,SSD对于小目标的检测更有优势,且模型的稳定性肯定比YOLO强,但缺点可能是模型训练较为困难并且较慢。
2.2.3R-CNN目标检测算法系列1.R-CNN R-CNN首先选择训练好的CNN模型,然后通过对输入图像进行选择性搜索获得2000个候选区域框,并修改大小输入CNN模型得到特征图,再训练分类器对不同类别进行区分,并使用回归器修正每个候选框位置,具体步骤如下图所示。
图13R-CNN结构图R-CNN尽管可以很好的完成目标检测分类任务,精度很高,但训练过程由于巨大的卷积网络以及每个候选区域都输入CNN特征提取浪费了许多时间,从而导致速度慢。除此之外,由于提取出的特征需要储存,可能占用空间大。
2.FastR-CNN FastR-CNN主要针对每一个候选区域进行CNN操作进行了改进,把整张图片送入CNN网络进行特征提取,不需要像R-CNN对每个候选区域进行输入CNN,提升了效率;同时,训练速度相应提升,不需要存储提取的特征,减少了储存空间占用;除此之外,提升了网络的利用效率,用于分类和回归调整的功能都用CNN网络实现,不需要额外的分类器和回归器。 尽管如此,FastR-CNN仍然有缺陷,对于生成候选区域仍然不够快速,再速度方面还需要提升。
3.FasterR-CNN FasterR-CNN是在R-CNN和FastR-CNN的基础上提出来的,主要亮点就是将获取特征图,候选区域选取,回归和分类等操作全部融合在一个深层网络当中,效率和精度较前两者提升很多,但存在的问题是生成候选区需要花费大量时间,并且也会影响后续的检测性能。
2.2.4基于MHI的检测算法图14算法整体结构该方法首先基于R-CNN进行人体检测,之后并对其进行追踪,并以相同的帧率生成MHI。之后,将所有边界框映射到由相同RGB图像序列生成的相应MHI,并在边界框中提取每个子MHI的HOG特征,最后使用SVM进行分类。 该方法可以达到很好的精度,但唯一的缺憾是在时间复杂度方面还有些欠缺,但也可以达到实时检测,同时具有很好的鲁棒性。 来源:论文(1)Therecognitionofhumanmovementusingtemporaltemplates论文(2)FALLDETECTIONBASEDONMOTIONHISTORYIMAGEANDHISTOGRAMOFORIENTEDGRADIENTFEATURE
2.2.5基于手工特征的检测方法基于手工特征的检测方法主要分为三类:帧间差分法、光流法以及背景差分法,其中背景差分法又包含混合高斯建模方法、codebook方法以及ViBe算法,其中尤其是ViBe算法的实时性和准确率最高,被广泛用于运动的目标检测,包括摔倒等行为。 ViBe等手工特征提取算法主要用于从RGB图像视频中比较前后帧从而判断前景和后景,由此划分出运动的人体,之后基于上述方法进行滤波操作以及有关HOG、LBH等特征提取,并融合有关CNN提取特征的方式,进而输入到分类器进行分类检测。 该方法较为简单,但相比于R-CNN系得到边界框的方法效果较差,同时可能出现识别精度低的问题,但也可以作为一个备选方案。 来源:论文Automaticfalldetectionofhumaninvideousingcombinationoffeatures
2.2.6基于OpenPose的检测方法图15基于OpenPose的方法该方法通过OpenPose进行人体动作关键点的提取,之后利用CNN及SVM来判断是否摔倒。该方案的特色在于可通过OpenPose的方法取得人体姿态的关节点位置,从这一方面考虑进行后续识别,具有很好的鲁棒性,而后续的工作也可以结合采用CNN等深度学习的方式来进行动作的高识别率检测 来源:论文Video-basedFallDetectionforSeniorswithHumanPoseEstimation
2.2.7基于LSTM的检测方法图16基于LSTM检测结构图基于LSTM的方法主要是从时间序列上处理不同帧之间的变化情况,可专注于人体运动从而忽略静态场景图象,因此就不需要背景差分建模来处理前后景,解决了每次需对场景配置进行校准的工作。而基于特征提取方面,也可以采用卷积网络等表现好的深度网络,提高识别准确率。 该方法的创新之处在于利用LSTM来进行序列间模型的学习,实时性和准确度都可以得到很好的保证。 来源:论文RGB-DFallDetectionviaDeepResidualConvolutionalLSTMNetworks
注:上述两部分主要针对人体行为识别以及摔倒检测进行了相关介绍,仅供参考。点云深度学习研究现状与趋势
点击上方“小白学视觉”,选择加"星标"或“置顶”
重磅干货,第一时间送达本文转自:3D点云深度学习
作者:霍尔顿
在工业界,利用激光雷达获取点云数据,很早就有应用了,如进行测高、遥感等。近几年的大规模发展得益于自动驾驶和机器人领域的火热,激光雷达成为重要的感知手段而得到人们关注,点云处理也成为热门。
点云是什么?
说白了点云就是一堆带有三维坐标(也可以带强度、颜色信息)的点,由于数目庞大,因此可以描绘出物体的三维轮廓。
点云VS图像
点云数据与图像处理具有很多相似点,因此不少处理方法是从图像处理演变而来,但是点云又具有自身特点(简单、稀疏、准确),因此研究人员根据这些特点,发展出效果更好的处理手段。
PCLvs 深度学习
我们都知道,在深度学习没出来之前,图像处理就已经发展出大量算法了。同样的,点云处理领域也是这样,比如做点云特征提取、配准、识别等等。这方面还有不少开源程序库,例如大家都知道的PCL,在这里顺便吐槽一下,PCL中文网站的维护实在太差了,信息陈旧,国内参考书籍出的也少,导致民间不少从事点云数据处理的研究人员,相互聚集在一些QQ群、微信群中,互帮互助,抱团取暖,但是解决问题效率一般。
近几年深度学习发展迅速,在图片、视频和自然语言处理等领域大放异彩。最近三年在点云处理领域中也逐渐发展起来,下面按照点云处理形式对现有方法进行分类和梳理。
基于像素的深度学习
这是最早用深度学习来处理点云数据的方法,但是需要先把三维点云在不同角度渲染得到二维图像,然后借助图像处理领域成熟的深度学习框架进行分析。代表作是MVCNN网络,它的思路是考虑到图像领域已经通过渲染3D模型的12个角度的图像,并对图像进行分类。效果也不差。
怎么评价这种思路呢?其实还是不错的,除了分类任务,在点云目标检测中,也有不少论文采用了这种思路,比如自动驾驶场景的目标检测,如MV3D等,也是会把点云投影到三维空间。
基于体素的深度学习
代表作有VolumetricCNN、VoxNet、VoxelNet。将点云划分成均匀的空间三维体素,对体素进行处理。优点是这种表示方式很规整,可以很方便地将卷积池化等神经网络运算迁移到三维;缺点是由于体素表达的数据离散运算量大,所以分辨率较低,因此具有一定的局限性。
基于树的深度学习
OCNN利用八叉树方法将三维点云划分为若干节点,以节点的法向量作为输入信号,按照Z排序方法将点云表示成一维数组,之后可以很方便地与已有神经网络进行连接。类似思路的论文还有OctNet同样采用八叉树组织点云,Kd-Network采用的是KD树。
基于点的深度学习
代表作是斯坦福大学研究人员提出的PointNet,用来直接对点云进行处理,该网络很好地考虑了输入点云的排列不变性。采用maxpooling作为对称函数进行处理。之后考虑到PointNet缺乏局部信息的缺点,提出了改进版PointNet++,各项指标也是刷新了前作。
与PointNet不同,在解决点云的无序排列问题上,PointCNN没有采用maxpooling作为对称函数,而是训练了一个X变换网络,在多项任务中达到了当时的最高水平。
趋势总结
最后进行一个简单的总结,点云遇到深度学习之后,主要朝着两个方向发展,其一是解决点云领域的自身需求,如配准、拟合;其二是解决计算机视觉领域的需求,如识别、检测、跟踪。
如果走第一条路,需要对传统点云处理算法进行学习,而深度学习就只是提取特征的工具了,会用就行。如果走第二条路,就需要对计算机视觉领域的识别、检测、跟踪等领域浩如烟海的paper、代码都要进行学习,然后往点云领域去迁移,目前很多点云目标检测算法也都是这么做的。相比较而言,第二条路前景更广阔一些,对于高校研究生发表论文也相对容易找到突破口。
End
下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程,即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。
下载2:Python视觉实战项目52讲
在「小白学视觉」公众号后台回复:Python视觉实战项目,即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。
下载3:OpenCV实战项目20讲
在「小白学视觉」公众号后台回复:OpenCV实战项目20讲,即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。
交流群
欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~