0%

ReID 度量学习浅析

行人重识别(ReID)的核心任务是学一个特征空间:同一行人的不同图像特征距离近,不同行人的特征距离远。上一篇文章梳理了 MTMCT 方向的度量学习整体脉络,本文深入损失函数的数学本质:从 Softmax 与 Triplet 的对比出发,推导 Triplet Loss 的边界与难样本挖掘,再介绍 Circle Loss 的柔性目标设计,最后讨论它们在 ReID 特征学习中的实际取舍。

度量学习的任务定义

给定训练集 {(xi,yi)}\{(x_i, y_i)\}xix_i 是行人图像,yiy_i 是身份标签,度量学习的目标是学一个嵌入函数 fθ:XRdf_\theta: \mathcal{X} \to \mathbb{R}^d,使嵌入空间中同类样本距离小、异类样本距离大。距离通常用欧氏距离(Triplet 系)或余弦相似度(Circle 系):

d(f(xi),f(xj))=f(xi)f(xj)2d(f(x_i), f(x_j)) = \| f(x_i) - f(x_j) \|_2

Softmax 损失的度量视角

ReID 的基线通常是分类思路:每个身份是一个类,用 Softmax 交叉熵训练。Softmax 损失:

LSoftmax=logexp(wyif(xi))k=1Cexp(wkf(xi))\mathcal{L}_{\text{Softmax}} = -\log \frac{\exp(w_{y_i}^{\top} f(x_i))}{\sum_{k=1}^{C} \exp(w_k^{\top} f(x_i))}

其中 wkw_k 是第 kk 个身份的类中心向量,CC 是身份数。Softmax 隐式地做度量学习:它把每个类的特征推向类中心 wkw_k 附近,类间中心被推远。但有两个局限:

  • 类内紧凑性不充分:Softmax 只要求特征比"其他类的 logit"高,不要求类内特征互相靠近,类内方差可能很大。
  • 类别数扩展受限:新身份需要新类中心,无法直接处理开放集(训练集外的身份)。

这促使研究者直接设计基于样本对的损失函数。

Triplet Loss

定义与推导

Triplet Loss 的输入是三元组 (a,p,n)(a, p, n):锚样本 aa(anchor)、正样本 pp(与 aa 同身份)、负样本 nn(与 aa 不同身份)。损失为:

Ltriplet=(a,p,n)max(d(a,p)d(a,n)+α,0)\mathcal{L}_{\text{triplet}} = \sum_{(a, p, n)} \max\left( d(a, p) - d(a, n) + \alpha, 0 \right)

其中 α\alpha 是边界(margin)。目标:正样本对距离至少比负样本对距离小 α\alpha。当条件满足时损失为 0(样本对"足够好"),不满足时梯度推动 d(a,p)d(a, p) 减小、d(a,n)d(a, n) 增大。

d(a,p)d(a,p) 的梯度(假设使用欧氏距离):

Lf(a)=2(f(a)f(p))I[d(a,p)d(a,n)+α>0]\frac{\partial \mathcal{L}}{\partial f(a)} = 2 \left( f(a) - f(p) \right) \cdot \mathbb{I}\left[ d(a,p) - d(a,n) + \alpha > 0 \right]

梯度只作用于"违反边界"的三元组,这是 Triplet 的稀疏性:大部分三元组梯度为 0,只有困难样本提供学习信号

边界 α\alpha 的作用

α\alpha 控制类间的最小间隔。α\alpha 太小,类间间隔不足,泛化差;α\alpha 太大,损失长期不为零,训练不稳定,且极端情况下迫使网络"把正样本拉得无限近",导致特征坍缩(所有特征退化到同一点附近)。α\alpha 通常在 0.2 到 0.5 之间,具体取决于特征归一化方式。

难样本挖掘

