Re-ID with Triplet Loss

本文深入探讨了Person Re-Identification中Triplet Loss的应用,分析了不同类型的Triplet Loss,如Large Margin Nearest Neighbor、FaceNet、Batch All和Batch Hard,以及Lifted Embedding Loss。研究指出,合适的Hard Mining策略和Soft-margin函数对训练至关重要。实验表明,Batch Hard + soft-margin的组合在Re-ID任务中表现出色,但预训练模型并非总是最佳选择,自定义网络也能取得良好效果。

一篇讲Person Re-ID的论文,与人脸识别(认证)有很多相通的地方。

文章链接: 《In Defense of the Triplet Loss for Person Re-Identification》

Github链接:https://github.com/VisualComputingInstitute/triplet-reid 目前还没有放出代码,作者说等论文录用了就放出来。

Introduction

Re-ID和图像检索有点类似。这样来看,Google的FaceNet利用Triplet Loss训练的高度嵌入的特征,似乎很适合做这样大范围的快速比对。 但是,很多的研究文献表明常见的classification或者结合verification Loss比Triplet Loss似乎更适合这个任务。 他们通常将CNN作为特征提取器,后面再接专门的测度模型。但是这两种Loss有着明显的缺点:

Classification Loss: 当目标很大时,会严重增加网络参数,而训练结束后很多参数都会被摒弃。

Verification Loss: 只能成对的判断两张图片的相似度,因此很难应用到目标聚类和检索上去。因为一对一对比太慢。

但是 Triplet Loss还是很吸引人啊: 端到端,简单直接; 自带聚类属性; 特征高度嵌入。

为什么Triplet训不好呢或者说不好训呢?

首先需要了解,hard mining在Triplet训练中是一个很重要的步骤。 没有hard mining会导致训练阻塞收敛结果不佳,选择过难的hard又会导致训练不稳定收敛变难。此外,hard mining也比较耗时而且也没有清楚的定义什么是 “Good Hard”。

文章的贡献主要有两个方面:

(1) 设计了新的Triplet Loss,并和其它变种进行了对比。

(2) 对于是否需要 pre-trained模型,进行了实验对比分析。

Triplet Loss

这一小节主要介绍几种Triplet 变种。

Large Margin Nearest Neighbor loss

比较早的Triplet形式(参考文献[1])。 \(L_{pull}\) 表示拉近属于同一目标的样本; \(L_{push}\) 表示拉远不同目标的样本。

float

由于是最近邻分类,所以同一类当中可能有多个cluster,而且固定的cluster中心也比较难以确定。

FaceNet Triplet Loss

Google的人脸认证模型FaceNet(参考文献[2]), 不要求同类目标都靠近某个点,只要同

### 关于红外-可见光跨模态行人重识别中的X模态实现 #### X模态生成器的设计原理 针对红外-可见光跨模态行人重识别(Infrared-Visible Cross-Modal Person Re-ID, IV-ReID),一种创新的方法引入了辅助的中间模态X来缓解因不同成像条件造成的显著域间差距。具体来说,X模态是由一个基于自监督学习设计的轻量化神经网络产生的,旨在捕捉并转换来自可见光(V)模态的关键视觉特征到一个新的表达形式中[^1]。 #### 实现细节 这个过程涉及到了一系列精心设计的操作: - **双层1x1卷积结构**:首先利用一对连续的1x1大小的卷积核处理原始的三通道彩色图片数据;前者负责降维至单一灰度级别,后者则再次扩展回三维空间以便后续操作。 - **非线性变换**:紧接着上述步骤之后加入了一个ReLU函数作为激活单元,赋予模型更强的数据拟合能力和更丰富的内部表征层次[^5]。 ```python import torch.nn as nn class XModerator(nn.Module): def __init__(self): super(XModerator, self).__init__() self.conv1 = nn.Conv2d(3, 1, kernel_size=1) self.relu = nn.ReLU() self.conv2 = nn.Conv2d(1, 3, kernel_size=1) def forward(self, x): out = self.conv1(x) out = self.relu(out) out = self.conv2(out) return out ``` #### 特征提取与融合策略 为了有效地关联起原本相异甚远的两种传感模式下的观测对象,提出了共享权重机制下的多分支架构来进行联合训练。即让同一套参数同时作用于RGB、X及IR三种类型的样本之上,在统一的空间内完成身份判别任务的同时也促进了彼此之间潜在联系的学习[^4]。 #### 损失函数构建 考虑到实际应用场景中存在的类别不平衡现象以及目标检测难度不均等问题,采用了改进版Triplet Loss——Cross Modal Grouping (CMG) loss Lc ,它不仅能够拉近同类个体间的距离分布,还能有效拉开异类实例之间的间隔,进而提升整体辨识精度。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值