当前位置: 首页 > news >正文

论文阅读: AAAI 2022行人重识别方向论文-PFD_Net

本篇博客用于记录一篇行人重识别方向的论文所提出的优化方法《Pose-Guided Feature Disentangling for Occluded Person Re-identification Based on Transformer》,论文中提出的PDF_Net模型的backbone是采用《TransReID: Transformer-based Object Re-Identification》的主干网络TransReID。

Pose-guided Feature Disentangling for Occluded Person
Re-identification Based on Transformer Tao Wang 北京大学机器感知深圳研究生院
论文:https://arxiv.org/abs/2112.02466
源码:https://github.com/WangTaoAs/PFD_Net

1. 论文所提方法

在这里插入图片描述

提出的PFD由四个部分组成。第一部分是视觉上下文编码器,它将摄像机信息编码到embedding中,以捕获全局上下文信息。第二部分是姿态引导特征聚合(PFA),它利用匹配和分布机制来初步引导可见的身体部位。第三部分是基于部分视图的解码器,在可学习语义视图的指导下,将姿势引导特征分解为判别视图集。第四部分是姿态-视图匹配模块(PVM),它将获得的视图集合(View set)和姿态引导的特征集合视为一个集合匹配问题。此外,为了强调可见身体部位的特征,提出了姿势引导下的Push Loss。有关更多详细信息,请参阅建议的方法。

3.1 Visual Context Transformer Encoder

我们使用基于Transformer的图像分类模型(即ViT(Dosovitskiy et al 2020))构建编码器。给定一个人物图像x∈,其中H、W、C分别表示高度、宽度和通道维度。我们首先通过使用滑动窗口将x分割成N个固定大小的补丁{|i=1,2,…,N}。步长可以表示为S,每个图像分块(Patch)的大小可以表示为P,补丁的数量N可以描述为:
在这里插入图片描述

其中⌊⌋是向下取整。当S等于图像分块大小P时,分割的图像块是不重叠的。当S小于P时,生成的图像块是重叠的,这可以减轻图像的空间邻域信息的损失。变换编码器只需要序列作为输入,因此在展平的像素块(flatten patch)上执行可训练的线性投影函数f(·),将像素块映射到D维,最终得到patch embeddings E∈,(即=f(),i=1,2。。。,N) 。
可学习的[class]token 被预先添加到像素块转换的embeddings中,并且输出的[class]token用作编码器全局特征表示 。为了保留位置信息,我们应用可学习的位置编码(positonal encodings)。然而,这些特征非常容易受到相机变化的影响,因此我们遵循(He et al 2021)中的方法来学习相机视角信息。那么最终的输入序列可以被描述为:
在这里插入图片描述

