ReID专栏(三) 注意力的应用

news2025/1/12 3:54:18

前言 本文中提出了一种用于行人重识别的注意感知特征学习方法。该方法由一个部分注意分支(PAB)和一个整体注意分支(HAB)组成,并与基础再识别特征提取器进行了联合优化。由于这两个分支建立在主干网络上,因此没有为ReID特征提取引入额外的结构。因此,本方法能够保持与原始网络相同的推理时间。

本教程禁止转载。同时,本教程来自知识星球【CV技术指南】更多技术教程,可加入星球学习。

Transformer、目标检测、语义分割交流群

欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读、CV招聘信息。

CV各大方向专栏与各个部署框架最全教程整理

Information

  • Title:Deep attention aware feature learning for person re-identification
  • From:pattern recognition2022
  • Paper Link:https://arxiv.org/pdf/2003.00517.pdf
  • Tsinghua university
  • code:https://github.com/CYFFF/DAAF_re-id

motivation

注意力可以隐式地嵌入到用于提取人的外观表征的特征图中。由于行人重识别的图像已经是裁剪后的行人,全局信息主要是整个身体,局部信息可以是具有微观特征的关键点部位,因此使用全局注意力和局部注意力分别解耦身体和关键点。

Abstract

提出在不改变原始结构的情况下,将注意学习作为ReID网络的附加目标,从而保持相同的推理时间和模型大小。考虑两种注意力,使学习的特征图分别了解人和相关的身体部位。在全局范围内,一个整体注意分支(HAB)将骨干人员获得的特征图集中在人身上,以减轻背景的影响。在局部,部分注意分支(PAB)将提取的特征解耦为几组,分别负责不同的身体部位(即关键点),从而提高了姿态变化和部分遮挡的鲁棒性。

Introduction

注意力学习因其具有去除背景杂波或提高不同身体部位的局部判别性的潜力而具有吸引力。目前,大多数使用注意力的策略必须合并一个单独的流作为注意力函数来重新加权特征图,从而增加计算复杂度和模型大小。我们考虑一种更实用的方法来整合而不改变基本ReID网络的注意力。我们的关键假设是,这种注意力可以隐式地嵌入到用于提取人的外观表征的特征图中。如果特征图包含这些信息,那么它们随后可以用来预测一些与注意力相关的信息。

具体提出了一种ReID任务的注意感知特征学习方法。由于CNN强大的非线性,其具有适当的约束本身可以获得关注。因此,如果我们能在训练阶段添加适当的约束,就可以像以前的工作那样,不添加额外的结构而获得注意力感知特征。为此,我们提出了一个全局注意力分支(HAB)在学习到的特征图中引入全局注意信息,以及一个局部注意分支(PAB)来生成局部注意感知特征图。如图1,通过预测一个人的掩模,HAB被设计来限制主干网络关注的是人的身体,而不是背景。PAB通过明确地使用不同的特征组来预测不同的关键点,进一步迫使不同的特征通道聚焦于不同的身体部位。PAB将通道注意力解释为使特定通道关注不同空间部分的一种方式,并隐式地实现特征通道的解耦。

Method

网络架构

我们的注意力感知特征学习方法可以应用于现有的为行人ReID设计的CNN(本文中称为基础网络),在训练过程中简单地从主干网络中添加两个分支,而使用训练过的网络进行推理时,删除了两个添加的分支,只使用基本网络。因此,所提出的注意感知特征学习方法可以作为一个通用的框架来调整ReID网络,分别再训练两个额外的损失,同时保持测试网络结构不变的原始ReID网络。一方面,设计了一个名为整体注意分支(HAB)的分支,引导学习特征了解杂乱背景下的整体人体,使骨干网络更多地关注人而不是背景。这是通过这个分支将关于人体掩模的监督信息反向传播到主干网络来实现的。另一方面,提出了局部注意分支(PAB),使从主干学习到的特征可以解耦成不同的组,每个组都能够根据其位置预定义地预测几个人体关键点。通过这种方式,学习的特征隐式部分对齐,提高了对遮挡和姿态变化的鲁棒性。因此,我们学习特征嵌入的目标是

其中Lr代表ReID损失(基础网络的损失),Lh是HAB上计算的损失,Lp是PAB上计算的损失。λh和λp是两个权衡参数。

HAB

