步态识别论文(6)GaitDAN: Cross-view Gait Recognition via Adversarial Domain Adaptation
摘要:
视角变化导致步态外观存在显着差异。因此,识别跨视图场景中的步态是非常具有挑战性的。最近的方法要么在进行识别之前将步态从原始视图转换为目标视图,要么通过蛮力学习或解耦学习提取与相机视图无关的步态特征。然而,这些方法有许多约束,例如处理未知相机视图的难度。这项工作将视角变化问题视为域更改问题,并提出通过对抗性域适应来解决这个问题。这样,不同视角的步态信息被视为来自不同子域的数据。该方法侧重于调整源域变化引起的步态特征差异,同时在不同人之间保持足够的可辨别性。为此,提出了一种用于判别特征提取的分层特征聚合 (HFA) 策略。通过结合 HFA,特征提取器可以很好地聚合网络不同阶段的时空特征,从而获得全面的步态特征。然后,提出了一种对抗性视图变化消除 (AVE) 模块,该模块配备了一组用于识别不同步态视角的显式模型。通过对抗性学习过程,在给定特征提取器生成的步态特征的情况下,AVE 无法识别最终步态视点。也就是说,对抗性域适应减轻了视图变化因子,并有效地提取了与所有子域兼容的判别步态特征。在CASIA-B、OULP和OUMVLP三个最流行的公共数据集上进行的大量实验有力地证明了我们方法的有效性。
引言:
步态是一种描述人类行走模式的物理和行为生物特征。与其他生物特征(如人脸、指纹和虹膜)不同,步态可以很容易地在距离捕捉,而不需要被试的合作,很难伪装,这使得它在各种监视应用中具有很高的潜力[1,2]。作为视觉中的识别任务,步态识别的基本目标是从步态序列中学习独特且不变的表示。然而,在现实场景中,步态序列受到携带、服装条件和相机视点切换等外部因素的影响。它对步态识别提出了重大挑战,特别是给跨视图步态识别带来的强烈的外观差异
为了解决上述挑战,现有的基于外观的跨视图步态识别方法主要分为两类:i)基于转换的方法和ii)基于消除的方法。第一类方法通常学习不同视图之间的转换关系[6-8],或者将不同视图的步态投射到一个共同的视图[4,9 - 11]。在训练数据中包含视图之间的转换的情况下,它们往往会很好地工作。然而,这种转换通常是在两个视图之间执行的,不能很好地扩展以处理不同的视图转换。第二类方法旨在消除视图变化干扰,可以进一步分为两个子类别:1)蛮力学习[1 - 3,12 - 15];2)解耦学习[16-19]。前者专门用于提取与视图变化无关的判别步态表示。为此,通常首先混合不同摄像机视图下的不同训练数据。然后,无论视图差异如何,模型都根据给定的人员 ID 进行训练,并支持不同的损失函数。解耦学习旨在将视图信息从步态特征的其余部分中分离出来,以消除其干扰。它要么故意安排不同视图下的训练数据,要么明确地将视图特征与步态特征的其余部分解耦。这样,模型可以最好地学习与相机视图无关的特征。与基于变换的方法相比,基于消除的方法更加灵活,可以很好地推广到不同的视图。然而,在蛮力学习中,视图本身,即显式视图估计或视图特定建模,在一定程度上被忽略和低估。在解耦学习中,解耦过程涉及使用生成对抗网络或自动编码器的特征分解和合成[16,18],这在某种程度上损害了步态序列中的时空特征。
这项工作提出了一种新的跨视图步态识别方法,该方法被视为域转移问题。不同视图的步态信息被视为来自不同子域的信息。视图变化引起的统计分布差异被视为子域偏移。因此,采用域适应 (DA) 作为所提出方法的管道。成功适应的关键是学习一个判别模型,以最小化源域和目标域之间的分布差异。在这项工作中,DA 不考虑针对一个目标域的一个源域 [20-22],但打算同时对齐多个子域的步态信息。因此,步态识别的步态最终特征表示与视图变化无关。受无监督DA方法[20,23 -25]的启发,我们采用域对抗神经网络(DANN)[25]作为解决这一挑战的基本框架。这种选择的基本原理源于 DANN 提供了几个关键优势的事实。首先,DANN 通过修改特征表示本身来匹配特征空间分布,而不考虑不同领域背后的变化因素和复杂的解耦操作,这更适合我们的目的多个子域适应。其次,DANN 在统一的架构中执行特征学习和域适应,并且可以使用简单的反向传播算法来实现。这种工作机制能够充分探索步态中的时空信息,同时消除视图变化的影响
因此,我们提出了一种新的步态域对抗网络(记为GaitDAN),用于跨视图步态识别。GaitDAN能够通过端到端对抗训练学习判别和子域不变的步态特征,使最终的步态表示在所有子域中都可以很好地泛化。图 1 说明了 GaitDAN 的结构,它由一个新颖的特征提取器、对抗性视图更改消除 (AVE) 模块和度量学习 (ML) 模块组成。特征提取器是具有专门设计的分层特征聚合 (HFA) 策略的新网络,能够提取浅层局部细节信息和高层语义表示的互补时空特征。因此,在不丢失细微的视觉线索的情况下,可以获得更全面的时空步态特征。AVE模块是GaitDAN中包含多个视图鉴别器的关键适应组件。它试图挑战特征提取器生成的步态特征,并通过对抗性学习过程将它们区分在不同的子域。也就是说,特征提取器旨在生成欺骗AVE的步态表示。同时,AVE以对抗学习的方式反馈给特征提取器,生成更好的子域不变步态特征来欺骗AVE。引入了ML模块,以进一步提高步态表示在特征空间中的可区分性。通过这种方式,保证了步态识别任务的高可辨别性。
随着训练的进行,GaitDAN 可以产生子域不变和有区别的步态特征。更具体地说,我们做出了以下三个主要贡献。
•我们首次将视图变化消除转化为域适应问题,提出了一种新的用于跨视图步态识别的领域对抗网络。与当前基于转换或基于消除的方法形成鲜明对比,这使得充分利用时空信息,同时消除视图变化的影响。更令人印象深刻的是,它提高了模型在完全未知的视点进行跨视图步态识别的性能。
•我们提出了一种新的HFA策略,该策略可以利用网络各个阶段的综合时空信息,并以微妙的注意方式分层聚合它们,有效地提高了所提方法的判别能力,保证了步态序列中时空信息的充分挖掘。•我们提出了一种简单而有效的视图变化消除方法,即AVE模块。通过利用子域对抗对齐的优势,AVE模块可以简单的方式缩小多个视图级子域之间的差异,有利于整个网络的端到端训练,进一步提高步态表示的鲁棒性。
提出方法
A.概述
首先将来自不同子域的步态轮廓序列输入到一个新的特征提取器GF(HFA)中,提取细粒度的时空特征FFM。然后,为了获得视图不变的细粒度特征,将视图对抗学习过程合并到网络中。这是一个由特征提取器GF和AVE模块GAVE组成的两人博弈。训练AVE模块来区分输入的细粒度步态特征来自哪个子域,同时对特征提取器GF进行微调,以混淆AVE模块。具体来说,通过最大化AVE模块的损失来学习特征提取器GF的参数WF,而AVE模块的参数WAV E通过最小化AVE模块的损失来学习。同时,应用包括三元组损失和交叉熵损失的 ML 模块来增强特征空间中细粒度步态表示的区分
将训练数据输入进特征提取器HFA 得到输出特征
featurebn, feature, fea_grl,#[N,128,bin_all]\[N,bin_all,74]\[N,bin_all,11]
其中 fea_grl特征 输入进 AVE 模块进行
featurebn, feature输入进ML模块
B.HFA策略的特征提取器
主干分支
HFA 分支
步态轮廓序列的二值化性质,加上视图变化引起的大外观干扰,导致受试者仅在轮廓序列中的特定位置的细微差异。因此,利用从网络的浅层阶段提取的特征进行准确的步态识别变得至关重要,因为它们可以对局部区域进行详细的编码。此外,用低级特征补充高级特征可以专注于更具辨别力的区域,从而提高特征的可辨别性。在此基础上,我们将分层特征聚合(HFA)策略引入到基于基本分支的特征提取器中,以获得更全面的时空步态特征。它由HFA分支实现,如图2所示。HFA的核心思想是同时考虑不同阶段的视觉线索。然而,不同阶段特征之间的分布差异和语义错位。直接聚合[39,40],如连接、求和或使用瓶颈层可能会导致语义混淆,而不是实现积极的补充。为此,我们引入了注意力机制,并在 HFA 分支中提出了一个跨阶段注意力聚合 (CSAA) 块,以合并来自基本分支中不同网络阶段的跨阶段时空特征。CAA块的详细架构如图3所示。它由两个可学习参数σ1、σ2、一个跨阶段注意推导操作Wm和一个跨阶段注意聚合操作Wa组成。
C.基于域适应理论的对抗性视图变化消除模块
跨域情况下主体的良好表示是模型无法识别域源信息的模型。AVE模块旨在在不指定任何特定源或目标域的情况下减少子域之间的分布差异。与只涉及两个域的一般域适应问题不同,基于轮廓序列的跨视图步态识别情况复杂,一方面涉及多个不同的子域,另一方面涉及佩戴和携带情况等复杂场景变化。因此,从不同子域到域不变空间的转换并不相同。在这方面,设计了一种逐步细化的域适应方法,该方法允许来自每个子域的样本来学习它们对域不变空间的相应变换。这导致每个子域与其他子域之间的域偏移逐渐减小,最终导致所有子域之间的差异减小。如图4所示,AVE模块由多个具有共享梯度反向层(GRL)的视图鉴别器组成。特别是,二进制(1 vs.其他人)判别器为AVE模块中的每个特定视图设计,
此外,开发了一个对抗性目标,以最小-最大的方式同时训练特征提取器和这些鉴别器。鉴别器损失的最小过程使他们能够区分源自该子域的每个步态输入,而其损失的最大过程旨在混淆这些鉴别器以消除子域差异。因此,AVE 模块中的每个子域都被视为临时目标域,而其他子域被视为源域。对抗性学习用于减少源域和目标域之间的差异。通过迭代训练,最终将不同摄像机视图下的步态信息映射到多个子域之间无法区分步态特征的公共嵌入空间。具体来说,对于具有权重参数 Wv D 的视图鉴别器 Dv,首先将归一化后输入样本 x 的每个基于部分的特征 f h F M ∈ RC′ 分别输入到 Dv 通过 GRL,然后将 Dv 的相应输出馈送到 softmax 层以获得概率输出 z ∈ R2。该过程可以表示为:
这里使用的GRL[25,35]是通过最大化子域区分损失(即公式12)来减少多子域的分布差异。如第 II-B 节所述,它可以在反向传播期间自动将最大化问题转换为最小化负损失,以实现网络优化的一致性。因此,优化GF的最大目标函数可以表示为
AVE模块的前向和后向传播如图4所示。在前向传播过程中,GRL只是一个公共层,没有任何额外的操作。在反向传播过程中,GRL反转优化目标Eq.(12)相对于特征提取器中的参数的梯度,然后用负权重α向后传递。通过GRL,可以以端到端的方式实现子域对抗对齐,而无需单独固定生成器和鉴别器进行迭代训练,如GANs。这大大简化了网络的整体实现,促进了步态序列中时空特征的挖掘。最后,可以提取所有视图鉴别器难以区分的鲁棒特征表示,然后可以有效缓解子域之间的差距。
D.度量学习模块
作为度量学习问题,具有高可辨别性的特征对于跨视图步态识别至关重要。基于 Triplet 的损失函数直接旨在学习判别特征,这些特征更直接、更合适。此外,基于三元组的损失函数通常能够通过在训练期间设置边距来更有效地学习细微特征,这特别适用于基于轮廓序列的跨视图步态识别。与其他基于距离的损失函数方法相比,如DrLim方法[43],其约束相对松散,更合适。DrLim使用对比度损失,将同一类所有样本之间的距离均匀收敛到0,而不同类别的样本之间的距离收敛到一个固定阈值。这是跨视图步态识别的一个极其严格的约束,同一类的样本与DrLim的使用之间存在很大的外观差异,可能会混淆原始度量学习。因此,在ML模块中采用了由单独的批全三元组损失[44]和交叉熵损失组成的组合损失以确保学习到的步态特征分散且具有高度区分性。按照[44]中概述的设置,对每个受试者的P个受试者和U个轮廓序列进行采样,以组成大小为P×U的小批次。对于小批量中的每个序列(锚点),选择相应的正例(pos.)和负例(neg.)来构建样本三元组。具体来说,锚和正例具有相同的身份标签,但与负例不同,PU (U − 1) (PU − U ) 样本三元组在每个小批量中构成。为了充分利用细粒度特征,分别对ML模块中的水平切片特征分别施加batch-all三元组约束。完整的三元组损失定义为:
E.联合损失函数
最后,由单独的批全三元组损失Eq.(14)和交叉熵损失Eq.(16)组成的总体目标,以及第III-C节介绍的损失来优化所提出的GaitDAN。提出的GaitDAN的函数式(2)可以改写为:
相关文章:
步态识别论文(6)GaitDAN: Cross-view Gait Recognition via Adversarial Domain Adaptation
摘要: 视角变化导致步态外观存在显着差异。因此,识别跨视图场景中的步态是非常具有挑战性的。最近的方法要么在进行识别之前将步态从原始视图转换为目标视图,要么通过蛮力学习或解耦学习提取与相机视图无关的步态特征。然而,这些方法有许多约…...
K8S中的弹性云服务如何搭建,可能遇到的问题,如何解决!(稳啦!!!!全都稳啦!!!)
首先我们先来了解一下这玩意儿~~~ 啥是弹性云服务(Elastic Cloud Service)???? 弹性云服务(ECS)是一种基于云计算技术的虚拟服务器,由vCPU、内存、磁盘等组成的获取方便…...
新增分类——后端
实现功能: 代码开发逻辑: 页面发送ajax请求,将新增分类窗口输入的数据以json形式提交到服务端服务端Controller接收页面提交的数据并调用Service将数据进行保存Service调用Mapper操作数据库,保存数据 代码实现: Con…...
20232801 2023-2024-2 《网络攻防实践》实践九报告
20232801 2023-2024-2 《网络攻防实践》实践九报告 1.实践内容 (1)手工修改可执行文件,改变程序执行流程,直接跳转到getShell函数。 (2)利用foo函数的Bof漏洞,构造一个攻击输入字符串…...
类和对象--this引用原理
看如下代码 public class Date {public int year;public int month;public int day;public void setDate(int y, int m, int d) {year y;month m;day d;}public void printDate(){System.out.println(year "年" month "月" day "日");}…...
力扣:416. 分割等和子集(Java,动态规划:01背包问题)
目录 题目描述:示例 1:示例 2:代码实现: 题目描述: 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 示例 1: 输入&#…...
Vue进阶之Vue项目实战(一)
Vue项目实战 项目搭建初始化eslint版本约束版本约束eslint配置 stylelintcspellcz-githusky给拦截举个例子 zx 项目搭建 node版本:20.11.1 pnpm版本:9.0.4 初始化 vue3最新的脚手架 pnpm create vite byelide-demo --template vue-ts pnpm i pnpm dev…...
预告 | 飞凌嵌入式邀您共聚2024上海充换电展
第三届上海国际充电桩及换电站展览会(CPSE),即将于5月22日~24日在上海汽车会展中心举行。届时,飞凌嵌入式将带来多款嵌入式核心板、开发板、充电桩TCU以及储能EMS网关产品,与来自全国的客户朋友及行业伙伴一同交流分享…...
vite 打包配置并部署到 nginx
添加配置 base:指项目在服务器上的相对路径,比如项目部署在 http://demo.dev/admin/ 上,那么你的基础路径就是 /admin/ 打包后生成的文件 部署到 nginx 访问部署地址,页面加载成功 参考文章:如何使用Vite打包和…...
ResponseHttp
文章目录 HTTP响应详解使用抓包查看响应报文协议内容 Response对象Response继承体系Response设置响应数据功能介绍Response请求重定向概述实现方式重定向特点 请求重定向和请求转发比较路径问题Response响应字符数据步骤实现 Response响应字节数据步骤实现 HTTP响应详解 使用抓…...
【题解】非对称之美(规律)
https://ac.nowcoder.com/acm/problem/214851 #include <iostream> #include <string> using namespace std; string s; int n; int fun() {// 1. 判断是否全都是相同字符bool flag false;for (int i 1; i < n; i) {if (s[i] ! s[0]){flag true;break;}}if…...
遇到如此反复的外贸客户,你可以这样做~
来源:宜选网,侵删 当你们遇到爽快的买家的时候,你是否有把握一定能把她拿下呢? 还是说即使客户很爽快,你也会耐心认真的沟通呢? 今天要和大家分享的这个买家,我本以为他是一个很爽快的买家&am…...
【数据库】简单SQL语句
已知某图书管理数据库有如下表格: 用户表user、部门表dept、角色表role、图书表book、图书分类表book_classify、图书借阅表book_borrow、还书表book_return、借阅预约表book_appoint、图书遗失表book_lose; 用户表user、部门表dept、角色表role、图书表book、图书…...
K邻算法:在风险传导中的创新应用与实践价值
01 前言 在当今工业领域,图思维方式与图数据技术的应用日益广泛,成为图数据探索、挖掘与应用的坚实基础。本文旨在分享嬴图团队在算法实践应用中的宝贵经验与深刻思考,不仅促进业界爱好者之间的交流,更期望从技术层面为企业在图数…...
【小白的大模型之路】基础篇:Transformer细节
基础篇:Transformer 引言模型基础架构原论文架构图EmbeddingPostional EncodingMulti-Head AttentionLayerNormEncoderDecoder其他 引言 此文作者本身对transformer有一些基础的了解,此处主要用于记录一些关于transformer模型的细节部分用于进一步理解其具体的实现机…...
Golang | Leetcode Golang题解之第73题矩阵置零
题目: 题解: func setZeroes(matrix [][]int) {n, m : len(matrix), len(matrix[0])col0 : falsefor _, r : range matrix {if r[0] 0 {col0 true}for j : 1; j < m; j {if r[j] 0 {r[0] 0matrix[0][j] 0}}}for i : n - 1; i > 0; i-- {for …...
JMeter性能压测脚本录制
第一步:电脑打开控制面板设置代理服务器 第二步:jmeter的测试计划添加一个HTTP(S)脚本记录器 在脚本记录器里配置好信息,然后保存为脚本文件(.*表示限定) 此方框内容为项目地址(可改…...
缓存雪崩、缓存击穿、缓存穿透是什么、之间的区别及解决办法
缓存雪崩、缓存击穿、缓存穿透: 详细介绍看这篇文章,写得很好: 什么是缓存雪崩、缓存击穿、缓存穿透 下面是我自己总结的,比较简单清楚地展示了缓存雪崩、缓存击穿和缓存穿透的根本区别和相应的解决办法。强烈建议看完上述文章后…...
Pytorch张量广播
Pytorch 中的主要的数据结构包括标量、向量、矩阵、张量,同时支持数据之间的运算。在 Pytorch 中有一个张量广播的概念,就是要把小的放大,最后在一起做计算,并不是所有的张量都可以计算,规则如下 首先比较维度&#x…...
AI算法-高数2-导数定义和公式
P14 2.1 导数的定义(一):2.1 导数的定义_哔哩哔哩_bilibili 导数定义: 导数公式: P15 2.1 导数的定义(二):2.1 导数的定义(二)_哔哩哔哩_bilibili [a,b]可导,a的端点:右可导,b端点&…...
Vitis HLS 学习笔记--AXI_STREAM_TO_MASTER
目录 1. 简介 2. 示例 2.1 示例功能介绍 2.2 示例代码 2.3 顶层函数解释 2.4 综合报告(HW Interfaces) 2.5 关于TKEEP和TSTRB 2.6 综合报告(SW I/O Information) 3. 总结 1. 简介 本文通过“<Examples>/Interface…...
WPF之可翻转面板
1,创建翻转面板的资源字典:FlippPanel.xaml。 无外观控件同样必须给样式指定类型( <ControlTemplate TargetType"ss:FlipPanel">),相关详情参考:WPF之创建无外观控件-CSDN博客)…...
【深度学习】--slowfast视频理解数据集处理pipeline
官网指引: facebookresearch SlowFast :https://github.com/facebookresearch/SlowFast 进入dataset:https://github.com/facebookresearch/SlowFast/blob/main/slowfast/datasets/DATASET.md 这里面的东西需要通读,但是不要过于…...
ArcGIS10.2能用了10.2.2不行了(解决)
前两天我们的推文介绍了 ArcGIS10.2系列许可到期解决方案-CSDN博客文章浏览阅读2次。本文手机码字,不排版了。 昨晚(2021\12\17)12点后,收到很多学员反馈 ArcGIS10.2系列软件突然崩溃。更有的,今天全单位崩溃。提示许…...
mysql查询表信息(表名、表结构、字段信息等)
MySQL中,您可以使用以下SQL查询数据库的表信息或者某个表中具体的信息,例如:字段、字段描述、索引等,以下为具体的SQL: 1、查询数据库所有表信息(表名/表描述) SELECTtable_name name,TABLE_C…...
【MySQL探索之旅】JDBC (Java连接MySQL数据库)
📚博客主页:爱敲代码的小杨. ✨专栏:《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 |《MySQL探索之旅》 |《Web世界探险家》 ❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更…...
tomcat-GC溢出
背景 一个项目需要导出大量的数据,导致GC但是这个项目在本地能够运行,但是在服务器上就不能运行本地和服务器的区别:NGINX和TOMCATGC和NGINX无关,那么就是Tomcat分配JVM的堆内存的容量不够 错误解决思路 网上教了一些查看JVM的大小…...
结合场景,浅谈深浅度拷贝
有两段代码是这样的: A段: List<String> list1 new ArrayList<>(); Bear B new Bear(); for(Apple apple : apples){B.url apple.url;B.content apple.content;list1.add(Bear); } B段: List<String> list1 new A…...
生成指定范围的随机整数
private static final Random RANDOM new Random();// 生成指定范围的随机整数public static int generateRandomInt(int min, int max) {return RANDOM.nextInt(max - min 1) min;}public static void main(String[] args) {Integer count 5;Integer randomInt generateR…...
少的缓存穿透是缓存击穿,大量的是缓存雪崩
只要请求穿过了缓存层,直接打到了数据库,我就把这个现象理解为缓存穿透。 只要缓存失效了,就会出现缓存穿透,然后根据失效缓存数量的多少,划分出缓存击穿和缓存雪崩 缓存一致性 先改redis再改mysql。...
大型购物网站建设/百度资源搜索平台官网
今日凌晨,李笑来在微博表示:“从今往后,李笑来个人不会做任何项目投资(不管是不是区块链,不管是不是早期)。因此,若是你再看到李笑来被站台(之前就长期被站台无数,说99%事…...
设计师的素材网站/端口扫描站长工具
小波与小波变换_图文_百度文库 https://wenku.baidu.com/view/d55626d9ac51f01dc281e53a580216fc700a5361.html 图像Haar小波变换 - HanFeiKei的博客 - CSDN博客 https://blog.csdn.net/HanFeiKei/article/details/83584963 转载于:https://www.cnblogs.com/wxl845235800/p/996…...
wordpress多站点数据共享/培训机构在哪个平台找
2019独角兽企业重金招聘Python工程师标准>>> 为什么使用Maven? 1.目前的技术在开发中存在的问题 ①.一个项目就是一个工程: 如果项目非常庞大,就不适合使用package来划分模块,最好每一个模块对应一个工程,利…...
网站建设百度云/北京网上推广
算法设计与分析 钻石金字塔问题 一、 问题描述 现在你的任务是从金字塔的顶端向金字塔的底端收集钻石,并且尽可能收集价值高的钻石,但是只能从一块砖斜向左下或斜向右下走到另一块砖上,如从上图从用红色 A 标记的砖走向用蓝色 B 标记的砖上。…...
有哪些做的比较好的网站/成都网站推广哪家专业
我正在使用php创建一个xml文件.生成的XML是.PeterVJohnMale但是如果值为null,则生成的xml是(查看节点插入).PeterJohnMale如果值为null,我希望创建xml以使其生成.PeterJohnMale这是我的代码.$doc new DOMDocument(1.0);$doc->formatOutput true;$root $doc->createEle…...
新闻宣传wordpress主题/如何优化关键词提升相关度
在安装之前,确认你的机器安装了python,和easy_install.通常python是自动安装的,如果没有安装easy_install,那么wget -q http://peak.telecommunity.com/dist/ez_setup.py获取一下python ez_setup.pypexpect是python一个模块,可以通…...