Transformer-based Object Re-Identification论文解读

TransReID论文提出了一种基于Transformer的行人重识别框架,克服了CNN对全局信息捕捉的局限性。通过引入JPM模块增强局部特征学习,SIE模块融合非视觉信息,提高跨相机匹配准确性。实验结果显示,TransReID在多个数据集上表现出优越性能。
摘要由CSDN通过智能技术生成

TransReID Transformer-based Object Re-Identification论文解读

这篇论文是2021年2月由浙大罗浩团队和阿里共同发表的文章,该文章首次将transformer应用于行人重识别领域。
论文地址:https://arxiv.org/pdf/2102.04378v2.pdf



Movitation and Contribution

CNN的缺点

1、对于reid任务,重要的是能够在全局域上提取行人结构信息等,由于感受野的限制,CNN只能关注局部信息,而加上attention机制不能从本质改变,如下图的 figure1;
2、其次是一些细粒度(fine-grained)的细节信息对reid任务很重要,而CNN在经过一层卷积和池化后feature map的分辨率降低,丢失了很多细节信息,如下图的 figure 2。
Alt
alt

transformer的好处

1、多头注意力机制(multi-head attention)可以让网络关注于整个行人的身体;
2、没有卷积和下采样,不会丢失细节信息。

Contributions

1、提供一个transReID网络;
2、加了一个JPM结构(jigsaw patches module),对patch进行重新排列,能提取全局不变性的特征;
3、加了一个SIE结构(side information embeddings),合并非视觉信息,消除不同相机间的匹配差异。

Related work

1、绝大多数CNN是基于resnet网络;两个loss:ID loss和triplet loss;针对loss的改进,如增加BNNet;或circle loss等。
2、细粒度特征的提取。主要方法是针对图像水平切割成条纹或语义上的解析(例如关键点估计等)。
3、额外信息的补充。针对不同相机拍摄行人造成的光线、分辨率、姿态等信息不同,利用额外信息,如相机ID、角度信息、定位信息等,以及基于相机的BN层。
4、列举一些视觉领域上的transformer网络,VIT,IPT,DEIT等。

Framework of TransReID

基于transformer的baseline framework


总体上继承了ViT的结构,只是最后输出上有所改变。(ViT是2020年提出来的用于分类的一个transformer-based baseline,已收录于2021ICLR,链接:https://arxiv.org/pdf/2010.11929v1.pdf

在这里插入图片描述
Z0是transformer的输入。Cls是新增加的一个分类embedding,F是一个线性变换,将输入的patch变到D维度,P是每个patch的一个位置信息,维度是(N+1,D),加1是类别信息。

与ViT等网络的联系和区别
1、输入的patch有overlap。滑窗选取,滑窗步长为S,P为patch大小,NH、NW是高宽上的patch个数。个数向下取整,S越小patch越多,计算量也越大。
在这里插入图片描述
2、和vit一样加入可学习的定位embedding
3、采用有监督学习,两个loss的设置:ID loss用交叉熵函数实现;triplet loss改写为下面这种形式,相当于把值给缩小到一个范围,防止收敛不稳定。
在这里插入图片描述

TransReID framework

在baseline framework改进后的结构图如下
在这里插入图片描述

JPM 模块

1、动机:如果存在有遮挡或未对齐的行人图像,需要学习行人局部的细粒度信息。CNN中常用striped feature方法,JPM是将最后一层的输入打乱顺序,然后分组,这样能增强学习行人局部不变性特征的能力。

2、具体如下:
一、选前m个和后N-m个进行位置调换;
二、将所有patch随机分成k个组。

最后的损失=未打乱顺序的+打乱顺序的每一组的

推理阶段,把最后一层输出的局部和全局特征整合连接作为最后的feature。只用全局的特征,性能只稍微差一点。

损失函数如下:
在这里插入图片描述

SIE 模块

1、动机:处理一些非视觉信息,如拍摄相机、角度的不同带来的影响。启发:位置信息(2维)的编码。
2、方法:采用1维编码方式,把每个相机和角度进行标号,分别得到Sc和Sv,维度为(r,D),r是相机个数或角度个数。一张图对应输入是一个1xD的编码。对于一张图的所有patch,Sc,Sv都是相同的标号值。同时为了更好融合两个信息,采用S(c,v),维度是(Nc*Nv,D)。

此外,这里SIE用的是分类信息如(1,0,0,0,…),也可以加入数值信息。

因此最终的输入有两部分,Z0是上面的原始输入,后面那部分是相机标号信息和角度信息
在这里插入图片描述

实验

1、实验所用数据集
在这里插入图片描述

2、transReID和其他方法的对比实验结果
在这里插入图片描述

你想要了解关于 TransReID 代码的运行。很抱歉,我无法提供相关代码的具体运行步骤,因为我无法确定你指的是哪个具体的 TransReID 代码。 TransReID 是一个用于行人重识别(Person Re-identification)的模型,它基于 Transformer 架构和注意力机制。如果你想运行 TransReID 的代码,首先需要确保你已经安装了所需的依赖库和环境配置。常见的行人重识别代码库包括 reid-strong-baseline、fastreid、open-reid 等。 一般情况下,运行 TransReID 的代码需要以下步骤: 1. 下载或克隆 TransReID 代码库。 2. 准备数据集:通常需要一个包含行人图像和对应标签(身份 ID)的数据集。你可以下载一些公开的数据集,如 Market-1501、DukeMTMC-reID 等。 3. 配置代码:根据你的需求,修改代码中的配置文件,如数据集路径、模型超参数等。 4. 训练模型:运行代码进行模型训练。训练过程中会进行图像预处理、特征提取、损失计算等操作。 5. 模型测试:使用训练好的模型对测试集进行验证或测试。测试过程主要包括特征提取、特征匹配、计算评估指标等操作。 6. 可选的后处理:根据需要,你可以对模型的输出进行后处理,如使用聚类算法进行行人重识别结果的进一步优化。 请注意,具体的代码运行步骤可能因代码库的不同而有所差异。如果你有具体的 TransReID 代码库或问题,建议查阅相关文档或代码库的 GitHub 页面,那里通常提供了详细的使用说明和示例代码。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值