其中是位置嵌入(positional embeddings),∈是相机嵌入(camera embeddings),对于相同的图像,是相同的。是一个超参数,用于平衡相机嵌入的权重(weight)。接下来,输入embedding将由m个变换器层(transformer layers)处理。编码器的最终输出∈可以分为两部分(编码器全局特征和局部特征):∈和∈。为了学习人体部位(human parts)的更多判别特征,将部位特征(part features)按顺序分为K组,每组的大小为(N//K)×D。然后,连接编码器全局特征∈的每个组将被馈送到共享变换器层(shared transformer layer)中,以学习K组 part local feature(部分局部特征)=[,,…,]。
编码器监督损失(Supervision Loss)。我们采用交叉熵损失作为编码器全局特征和分组特征的单位损失和三元组损失。编码器损失函数可以公式化为:
在这里插入图片描述

3.2姿势引导的特征聚合

被遮挡的人图像的身体信息较少,非身体部位的信息可能不明确,这会导致性能下降。因此,我们使用人体姿态估计器来从图像中提取关键点信息。
姿势估计。给定人物图像x,姿态估计器从输入图像中提取M个姿态点。然后,利用姿态点来生成热图H=[,,…,]。每个热图都被下采样到(H/4)×(W/4)的大小。每个热图的最大响应点(The maximum response point)对应于一个关节点。我们设置了一个阈值γ来过滤出高置信度标签和低置信度标签。但与(Miao et al 2019)不同的是,我们没有将关键点置信度得分小于γ的热图设置为0。相反,标签∈{0,1}, (i=1, …, M)将分配给每个热图。从形式上讲,热图标签可以表示为:
在这里插入图片描述

式中为第i个关键点的置信度得分。
姿态导向的特征聚合。为了整合姿态信息,我们设置K = M,正好等于关键点的个数。然后,对热图H应用全连接层,得到热图H′,其维数与组局部特征(the group part local feature)相同。然后,热图H′点乘(element-wisely)的每个元素,得到姿态引导特征P = [, ,…][m]。虽然P已经明确编码了人体不同部位的信息,但我们希望从中找到对某一身体部位贡献最大的部分信息。为此,我们开发了一种匹配和分配机制,该机制将部位局部特征( part local feature)和姿态点引导特征(pose guided feature)作为一个集合相似度度量问题。最后得到姿态引导特征聚合集S = { | i = 1,2,…, M}。对于每个,我们可以找到中最相似的特征,然后将两个特征相加形成Si。在形式上,

在这里插入图片描述
在这里插入图片描述

其中i = 1, 2, …, K, ⟨·,·⟩代表内积, 表示 与中最相似的内积。

3.3 Part View Based Transformer Decoder

在本节中,我们定义了一组可学习的语义部件视图来学习可区分的身体部件。可学习的语义部件视图可以表示为Z = { | i = 1,2,…, },和Z∈将作为查询(queries)添加到每个交叉注意层(cross-attention layer)。如图2所示,键值(key和values)来源于姿态点热图H与编码器输出的组合。将平均池化层应用于热图H,然后将相乘,最终输出∈×D。形式上,查询、键和值可以表示为:
在这里插入图片描述

姿态-视图匹配模块:

在交叉注意机制中,部分语义视图可以学习到一些判别特征。然而,不知道是哪一部分或哪一种信息被学习了。因此,为了获得与人体骨骼相关的特征,我们提出了一个姿态视图匹配模块。由于姿态引导特征聚合集合S的每一个特征都与人体的某个关键点信息相关,我们可以通过计算人体部位视图与的相似度来找到与人体某个关键点相关的部位视图。将匹配的语义部件视图和姿势引导的特征聚合特征(pose guided feature aggregation feature)相加,得到最终的视图特征集合= { |i = 1,2,…, }。在形式上,
在这里插入图片描述

由于关键点置信度得分可以指示特征的哪一部分包含人体信息,热图标签可以引导我们将视图特征集分成两部分。视图集特征中热图标签 = 1的特征形成高置信度关键点视图特征集 = {|i = 1,2,…, L},其余组成低置信度关键点视图特征集 = { |i = 1,2,…, −L},其中L表示中热图标签为1的特征个数。

推荐博客

如果想了解这篇论文的代码细节,推荐大家阅读这篇博客。
PFD_net和TransReID学习——一:TransReID backbone学习

相关文章:

论文阅读: AAAI 2022行人重识别方向论文-PFD_Net

本篇博客用于记录一篇行人重识别方向的论文所提出的优化方法《Pose-Guided Feature Disentangling for Occluded Person Re-identification Based on Transformer》,论文中提出的PDF_Net模型的backbone是采用《TransReID: Transformer-based Object Re-Identificati…...

蓝牙物联网灯控设计方案

蓝牙技术是当前应用最广泛的无线通信技术之一,工作在全球通用的 2.4GHZ 的ISM 频段。蓝牙的工作距离约为 100 米,具有一定的穿透性,没有方向限制。具有低成本、抗干扰能力强、传输质量高、低功耗等特点。蓝牙技术组网比较简单,无需…...

Codeforces Round 900 (Div. 3)(A-F)

比赛链接 : Dashboard - Codeforces Round 900 (Div. 3) - Codeforces A. How Much Does Daytona Cost? 题面 : 思路 : 在序列中只要找到k&#xff0c;就返回true ; 代码 : #include<bits/stdc.h> #define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0)…...

vue大屏-列表自动滚动vue-seamless-scroll

vue大屏-列表自动滚动vue-seamless-scroll vue-seamless-scroll的官方文档地址&#xff1a;https://chenxuan0000.github.io/vue-seamless-scroll/zh/guide/ 具体效果可到官方文档那里查看。 1、下载依赖 npm install vue-seamless-scroll --save2、使用例子 <template…...

easyx的窗口函数

文章目录 前言一、EasyX的颜色二、EasyX的坐标和设备1&#xff0c;EasyX的坐标2&#xff0c;EasyX的设备 三、窗口函数1&#xff0c;初始化窗口函数2&#xff0c;关闭绘图窗口3&#xff0c;设置窗口背景板颜色4&#xff0c;清空绘图设备 前言 easyx是针对c的图形库&#xff0c;…...

【记录】开始学习网络安全

本文持续更新学习进度 背景 在私企干了5年虚拟化、云原生相关的运维&#xff0c;学到了很多&#xff0c;但不成体系。老板是清华毕业法国留学在德勤干过&#xff0c;最后回国创业的野路子。我工作是为了更好的生活&#xff0c;我挺担心老板因为家庭变故或者炒个原油宝&#x…...

【Java EE初阶三 】线程的状态与安全(下)

3. 线程安全 线程安全&#xff1a;某个代码&#xff0c;不管它是单个线程执行&#xff0c;还是多个线程执行&#xff0c;都不会产生bug&#xff0c;这个情况就成为“线程安全”。 线程不安全&#xff1a;某个代码&#xff0c;它单个线程执行&#xff0c;不会产生bug&#xff0c…...

MD5算法

一、引言 MD5&#xff08;Message-Digest Algorithm 5&#xff09;是一种广泛应用的密码散列算法&#xff0c;由Ronald L. Rivest于1991年提出。MD5算法主要用于对任意长度的消息进行加密&#xff0c;将消息压缩成固定长度的摘要&#xff08;通常为128位&#xff09;。在密码学…...

Postman使用

Postman使用 Pre-request Script 参考&#xff1a; Scripting in Postman 可以请求、集合或文件夹中添加Pre-request Script&#xff0c;在请求运行之前执行JavaScript 如设置变量值、参数、Header和正文数据&#xff0c;也可以使用Pre-request Script来调试代码&#xff0…...

【python 的各种模块】(8) 在python使用matplotlib和wordcloud库来画wordcloud词云图

目录 目标&#xff1a;用python画出&#xff0c;网上流行的wordcloud词云图 1 准备工作 1.1环境准备 1.1.1安装步骤 1.2 资源准备 1.2.1 文本文件内容如下 1.2.2 图片资源 2 代码测试 2.1 第一版代码和效果 2.1.1 代码和效果 2.1.2 一般plt里解决中文乱码问题 2.1…...

MFC随对话框大小改变同时改变控件大小

先看一下效果; 初始; 窗口变大,控件也变大; 二个也可以; 窗口变大,控件变大; 默认生成的对话框没有WM_SIZE消息的处理程序;打开类向导,选中WM_SIZE消息,对CxxxDlg类添加该消息的处理程序;默认生成的函数名是OnSize; 添加了以后代码中会有三处变化; 在对话框类的…...

MK米客方德品牌 SD NAND在对讲机领域的引领作用

SD NAND在对讲机上的应用 SD NAND在对讲机上广泛应用&#xff0c;为其提供了高效可靠的存储解决方案。 这种存储技术不仅能容纳大量语音和数据文件&#xff0c;而且具有高速读取的特点&#xff0c;保障了实时通信的质量。SD NAND还注重安全性&#xff0c;通过数据加密和访问控…...

软件测试/测试开发丨Python 封装 学习笔记

封装的概念 封装&#xff08;Encapsulation&#xff09; 隐藏&#xff1a;属性和实现细节&#xff0c;不允许外部直接访问暴露&#xff1a;公开方法&#xff0c;实现对内部信息的操作和访问 封装的作用 限制安全的访问和操作&#xff0c;提高数据安全性可进行数据检查&#x…...

Vue: 事件修饰符, 键盘事件, 鼠标事件,计算属性

目录 事件修饰符 阻止默认事件 阻止冒泡 允许触发一次 捕获模式 self passive 键盘事件 keyup & keydown 按键别名 注意tab 注意系统按键 自定义按键 鼠标事件 简介 鼠标焦点事件 计算属性 差值语法实现 methods实现 computed实现 get() set() 总…...

【ROS2】MOMO的鱼香ROS2(四)ROS2入门篇——ROS2节点通信之话题与服务

ROS2节点通信之话题与服务点 引言1 理解从通信开始1.1 TCP&#xff08;传输控制协议&#xff09;1.2 UDP&#xff08;用户数据报协议&#xff09;1.3 基于共享内存的IPC方式 2 ROS2话题2.1 ROS2话题指令2.2 话题之RCLPY实现2.2.1 编写发布者2.2 2 编写订阅者2.2.3 运行测试 3 R…...

2022年山东省职业院校技能大赛高职组云计算赛项试卷第三场-公有云

2022年山东省职业院校技能大赛高职组云计算赛项试卷 目录 2022年职业院校技能大赛高职组云计算赛项试卷 【赛程名称】云计算赛项第三场-公有云 【任务1】公有云服务搭建[10分] 【适用平台】华为云 【题目1】私有网络管理[0.5分] 【题目2】云实例管理[0.5分] 【题目3】数…...

现代 NLP:详细概述,第 1 部分:transformer

阿比吉特罗伊 一、说明...

记一次Mac端mysql重置密码

在执行mysql命令的时候&#xff0c;报如下的错误&#xff0c;表示不支持mysql命令&#xff1a; zsh: command not found: mysql 1. 先查看mysql服务是否存在 在系统偏好设置中查看&#xff1a; 2. 发现mysql服务已经在运行&#xff0c;可能因为/usr/local/bin目录下缺失mysq…...

【开题报告】基于java的流浪之家动物领养网站的设计与开发

1.选题背景 流浪之家动物领养网站的设计与开发背景主要源于对流浪动物保护和宠物领养问题的关注。随着城市化进程加快&#xff0c;越来越多的流浪动物出现在城市中&#xff0c;它们面临着食物、住所和医疗资源的缺乏。同时&#xff0c;许多爱心人士希望能够给流浪动物一个温暖…...

训狗技术从初级到高级,专业有效的训狗训犬教程

一、教程描述 现在大部分人家里都会养些宠物&#xff0c;比如狗狗&#xff0c;虽然狗狗的一些行为习惯跟遗传有关&#xff0c;但是主人后天的影响也会给狗狗带来改变&#xff0c;本套教程教你纠正狗狗的不良行为&#xff0c;可以让你与狗愉快地玩耍。本套训狗教程&#xff0c;…...

【网络】每天掌握一个Linux命令 - iftop

在Linux系统中&#xff0c;iftop是网络管理的得力助手&#xff0c;能实时监控网络流量、连接情况等&#xff0c;帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

通过Wrangler CLI在worker中创建数据库和表

官方使用文档&#xff1a;Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后&#xff0c;会在本地和远程创建数据库&#xff1a; npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库&#xff1a; 现在&#xff0c;您的Cloudfla…...

多场景 OkHttpClient 管理器 - Android 网络通信解决方案

下面是一个完整的 Android 实现&#xff0c;展示如何创建和管理多个 OkHttpClient 实例&#xff0c;分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

C# 类和继承(抽象类)

抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

leetcodeSQL解题:3564. 季节性销售分析

leetcodeSQL解题&#xff1a;3564. 季节性销售分析 题目&#xff1a; 表&#xff1a;sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

MySQL中【正则表达式】用法

MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现&#xff08;两者等价&#xff09;&#xff0c;用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例&#xff1a; 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

是否存在路径(FIFOBB算法)

题目描述 一个具有 n 个顶点e条边的无向图&#xff0c;该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序&#xff0c;确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数&#xff0c;分别表示n 和 e 的值&#xff08;1…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在 GPU 上对图像执行 均值漂移滤波&#xff08;Mean Shift Filtering&#xff09;&#xff0c;用于图像分割或平滑处理。 该函数将输入图像中的…...