三元组的总数 O(N3)O(N^3) 巨大,且大部分是"平凡三元组"(负样本离锚很远,损失为 0)。有效训练依赖难样本挖掘

  • 随机采样:从身份中随机组三元组,简单但有效信号稀疏。
  • 难负样本挖掘(Hard Negative Mining):每个 batch 内,对每个锚选"最难的正样本"(距离最远)与"最难的负样本"(距离最近):

Lbatch-hard=max(maxpd(a,p)minnd(a,n)+α,0)\mathcal{L}_{\text{batch-hard}} = \max\left( \max_p d(a, p) - \min_n d(a, n) + \alpha, 0 \right)

  • 半难样本(Semi-hard):选择"比正样本远但不超过边界"的负样本,平衡难度与稳定性。

难样本挖掘的直觉:模型已经学好的部分不需要再练,只有"分不清"的样本对提供信息。这对应信息论里的观点:学习信号来自预测错误。

Triplet 的两个工程痛点
一是 batch 内必须有足够多的身份和每个身份的多个样本,否则组不出有效三元组,这对训练集的组织有要求;二是边界 $\alpha$ 是全局常数,对所有样本对一视同仁,但不同样本对的"可分难度"不同,全局边界无法自适应。Circle Loss 正是针对第二个痛点的改进。

Circle Loss

从"相对距离"到"绝对置信度"

Triplet 比较的是 d(a,p)d(a,p)d(a,n)d(a,n)相对大小,边界加在差值上。Circle Loss(CVPR 2020)换了一个视角:为每个样本对定义置信度,正样本对置信度 αn\alpha_n 型惩罚、负样本对置信度,用加权 softmax 形式统一优化。

定义正样本对相似度 sps_p 与负样本对相似度 sns_n(相似度越大越好),Circle Loss 为:

Lcircle=log[1+jexp(γαnj(snjΔn))iexp(γαpi(spiΔp))]\mathcal{L}_{\text{circle}} = \log\left[ 1 + \sum_{j} \exp\left( \gamma \alpha_n^j (s_n^j - \Delta_n) \right) \sum_{i} \exp\left( -\gamma \alpha_p^i (s_p^i - \Delta_p) \right) \right]

其中 Δp\Delta_pΔn\Delta_n 是正负样本对的期望相似度阈值(Δp>Δn\Delta_p > \Delta_n),γ\gamma 是缩放因子。自适应权重:

αpi=ReLU(spi+Δp),αnj=ReLU(snjΔn)\alpha_p^i = \text{ReLU}(-s_p^i + \Delta_p), \quad \alpha_n^j = \text{ReLU}(s_n^j - \Delta_n)

为什么 Circle 比 Triplet 更灵活

关键区别在权重是自适应的:距离最优的样本对(sps_p 接近 Δp\Delta_psns_n 接近 Δn\Delta_n)获得更大的权重,距离已满足条件的样本对权重趋近 0。对比 Triplet 的"硬边界"(超过边界梯度为 0),Circle 提供软边界:所有样本对都贡献梯度,但难度大的贡献多。

另一个区别是优化目标从"拉开相对距离"变成"推向目标阈值":Triplet 只要求 d(a,n)d(a,p)>αd(a,n) - d(a,p) > \alpha,不关心绝对值;Circle 要求正样本对相似度超过 Δp\Delta_p、负样本对低于 Δn\Delta_n,目标更明确,收敛后的特征分布更可控。

Proxy-based 方法:降低采样复杂度

Proxy-NCA

样本对方法需要精心组织 batch,Proxy-based 方法用**类代理(proxy)**替代真实样本参与对比,每个身份维护一个可学习的代理向量 PkP_k。Proxy-NCA 损失:

LProxy-NCA=logexp(d(f(xi),Pyi))kyiexp(d(f(xi),Pk))\mathcal{L}_{\text{Proxy-NCA}} = -\log \frac{\exp(-d(f(x_i), P_{y_i}))}{\sum_{k \neq y_i} \exp(-d(f(x_i), P_k))}

