【Pytorch神经网络理论篇】 35 GaitSet模型:步态识别思路+水平金字塔池化+三元损失

本文涉及的产品
交互式建模 PAI-DSW,每月250计算时 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
模型训练 PAI-DLC,100CU*H 3个月
简介: 步态特征的距离匹配,对人在多拍摄角度、多行走条件下进行特征提取,得到基于个体的步态特征,再用该特征与其他个体进行比较,从而识别出该个体的具体身份。

同学你好!本文章于2021年末编写,获得广泛的好评!


故在2022年末对本系列进行填充与更新,欢迎大家订阅最新的专栏,获取基于Pytorch1.10版本的理论代码(2023版)实现,


Pytorch深度学习·理论篇(2023版)目录地址为:


CSDN独家 | 全网首发 | Pytorch深度学习·理论篇(2023版)目录


本专栏将通过系统的深度学习实例,从可解释性的角度对深度学习的原理进行讲解与分析,通过将深度学习知识与Pytorch的高效结合,帮助各位新入门的读者理解深度学习各个模板之间的关系,这些均是在Pytorch上实现的,可以有效的结合当前各位研究生的研究方向,设计人工智能的各个领域,是经过一年时间打磨的精品专栏!

https://v9999.blog.csdn.net/article/details/127587345


欢迎大家订阅(2023版)理论篇


以下为2021版原文~~~~


103b746101d146cd93357daedb91d512.png



代码:


【Pytorch神经网络实战案例】28 GitSet模型进行步态与身份识别(CASIA-B数据集)_LiBiGor的博客-CSDN博客


1 CASIA-B数据集本例使用的是预处理后的CASIA-B数据集, 数据集下载网址如下。

http://www.cbsr.ia.ac.cn/china/Gait%20Databases%20cH.asp该数据集是一个大规模的、多视角的步态库。其中包括124个人,每个人有11个视角(0,18,36,...,180),在3种行走条件(普通、穿大衣、携带包裹)下采集。1.1 CASIA-B数据集的两种形式CASIA-B数据集有视频和轮廓两种形式。1.1.1 案例讲解本例直接..

https://blog.csdn.net/qq_39237205/article/details/124141716


1 步态识别思路


1.1 步态识别的本质


步态特征的距离匹配,对人在多拍摄角度、多行走条件下进行特征提取,得到基于个体的步态特征,再用该特征与其他个体进行比较,从而识别出该个体的具体身份。


7ba24f208b254565a98f0426e342f6b0.png


1.2 步态识别的主体思路


203557ceece743b3ae2cb8e785405eb2.png


1.2.1 神经网络的角度看待步态识别的数据集


在步态识别中,需要将一组图片作为一个样本。


从神经网络的角度来看,步态识别的组图片也只是在代表图片[H,W,C]的基础之上,多出一个张数的维度而已。


1.2.2 步态识别模型的数据处理的三种方式


整体处理:将输入数据当作一个完整的3D图片数据,来计算输入数据在三维空间里所表现的整体特征。如对整体的输入数据做3D卷积。


分散处理:将输入数据当作由多张图片组成的序列数据,先对单张图片进行特征处理,再对序列数据特征进行处理。在分散处理的过程中,又可以分为重视序列顺序关系(如基于惯性的步态识别)和不重视序列顺序关系两种做法。


混合处理:先对单张图片进行基于人形特征的预处理(如提取人形轮廓数据、人的姿态数据),再将预处理后的数据当作原始输入,进行二次处理(可以使用整体处理或分散处理)。混合处理模式更为细致,也更为灵活。


1.2 CASIA-B数据集


CASIA-B是使用最广泛的步态数据集, 包含124人的RGB和轮廓形式的多视角步态数据。从11个不同的视角进行采集,范围从0到180度,增量为18度。该数据集考虑了三种不同的行走条件,即正常行走(NM)、穿外套行走(CL)和携包行走(BG),每个人每个视角分别有6、2和2个步态序列。


CASIA-B最常用的测试协议是受试者无关协议,该协议使用前74名受试者的数据进行训练,其余50名受试者进行测试。然后将测试数据拆分为一个注册集,其中包括NM步态数据中的前四个步态序列,验证集由其余序列组成,即每个受试者每个视角的剩余2个NM、2个CL和2个BG序列,结果主要针对所有视角报告。


2 GaitSet模型


GaitSet模型属于混合处理方式,该模型的二次处理部分使用了分散处理。


2.1 预处理


GaitSet模型的预处理部分,需要对视频中抽离的图片进行基于人物识别的语义分割,得到基于人形的黑白轮廓图,如图所示。


6b0691e3cc6d49f49f026286632482cc.png


2.1.1 轮廓图的优点


通过将轮廓图看作单通道图片,实现基于人的多帧图片被当作多通道图片进行处理,即其形状可以描述为[批次个数,帧数,高度,宽度] 与RGB状为[批次个数,通道数,高度,宽度]相似。


2.2 特征处理


