读《Gaitset: Regarding gait as a set for cross-view gait recognition》
2019在AAAI(还有一版叫GaitSet: Regarding Gait as a Set for Cross-View Gait Recognition,大体上一样)
摘要
现有的步态识别方法要么利用步态模板,难以保存时间信息,要么利用保持不必要的顺序约束的步态序列,从而失去步态识别的灵活性。在本文中,我们提出了一种新的视角,利用步态作为深度集,这意味着一组步态帧由全局局部融合深度网络集成,其灵感来自于我们的左右半球处理信息来学习可用于识别的信息。基于这个深度集视角,我们的方法不受帧排列的影响,可以自然地整合在不同场景下获得的不同视频的帧,如不同的视角、不同的衣服或不同的物品承载条件
引言
GEI模式方法尽可能丰富地编码信息,但压缩过程忽略了时间信息和细粒度空间信息等重要特征
↓
直接从原始步态轮廓序列中提取特征。这些方法保留了更多的时间信息,但当输入包含不连续的帧或具有与训练数据集不同的帧速率时,会出现显著的退化(这些古早算法还那么依赖帧率什么的啊)
因为步态是一个周期性的运动,所以它可以用一个周期来表示。同时,在一个包含多个步态周期的剪影序列中,可以观察到每个位置的轮廓都有一个唯一的姿势,如图1所示。给定任何人的步态轮廓,我们可以通过观察它们的外观轻松地将它们重新排列成正确的顺序。这表明步态周期内姿势的顺序不是将一个人与其他人区分开来的关键信息
(啊?输入的帧序列是无序的?总得保证步态的运动顺序吧)
,因为顺序的模式是通用的。基于这样的假设,我们可以直接将步态视为一组图像,并提取时间信息,而无需像视频那样对每一帧进行排序。
gaitset中CNN 用于独立从每个轮廓(本地信息)中提取帧级特征。其次,一种称为 Set Pooling 的操作用于将帧级特征聚合为单个集合级特征(全局信息)。因为此操作是使用高级特征图而不是原始轮廓进行的,所以它比步态模板更好地保留了空间和时间信息(所以一开始不是用的3d卷积,而是每一帧作为单独的图像来处理然后再池化,本质都是下采样,但固定的池化确实没有自适应的卷积好 | 但是后面相关工作里提到已经有用3d卷积的了呀)
(优越性提到说“快速:我们的模型直接学习步态的深度集步态表示,而不是测量一对步态模板或序列之间的相似性”,那也就是说过去的方法中还有类似孪生网络输入一对样本拟合相似度的做法吗?那复杂度有点吓人吧)
模型
集合池化
结合基本统计函数(最大、平均、中值)和求和、拼接的联合函数,以及注意力机制(公式符号看得头大,之后结合代码理解吧)
水平金字塔池化
参考自reid的条带分隔和金字塔多尺度
组合最大池化和平均池化
MGP
为了收集不同的水平集信息,提出了一种多层全局管道(MGP),它与主管道中的卷积网络具有相似的结构,但是独立的参数不共享,保留步态细节
训练
Batch All (BA+) triplet loss
在标准三元损失中,只有最难的负例(即具有最大距离的负例)被考虑,而其他负例被忽略。而在BA+三元损失中,每个负例都被考虑,因此不再忽略其他负例。这意味着对于每个锚样本,都会考虑到每个负例的损失,而不仅仅是最难的那个。
这种方法的优点是能够更全面地利用负例样本,从而更好地推动嵌入空间的学习。然而,这也使得BA+三元损失的计算更复杂,因为需要计算所有正例-负例对之间的距离。这可能会导致训练时间较长,但通常可以获得更好的性能,尤其在面对大规模数据集时。
——ChatGPT
(好像gaitgl论文里也提到过这个,看来之后还得扣一下损失的细节)
实验
数据集
CASIA的大中小划分:
在ST中,前24 名受试者(001-024)用于训练,其余 100 名受试者用于测试。
在 MT 中,前 62 个(001-062)用于训练,其余 62 个用于测试。
在 LT 中,前 74 个(001-074)用于训练,其余 50 个主题用于测试。(代码里的基线设置是这个)
对于所有三个设置中的测试集,将 NM 条件的前 4 个序列(即 NM #1-4)保留在图库中,其余 6 个序列分为 3 个探针子集,即 NM 子集 #5-6、包含 BG #1-2 的 BG 子集和包含 CL #1-2 的 CL 子集。
对比实验
依然是垂直视角好一些,正对着摄像头的0或180不好
换装效果有限,主要还是因为衣服会对四肢、体型造成干扰,并且训练过程中也很少学到换装(讲道理也不该学,毕竟应用场景中一个人可能会换任何未知的衣服,又不是reid)
消融
集合化比GEI效果好,因为时空信息被保留,并且训练时随机从序列中抽帧相当于数据增强了
集合池化
具有像素级注意力的 SP 在 NM 和 BG 子集上的准确率最高,当使用 max(·) 时,它在 CL 子集上的准确率最高。考虑到 max(·) 的 SP 在 NM 和 BG 子集上也实现了第二好的性能,并且具有最简洁的结构;因此,我们选择它作为 GaitSet最终版本中的 SP 策略。
(只能选型了,没啥可解释分析的)
MGP
从主管道的不同层中提取的集合级特征包含不同的判别信息
(那其实相当于有个跳跃连接聚合了深层和浅层的层次化信息吧,)
HPM
这里设计独立FC有利于准确率和训练效率(所以后续的代码中都有了separate FC吗)
训练策略
需要关注dropout和bn
维度
使用两种方法进行降维。一种是通过缩小 HPM 全连接层的输出维度来将特征维度设置为较低级别。另一种方法是在引入新的全连接层后执行测试任务,实现了原始 15, 872 维的大压缩。
如果 HPM 输出维度太低(低至 32)或太高(高达 1024),仍然会对性能产生负面影响。这种性能下降的原因是:1)输出维度太高的全连接层很容易过拟合,因为它们包含的参数太多,2)太小的输出维度会显着限制全连接层的学习能力。特别是,使用 CE 损失训练的模型在具有高维 HMP 输出的 CL 子集上的鲁棒性较差,而具有预训练策略的模型在 CL 子集上具有稳定的性能。通过减少 HMP 输出维度,我们可以将最终特征维度从 15, 872 压缩到其中四分之一。虽然这种压缩与微妙的性能损失有关,但 BG 和 CL 子集上识别性能的退化不能被忽略。
最终的特征维度可以压缩到 1024,同时在 NM 子集上保持 95% 的识别精度;这只是原始 15, 872 维的 6.5%。与改变 HPM 的输出维度类似,太小的特征维度会导致性能下降。尽管它与端到端设计的思想背道而驰,但引入这种后处理有效地压缩了学习到的特征表示,使得该方法在实际应用中更加实用。
更丰富的实验
更少的轮廓帧
1)随着轮廓数量的增加,准确率单调上升,2)当样本包含超过 25 个轮廓时,准确率接近最佳性能。这个数字与一个步态周期包含的帧数量一致。
输入不同视角的数据
有效地聚合来自不同视图的信息并提高了最终性能。这一结果可以用第4.4节中讨论的视图和精度之间的模式来解释。在输入集中包含多个视图允许模型收集并行和垂直信息,从而提高性能
将背包、换装纳入图库,并组合输入
BG 和 CL 的轮廓组合有助于模型提高准确性。相比之下,NM的轮廓几乎没有噪声。因此,将其他两个条件的轮廓替换为其中一些不提供额外的有用信息,但只会引入噪声,导致性能下降。
相关文章:

读《Gaitset: Regarding gait as a set for cross-view gait recognition》
2019在AAAI(还有一版叫GaitSet: Regarding Gait as a Set for Cross-View Gait Recognition,大体上一样) 摘要 现有的步态识别方法要么利用步态模板,难以保存时间信息,要么利用保持不必要的顺序约束的步态序列&#x…...

驱动实现LED点灯
demo.c #include <linux/init.h> #include <linux/module.h> #include <linux/fs.h> #include <linux/uaccess.h> #include <linux/io.h> #include "head.h" //定义三个指针指向映射后的虚拟内存 unsigned int *vir_moder; unsigned …...

【Reinforcement Learning】Ubuntu中mujoco210 mujoco_py D4RL安装及错误解决
Ubuntu中mujoco210 mujoco_py D4RL安装及错误解决 本文根据一篇知乎文章链接在此进行配置,记录在配置过程中遇到的一些问题,原文作者的教程很详细,在此对原作者表示感谢~ 直接进行知乎原文的第2.2 有效安装过程(避坑) 2.注意上…...

设计模式截图记录
设计模式截图记录...
代碼隨想錄算法訓練營|第三十九天|738.单调递增的数字、968.监控二叉树、第八章 贪心算法總結。刷题心得(c++)
目录 讀題 738.单调递增的数字 自己看到题目的第一想法 看完代码随想录之后的想法 968.监控二叉树 自己看到题目的第一想法 看完代码随想录之后的想法 738.单调递增的数字 - 實作 思路 Code 968.监控二叉树 - 實作 思路 Code 贪心算法 總結 贪心理论基础 貪心…...