代理方法把 O(N2)O(N^2) 的样本对计算降为 O(NC)O(NC)CC 是身份数),训练稳定,且代理向量可以理解为"身份的类原型",与 Softmax 的类中心 wkw_k 有异曲同工之处。

Proxy-Anchor

Proxy-Anchor 进一步结合代理与锚点:每个代理与 batch 内样本组成"锚-代理"对,损失为:

LProxy-Anchor=1P+pP+log(1+xXpexp(γ(s(x,p)+δ)))+1PpPlog(1+xXp+exp(γ(s(x,p)δ)))\mathcal{L}_{\text{Proxy-Anchor}} = \frac{1}{|P^+|} \sum_{p \in P^+} \log\left( 1 + \sum_{x \in X_p^-} \exp\left( \gamma (s(x, p) + \delta) \right) \right) + \frac{1}{|P|} \sum_{p \in P} \log\left( 1 + \sum_{x \in X_p^+} \exp\left( -\gamma (s(x, p) - \delta) \right) \right)

其中 P+P^+ 是 batch 中出现身份的代理集合,Xp+X_p^+XpX_p^- 分别是与代理 pp 同类和异类的样本。Proxy-Anchor 的优点是训练与推理一致(都用相似度)、对 batch 组织不敏感,在多个 ReID 基准上达到 SOTA。

ReID 中的实践取舍

方法 采样需求 收敛速度 边界特性 典型场景
Softmax 分类边界 基线、预训练
Triplet 高(需多身份 batch) 硬边界 精细特征学习
Circle 软边界 大规模身份
Proxy-NCA 代理边界 训练集大
Proxy-Anchor 软边界 大规模 ReID

工程上的常见组合是Softmax(或 ArcFace 变体)预训练 + Triplet/Circle 微调:先用分类损失快速收敛到合理特征空间,再用度量损失精细调整类内紧凑性与类间间隔。我们之前 MTMCT 工作里对 ReID 特征的处理也遵循这个思路:先保证特征可分,再优化跨摄像头场景下的度量一致性。

与 MC-MOT 场景的衔接

跨摄像头跟踪中的 ReID 度量面临额外挑战:

  • 跨域漂移:不同摄像头的颜色分布、分辨率不同,同一行人在不同摄像头下的特征分布偏移,度量需要跨域校准。
  • 困难负样本:相似外观的不同行人(同色衣服、相似体型)在训练集里占比低,但恰恰是最难区分的负样本对,难样本挖掘对这类场景尤其重要。
  • 在线更新:跟踪是流式的,度量可以随在线数据自适应(如每帧用高置信度匹配对微调特征),这需要损失函数支持增量更新,Circle 的软边界在此更有优势。

参考

[1] Schroff, F., Kalenichenko, D., & Philbin, J. FaceNet: A Unified Embedding for Face Recognition and Clustering. CVPR 2015.
[2] Hermans, A., Beyer, L., & Leibe, B. In Defense of the Triplet Loss for Person Re-Identification. arXiv:1703.07737, 2017.
[3] Sun, Y., et al. Circle Loss: A Unified Perspective of Pair Similarity Optimization. CVPR 2020.
[4] Movshovitz-Attias, Y., et al. No Fuss Distance Metric Learning using Proxies. ICCV 2017.
[5] Kim, S., et al. Proxy Anchor Loss for Deep Metric Learning. CVPR 2020.
[6] Deng, J., et al. ArcFace: Additive Angular Margin Loss for Deep Face Recognition. CVPR 2019.
[7] Ye, M., et al. Deep Learning for Person Re-identification: A Survey and Outlook. TPAMI 2021.
[8] Zheng, L., et al. Scalable Person Re-identification: A Benchmark. ICCV 2015.
[9] Luo, H., et al. A Strong Baseline and Batch Normalization Neck for Deep Person Re-identification. TMM 2019.

🌙