2d人脸识别和3d(2D与3D人脸识别详解)

颜倩
基于计算机视觉的人机交互一般可以分为四个部分:
1.有没有人;
2.人在哪里;
3.这个人是谁;
4.这个人在做什么;
人机交互过程中涉及的关键技术点如下:
四个部分中,第一、二、三部分可以实现人脸识别(详见《2D与3D人脸识别详解》),但是第四部分的人脸识别在人在做的时候是无效的。第三部分中的这个人是谁?当图片分辨率太小,人脸识别失败,或者图片中的人只有背景,人脸识别无法识别这个人是谁:
如上图,人脸识别可以识别出这个人是谁。不不。这时候我们就不得不使用人脸识别之外的另一种识别方式:手势识别。
姿态识别简介
人体姿态是人体重要的生物特征之一,在步态分析、视频监控、增强现实、人机交互、金融、移动支付、娱乐游戏、体育科学等领域有着广泛的应用。手势识别可以让计算机知道一个人在做什么,并识别这个人是谁。特别是在监控领域,当摄像头采集的人脸图像分辨率过小时,是一个很好的解决方案,可以作为目标识别系统中重要的辅助验证手段,达到减少误识别的效果。
姿态识别的一般过程如下:
人体分割
用于人体分割的方法大致可以分为人体骨骼关键点检测和语义分割。本文主要分析与姿态相关的人体骨骼关键点检测。人体骨架关键点的检测输出是人体的骨架信息,一般作为人体姿态识别的基础部分,主要用于分割和对齐。一般实现过程如下:
人体姿态识别
人体姿态识别包括动作识别和身份识别两个方面,关键是人体特征提取,主要完成动作特征提取和身份特征提取。一般的实现过程是:动作识别
识别
人体骨架关键点检测经常被用作手势识别的基本组成部分。这里先介绍人体骨架关键点检测的实现,再介绍人体手势识别(动作识别和身份识别)的实现。
第一名
人体骨骼关键点检测
人体骨架关键点检测,又称姿态估计,主要检测人体骨架关键点信息,如关节、五官等。并通过关键点描述人体骨骼信息。它经常被用作手势识别和行为分析的基本组件,如下图所示:
人体骨骼关键点检测的现状
人体骨架关键点检测是一项多方面的任务,包括目标检测、人体骨架关键点检测、分割等。人体骨架关键点检测可分为二维(2D)和三维(3D)人体骨架关键点检测;根据检测方法,可分为自下而上和自上而下两种方法。
人体骨骼关键点的检测结果如下:
检测人体骨骼关键点的挑战;
1.每张图片中的人数是未知的,图像中的人数越多,计算复杂度越大(计算量与人数成正相关),使得处理时间更长,从而造成实时困难。
2.人与人之间会有关系,比如接触、闭塞等。这样就更难区分不同人的关键点,可能会把骨头的关键点错当成另一个人的。
3.很难区分关键点的图像信息,也就是说,在检测关键点时,很容易出现检测位置不准确或置信度不准确,甚至将背景图像误认为关键点图像。
4.人体不同关键点的检测难度不同。头部附近的关键点很难检测到,比如腰部和腿部,没有明显的特征,不同的关键点需要区别对待。
根据输出的关键点数据是2D还是3D,可以分为2D关键点检测和3D关键点检测。2D人体骨骼关键点检测;
输入图像数据:RGB3D人体骨骼关键点检测:
根据输入图像数据是RGB还是RGBD,可以分为2D人
输入图像数据:RGB(2D ),输入图像数据:RGBD(3D)2D。实现了人体骨骼的关键点检测。
2D人体骨骼关键点检测的算法模型基本遵循自顶向下和自底向上两种思路:
自上而下的
自顶向下的人体骨架关键点检测算法包括两部分:目标检测和单个人体骨架关键点检测。目标检测算法完成人体包围盒的输出。目前,目标检测方法的精度和速度都很高。算法模型包括YOLO系列、SSD系列、RCNN系列、RFCN系列等。本文重点研究了关键点检测算法。
分区域多人姿态识别算法
该模型主要解决了自顶向下的人体骨骼关键点检测中目标检测包围盒可能存在定位错误、重复检测同一物体等问题。包围盒定位误差会导致关键点检测区域误差,关键点检测区域误差会导致同一个人的关键点不同。该模型提出了一种解决目标检测产生包围盒问题的方法,即通过空间变换网络将同一人体产生的不同裁剪区域变换到一个更好的区域,这样就不会因为一个人体产生不同的裁剪区域而出现不同的关键点检测效果。具体流程如下图所示。
图片来自https://arxiv.org/pdf/1612.00137.pdf
上图中SPPE SDTN站的结构如下
图片来自https://arxiv.org/pdf/1612.00137.pdf
STN从不精确的帧中提取高质量的单个候选帧,SPPE生成各种姿态,SDTN生成候选姿态,并引入并行SPPE分支进行优化。
人体骨骼关键点的自顶向下算法有CPN(级联金字塔网络)、RMPE、G-RMI等。
从下到上
自底向上的人体骨骼关键点检测算法主要包括两部分:关键点检测和关键点聚类连接。关键点检测的目的是检测出图片中所有人的所有关键点。在检测出关键点后,需要对这些关键点进行聚类,将每个人的不同关键点连接在一起,这样通过连接就可以产生不同的个体。
零件亲缘关系字段
方法通过对人体不同的肢体结构建模,用矢量场模拟不同的肢体结构,解决了中点是否单纯用在肢体主干上的问题。
图片来自https://arxiv.org/pdf/1611.08050.pdf
如上图所示,如果只用中间点对肢体躯干建模,如果中间点都在对应的肢体躯干上,则判断两个关键点在肢体躯干的两端,这样就会出现上图所示的误连。而PAFs不仅使用中间点对肢体躯干建模,还在中间位置之外的每个中间点上添加了方向信息,从而解决了错误连接问题。如下图所示。
图片来自https://arxiv.org/pdf/1611.08050.pdf
使用PAFs的模型是openpose,是目前速度快、精度高的人体骨骼关键点检测模型。openpose的整体思路如下:
首先识别关键点和关节的热图(即关节的面积和方向),然后用PAFs算法合成个体姿态图。
图片来自https://arxiv.org/pdf/1611.08050.pdf
如上图所示,openpose的检测过程如下:
1)计算所有关键点(头、肩、肘、腕.)如上图(B)所示;
2)计算所有相关区域,如上图(c)所示;
3)根据关键点和关联区域进行矢量连接,从前两步得到关键点和关联区域,再根据关联区域连接关键点,形成真实的人体骨骼结构。作者提出个体姿态的生成树图可以用最少的边数获得(利用二部图的匈牙利算法等。),既保证了良好的准确性,又大大降低了复杂度,提高了实时性,解决了关键点聚类配对时,每对点都需要测试一次才能找到最优划分组合结构的问题。
自底向上的人体骨骼关键点检测算法包括:部分分割、部分亲和场、关联嵌入、中间偏置、CPM(对流姿态机)等。
当需要三维人体姿态信息时,2D人体骨架关键点检测不能满足要求,因此需要进行三维人体骨架关键点检测。2D人体骨骼关键点检测的实现
人体骨骼的2D关键点是通过三维重建方法检测的,一般输入是RGB 2D图像数据。首先利用2D关键点检测方法检测人体骨骼的2D关键点,然后利用三维重建方法将2D关键点信息转换到三维空间,输出人体骨骼的三维关键点信息。该方法使用的图像数据不是真实的三维数据,输出的三维信息主要通过2D三维重建实现。当然这种方法也能解决一定的问题,在动作识别、身份识别等领域有一定的作用。
2D人体骨骼关键点检测输出的人体骨骼关键点信息是3D数据,即每个关节是一个3D坐标(x,y,z),如下图所示:
图片来自http://www.sysu-hcp.net/3d_pose_ssl/
2D人体骨骼关键点检测的模型是DensePose,可以在GPU上以每秒多帧的速度运行,基本可以在实际环境中使用。
Denpose是一个主要建立在目标探测平台(Detectron)上的模型,称为DensePose-RCNN。模型的结构如下图所示:
图片来自https://arxiv.org/pdf/1802.00434.pdf
DensePose-RCNN采用金字塔网络(FPN)特征的RCNN结构,区域特征通过ROI align pooling进行聚合,获得每个选定区域的密集部分标签和坐标。将2D图像中人的表面图像数据投影到三维人体表面上,并将三维人体表面模型分成24个部分。然后,为每个部位构造一个UV坐标系,将2D图像中人体部位的每个点映射到相应的3D表面部位。还可以估算图像中人体的UV,变换3d模型,将空间坐标转换成UV坐标,粘贴在图像上。
DensePose借鉴了Mask-RCNN的结构,具有特征金字塔网络(FPN)和ROI-Align池的特点。整个过程如下:首先用Faster-RCNN得到字符区域的包围盒,然后用CNN网络模块分块,再用CNN网络模型处理每个分块,最后得到目标的热图IVU。三维人体骨骼关键点检测的实现
前面的2D人体骨骼关键点检测基本上可以概括为2D人体骨骼关键点检测和三维重建过程。这里,分析了使用RGBD图像数据的3D人体骨骼关键点检测的实现。
图像是RGBD的一种方式,即利用深度图像获取人体骨骼的关键点数据。虽然只使用了RGBD中的深度图像D(Depth Image),但是深度图像实际上是一个真实的3D图像数据,深度图像包含深度信息和图像高度宽度信息。很多硬件设备的SDK都有这个功能,比如微软Kinect、英特尔RealSense 3D相机、Mo-Cap解决方案等。
自从Shotton,J等人提出了随机森林算法在单深度图像中的实时人体姿态识别中的应用。在2011年的: CVPR (2011)]中,利用深度信息获取人体骨骼关键点的算法已经逐渐出现。比如SDK自带的微软Kinect深度相机的骨架提取算法,就采用了随机森林算法,而且已经得到了市场的认可。但随着CNN的崛起,在CV、NLP等领域取得了显著的成绩。以下是基于CNN RNN结构的人体骨骼关键点获取模型分析。该模型的网络结构如下:
图片来自http://vision.stanford.edu/pdf/haque2016eccv.pdf
模型的结构如上图所示。深度图被输入,并且深度图被重复处理。每次迭代包含两个输入,即原始图像处理生成的一个面片(称为Glimpses)和之前生成的人体骨骼的关键点信息。
模型的输入深度图像并不直接发送到网络,而是首先提取图像中的不同面片,其中每个面片以每个预测的身体部位为中心,并转换为瞥见。Glimpse是原始输入的一种特殊编码形式。其中心分辨率较高,周边分辨率逐渐降低,使得中心的特征集中学习,同时保留部分空间信息。
从深度图像到嵌入图中的过程输出的是视角不变的特征空间。在获得恒定比例的瞥视后,将这些瞥视作为输入,通过运算转换成三维姿态数据输出。转换模型如下:
图片来自http://vision.stanford.edu/pdf/haque2016eccv.pdf
对于输入的一瞥,结合原始深度数据,通过函数f(x)转换为体素(3维)。最后,将三维特征V映射回二维空间,最终获得三维人体姿态信息。
2D人体骨骼关键点检测与3D人体骨骼关键点检测的比较如下:
人体姿态的关键点是计算机视觉的主要组成部分,是计算机理解人类语言和肢体语言的主要途径。解决了人体分割、人体定位、人体搜索等问题。通过对人体骨骼关键点的检测,可以完成动作识别分析和身份识别的内容。当然,在动作识别和身份识别过程中,可以集成人体骨骼关键点检测的技术,不输出人体骨骼关键点信息。
下面介绍人机交互过程中第四部分,人体姿态识别的实现。
第二名
人体姿态识别
人机交互识别过程中的挑战之一是人体姿态识别,主要解决以下问题:
1)身份识别问题:图像分辨率过低,导致人脸识别失败的情况;
2)辅助验证手段:配合人脸识别等识别手段,提高识别准确率;
3)图像检索等。
4)其他。人体姿态识别的现状
姿态识别主要用于识别这个人一段时间在做什么,或者根据他的姿态信息和运动规律完成身份验证功能。姿态识别需要单帧或者多帧连续的姿态数据,算法模型可以用来计算人在做什么或者是谁。下面从动作识别分析和身份识别两个方面进行分析。
动作识别
视频是一帧一帧分析的,通过连续的动作来识别人的动作,比如走、跑、蹲等。它广泛应用于计算机视觉中的人机交互。主要的处理模型可以分为两类:卷积神经网络(3D-CNN),基于循环的神经网络及其扩展模型(CNN LSTM)。
动作识别分析的应用场景包括:3D私人健身教练、3D试衣、游戏人物动作设计、古画分析、人体绘画教学、游戏互动、影楼姿势指导等等。
动作分析效果,例如:
识别
行人识别和步态识别是身份识别的实现方法。
人再识别(ReID)又称行人再识别,是一种利用计算机视觉技术判断图像或视频序列中是否存在特定行人的技术。它被广泛认为是图像检索的一个子问题。旨在弥补固定摄像头的视觉局限性,并可与行人检测/跟踪技术相结合,可广泛应用于智能视频监控、智能安防等领域。行人再识别是生物特征识别的重要组成部分,可以作为人脸识别的补充。
步态识别:首先对视频进行预处理,将行人从背景中分离出来,形成黑白剪影轮廓。然后从连续的剪影图像中获取特征,最终达到身份识别的目的。基础是每个人都会有自己的行走方式,这是一个相对复杂的行为特征。
剪影如下所示(来自CASIA-B):
在监控视频中,由于摄像机分辨率和拍摄角度的原因,通常无法获得非常高质量的人脸图片。当人脸识别失败时,ReID和步态识别成为一种非常重要的替代技术。ReID最重要的一个特点就是十字摄像头,所以在学术论文中评价性能的时候,需要检索不同摄像头下相同的行人图片。ReID和步态识别在学术界已经研究了很多年,只是近几年随着深度学习的发展才有了很大的突破。
人体姿态识别是人脸识别之外的另一个重要研究领域。这里将姿态识别分为两类,即动作识别和身份识别。
动作识别实现
要识别人的动作,通常需要连续的视频数据进行分析处理。需要采集的特征通常包括单帧图像数据的特征和多帧图像数据之间的时间特征。简单来说就是静态帧数据的帧间数据。
a、静态帧数据,表示单帧图像的空间信息
b,帧间数据,表示时间信息(光流数据)
常用的数据集有:KTH、魏茨曼、HOHA、凯克手势、MSR动作、YouTube动作、UT-Interaction等。
从目标分析的角度来看,动作识别也可以看作是一个分类的问题。每一个动作都是一种,如果有二十个动作,就是二十种。然后动作识别最终可以转化为两个主要过程:特征提取和分类。特征提取包括静态帧特征和动态帧间特征。随着算法的不断迭代发展,产生了许多经典的处理模型和算法。一般的识别过程是:
从上图可以看出,运动识别的关键步骤是人体分割、特征提取和特征编码。
人体分割就是将图像中人体所在的区域从图像的其他部分分割出来。早先已经介绍了使用人体关键点检测的分割方法。特征编码的作用是将提取的特征标准化到统一的空间,通常特征提取和特征编码一起使用。运动识别的CNN模型已经包括特征提取和特征编码。
如上所述,运动识别需要提取静态帧特征和帧间特征。经典的网络模型有双流泛函网络、TSN、TRN等。下面介绍。
双流卷积网络
双流结构受神经科学启发,人类视觉皮层包含腹侧流(执行物体识别)和背侧流(识别运动)两条路径。
图片来自https://arxiv.org/pdf/1406.2199.pdf
空间流convnet输入单帧RGB图片,可以在Image-net上进行预训练,然后在视频数据集上进行微调。训练图是从所有视频帧中随机选取一帧,进行相应的数据增强,如翻转等处理,然后随机切割成224*224。用于提取和分类单帧数据。
时间流convnet处理连续帧的光流信息。因为光流是一个矢量,为了输入网络训练的方便,这个矢量被分解成水平和垂直两个方向的分量。所以m*n*3的一帧对应的光流特性图是m*n*2,总共是L个连续帧。经过随机剪裁后,输入矩阵为224*224*2L。因为光流计算比较耗时,所以OpenCV可以提前提取每个视频的光流图,量化到0-255,用来提取帧间数据特征并分类。
温变系数
两个基于CNN的运动识别方法提出了一个很好的思路,在运动识别领域,除了使用3DCNN等思路,还提出了一个有效的思路,可以解决一定的问题。然而,两流正交网络的方法有一个明显的缺点,即不处理输入图像帧,并且这种帧收集方法是密集采样方法。如果连续帧中人的动作保持不变,那么动作识别就无效,处理时间就浪费了。
为了解决上述问题,于是出现了具有如下结构的TSN:
图片来自https://arxiv.org/pdf/1608.00859.pdf
TSN将输入的视频流分成K个片段,然后在每个片段中随机选取一小段发送给CNN(双CNN模式),再进行特征融合和分类。
trn阅读器
TSN主要提出了稀疏时间的采样策略,提高了识别精度。但是在帧间时间序列的处理上似乎没有太多的优化,于是TRN在TSN的基础上优化了时态部分,提出了视频级实时时间关系推理框架,如下:
图片来自https://arxiv.org/pdf/1711.08496.pdf
双CNN优化不仅包括前面介绍的TSN和TRN,还包括针对空间的加权优化方法DOVF,以及同时优化空间和时间部分的ECO。TSN、TRN、DOVF、ECO解决了一系列连续多帧采集问题,使从密集采样切换到稀疏采样成为现实,大大提高了处理速度和精度。
除了两个CNN之外,还有CNN LSTM、GCN(GR-GCN)网、3DCNN等结构。常见的模型有LRCN、圣GCN、DPRL GCNN、GEGCN、SGR-GCN、2s-NLGCN等。技术的发展总是在你追我赶的过程中。
动作分析的模型已经朝着更高的精度和更快的速度发展。无论是两个-CNN,3DCNN,CNN LSTM等。需要解决以下问题:
1.运动识别通常需要一系列连续的帧。如何从视频中采样一个更好、更合适、不重复的帧;
2.一系列连续的帧往往需要消耗大量的计算能力,这就增加了实时性的难度;
3.动态运动幅度有大有小,有快有慢,静态运动是静态图像,需要准确区分识别;
4.训练集中的动作将与实际环境中的动作大不相同。如何保证在实际环境中的准确性是一个大问题。
3号
身份识别实现
基于人体姿态的身份识别,和人脸识别的目的一样,主要用于区分不同的人,其中人体属性如身高、矮、胖、瘦、长发、短发、衣服颜色、鞋子等。基本上可以被识别和区分。一般的识别步骤是:
识别模型包括:基于服装颜色、身高等传统特征的方法。PCB、MGN、EANet、doop-person-reid、BFENet、stand Baseline、PTSN、GaitSet、GEINet、GaitGAN等。基于深入的方法。
身份识别的技术难点
1.模型的泛化能力较弱。
在训练集上测试的效果很好,但是当迁移到实际环境(真实环境)或者用另一个测试集验证时,模型的性能明显下降。
2.人体的特征和属性变化很大。
人的胖瘦、身高、长发短发都会发生变化,而且变化的更快,比如换一个发型,上午长发,下午短发等等。这将导致识别模型的失败。
3.计算量比较大。
基于人体姿态的身份识别往往需要多帧图像数据集的组合,需要提取每帧图像数据的特征以及多帧图像数据之间的运动信息。
4.数据资源少。
目前基于人体姿态的身份识别相关数据集太少,最多的数据集的ID只有几千人,数据集数量也很少。
5.行人特征的不稳定因素很多。
多个摄像头下拍摄行人的角度不同。要想做出正确的判断,就要找到行人保持不变的部分(比如衣服颜色、衣服质地、手袋、背包等。).在计算机视觉中,常见的特征有颜色直方图等。
根据身份识别的原理、CNN的特征提取方法以及综合身份识别的技术难点,基于手势的身份识别分为以下两种方式。
基于单帧图像(2D)的身份识别
利用单帧图像数据完成基于人体姿态的身份识别,基本方法是利用CNN的特征提取方法,设计一个CNN网络模型和一个损失函数,使CNN网络模型在数据集上学习能够区分不同身份的参数。CNN可以根据任务要求从原始图像数据中自动提取表征特征,行人再识别问题可以看作是一个分类问题或验证问题:(1)分类问题是指以行人的ID或属性作为训练标签来训练模型,基于表征特征的方法;(2)验证问题是指输入一对(两张)行人图片,让网络学习这两张图片是否属于同一行人的方法,基于度量学习。一般过程如下:基于表征特征的方法
基于度量学习的方法
基于表征的方法
基于特征的方法类似于人脸识别方法。首先检测图像中人体的具体位置,然后从图像中提取人体的信息。然后,对提取的人体数据的分辨率进行标准化,执行方向校正和其他对准操作。最后用CNN网络将对齐后的图像数据转换成特征数据,然后计算数据的相似度。对齐主要是利用人体骨骼关键点的检测作为参考点。
基于特征的学习方法,处理方法包括将整张图片输入CNN网络模型进行特征提取,或者分块处理后将整张图片送入CNN网络模型,然后对各个模块的特征进行全局处理。下面分两部分介绍。
基于全局特征
一般全局特征提取模型还会加入对人体属性的识别,因为人体特征存在很多不稳定性,比如换一个发型,早上长发,下午短发等。为了提高泛化能力,增加了人体属性特征,如性别、服装等。通过引入人体属性标签,模型不仅要准确预测出行者ID,还要预测正确的行人属性,大大增加了模型的泛化能力。典型模型如下:
图片来自https://arxiv.org/pdf/1703.07220.pdf
上图中的模型不仅使用了CNN来提取目标的特征(这个特征是什么?CNN很清楚,只要能区分两个不同的人),还能提取人体的属性,比如性别、头发、衣服等。最后结合两种判断给出目标的ID。
基于局部特征的重组
除了上述的人体全局特征外,基于局部特征的识别方法也用于基于人体姿态的身份识别。常用的局部特征提取思路主要有图像切割、人体骨骼关键点定位和姿态校正等。最后通过LSTM将局部特征合并成整体特征,本质上是对全局特征的处理方法,只是在提取全局特征之前先提取局部特征的细节。
如下图,将图片分成几个部分,提取局部特征。分割后的图像块按顺序送入长短期记忆网络(LSTM),最终特征融合所有图像块的局部特征。但是这个缺点在于对图像对齐的要求很高。如果两幅图像没有上下对齐,很可能会出现头部和上半身对比的现象,导致模型判断错误。
图片来自https://arxiv.org/pdf/1607.08381.pdf
为了解决上述由于两幅图像未对准而导致分割失败的问题,采用人体骨骼关键点检测的数据作为基础来解决两幅图像的未对准问题。首先利用骨架关键点检测模型检测出人体的关键点,然后根据关键点进行仿射变换,即将关键点的位置映射到图像的固定位置,使两幅图像对齐。这个对齐过程中使用的模型是PoseBox,对齐效果如下:
图片来自https://arxiv.org/pdf/1701.07732.pdf
使用PoseBox的对齐模型结构如下:
图片来自https://arxiv.org/pdf/1701.07732.pdf
还有其他一些模型可以利用单幅图像直接获得全局或局部特征:AlignedREID、GLAD、Spindle Net等。
方法
测量的目的是通过网络学习两张图片的相似度。同一个人不同图片的相似度大于不同人不同图片的相似度。网络的最终损失函数使得同一个人的图像(正样本对)之间的距离尽可能小,不同人的图像(负样本对)之间的距离尽可能大。
基于度量学习方法的身份识别的典型模型如下:
来自https://arxiv.org/pdf/1611.05244.pdf.
以上网络输入是几对行人图片,包括分类子网和验证子网。分类子网络预测图片的ID,并根据预测的ID计算分类错误损失。验证子网络融合两幅图片的特征,判断两幅图片是否属于同一行人。子网络本质上相当于一个两级网络。在用足够多的数据进行训练,再次输入一张测试图片后,网络会自动提取一个特征,作为判断行人再识别分类的依据。
基于度量学习的方法有三个关键要素:CNN特征提取模型、损失损失函数和数据集。CNN特征提取模型可以参考前面基于表征特征学习的方法,数据集可以是任何基于手势识别的数据集。
常用的测量方法对比损失函数有:对比损失、三重损失、四重损失、三重硬损失配合批硬开采(trihard损失)、边际抽样开采损失(MSML)等。
五个损失函数,Paper 《MarginSampleMiningLoss: ADeepLearningBasedMethodforPerson Re-identication》,分别在三种CNN架构上进行测试:resnet50、inceptionv2和resnet50-x,精度如下表所示:
资料来源:https://arxiv.org/pdf/1710.00478.pdf
基于单帧图像的识别方法实际上是一个2D实现过程,因为只使用了一帧图像数据,而这一帧图像数据是2D,只有RGB信息。优点是计算量小于多帧图像,所以处理速度快。但缺点也很明显,就是处理的信息有限,会影响识别准确率。
基于多帧图像的身份识别不仅提取了每帧图像数据的特征,还提取了帧间的运动特征,使得图像数据更加丰富,识别准确率更高。
下面开始分析基于多帧图像数据的识别,也就是3D的实现。
基于多帧图像(3D)的识别
多帧图像数据的获取方式有两种:多台摄像机同时从不同视角获取同一个人的图像,在不同时间单个摄像机或多个摄像机获取同一个人的多帧图像。
同时拍摄多帧图像
这种多帧图像是同一个人用不同位置的摄像机同时采集的,比如market1501用6个不同位置的摄像机,duketmmc-Reid用8个不同位置的摄像机,MSTM17用15个不同位置的摄像机等。所以这些数据是3D图像数据。这种多帧图像数据(真3D图像数据)不容易获取,需要各个角度的摄像机同时监控同一个地方。如下图:
这些照片是3D数据的多视图表示(3D数据的表示见《2D与3D人脸识别详解》)。此时,加工方法是3D加工方法。
不同时间的多帧图像
这种多帧图像不是同一个人同时采集的。可以由多个摄像头从多个角度采集,但不能同时采集。这类数据暂且称为伪3D数据。目前大部分数据集都是这样采集的,主要是因为这种数据采集方式相对于同时采集多帧的方式对硬件设备没有那么高的要求。如下图:
理论上,同一个人同时从不同角度采集的图像数据可能处理得更好,但数据采集更麻烦,硬件设备更严格,这是需要考虑的问题。目前基于多帧图像数据的处理方法基本是将同一个人不同角度(无论是否同时)的多帧图像统一发送给CNN,让CNN自行提取所需特征。这种处理方法可以被认为是3D处理方法。
这里分两部分介绍基于多帧图像的识别:
行人识别和步态识别的主要区别在于处理的图像数据不同。行人识别处理一帧或多帧彩色图像数据,步态识别处理多帧黑白轮廓剪影。
行人的重新识别
处理用于行人识别的多帧图像数据的主要方法之一是CNN RNN。当然也可以使用点云的数据处理方法。但由于点云数据的生成对硬件设备要求较高,且点云的处理复杂,计算量大,本文主要分析使用CNN RNN的方式。
RNN的主要思想是用CNN提取图像的特征信息,用基于RNN的方法提取帧间的运动信息。每幅图像由一个共享的CNN提取,然后这些特征向量被输入到一个RNN网络中以提取最终的特征。最终特征结合了单个图像的内容特征和帧之间的运动特征。网络结构如下图所示:
图片来自https://arxiv.org/pdf/1701.00193.pdf
但是实际环境中会有遮挡,如下图所示:
图片来自https://arxiv.org/pdf/1711.08766.pdf
针对这个遮挡问题,我们可以先判断图像输入网络前的质量,以完整的帧为重点,让网络给质量较高的帧较高的权重。整体网络结构如下:
图片来自https://arxiv.org/pdf/1711.08766.pdf
4号
步态识别
与前面的方法不同,基于特征的学习方法、基于度量的学习方法、CNN RNN方法等输入图像都是彩色图像数据,但这里步态识别处理的数据是处理后的黑白剪影剪影,剪影的获取方法一般可以通过语义分割得到。如下图:
(来自CASIA-B数据集)
步态识别方法主要有两种类型:
把步态想象成一幅图像
将多帧步态轮廓图压缩成一幅图像,将步态识别视为一个图像匹配问题。优点是计算简单,缺点同样明显,就是忽略了步态中的时序信息,无法建模精细的空间信息,所以准确率不会高。
典型的算法有:GEI、CGI、VTM、ViDP等。
把步态想象成一个视频序列
考虑直接从剪影中提取特征,分为空间(每个轮廓图像的特征)和时间(多个轮廓图像之间的信息)两部分。优点是可以很好的对步态中的时间和空间信息进行建模,缺点是计算量大,很难训练。
典型的算法包括基于LSTM的方法、基于3D-CNN的方法等。
盖特塞特
本文主要分析了AAAI2019收录的复旦大学提出的GaitSet模型。网络模型结构如下:
图片来自https://arxiv.org/pdf/1811.06186v2.pdf
在人类步态的视觉感知上,步态轮廓图从视觉角度来看是容易识别的。按照这种思路,作者不再刻意对剪影的时间序列进行建模和处理,而是把剪影看作一个没有时间序列的图像集,让深度神经网络进行自我优化,提取和利用这种关系。根据上面所示的网络结构,步态特征的提取分三步进行,公式如下:
其中输入xi是输入图像;F CNN从每个步态轮廓中提取特征;g是置换不变函数,用于将一组帧级特征映射到集合特征。这里F的多个特征聚合成一个特征;h是考虑提取多尺度特征,通过全连通网络提高特征的区分度。
g函数在上图中主要由SP实现,使用的方法是各种池化方法的集合,可以集成到网络中实现端到端的训练。算法流程如下:
图片来自https://arxiv.org/pdf/1811.06186v2.pdf
人体手势识别数据集包括:Market1501,Market1501-attribute,duketmc-reID,duketmc-attribute,CUHK01,CUHK02,CUHK03,3DPES,QMUL-伊利德斯,PRID,火星,伊利德斯-VID,PRID2011,网格,CUHK-佩德斯。
总结
由于神经网络的发展,在计算机视觉领域,识别的速度和精度都有了很大的提高。无论是分类、检测还是识别,目前基本都是以CNN为基础架构。通过直接对图像数据进行处理,得到数据,然后利用特定的算法实现分类、检测、识别等功能。人脸检测、识别、人体骨骼关键点检测、运动识别、行人识别、步态识别等。基本上都是按照这个架构实现的。本文对人机交互过程中手势识别的相关部分进行了分析。目前在所有模型中,基本都采用CNN作为基本的特征提取结构,准确率较好。
人体骨架关键点检测可以说是人体姿态识别的基础之一,比如在单帧图像数据基于特征学习的方法中就会用到。有基于多帧图像数据的CNN RNN方法和不检测人体骨骼关键点的步态识别方法,但都需要准确找出人体的位置。
通过对人体姿态的识别,计算机可以理解我们的动作,我们在做什么,我们是谁等等。
目标检测、人脸识别、人体骨骼关键点检测、基于人体姿态的动作识别、基于人体姿态的身份识别等技术还在不断发展和完善,各个领域的技术相互补充、相互借鉴、相互提高。上面介绍的模型和思路是目前业界实现的主要方式,一些不同的方法和模型也在不断的研究中,如向量卷积、神经网格等。所以因为篇幅的原因我就不在这里介绍了。

好玩下载

fresh sans车图(fresh!dtale!sans)

2023-8-20 17:21:18

综合资源

十分之九的老鼠是幸运的。十二生肖和这三个十二生肖是天堂的结合,没有人可以将其分解!

2025-4-29 2:37:46

购物车
优惠劵
搜索