有源代码+V细聊,可商用/私用/毕设等:NzqDssm16
🍉1 绪论
经过相关研究确认,步态识别是足以达到应用级别的生物识别技术,在现代社会中自始至终都存在着广泛的应用前景。之所以迟迟没有普及,主要是实现难度大。传统的步态轮廓图将步态信息合成为一个模板,这种简单粗暴的方式仅仅只是把所有的步态轮 廓图重叠在一起,这样虽然能起到一定的识别效果,但却无法保留帧与帧之间的时间信息变化特征,从而导致识别率不尽人意。而步态序列则将步态信息按顺序排列,但对帧 的顺序要求较高,导致灵活性不足。为了克服传统方法的局限性,本文使用的是一种全 新的视角下的识别方式,那便是将步态信息视作一个由独立帧组成的集合。这种方法的独特之处在于可以忽略帧的顺序,实现帧之间的灵活整合,并具有跨镜头的能力,不同角度下的步态都能够得到令人满意的识别效果。
这样的识别方式是一种基于深度学习 GaitSet 网络,而机器学习、传统图像处理打辅助的技术,步态识别很容易受到外部因素的影响。例如:受试者的行走速度、穿衣和携带物品。GaitSet 模型在受干扰的情况下保留空间和时间信息的能力比步态模板方法 要好。一个结构叫做 Horizontal Pyramid Mapping(水平金字塔映射) 被使用将 Set 级 别的特征映射到一个更具有区别力的空间去获得最终的表示。
🍉2 步态识别方法概述
2.1 步态采集与特征提取🎈
2.1.1 目标检测和多目标追踪🥒
步态识别需要输入指定格式数据到步态识别网络 GaitSet 中去,但步态采集最开始 的数据往往是一段视频流,这个视频流可能来自于摄像头也有可能来自于监控,捕获被识别者行走时的步态信息。因此采集的过程中,我们为了保持时间上和空间上的连续性, 需要对视频流进行逐帧理,把视频帧处理为步态轮廓图,并把同一个视频流的步态数据整合到一个步态集合中去,这是因为一个完整的步态周期才能被视作为一个有效的步态集合数据。
这首先就离不开两种算法①目标检测和②多目标追踪:
步态采集系统的第一步,毫无疑问便是获取步态,人体检测可以很好达到这个目的, 从一帧帧的视频流中得到其中人体的位置信息,并通过位置信息可以裁剪出我们需要的 步态截图,这对于接下来的人体分割有着很重要的作用,可以进一步提高其效果。除此之外,这些位置信息亦是可以作为输入,放入多目标检测算法,做到人体追踪,连续的目标人物不丢失的的效果。
但在实际场景中,情况远远比想象中复杂,行人遮挡是一个经典的研究课题,当行人在行走的时候,行人可能会被其他物体或行人遮挡,这个时候人体仅仅保留了部分特征,甚至只有一小部分的特征。这会导致目标丢失等严重问题,同时目标检测框的预测值也会随着降低,当行人达到 2 人以上,单纯的目标检测只能检测出一张图像中的行人,一但到了下一帧,便无法知道下一帧的 a 行人在上一帧的哪个位 置,更无法知道 a 行人是上一帧的哪一个行人,导致目标丢失,这是决不允许的,因此当视频流中的行人达到 2 人,甚至更多人的时候,多目标追踪是不可缺少的一环。
多目标追踪技术是应对目标丢失等问题的,步态识别需要一个完整的步态序列,一 个完整的步态序列需要从头到尾目标不会丢失,且该步态序列中的步态轮廓图都隶属于该目标人物,因此追踪带来连续性。 视频序列中目标的连续性问题,即在连续的帧中识别和跟踪同一目标,同时处理目 标之间的运动轨迹和身份关联,多目标追踪的效果如下图 10 所示,图上行人头上的序号在下一帧直到离开镜头,都不会发生改变,象征着他们隶属于同一个步态序列。本设 计选择使用的 ByteTracer 多目标追踪算法作为一种先进的多目标追踪算法,能高效的处理行人间的交叉、遮挡和拥挤等复杂情况,通过高精度的轨迹跟踪和身份匹配,确保对行人在视频序列中的步态进行连续、完整且准确的捕获
ByteTrack 与其他多目标追踪检测最大的不同是其并没有引入卷积神经网络等计算 量大的组件,仅仅通过数据结构算法达到了 SOTA。这也意味着其计算量低,运行速度快, 轻量精简的特点,成本降低的同时也意味着步态识别的应用提高了其广泛性。 重要的是,其创新性的提出了目标检测检测到的目标不仅仅只有位置信息是重点, 置信度也是同样重要的一个指标,根据置信度便可以对未匹配成功的跟踪目标而言,需 要将它与低置信度目标重新进行关联,还可以根据置信度对那些置信度小于阈值的进行 舍弃,对置信度高于阈值的目标继续追踪,从而达到目标哪怕被遮挡十分严重,只剩下 部分特征依旧可以准确的使得卡尔曼滤波预测到目标接下来的运动轨迹,待目标重新出 现后,依旧成功追踪,这对于本设计意义十分重大。
2.1.2 实例分割🥒
一帧帧的步态数据从视频流中抽取下来,会按照时间顺序整合唯一个步 态序列。接下来,还需要进行对这个步态序列进行特征提取,一般来说,步态特征通常 包括空间特征、时间特征等,这些特征能够描述人体在行走过程中的姿势和动作变化, 但是深度学习提取出来的特征是什么,没有人知道,这是一个黑色结果,可能包含了传 统的步态特征,但绝不仅仅如此。
空间特征主要描述的是人体在行走中的过程中,在空间中的所有变化,例如轮廓形状变化、人体在行走中的空间位置和姿态信息的变化等,在详细一体可理解为关节角度的改变规律、移动距离等。通过提取轮廓的曲线信息和关键点信息,可以有效地表示步态特征。
时间特征主要描述了人体在行走中的动作变化,包括步态周期、步长、速度等信息。 通过分析人体在行走中的运动规律,可以提取出独特的运动特征,用于区分不同个体之 间的步态差异。如下图 1 所示,因为人体关节点信息丰富的缘故,比较常见的步态特征提取方式是对原始图像进行处理,得到骨架图,以及人体各个关节点的信息,从而提取出特征向量用于模型训练。
图 1 人体关节点提取过程
但其实这种基于人体姿态估计的方式 有着巨大的弊端,就是运行速度慢,如果花费大量的成本购买高级的设备,那么部署所消耗的成本又十分巨大,所以这对于目前的硬件 来说是一个基本无法实现普及的挑战。本文使用的是另外一种方式,但准确率在一个 124 大小的数据上准确率已经达到了应用级别的准确率。其步态采集过程更加多样,如图所 示如下的:
(1)从视频流中通过目标检测得到下图 2 上方一行裁剪后的人体图,之后通过实例分割从这些裁剪好的图片中,分割出步态轮廓图。最后将同一个视频流中的步态轮廓图按 照时间顺序放入一个序列中,形成步态序列。
图 2 人体轮廓图提取过程
(2)得到步态序列后,根据长宽比,由于现在的步态轮廓图尺寸必定是不统一的,所以需要根据二值图中白色像素的最低和最高位置剔除背景后统一尺寸,这样的尺寸必 须是符合 GaitSet 网络输入的,默认是长宽为 64 个像素,这也叫做 Takemura 对齐方式。
图 3 人体轮廓图裁剪过程
(3)最终得到一个个尺寸统一的二值步态轮廓图,组成了一个符合规范的步态序列,多个步态序列组成一个步态集合。
图 4 人体轮廓图裁剪完成效果图
2.2 步态匹配🎈
步态识别的原理类似于孪生神经网络,需要进行数据库比对,假设我们有一个识别 对象叫做“探针”,还有一个“画廊”存放着所有已经处理好的步态集合,每一个步态 集合有着多个步态序列,每一个步态集合当且仅对应着一个人的身份。步态匹配的主要 任务是将采集到的步态数据“探针”与数据库中的步态模板“画廊”进行一一比对,计 算出和每一个步态序列的距离,再将同一个步态集合的步态序列计算得到的距离取平均 值,选取最小的作为识别结果,如果最小的距离依旧比较大,那么便是无识别。下图 5 是步态某“探针”对“画廊”中序号为 0,1,2,3 的步态模板比对计算出的平均距离的结果图:
图 5 步态匹配中探针和数据库人物马氏距离匹配结果(部分)
显而易见,该“探针”与“画廊”中序号为 1 的步态模板步态信息最为吻合,且距 离较小,且与其他几个序号的步态模板相差很大,几个序号的步态模板之间却相差无几, 所以可以肯定且确定步态模板序号为 1 的人是该“探针”的识别结果。但仅仅是空白的 序号,其实是显得有一些无力的,因为身份识别结果的最终目标是识别出来准确的身份, 而并非序号,因此我们还需要步态信息转换的功能,请看下节。
2.3 步态信息转换🎈
GaitSet 网络作为一种先进的步态识别算法,输入一个步态集合,通过学习和分析 步态序列,可以准确地对输入的步态集合进行分类,输出与数据库中步态对应的一个序 号。这个对应的步态序号,而不是真实的身份信息。所以本设计需要将序号转换为信息 的字典,如下图 6 所示,每一个序号都对应着一个信息。
图 6 模板序号转换为身份信息
这个序号,对于用户来说,它只是一个抽象的数字,缺乏直观的含义。因此本设计 通过转换字典做到将 GaitSet 网络的识别结果转化为用户易于理解的信息,模板序号转 身份信息。这个字典是一个简单但能达到目的的数据结构——字典,这个字典将数据库 中的每个个体与一个唯一的数字编号对应起来,比如编号 3 代表老子,编号 4 代表孔子, 以此类推,便于管理和开发。
这样做的扩展性也是非常的强的,当数据库中的个体数量增加时,只需要简单地更 新字典,而无需对整个算法进行大规模的调整。这里本设计提供了一个自动化的脚本, 当录入完数据库中步态身份信息的时候,会自动遍历录入的数据结构,查看检查是否有 新的身份加入,如果有的话,将会自动更新到字典当中,不需要人为去管理,节约了大量的人力资源和时间。
🍉3 GaitSet 网络原理与特点
3.1 GaitSet 网络结构🎈
3.1.1 Set 学习🥒
首先,我们制定把步态视为一个 Set 的概念。给定一个有 N 个人的数据集,他们的身份分别是yi , i ∈ 1,2. . . ,N,我们假设一个人的一系列步态轮廓图分布为Pi(根据不同的 分布 P 可以区分不同的人),且每个人的步态都是独特的,只与自己有关。因此,一个 人在一个或者多个步态轮廓图序列(大的来说是指一个视频,小的来说是按照顺序排好 的步态轮廓图)的全部步态轮廓图可以被视作一个有着 n 个轮廓的 Set:X,且Xi = {xi j |j = 1,2, . . . , n},其中xi j~Pi 。
在此假设下,我们通过 3 个步骤完成步态识别任务,公式如下:
其中F是卷积网络,旨在从每个步态轮廓提取帧级特征。
函数G是用于将一组帧级特征映射到一组 Set 级别特征的排列不变函数——指输入 的顺序改变不会影响输出的值。它是由名为集合池化(Set Pooling-SP)的操作实现的。
函数 H 用于从 Set 级特征学习辨别不同的能力,此功能由结构实现称为水平金字塔映射(Horizontal Pyramid Mapping-HPM)。
输入X
i
是一个四维张量(
Set
维,图像通道数维,图像高度维,图像宽度维)。
图
7 GaitSet
网络框架
在GaitSet
网络中,”SP'表示集合池。梯形表示卷积块和池化块在同一列中具有 相同的配置,这些配置由带大写字母的矩形表示。请注意,在MGP上的块具有与主通道中相同的配置,但参数仅在主通道中的块之间共享。
HPP
代表水平金字塔池。
Set学习是实现步态识别的关键技术之一。传统的步态识别方法通常将步态信息视作一个模板或序列,但是这种处理方式无法有效提取帧与帧之间的变化特征,且对帧的顺序要求较高。相比之下,GaitSet
采用了全新的视角,将步态信息视作由独立帧组成的集合,而不是简单的序列。这种集合的概念使得网络在学习特征信息时具有更大的灵活性,能够忽略帧之间的顺序,同时也能够自然地整合来自不同视频的帧,从而具有跨镜能力。
3.1.2 三元损失函数🥒
深度学习领域,特别是在计算机视觉和人脸识别中,TripletLoss
是一种常用的损失函数,其核心目标是优化深度神经网络的特征表示,使得具有相同标签的样本在高维特征空间中的距离尽可能地靠近,而不同标签的样本则尽可能地分散。这个损失函数的名称来源于它每次迭代中需要同时考虑三个样本,即一个锚点(anchor
)、一个正样本(positive
)和一个负样本(
negative
),因此被称为三元组(
Triplet
)。
图8 三元损失函数
在训练过程中,每次选取一个三元组,锚点和正样本具有相同的标签,而负样本则具有不同的标签。理想情况下,神经网络的输出层(也称为特征层)应该能够将这样的三元组映射到一高维空间,使得锚点和正样本在空间中的距离非常小,而锚点和负样本之间的距离要远大于锚点和正样本之间的距离。这种距离的差异性是通过一个称为“margin
”的参数来控制的,它定义了正负样本之间的最小距离差。更具体来说,Triplet Loss
的计算公式可以表示为:
其中,d(a, p)
表示锚点
a
和正样本
p
之间的距离,
d(a, n)
表示锚点
a
和负样本n
之间的距离,
margin
是预设的距离阈值。公式中的
max
函数保证了如果
d(a,p) -d(a, n) + margin小于
0
,那么损失将被设置为
0
,这意味着网络没有达到预期的距离分离效果,需要进行调整。如果d(a, p) -d(a, n) + margin
大于
0
,则网络在这一三元组上做得不错,损失会保持这个正值,但不会增加。
通过最小化这个损失函数,模型会尝试调整网络的权重,使得在训练集中的每个三元组中,锚点和正样本的距离减小,同时锚点和负样本的距离增加,确保满足margin的条件。这个过程以促进网络学习到更加鲁棒和区分性强的特征表示,这对于许多应用,如图像检索、人脸识别和物体识别等,都是非常关键的。
在实际应用中,TripletLoss
的计算通常伴随着三元组的选择策略。最简单的方法是随机选择三元组,但这可能会导致训练效率低下,因为很多随机选择的三元组可能在空间中距离已经足够远,对模型的更新贡献不大。因此,更智能的三元组选择策略,如Hard Negative Mining,会选择那些在网络当前状态下最难区分的三元组,这样可以更有效地推动模型的优化。
3.2 GaitSet网络优势🎈
3.2.1 跨境能力🥒
GaitSet网络是自从
2018
年起开创的新型深度学习网络,其具有独特的应用特点。跨镜能力便恰恰是GaitSet
网络的一个重要特征,使得步态识别的灵活性得到了历史级别的提升。跨镜能力指的是GaitSet
网络在处理来自不同摄像头或视频源的步态信息时,能够自然地将这些信息整合为一个集合,而无需关注帧的顺序或来源。这种能力使得 GaitSet网络在实际应用中更具灵活性和泛化能力,被称作“无序集”,这个概念最开始被应用于点云任务,可以避免由量化引起的噪声和数据扩展,并获得更好的性能,于是“无序集”在深度学习领域通过序列描述和排列不变函数的方法,得出了满意的实验结果,从而被广泛应用于步态识别领域。
简单来说,跨境能力是指,当数据源是来自不同摄像头、不同场景或不同拍摄角度的步态信息时,GaitSet网络都可以有一定的识别率。这种跨镜能力为步态识别系统的
部署和应用提供了更大的灵活性和可扩展性,但是这同时也会增加数据采集和处理的复杂性,但毋庸置疑,系统的实用性和性能是得到了大大的提高。
3.2.2 泛化能力🥒
在步态识别领域,GaitSet
网络作为一种基于深度学习的新型网络,具有独特的泛化能力,这一特点与传统的图像分类网络有所不同。传统的图像分类网络通常是学习训练集中的特征,而GaitSet
网络则是学习如何提取步态特征的能力,即提取每一个数据库中对应数据的特征,并且使用提取的特征与探针提取出的特征进行比对,计算马氏距离,取距离最相近的目标作为识别结果。这种特性使得在使用过程中,数据库可以随时改变而无需重新训练,大大提高了网络的灵活性和实用性。
泛化能力是指一个模型在面对新的、未见过的数据时的表现能力,也是衡量模型优劣的重要指标之一。在步态识别中,由于个体的步态特征会受到多种因素的影响,比如拍摄的角度不同,使用拍摄的摄像头不同导致的画面画质不同等等,但是GaitSet
网络却依旧可以有一定的识别率。
3.2.3
强大的环境适应能力
无论是在单一视角还是多视角的环境中,无论是拍摄条件如何变化,如穿着不同的 衣服,或者是携带不同的物品,只要这些变化并不影响步态的特性,GaitSet
都能够将 其视为同一个步态集合。这种特性使得GaitSet
在面对复杂环境和条件变化时,具有极 高的鲁棒性在实际测试中,本设计使用了两个权威的步态数据集——CASIA-B
和
OU-MVLP
。在CASIA-B
数据集上,
GaitSet
在正常行走条件下达到了
95.0%
的平均准确率,而在 OU-MVLP数据集上的准确率则达到了
87.1%
。这些结果不仅在当前的步态识别技术中处 于领先地位,也充分证明了GaitSet
在识别准确率上的显著优势。
更令人印象深刻的是,GaitSet
在复杂环境下的表现同样出色。在携带背包和穿着大衣的行走条件下,GaitSet
在
CASIA-B
数据集上分别实现了
87.2%
和
70.4%
的准确率,这比现有的其他方法有了显著的提升。这表明,无论是在日常生活中的常见干扰因素,还是在极端条件下的挑战,GaitSet
都能保持稳定的识别效果。值得一提的是发布数据集的作者并没有将数据集分为训练集和测试集,根据个人的需求,本设计将数据集分为了三个阶段,小样本训练阶段,中样本训练阶段和大样本训练阶段。各个阶段在训练过程中训练集占比如下表所示:
均取得了不错的成效。在资源有限的情况下,GaitSet 也能展现出强大的适应性。 例如,在 CASIA-B 数据集上,如果本设计只使用任意 7 帧的 frame 来进行识别,而忽略 其他帧数 frames,GaitSet 的准确率依旧可以达到 82.5%。这样的结果意味着,即使是 在数据量有限的情况下,GaitSet 也能提供令人满意的识别能力,这对于实际应用中的资源优化具有重大意义。