为了使学习到的特征能够更多地关注身体部位而不是背景,我们使用这些特征来预测人体掩模。这样做的基本假设是,生成人体掩模的能力与杂乱背景下对身体部位的感知特征的高度相关。因此,如果掩模可以很好地预测,该任务使用的特征则被认为是在背景杂波中的身体部分。受此假设的启发,我们引入了整体注意分支,使用第一个卷积块生成的特征映射(即低级特征)作为输入,通过一些编码和解码层转发,输出预测的人体掩模。HAB的结构如图2的右上方所示,其中编码器与主干网络的其余部分结构相同,解码器由4个反卷积层[和1个1×1卷积层组成。这个分支的编码部分的设计背后的根本原因有两个方面。首先,cnn提取的特征逐渐代表了低级到高水平的特征。低级特征被认为是各种任务的常见特征,而高级特征大多是特定于任务的特征。因此,我们需要从低级特征中构建掩模预测分支,因为人的掩模预测是一个与人的ReID不同的任务。其次,保持编码器与主干网络具有相同的结构可以期望有一个良好的人掩模预测性能,并进一步对共享的低级特征施加约束,使其对不同的任务足够通用。

PAB

虽然整体注意特征学习可以从背景杂乱中更关注人体,但局部注意可以进一步帮助行人ReID。我们将局部分成不同的组,每个组都被训练成负责预测一组特定的关键点。由于我们对每一组特征映射使用相同的解码器进行关键点预测,因此在每一组都可以完美预测相关关键点的理想情况下,认为这些组可以解耦相关关键点。虽然这在实际情况下无法实现,但学习过程是为了生成具有该特性的特征,因此我们的局部注意特征学习也可以看作是一种解耦的特征学习。这种解耦特征学习的优点是它提高了对遮挡和姿态方差的鲁棒性。在发生遮挡时,消失的身体部位只能影响相应的特征通道,而其他特征通道仍然可以很好地工作,因此部分遮挡对所有特征通道的影响可以限制在一个小的内容上。

在这一基本思想下,部分注意特征学习模块以主干网络输出的特征图作为输入,手动将其分成若干组,预测不同的关键点组。学习过程和网络结构如图2和图3(a).假设a为输入图像,F为主干网络的映射函数,x = F (a)为a的输出特征映射。如果我们将x分成M个组,那么x = {x1,x2,···,xM} = {F1(a),F2(a),···,FM (a)},其中xp = Fp (a)表示第p个组的特征图。将xp作为输入,按照四个反卷积层将输入解码为输入特征图,然后与1×1卷积进行卷积,生成关键点预测结果(即热图)。与其他关键点检测方法一样,K个关键点K个热图分别预测,每个热图对应一个特定的关键点。因此,除了共享权值反卷积层外,不同组的1×1卷积层也需要是独立的,因为它们的作用是将提取的特征映射到不同数量的热图上。直观地说,不同的特征图组可以用来预测不同的身体部位,而不是关键点。

实验细节

基线:TriNet

backbone:ResNet50

λh=λp=0.003

initial Lr:0.001

实验结果

不同数据集的比较

可视化

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1B4pSdiO-1685698109406)(image/HAB9.jpg)]

消融实验

结论

本文中提出了一种用于行人重识别的注意感知特征学习方法。该方法由一个部分注意分支(PAB)和一个整体注意分支(HAB)组成,并与基础再识别特征提取器进行了联合优化。由于这两个分支建立在主干网络上,因此没有为ReID特征提取引入额外的结构。因此,我们的方法能够保持与原始网络相同的推理时间。

值得注意的是,本工作应用到了一个潜在的观点,即CNN本身具有强大的特征提取功能,神经网络的损失已经使模型往正确的方向学习,这也是使用“掩模”的相关工作的基础。早期的重识别工作通过图像分割,可以将行人的图像相等地分成横条纹,使每条条纹粗粗地代表人体的一部分,但是由于分割的条纹不可避免地包含背景,因此会受到背景的影响。而本文使用全局注意力与局部注意力,分别处理全局(身体)和局部(关键点),这对行人重识别是很关键的。事实上,在当前的重识别领域,注意力已经成为了一个重要元素,大量工作已经或多或少借鉴了注意力的思想去优化重识别方法。

但进行全局、局部的注意力学习是不够的,由于原始数据不对齐带来的挑战还没有被探索。由于拍摄角度、行人姿态不一致,实际上行人重识别的图像数据绝大多数是非对齐的,在接下来的工作中,我们将解读一种处理这种错位的图像表示的方法。


欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读、CV招聘信息。

【技术文档】《从零搭建pytorch模型教程》122页PDF下载

