Transformer 系列| Transformer又搞事情!TransReID首次在ReID中应用,结果喜人(文末获取论文)(一)

简介: Transformer 系列| Transformer又搞事情!TransReID首次在ReID中应用,结果喜人(文末获取论文)(一)

1 简介


在本文中作者探讨了基于Transformer的ViT,将其用于ReID任务。经过几次改进,以ViT为骨干网络构建了一个强大的Baesline——ViT-BoT,在几个ReID基准上,该结果与基于卷积神经网络有相差无几的结果。

此外,考虑到ReID数据的特殊性,设计了两个模块:

  • 对于Transformer,将摄像机或视角之类的非可视信息编码为矢量嵌入表示形式是非常自然和简单的。插入这些ViT可以消除由各种相机或视角引起的偏差
  • 设计了与全局分支平行的Jigsaw分支,以促进在2分支学习框架中训练模型。在Jigsaw分支中,设计了一个Jigsaw patch模块,以学习可靠的特征表示并通过对patch进行Shuffle来帮助训练Transformer。

通过这些新颖的模块提出了一个纯tranformer框架的TransReID,这是目前第一项使用纯Transformer进行ReID研究的工作。TransReID的实验结果在行人和车辆ReID基准上达到最先进的性能。

本文主要贡献:

  • 1、首次为ReID任务提出了一个纯Transformer框架,并构建了一个具有多种适应性的ViT-BoT Baseline;
  • 2、引入边信息嵌入(SIE)作为一个统一的框架,对ReID中的各种边信息进行编码。实验结果表明,该方法能有效地消除由于不同摄像机或物体视角所引起的特征偏差;
  • 3、利用Stripe-Based的思想,提出了Jigsaw Patches模块(JPM)。通过shuffle操作,JPM在2分支学习框架中便于训练更好、更鲁棒的特征表示;
  • 4、TransReID在MSMT17, Market-1501, DukeMTMC-reID,Occluded-Duke, VeRi-776和VehicleID都达到了最先进的水平。

2 相关工作


ReID的研究主要集中在Person ReID和Vehicle ReID两方面。目前最先进的方法大多是基于CNN的结构。总结这些工作可以发现表征学习、局部特征和不变特征是成功的关键,ReID及其相关工作如下:

2.1 表征学习

目前主流方法是设计合适的损失函数来训练一个CNN Backbone(例如ResNet),用来提取图像的特征。损失函数可以分为分类损失度量损失

对于基于分类的Loss(又称ID Loss),有研究者提出了ID-discriminative embedding(IDE)来训练ReID模型作为图像分类,并从ImageNet预训练的模型中进行微调;与ID Loss不同,Metric Loss将ReID任务视为一个聚类或排序问题,目前最广泛使用的度量损失是三元组损失。也有学者提出了BNNeck来更好地结合ID Loss和Triplet Loss;也有学者将ID Loss和Triplet Loss进行了视角统一。

2.2 局部特征

局部特征方法通过切分和学习细粒度特征来聚合不同的部分/区域特征。细粒度部分可以通过大致的水平切块或语义分割自动生成。方法如PCB、MGN、AlignedReID++以及SAN等,将图像分成若干块,提取每个块的局部特征。使用语义分割或关键点估计来对齐不同的部分或2个对象;该方法在Person ReID以及Vehicle ReID被证明是有效的。

2.3 不变特征

在跨相机系统中,由于相机配置和对象视角的不同,会产生姿态、方向、光照和分辨率等差异。一些方法使用侧面信息,如相机ID或视角信息来学习不变特征。例如,基于相机的批处理归一化(CBN)强制将来自不同相机的图像数据投影到同一子空间上,从而大大减少了相机对之间的分布差距。视角/方向不变特征学习对Person和Vehicle ReID很重要。

2.4 Transformer在CV的应用

在自然语言处理领域,为了处理序列数据提出了Transformer模型(NLP)。许多研究也显示了它在计算机视觉任务中的有效性。

