分层表示改善图像检索
图像匹配具有众多实际应用。例如,某中心的StyleSnap或某购物应用的相机搜索功能允许客户上传照片以搜索相似图像。图像匹配通常通过将图像映射到表示空间(嵌入空间)并查找映射位置相近的图像来实现。
在近期WACV 2022会议上发表的论文中,我们阐述了如何通过在训练神经网络计算图像表示时显式建模对象层次结构来提高图像检索精度。
层次化数据优势
对于分层数据,可以通过损失函数在嵌入空间上施加额外约束,使得同一超类中的图像也能被分组。这不仅有助于模型泛化到未见过的类别——因为它学习了超类内的共性——还能在模型出错时产生更合理的检索结果。
深度度量学习
图像检索中的图像匹配通常依赖于深度度量学习(DML),其中深度神经网络不仅学习如何将输入映射到嵌入空间,还学习用于测量该空间邻近度的距离函数。
代理损失机制
代理损失(如proxy-NCA、proxy-anchor)学习一组称为代理的嵌入,这些代理表示类成员的平均位置或类中心。每个训练样本的损失是相对于代理计算的。
与需要从训练数据中采样信息对/三元组的成对损失不同,代理损失不需要这种采样,消除了对采样的复杂性并加速了训练。特别是代理锚损失已被证明可以实现最先进的图像检索精度,同时比成对损失收敛得更快。
分层代理损失
我们的分层代理损失(HPL)是对现有代理损失的扩展。HPL由代理层次结构组成,每个训练图像在每一层都被分配给单个代理。然后,损失计算为所有层代理损失的加权和。
在每一层,每个图像被拉向指定的代理并远离所有其他代理。这通过在每个层级学习组内共性,引导网络分层分组图像。
代理层次构建
当数据层次结构未提供时(例如通过电子商务目录),我们通过在训练期间对较低层代理应用在线聚类来获得较高层代理。
我们采用以下训练算法:
- 在精细代理上运行聚类算法(如k-means)获得粗略代理;将每个样本分配给一个粗略代理
- 训练网络T次迭代,更新网络和精细代理
- 每T次迭代后,更新样本到粗略代理的分配,并通过分配的下层代理平均值更新高层代理
- 重复步骤2-3直到收敛
实验结果
我们在最新代理损失(proxy-NCA和代理锚损失)基础上实现了HPL。在五个标准度量学习数据集上评估图像检索精度,发现HPL持续改进了这两种代理损失的检索精度,实现了新的最先进水平。
HPL与proxy-NCA和代理锚损失在两个基准数据集上的对比
技术价值
这种分层代理损失方法不仅提高了图像检索的准确性,还通过层次化表示提供了更好的可解释性,使检索系统在遇到未知类别时能基于上层共性做出更合理的相似性判断。