2.2.1 GitSet模型分散处理


GitSet模型采用分散处理,对每一张图片计算特征,再对多个特征做聚合处理。


2.2.2 GitSet模型分散处理的核心部分


①多层全流程管线(Multlayer Global Pipeline,MGP)是一个类似FPN结构的网络模型,通过两个分支进行下采样处理,并在每次下采样之后进行特征融合。


②水平金字塔池化(HorizontalPyramid Matching,HPM)按照不同的水平尺度对特征数据进行池化,并将池化结果汇集起来,从而丰富数据的鉴别特征。


2.2.3 GitSet模型分散处理的训练


在训练时,将模型计算出的特征用三元损失(Triplet Loss)进行优化,使其计算出的特征与同类别特征距离更近,与非同类别特征距离更远。


在使用时,具体步骤如下。


(1)对人物视频进行抽帧采样。

(2)对采样数据进行处理,生成轮廓图。

(3)将多张轮廓图输入模型得到特征。

(4)将该特征与数据库中已有的特征进行比较,找到与其距离最近的特征,从而识别出人物身份。


3 完整GitSet模型流程图


3eae3a38eb2948e08bf9024654f313e1.png


4 多层全流程管线


主要分为两个分支:一个是主分支,另一个是辅助分支。


4.1 主分支


主分支用于对从视频分离出来的多帧数据,基于全部图片的特征进行处理。


采用两次卷积+一次下采样的操作进行特征计算与降维处理。


4.2 辅助分支


辅助分支用于对从视频分离出来的多帧数据,某于帧的特征进行处理。


辅助分支与主分支的处理同步,并对每次下采样后的数据讲行特征提取,将提取后的帧特征融合到主分支的特征处理结果里。


4.3 多层全流程管线处理流程图


46c37c47840b4bd7baed6dbb77dc771e.png


(1)在主分支中,对每一帧数据进行卷积外理。


(2)在主分支中,对卷积处理的结果进行下采样处理。


(3)将下采样结果分为两份,一份用于主分支,另一份用干辅助分支。


(4)在主分支中,对下采样结果进行基于帖特征的提取。


(5)在主分支中,对第(4)步的结果做卷积损作。


(6)在辅助分支中,继续对下采样结果做卷积操作。


(7)在辅助分支的卷积操作之后,进行一次下采样,并对下采样结果讲行基于特征的提取。


(8)在主分支中,也同步做一次下采样。


(9)将第(6)和(7)步的结果融合起来。


(10)继续重复第(5)~(9)步的步骤。重复次数与网络规模和输入尺寸右关其中第(4) 和(7) 步基于帧的特征提取部分使用了多特征集合池化(Set Pool in a)方法。经过测试发现直接使用取最天值池化的方法效果更好,而且该方法更为简单。


第(9) 步融合特征的方式使用的是直接相加, 也可以用cat函数将其拼接在一起, 在本例中,使用的是简单相加。


卷积神经网络的不同层能够识别不同的特征,通过深层卷积的组合,可以增大模型在图片中的理解区域。同时在主管道中,融合了从不同层提取的帧级特征,使得模型计算的特征中含有更丰富的整体特征。


5 水平金字塔池化


水平金字塔池化是来自行人再识别(Person Re-l dentification) 任务中的一种技术。它充分地利用了行人的不同局部空间信息,使得在重要部件丢失的情况下,仍能正确识别出候选行人, 增强了行人识别的健壮性(参见arXiv网站上编号为“1811.06186”的论文)。


5.1 行人再识别任务


行人再识别任务是从图片或者视频序列中找到特定行人的任务。


该任务属于图像检索任务中的一种,常常与行人检测、行人跟踪任务一起被应用在智能视频监控、智能安保等领域。


5.2 HPM模型的做法和原理


5.2.1 HPM模型的做法


将图片按照不同的水平尺度分成多个部分, 然后将每个部分的全局平均池化和全局最大池化特征融合到一起。


5.2.2 HPM模型的结构


a5f9085988f84b528198bb0988965ad4.png


这种做法相当于引入了多尺度的局部信息互助作用来缓解不对齐引起的离群值问题。其中每个局部的信息通过全局平均池化与全局最大池化策略结合得到的融合特征更具有判别能力。


全局平均池化:可以感知空间条的全局信息,并将背景上下文考虑进去。


全局最大池化:实现提取最具判别性的信息并忽略无关信息(如背景、衣服等)。  


5.2.3 HPM模型在步态识别实例的作用


使用HPM模型作为整个网络的最后部分, 对全连接层的特征进行优化,提升了特征的整体鉴别性。


6 三元损失


三元损失是根据3张图片组成的三元组计算而得的损失 ,常用于基于样本特征进行匹配的模型中,如人脸识别、步态识别、行人再识别等任务的模型中。


6.1 三元损失算法图解


在每次提取特征时,同步输入与该样本相同类别和不同类别的两个样本。利用监督学习使该样本特征与相同类别的样本特征间的差异越来越小,与不同类别的样本特征间的差异越来越大。