Transformer模型最初用于处理由CNN模型为视频提取的序列特征。有研究者使用一种Transformer架构的变体来聚合视频中与特定人物相关的上下文线索。然后,Transformer模型扩展到一些主流的计算机视觉任务,包括图像处理、目标检测、语义分割、目标跟踪等。

例如,图像处理Transformer(Image Processing Transformer,IPT)通过使用Transformer进行了大规模的预训练,在超分辨率、去噪和去雨等图像处理任务上取得了最先进的性能。检测Transformer(DETR)重新设计了目标检测的框架,它是一个简单的、完全端到端的目标检测器。

目前Pure Transformer模型越来越受欢迎。ViT是最近提出的一种将Pure Transformer直接应用于图像序列配准的方法。然而,ViT需要一个大规模的数据集来进行预训练。为了克服这一缺点,Touvron等人进行了一系列的研究并提出了一个名为DeiT的框架,该框架引入了一种针对Transformer的teacher-student策略,以加速ViT训练,而不需要大规模的预训练数据。而本文则是将ViT扩展到ReID任务中,并证明了它的有效性。


3 本文方法


3.1 ViT-BoT

ViT-BoT的框架如图所示:

image.png

由于原始的ViT训练细节并不直接适用于ReID任务,因此,为了实现ViT-BoT,进行了一些详细的适应性调整。

1、Overlapping Patches

作为预处理步骤,ViT将图像分割成N个不重叠的小块,没有很好地保留小块周围的局部邻近结构。相反,本文使用滑动窗口来生成有重叠像素的patches。假设滑动窗口的步长为S个像素,patch的大小为个像素,2个相邻patch重叠区域的形状为。综上所述,给定输入图像,调整到固定分辨率后,将其分成个补丁:

image.png

其中是floor功能。重叠区域越大分割的图像patch越多。更多的patch通常可以带来更好的性能,同时也会带来更多的计算量。这里需要在性能和计算成本之间进行权衡。为了更好地区分,表示图像被分割为12份。

2、Position Embedding

Position Embedding 对第个patch的位置信息进行编码,这对于Transformer编码器编码空间信息具有重要意义。在ImageNet上预训练的ViT权重参数被加载以方便训练。但是由于ReID任务的图像分辨率与ViT任务的图像分辨率不同,在这里不能直接导入ImageNet上预先训练的位置嵌入。

因此,在运行时Position Embedding中引入了双线性插值,以帮助ViT-BoT处理任何给定的输入大小和形状;与ViT类似,ViT-BoT的Position Embedding也是可学习的。

3、Feature Learning

将图像分割成一系列的patches,在patchesEmbedding前加上一个可学习的Embedding,最后一个编码器层的类标志(final class token)作为图像的全局特征表示。最终的类token记为,输入patches对应的remaining输出记为,其中为patches总数。受此启发,本文在最后一个类标志之后引入BNNeck。ID损失是没有label smoothing的交叉熵损失。对于一个三元组,Triplet Loss的Margin为Soft-Margin:

image.png

3.2 TransReID

尽管ViT-BoT可以在ReID任务中实现比较好的性能,但它没有利用ReID数据中的特性。为了更好地挖掘side信息和fine-grained部分,作者提出了Side Information Embedding(SIE)和Jigsaw Patch Module(JPM)。与SIE和JPM,结合SIE和JPM TransReID框架如图所示:

image.png

1、Side Information Embedding

在ReID中,一个具有挑战性的问题是由于各种摄像机、视角等因素造成的外观偏差。为了解决这个问题,基于CNN的框架通常需要修改网络结构或设计特定的损失函数来包含这些非视觉线索(边信息)如相机id和视角预测等信息。

Transformer模型非常适合这一类问题,因为它可以通过将这些Side Information编码到Embedding表示中来融合这些Side Information。类似于Position Embedding可以应用可学习的层来编码Side Information。