QQ交流群:470899183。群内有大佬负责解答大家的日常学习、科研、代码问题。

模型部署交流群:732145323。用于计算机视觉方面的模型部署、高性能计算、优化加速、技术学习等方面的交流。

其它文章

ICLR 2023 | RevCol:可逆的多 column 网络,大模型架构设计新范式

CVPR 2023 | 即插即用的注意力模块 HAT: 激活更多有用的像素助力low-level任务显著涨点!

ICML 2023 | 轻量级视觉Transformer (ViT) 的预训练实践手册

即插即用系列 | 高效多尺度注意力模块EMA成为YOLOv5改进的小帮手

即插即用系列 | Meta 新作 MMViT: 基于交叉注意力机制的多尺度和多视角编码神经网络架构

全新YOLO模型YOLOCS来啦 | 面面俱到地改进YOLOv5的Backbone/Neck/Head

ReID专栏(三) 注意力的应用

ReID专栏(二)多尺度设计与应用

ReID专栏(一) 任务与数据集概述

libtorch教程(三)简单模型搭建

libtorch教程(二)张量的常规操作

libtorch教程(一)开发环境搭建:VS+libtorch和Qt+libtorch

异常检测专栏(三)传统的异常检测算法——上

异常检测专栏(二):评价指标及常用数据集

异常检测专栏(一)异常检测概述

【CV技术指南】咱们自己的CV全栈指导班、基础入门班、论文指导班 全面上线!!_

CV最全知识体系和技术教程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/602054.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

NumPy 数值计算基础

NumPy 数值计算基础 Numpy简介Numpy创建数组对象第一种:利用array函数创建ndarray数组第二种:利用arange函数:创建等差一维数组第三种:利用linspace函数:创建等差一维数组,接收元素数量作为参数。第三种:利用linspace函数:创建等差━维数组,接收元素数量…

剑指 Offer 18. 删除链表的节点解题思路

文章目录 题目解题思路 题目 给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。 返回删除后的链表的头节点。 注意:此题对比原题有改动 示例 1: 输入: head [4,5,1,9], val 5 输出: [4,1,9] 解释: 给定你链表中值为 5 的第二…

Windows程序设计 学习笔记 第九章 子窗口控件

目录: 文章目录 一,按钮类1.创建子窗口拓展1——获取对话框字符尺寸的方法拓展2——获取实例句柄的方法2.子窗口传递消息给父窗口3.父窗口传递信息给子窗口拓展3 窗口句柄与ID 的相互获取① 已知窗口句柄 获取 ID②已知子窗口ID 获取 子窗口句柄 4. 按钮…

仙境传说RO怎样创建一个NPC rAthena脚本语言的hello word

仙境传说RO怎样创建一个NPC rAthena脚本语言的hello word 大家好,我是艾西。上一篇文章中我们有教大家怎么编译仙境传说RO服务端和客户端,当我们自己可以搭建架设游戏时,那么这个游戏在某种意义上就是我们说的算了。比如增加一些特色功能等&…

数据隐私为先:EMQX Cloud BYOC 架构解析

随着物联网的飞速发展,保护数据隐私和安全变得愈发重要。构建一个安全、可靠、可扩展的物联网基础设施成为企业的首要任务。 EMQ 近期推出了 EMQX Cloud BYOC,采用了以数据隐私为先的架构,为解决这些问题提供了一个理想的方案。用户可以在自…

JavaEE-Servlet的使用

目录 显示 HttpServletRequest 的常用属性获取GET请求中的query string 的内容获取 POST 请求中 body 的内容实现自动刷新构造重定向页面 显示 HttpServletRequest 的常用属性 能够返回一个页面, 显示以下内容: URL方法版本号query stringcontext path所有的 header import …

Shell脚本攻略:通配符、正则表达式

目录 一、理论 1.通配符 2.正则表达式 二、实验 1.通配符 2.正则表达式 一、理论 1.通配符 (1)概念 通配符只用于匹配文件名、目录名等,不能用于匹配文件内容,而且是已存在的文件或者目录。 各个版本的shell都有通配符&…

MySQL遇到的问题

注意:当前遇到问题都是MySQL5.7.33版本和Windows10的系统,MySQL服务的名称是MySQL57,以下出现的MySQL57只是我的MySQL服务名称,要根据自己的MySQL服务的名称来 可以通过“服务”,找到自己的MySQL服务名称,…

SpringBoot测试——高级配置

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ SpringBoot测试——高级配置 一、SpringBoot加…

