论文TransReID: Transformer-based Object Re-Identification

TransReID模型介绍

(侧重于方法及实现,结合代码进行介绍)

论文TransReID: Transformer-based Object Re-Identification 2021ICCV
参考:
论文:TransReID: Transformer-based Object Re-Identification
代码:https://github.com/heshuting555/TransReID

在这里插入图片描述

实验结果
在这里插入图片描述

本文率先将Transformer应用于重识别.

创新主要是在baseline的基础上加入了JPM模块和sie信息.其中sie信息为相机和视角等信息为可学习tensor,在计算中为数值相加,不改变输入的维度

下图分别为baseline和TransReID示意图

在这里插入图片描述
在这里插入图片描述
本文主要的主要方法和实现基于ViT,baseline与vit的主要差别在于损失的计算

在这里插入图片描述

本文主要贡献:
1 the pure transformer for ReID tasks for the first time
2 design a jigsaw patches module (JPM)
3 introduce a side information embeddings (SIE) that encodes side information by learnable embeddings

baseline方法:经Overlapping patch embed后,拼接一个[cls] token(这个拼接是对维度产生变化的),加入位置和SIE信息后(这里的+是指数值上的加),输入blocks(图中transformer layer,即为代码中block)

[cls] token,位置,SIE均为可学习的张量

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

Overlapping Patches 纯transformer 的方法如ViT,  DeiT,把图片划分成无重叠的patches,失去了patches之间的局部邻接关系.本文使用滑动窗口生成有重叠像素的的patches,在实际代码中即为卷积操作,stride_size小于卷积核的尺寸(即patch_size).

在这里插入图片描述

block 本文中的block使用的是transformer中的encoder,即多头自注意力+前馈式神经网络(mlp),与VIT实现代码一致(github rwightman 实现版本),大致流程和核心代码如下:

在这里插入图片描述

在这里插入图片描述

在特征提取后,分两部分计算损失. global部分使用原始vit中的第一个[cls]最终得到的全局特征计算损失.流程及核心代码如下:
在这里插入图片描述

在这里插入图片描述

另一部分是本文的创新点之一,使用JPM模块(主要是shuffle_unit)并计算损失.计算损失的流程与global分支基本一致,特征的维度不同

在这里插入图片描述

在这里插入图片描述

关于JPM模块,主要有两步,通俗解释一下,步骤一是将前几个位置的特征直接拼接到最后,步骤二是进行shuffle操作
在这里插入图片描述

步骤二的操作以group=2为例进行简化举例示意,就是将图中编号1-8的patch分成两个group,然后进行transpose操作,最后view在一起,实现了按照固定规则进行shuffle

在这里插入图片描述

其他:

Position Embeddings.分辨率不同,不能直接用预训练,使用二线插值进行处理

使用的损失函数. 使用ID loss and triplet loss
The ID lossis the cross-entropy loss without label smoothing. For a triplet set the triplet loss LT with soft-margin is shown as follows:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值