具体来说,如果一幅图像的摄像头ID为C,则其摄像头Embedding可以记为。不同于Position Embedding在各patch之间的变化,摄像机Embedding 对于一幅图像的所有patch都是相同的。另外,如果物体的视点是可用的无论是通过视点估计算法还是人工标注,都可以将视点标签编码为,然后用于图像的所有patch。

现在的问题是如何整合两种不同类型的信息。一个可能的方案是直接将2个Embedding相加,即,但它也可能会使两个Embedding项相互抵消。于是本文提出将摄像头ID 和视角标签共同编码为。换句话说就是对于个摄像机ids和个视角标签,总共有个不同的值。最后,第个patch的输入Embedding如下:

image.png

其中是学习特征Embedding的线性映射,是平衡权重的超参数。由于每个patch嵌入的位置不同,但在不同的图像中可能是相同的,而每个patch都是相同的,但对于不同的图像可能有不同的值,因此TransReID能够学习2种不同的Embedding,然后直接添加。整个输入Embedding为,其中是类标签。

本文通过相机信息和视角信息这2个范畴变量来说明SIE的使用,然而,SIE可以扩展为包括范畴变量和数值变量在内的更多种类的信息。在不同实验中,摄像机和/或视角信息都包含在可用的范围内。

2、Jigsaw Patch Module

本文将ViT-BoT的最后一层改为2个并行分支,通过2个独立的transformer层学习全局特征和局部特征。

假设输入到最后一层的隐藏特征记为。全局分支是将编码成的标准transformer,其中被视为基于CNN方法的全局特征。为了学习细粒度特征,一个简单的解决方案是将分成组,这些组依次连接共享Token ,然后将组特征输入到一个transformer层,以学习个局部特征,表示为。是第组的输出Token。

最近的两项研究表明,Token Embedding主要由其附近的Token决定。因此,一组邻近的patches embedding主要是观察一个有限的连续区域

为了解决这个问题本文提出了Jigsaw Patch Module (JPW)进行分组前的Shuffle Patch。Shuffle操作由shift操作和patch Shuffle操作实现,具体如下:

  • step-1:shift操作,将第1个 Patch 移动m步到最后。于是移动m步变为。
  • step-2:patch Shuffle操作,通过k组的patch shuffle操作对移位的patch进行进一步的Shuffle。隐藏特征变成。

根据前面的描述,将Shuffle后的特征分为k组。JPM通过共享transformer将其编码为k个局部特征。经过shuffle操作,局部特征可以覆盖不同车身部位或车辆部位的Patch。然后利用和k个局部特征和全局特征训练。总损失的计算方法如下:

image.png

在推理过程中,Concat全局特征和局部特征作为最终的特征表示。如果仅使用计算成本较低但是性能略有下降。