0889bd65f4ae4e92958aba6656f9edfd.png


如上图所示,通过监督学习,可以让输入样本经过网络计算之后的特征与相同类别的样本特征距离更近,与不同类别的样本特征距离更远。


三元损失训练的模型,最终将使相同类别的特征会更加相似,解决样本特征指向不明确的问题。


6.2 三元损失的使用


在使用三元损失时,常会直接将一批次的输入数据进行内部两两交叉,并从中分出正向样本(类内距离)和负向样本(类间距离)。这种方式可以保证与其他损失计算的接口统一,而又不需要额处开发选取正/负样本的功能。


6.2.1 三元损失中的间隔margin


ac9c563b220548259cdabda0cc0a5eb8.png


6.2.2 三元损失的模式hard与full


full模式(默认): 对所有的正向样本和负向样本进行损失值的计算。


hard模式:只对最小的正向样本和最大的负向样本进行损失值的计算, 目的在于优化特征并使其指向偏离最大的样本,运算量会更小。

目录
相关文章
|
3月前
|
机器学习/深度学习 数据采集 人工智能
PyTorch学习实战:AI从数学基础到模型优化全流程精解
本文系统讲解人工智能、机器学习与深度学习的层级关系,涵盖PyTorch环境配置、张量操作、数据预处理、神经网络基础及模型训练全流程,结合数学原理与代码实践,深入浅出地介绍激活函数、反向传播等核心概念,助力快速入门深度学习。
223 1
|
5月前
|
网络协议 算法 Java
基于Reactor模型的高性能网络库之Tcpserver组件-上层调度器
TcpServer 是一个用于管理 TCP 连接的类,包含成员变量如事件循环(EventLoop)、连接池(ConnectionMap)和回调函数等。其主要功能包括监听新连接、设置线程池、启动服务器及处理连接事件。通过 Acceptor 接收新连接,并使用轮询算法将连接分配给子事件循环(subloop)进行读写操作。调用链从 start() 开始,经由线程池启动和 Acceptor 监听,最终由 TcpConnection 管理具体连接的事件处理。
214 2
|
5月前
基于Reactor模型的高性能网络库之Tcpconnection组件
TcpConnection 由 subLoop 管理 connfd,负责处理具体连接。它封装了连接套接字,通过 Channel 监听可读、可写、关闭、错误等
170 1
|
5月前
|
JSON 监控 网络协议
干货分享“对接的 API 总是不稳定,网络分层模型” 看电商 API 故障的本质
本文从 OSI 七层网络模型出发,深入剖析电商 API 不稳定的根本原因,涵盖物理层到应用层的典型故障与解决方案,结合阿里、京东等大厂架构,详解如何构建高稳定性的电商 API 通信体系。
|
3月前
|
机器学习/深度学习 存储 PyTorch
Neural ODE原理与PyTorch实现:深度学习模型的自适应深度调节
Neural ODE将神经网络与微分方程结合,用连续思维建模数据演化,突破传统离散层的限制,实现自适应深度与高效连续学习。
191 3
Neural ODE原理与PyTorch实现:深度学习模型的自适应深度调节
|
2月前
|
边缘计算 人工智能 PyTorch
130_知识蒸馏技术:温度参数与损失函数设计 - 教师-学生模型的优化策略与PyTorch实现
随着大型语言模型(LLM)的规模不断增长,部署这些模型面临着巨大的计算和资源挑战。以DeepSeek-R1为例,其671B参数的规模即使经过INT4量化后,仍需要至少6张高端GPU才能运行,这对于大多数中小型企业和研究机构来说成本过高。知识蒸馏作为一种有效的模型压缩技术,通过将大型教师模型的知识迁移到小型学生模型中,在显著降低模型复杂度的同时保留核心性能,成为解决这一问题的关键技术之一。
|
2月前
|
机器学习/深度学习 数据采集 人工智能
深度学习实战指南:从神经网络基础到模型优化的完整攻略
🌟 蒋星熠Jaxonic,AI探索者。深耕深度学习,从神经网络到Transformer,用代码践行智能革命。分享实战经验,助你构建CV、NLP模型,共赴二进制星辰大海。
|
3月前
|
机器学习/深度学习 传感器 算法
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
230 2
|
4月前
|
PyTorch 算法框架/工具 异构计算
PyTorch 2.0性能优化实战:4种常见代码错误严重拖慢模型
我们将深入探讨图中断(graph breaks)和多图问题对性能的负面影响,并分析PyTorch模型开发中应当避免的常见错误模式。
292 9
|
3月前
|
机器学习/深度学习 并行计算 算法
【CPOBP-NSWOA】基于豪冠猪优化BP神经网络模型的多目标鲸鱼寻优算法研究(Matlab代码实现)
【CPOBP-NSWOA】基于豪冠猪优化BP神经网络模型的多目标鲸鱼寻优算法研究(Matlab代码实现)

热门文章

最新文章

推荐镜像

更多