
摘要
三元组损失(Triplet Loss)是距离度量学习中一种极为常见的方法。该方法旨在将同一类别图像的表示在嵌入空间中映射得更接近,而不同类别图像的表示则应保持更远的距离。以往关于三元组损失的研究大多集中于如何选择最具信息量的三元组样本,例如从同一类别中选取差异较大的样本,或从不同类别中选取相似度较高的样本。然而,已有研究普遍认为,使用最困难的负样本(hardest negative examples)进行优化会导致训练行为恶化。这实际上是一个严重问题——这些最困难的负样本正是距离度量失效、无法准确捕捉语义相似性的典型情况。在本文中,我们系统地分析了三元组样本的空间分布特性,并揭示了为何困难负样本会导致三元组损失训练失败的根本原因。为此,我们提出了一种对损失函数的简单修正方案,使得在优化过程中使用困难负样本成为可行且有效的方法。实验结果表明,采用该改进方法后,所学习到的特征具有更强的泛化能力,在高类内差异(high intra-class variance)的数据集上,图像检索性能显著超越当前最先进的方法。
代码仓库
littleredxh/HardNegative
官方
pytorch
GitHub 中提及
基准测试
| 基准 | 方法 | 指标 |
|---|---|---|
| metric-learning-on-cars196 | SCT(64) | R@1: 73.2 |
| metric-learning-on-cub-200-2011 | SCT(64) | R@1: 57.7 |
| metric-learning-on-in-shop-1 | SCT(512) | R@1: 90 |
| metric-learning-on-stanford-online-products-1 | SCT(512) | R@1: 81.6 |