相关文章
|
机器学习/深度学习 人工智能 数据管理
文生图的基石CLIP模型的发展综述
CLIP(Contrastive Language-Image Pre-training)是OpenAI在2021年发布的多模态模型,用于学习文本-图像对的匹配。模型由文本和图像编码器组成,通过对比学习使匹配的输入对在向量空间中靠近,非匹配对远离。预训练后,CLIP被广泛应用于各种任务,如零样本分类和语义搜索。后续研究包括ALIGN、K-LITE、OpenCLIP、MetaCLIP和DFN,它们分别在数据规模、知识增强、性能缩放和数据过滤等方面进行了改进和扩展,促进了多模态AI的发展。
2333 0
|
人工智能 C++ 计算机视觉
AI计算机视觉笔记四:行人属性识别
本文分享了一个行人属性分析系统,能够识别并标注行人的多种属性。该项目代码源自公众号“渡码”的项目,作者在Win10环境下成功复现了整个项目,并详细记录了过程。系统通过YOLOv5识别行人,用ByteTrack跟踪同一行人,并训练一个多标签图像分类网络来识别行人的26种属性。文中详细介绍了环境搭建和测试步骤,包括安装Anaconda、创建虚拟环境、安装所需库以及测试代码等。如需完整代码或有任何问题,请联系博主。源码已上传至GitHub。
|
测试技术 计算机视觉
ICLR 2024 Spotlight:自蒸馏激发CLIP模型的检测分割能力
【2月更文挑战第28天】ICLR 2024 Spotlight:自蒸馏激发CLIP模型的检测分割能力
462 1
ICLR 2024 Spotlight:自蒸馏激发CLIP模型的检测分割能力
|
10月前
|
机器学习/深度学习 自然语言处理 搜索推荐
自注意力机制全解析:从原理到计算细节,一文尽览!
自注意力机制(Self-Attention)最早可追溯至20世纪70年代的神经网络研究,但直到2017年Google Brain团队提出Transformer架构后才广泛应用于深度学习。它通过计算序列内部元素间的相关性,捕捉复杂依赖关系,并支持并行化训练,显著提升了处理长文本和序列数据的能力。相比传统的RNN、LSTM和GRU,自注意力机制在自然语言处理(NLP)、计算机视觉、语音识别及推荐系统等领域展现出卓越性能。其核心步骤包括生成查询(Q)、键(K)和值(V)向量,计算缩放点积注意力得分,应用Softmax归一化,以及加权求和生成输出。自注意力机制提高了模型的表达能力,带来了更精准的服务。
12065 46
|
10月前
|
SQL 数据挖掘 关系型数据库
阿里云百炼|析言GBI全新发布:联合云上数据库,助力企业轻松实现ChatBI
析言GBI是阿里云推出的一款基于AI的智能数据分析产品,通过自然语言处理实现对话式数据分析。用户无需编写代码,即可轻松进行数据查询、分析和可视化。该产品支持多种数据库连接方式(如MySQL、PostgreSQL等),并提供多版本选择以适应不同业务需求。即将发布的动态规划BI分析功能将进一步提升复杂问题的拆解与综合分析能力。欢迎访问阿里云百炼应用广场体验析言GBI,并享受200次免费问题额度。
|
机器学习/深度学习 算法 计算机视觉
基于YOLOv8与ByteTrack的车辆检测追踪与流量计数系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标追踪、车辆检测追踪、过线计数、流量统计(3)
基于YOLOv8与ByteTrack的车辆检测追踪与流量计数系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标追踪、车辆检测追踪、过线计数、流量统计
|
传感器 小程序 开发工具
【规范】小程序发布,『小程序隐私保护指引』填写指南
本文详细解析了小程序隐私保护指引的填写方法,包括开发者处理的信息、第三方插件信息、用户权益等内容,并提供了详细的填写范例,帮助读者在发布小程序时避免常见问题,是一份实用的参考指南。
1578 1
【规范】小程序发布,『小程序隐私保护指引』填写指南
|
SQL 前端开发 Java
在IDEA中使用Maven将SpringBoot项目打成jar包、同时运行打成的jar包(前后端项目分离)
这篇文章介绍了如何在IntelliJ IDEA中使用Maven将Spring Boot项目打包成可运行的jar包,并提供了运行jar包的方法。同时,还讨论了如何解决jar包冲突问题,并提供了在IDEA中同时启动Vue前端项目和Spring Boot后端项目的步骤。
在IDEA中使用Maven将SpringBoot项目打成jar包、同时运行打成的jar包(前后端项目分离)
|
机器学习/深度学习 数据采集 存储
【机器学习】K-近邻算法(KNN)全面解析
K-近邻算法(K-Nearest Neighbors, KNN)是一种基于实例的学习方法,属于监督学习范畴。它的工作原理简单直观:给定一个训练数据集,对新的输入实例,KNN算法通过计算其与训练集中每个实例的距离,找出距离最近的K个邻居,然后根据这些邻居的类别(对于分类任务)或值(对于回归任务)来预测新实例的类别或值。KNN因其简单高效和无需训练过程的特点,在众多领域中得到广泛应用,如模式识别、推荐系统、图像分类等。
1180 0