前言:自动化框架的设计模式
1、UI自动化框架的设计模式 自动化测试框架有很多种,常见的自动化框架分类如下: 在使用上面的自动化框架时,通常会结合使用分层思想,也就是一些自动化框架设计模式,今天重点分享一下UI自动化框架设计使用比较多的一种…...

Web架构安全分析/http/URL/Cookie攻击
Web 架构安全分析 Web 工作机制及基本概念 传统 Web 架构 LAMP 网页 概念 网页就是我们可以通过浏览器上网看到的精美页面,一般都是经过浏览器渲染过的 .html 页面,html 语言在浏览器中渲染。其中包含了CSS、JavaScript 等前端技术。通过浏览器访问…...
.git 目录中有什么?
好吧,我想你们中的大多数人每天都或多或少地使用 git,但是您是否研究过 git 创建的 .git 文件夹中的内容?本文[1]我们将一起探索一下,了解里面到底发生了什么。 ❝ git 在基本层面上只是一堆通过文件名相互链接的文本文件。 ❞ in…...
Debian11系统简单配置
debian11系统简单配置 网卡配置 修改/etc/network/interfaces address 192.168.0.188 gateway 192.168.0.1 netmask 255.255.255.0重启网卡systemctl restart networking.service systemctl restart networking 执行apt 报错 rootdebian:~# apt update 忽略:1 cdrom://[D…...

家装、家居两不误,VR全景打造沉浸式家装体验
当下,用户对生活品质要求日益提升,越来越多的用户对多功能家装用品需求较大,由此造就了VR全景家装开始盛行。VR全景家装打破传统二维空间模式,通过视觉、交互等功能让用户更加真实、直观的体验和感受家居布置的效果。 一般来说&am…...
Ubuntu服务器 Clash Dashboard
正文发不出来 链接:【Linux】解决Ubuntu服务器版本无法使用Clash Dashboard的问题 这个图展示了RNA-Seq实验数据生成的流程。下面是该流程的逐步解释: mRNA或总RNA提取:首先,从细胞或组织样本中提取mRNA或总RNA。mRNA是经过剪切…...
创建数据库表的命令
创建数据库表的通用语法: CREATE TABLE table_name (column1 datatype constraint,column2 datatype constraint,...columnN datatype constraint ); 其中,table_name 为要创建的表名,column1 到 columnN 为表的列名,datatype …...