电容器基础原理知识

电容器基础知识 电容器是一种储能元件,在电路中用于调谐、滤波、耦合、旁路、能量转换和延时。电容器通常叫做电容。按其结构可分为固定电容器、半可变电容器、可变电容器三种。 常用电容的结构和特点 常用的电容器按其介质材料可分为电解电容器、云母电容器、瓷介…

什么是RabbitMQ?

RabbitMQ是一个由erlang开发的消息队列。消息队列用于应用间的异步协作。 2.RabbitMQ的组件 Message:由消息头和消息体组成。消息体是不透明的,而消息头则由一系列的可选属性组成,这些属性包括routing-key、priority、delivery-mode&#xff…

ChatGPT与软件架构(2) - 基于Obsidian和GPT实现解决方案架构自动化

磨刀不误砍柴工,良好的工具可以有效提高效率。本文介绍基于Obsidian和GPT打造架构知识库的思路,为架构师提供整理、分享、原文: Solution Architecture Automation With Obsidian and GPT Stas Parechyn Unsplash 本文介绍的ArchVault是一个旨在帮助架构…

【100个 Unity实用技能】 | Unity 的 LOD技术(多细节层次)

🎬 博客主页:https://xiaoy.blog.csdn.net 🎥 本文由 呆呆敲代码的小Y 原创,首发于 CSDN🙉 🎄 学习专栏推荐:Unity系统学习专栏 🌲 游戏制作专栏推荐:游戏制作 &…

vue3+ts+echarts5基本地图下钻~

依靠本地json文件实现省市下钻&#xff0c;有后台的可以改成服务&#xff0c;样式没有&#xff0c;vue3tsecharts5&#xff0c;一定要设宽高 html&#xff1a; <div click"back">返回</div> <div id"echartsMap" style"width: 58%; h…

【Azure】微软 Azure 基础解析(七)Azure 网络服务中的虚拟网络 VNet、网关、负载均衡器 Load Balancer

本系列博文还在更新中&#xff0c;收录在专栏&#xff1a;「Azure探秘&#xff1a;构建云计算世界」 专栏中。 本系列文章列表如下&#xff1a; 【Azure】微软 Azure 基础解析&#xff08;三&#xff09;描述云计算运营中的 CapEx 与 OpEx&#xff0c;如何区分 CapEx 与 OpEx…

入职字节跳动那一天,我哭了(蘑菇街被裁,奋战7个月拿下offer)

前言 先说一下自己的个人情况&#xff0c;20届应届生&#xff0c;通过校招进入到了蘑菇街&#xff0c;然后一待就待了差不多2年多的时间&#xff0c;可惜的是去年8月份受疫情影响遇到了大裁员&#xff0c;而我也是其中一员。好在之前一直想去字节跳动&#xff0c;年尾就已经在…

wlanapi.dll丢失怎么办?分享多种wlanapi.dll丢失的解决方法

Wlanapi.dll是Windows中的一个重要文件&#xff0c;它是无线局域网API的一部分&#xff0c;负责提供和管理无线网络连接的功能。如果出现wlanapi.dll丢失的情况&#xff0c;会导致无法连接到无线网络&#xff0c;影响电脑的正常使用。下面我们来看看wlanapi.dll丢失怎么办&…

在linux服务器中对R语言中for循环设置多核运行

1 问题 在R中构建了for循环&#xff0c;由于循环过多&#xff0c;运行速度过慢&#xff0c;且不同循环之间是并行关系&#xff0c;拟通过多核运行可以解决此问题。 2 代码设置 2.1 shell脚本中的设置 b.sh export OPENBLAS_NUM_THREADS8Rscript ./..._1.R \2.2 R代码中的设…

程序员必备的10张流程图

随着互联网的发展&#xff0c;现在有越来越多的人想成为程序员。 如果你想成为程序员你可以先问自己这几个问题&#xff1f; •你是一个逻辑和抽象思维能力比较强的人吗&#xff1f; •你是否愿意不断地去学习那些新的东西&#xff0c;并且在大多数时间内你都需要去自学。 …

Midway.js探索与实践

您好&#xff0c;如果喜欢我的文章&#xff0c;可以关注我的公众号「量子前端」&#xff0c;将不定期关注推送前端好文~ 前言 我司的技术基建在Midway之上&#xff0c;主要是面向中后台前后端一体化方案&#xff0c;大白话就是全栈应用解决方案&#xff0c;什么是Midway呢&am…