ubuntu18.04 LTS卸载qtcreator-10.0.2
之前通过命令,通过.run文件,安装了Qt Creator 默认安装路径是/opt/ 卸载 在安装路径下,可以看到QtCreatorUninstaller文件 命令行运行该执行文件,会弹出卸载窗口,记得勾选下面的“仅卸载”...

通过字符设备驱动并编写应用程序控制三盏灯亮灭
现象 键盘按1三灯全亮 按0三灯全灭 头文件.h #ifndef __HEAD_H__ #define __HEAD_H__ #define PHY_LED1_MODER 0X50006000 #define PHY_LED1_ODR 0X50006014 #define PHY_RCC 0X50000A28#define PHY_LED2_MODER 0X50007000 #define PHY_LED2_ODR 0X50007014#defin…...

SpringCloud链路追踪——Spring Cloud Sleuth 和 Zipkin 介绍 Windows 下使用初步
前言 在微服务中,随着服务越来越多,对调用链的分析越来越复杂。如何能够分析调用链,定位微服务中的调用瓶颈,并对其进行解决。 本篇博客介绍springCloud中用到的链路追踪的组件,Spring Cloud Sleuth和Zipkin…...

深入探究音视频开源库 WebRTC 中 NetEQ 音频抗网络延时与抗丢包的实现机制
目录 1、引言 2、什么是NetEQ? 3、NetEQ技术详解 3.1、NetEQ概述 3.2、抖动消除技术 3.3、丢包补偿技术 3.4、NetEQ概要设计 3.5、NetEQ的命令机制 3.6、NetEQ的播放机制 3.7、MCU的控制机制 3.8、DSP的算法处理 3.9、DSP算法的模拟测试 4、NetEQ源文件…...

一篇文章教会你C++11入门知识点
C11入门 列表初始化1. {}初始化2. initializer_list 声明1. auto2. decltype3. nullptr 范围for循环STL新增容器1. array2. forward_list3. unordered_map和unordered_set 右值引用和移动语义1. 左值引用和右值引用2. 左值引用和右值引用比较3. 右值引用使用场景和意义4. 右值引…...

idea leetcode配置
idea leetcode配置 配置页面如下图所示,根据需要,填入登录用户名、密码、文件存放路径,注意如果要使用自定义的代码结构配置,要勾选图中框出来的选项。 Code FileName: $!velocityTool.camelCaseName(${question.tit…...
Golang通道(Channel)原理解析
引言 并发编程是现代软件开发中的一个重要主题。Golang作为一门并发友好的编程语言,提供了一种简单而强大的机制,即通道(Channel),用于在不同的Goroutine之间进行通信和同步。通道的设计和原理是Golang并发模型的核心…...
使用树莓派搭建文件共享服务器-samba服务器
局域网内部通过文件共享来传输文件是一种非常方便的方式,小米摄像头也支持用文件共享smb模式将视频备份到局域网中的文件服务器上。之前我一直使用荣耀pro路由器游戏版,是自带USB接口支持文件共享服务的,接上USB移动硬盘,小米摄像…...

51c自动驾驶~合集58
我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...
WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...
在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...
C++.OpenGL (14/64)多光源(Multiple Lights)
多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...

基于TurtleBot3在Gazebo地图实现机器人远程控制
1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...

【Redis】笔记|第8节|大厂高并发缓存架构实战与优化
缓存架构 代码结构 代码详情 功能点: 多级缓存,先查本地缓存,再查Redis,最后才查数据库热点数据重建逻辑使用分布式锁,二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...

C/C++ 中附加包含目录、附加库目录与附加依赖项详解
在 C/C 编程的编译和链接过程中,附加包含目录、附加库目录和附加依赖项是三个至关重要的设置,它们相互配合,确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中,这些概念容易让人混淆,但深入理解它们的作用和联…...