AiPaper
论文状态:已完成

Unleashing the Full Potential of Product Quantization for Large-Scale Image Retrieval

发表:2023/11/02
原文链接
价格:0.10
已有 2 人读过
本分析由 AI 生成,可能不完全准确,请以原文为准。

TL;DR 精炼摘要

本文提出了一种基于乘积量化的深度哈希框架,克服了现有深度哈希方法在大规模真实世界数据集中的计算成本和精度不足问题。该框架通过可微分的PQ分支高效学习类级码,验证了其在多个大规模数据集上的优越性,展示了强大的检索性能。

摘要

Due to its promising performance, deep hashing has become a prevalent method for approximate nearest neighbors search (ANNs). However, most of current deep hashing methods are validated on relatively small-scale datasets, leaving potential threats when are applied to large-scale real-world scenarios. Specifically, they can be constrained either by the computational cost due to the large number of training categories and samples, or unsatisfactory accuracy. To tackle those issues, we propose a novel deep hashing framework based on product quantization (PQ). It uses a softmax-based differentiable PQ branch to learn a set of predefined PQ codes of the classes. Our method is easy to implement, does not involve large-scale matrix operations, and learns highly discriminate compact codes. We validate our method on multiple large-scaled datasets, including ImageNet100, ImageNet1K, and Glint360K, where the category size scales from 100 to 360K and sample number scales from 10K to 17 million, respectively. Extensive experiments demonstrate the superiority of our method. Code is available at https://github.com/yuleung/FPPQ.

思维导图

论文精读

中文精读

1. 论文基本信息

1.1. 标题

Unleashing the Full Potential of Product Quantization for Large-Scale Image Retrieval (释放乘积量化在大规模图像检索中的全部潜力)

1.2. 作者

Yu Liang, Shiliang Zhang, Kenli Li, Xiaoyu Wang 等。 作者隶属于湖南大学计算机科学与电子工程学院、北京大学多媒体信息处理国家重点实验室、香港科技大学(广州)和Intellifusion Inc.。

1.3. 发表期刊/会议

Published at (UTC):2023-11-02T00:00:00.000Z。 该论文发布在 OpenReview 平台,通常用于顶会(如 NeurIPS、ICLR 等)的审稿和发布。鉴于发布时间,很可能是一篇在知名会议上发表的论文。

1.4. 发表年份

2023年。

1.5. 摘要

深度哈希(deep hashing)因其出色的性能已成为近似最近邻搜索(ANNs)的常用方法。然而,大多数当前的深度哈希方法仅在相对小规模的数据集上进行验证,在大规模真实世界场景中应用时存在潜在问题。具体来说,它们可能受限于训练类别和样本数量庞大带来的计算成本,或检索精度不尽如人意。为解决这些问题,本文提出了一种基于乘积量化(product quantization, PQ)的新型深度哈希框架。该框架利用一个基于 Softmax 的可微分 PQ 分支来学习一组预定义的类级 PQ 码(PQ codes)。本文方法易于实现,不涉及大规模矩阵运算,并能学习到高度判别性的紧凑码。我们在多个大规模数据集上验证了该方法,包括 ImageNet100、ImageNet1K 和 Glint360K,其中类别规模从100到360K,样本数量从10K到1700万。广泛的实验证明了本文方法的优越性。代码已开源。

1.6. 原文链接

https://openreview.net/pdf?id=scG0cwftEe

2. 整体概括

2.1. 研究背景与动机

  • 核心问题: 近似最近邻搜索 (Approximate Nearest Neighbors Search, ANNs) 在大数据时代面临挑战,特别是在图像和视频搜索、推荐系统和异常检测等领域。哈希(hashing)作为 ANNs 的关键组成部分,能够将高维浮点数据高效映射到二进制码,以最小化存储空间和检索时间。
  • 现有研究的挑战与空白:
    1. 现有深度哈希方法的局限性: 尽管深度哈希(deep hashing)在过去十年中取得了显著进展,但在面对大规模真实世界数据集(如人脸识别中包含数百万类别和数亿样本的数据库)时,现有方法尚未得到充分测试。
    2. 计算成本与精度瓶颈: 在大规模数据集上,现有方法要么因大量训练类别和样本而导致计算成本过高,要么无法达到令人满意的检索精度。例如,一些方法涉及大规模矩阵操作,或需要频繁的聚类,这在大规模场景下变得不切实际。
    3. 传统 PQ 方法的性能衰减: 乘积量化(Product Quantization, PQ)作为一种流行的量化检索方法,虽然在大规模数据处理方面具有优势,但其性能会随着编码长度的减少而迅速下降(例如,为了适应边缘设备需要更短的编码)。这限制了其在某些应用场景中的实用性。
  • 本文的切入点与创新思路: 本文认为,PQ 性能在短编码下迅速衰减的原因在于原始特征向量子空间中的聚类条件不足,导致量化误差过大和检索错误率高。为了解决这些问题,本文旨在进一步释放 PQ 的潜力,通过学习更适合多子空间聚类分配的特征表示,从而在编码长度减少时保持较好的检索性能。

2.2. 核心贡献/主要发现

本文的主要贡献可以总结为以下三点:

  1. 首次大规模评估与限制分析: 首次在包含大量类别和样本的超大规模数据集上,系统性地探究和评估了当前流行或先进的深度哈希方法的检索性能,并揭示了它们在这些场景下的不适用性。
  2. 提出新颖的端到端深度特征量化压缩方法: 提出了一种简单而有效的端到端深度特征量化压缩方法 FPPQ (Full Potential Product Quantization),该方法基于类级别乘积量化编码监督。FPPQ 在编码长度减少时表现出较低的检索性能衰减斜率,并且可以像传统 PQ 一样用于检索。
  3. 广泛的实验验证: 在 Glint360K(360k 类,1700 万图像)等大规模数据集,以及 ImageNet1K 和 ImageNet100 等相对较小规模数据集上进行了广泛实验。实验结果有力地证明了 FPPQ 方法的有效性和优越性。

3. 预备知识与相关工作

3.1. 基础概念

  • 近似最近邻搜索 (Approximate Nearest Neighbors Search, ANNs):

    • 概念定义: ANNs 旨在在大规模数据集中快速找到与给定查询点(query point)最相似(或最近)的若干数据点。与精确最近邻搜索(Exact Nearest Neighbors Search, ENNs)不同,ANNs 允许在搜索结果的准确性上进行一定程度的妥协,以换取显著的查询速度提升和更低的计算资源消耗。它在图像检索、推荐系统、自然语言处理等领域有广泛应用。
    • 在本文中的意义: 本文主要关注如何通过哈希技术提高 ANNs 在大规模图像检索中的效率和准确性。
  • 哈希 (Hashing):

    • 概念定义: 哈希是一种将高维数据映射到低维二值码(binary code)的技术。其核心目标是保持原始空间中相似数据点在哈希空间中也保持相似(即哈希码之间的距离较小),同时大幅减少数据的存储空间和提高检索速度。哈希码通常是紧凑的二值向量,例如 010110
    • 在本文中的意义: 哈希是实现 ANNs 的关键技术之一。本文研究的是深度学习驱动的哈希方法。
  • 深度哈希 (Deep Hashing):

    • 概念定义: 深度哈希结合了深度学习(通常是卷积神经网络,CNN)强大的特征学习能力和哈希技术。它通过端到端的方式,同时学习数据的深度特征表示和对应的哈希码。相比传统哈希方法,深度哈希通常能生成更具判别力的哈希码,从而提高检索性能。
    • 非可微分性挑战: 哈希函数通常包含一个 sign 函数(将实数值映射到 +1 或 -1),这是一个非可微分操作,会阻碍深度学习模型通过梯度下降进行端到端训练。
    • 解决方案: 常见策略包括:
      • 使用 sigmoidtanh 函数近似 sign 函数,使其在训练过程中可微分。
      • 使用 straight-through (ST) estimator(直通估计器),在反向传播时将 sign 函数的梯度近似为单位梯度,从而允许梯度通过。
    • 在本文中的意义: FPPQ 是一种深度哈希方法,利用深度学习来优化特征表示和量化过程。
  • 乘积量化 (Product Quantization, PQ):

    • 概念定义: PQ 是一种高效的向量量化方法,用于压缩高维向量并加速相似性搜索。其核心思想是将一个高维向量分成多个低维子向量(segments),然后对每个子向量独立进行量化(通常使用 k-means 聚类)。
      1. 分段 (Segmentation): 将原始 DD 维特征向量 F\mathcal{F} 分成 MM 个子向量,每个子向量的维度为 D/M。即 F=[F1,,Fm,,FM]\mathcal{F} = [ \mathcal{F}_1, \cdots, \mathcal{F}_m, \cdots, \mathcal{F}_M ],其中 FmRD/M\mathcal{F}_m \in \mathbb{R}^{D/M}
      2. 子向量聚类 (Sub-vector Clustering): 对每个子向量空间(即所有样本的第 mm 个子向量组成的集合),独立进行 k-means 聚类,得到 KK 个聚类中心(也称为码字 codeword)。这些码字构成了该子向量分段的码本。
      3. 编码 (Encoding): 对于一个给定的特征向量,其每个子向量 Fm\mathcal{F}_m 被其所属分段中最近的聚类中心所替代,并记录该聚类中心的索引 kmk_m。因此,原始向量被表示为一个 MM 维的索引元组 PQ(F)=[k1,,kM]PQ(\mathcal{F}) = [k_1, \cdots, k_M]。每个索引 kmk_m 的范围通常是 02b12^b-1,其中 bb 是每段的比特数,因此 K=2bK = 2^b
      4. 码本 (Codebook): 整个 PQ 码本 CRM×K×(D/M)\mathcal{C} \in \mathbb{R}^{M \times K \times (D/M)} 由所有 MM 个分段的 KK 个聚类中心组成。
      5. 重构 (Reconstruction): 量化后的向量可以通过查阅码本将索引元组重构为近似原始特征的向量: quant(F)=[ck11,,ckmm,,ckMM] quant(\mathcal{F}) = [c_{k_1}^1, \cdots, c_{k_m}^m, \cdots, c_{k_M}^M] 其中 ckmmc_{k_m}^m 表示第 mm 个分段的第 kmk_m 个码字。
      6. 检索 (Retrieval): 在检索阶段,通常会计算一个查询向量与码本元素之间的距离查找表(Lookup Table, LUTs)。然后,通过查阅 LUTs 并对分段距离求和,可以高效地计算查询向量与数据库中所有样本之间的近似距离。
      7. 压缩率: 一个 DD 维浮点向量被压缩成 M×bM \times b 比特的二值码。
    • 在本文中的意义: PQ 是本文提出的 FPPQ 方法的基础,FPPQ 旨在通过深度学习改进 PQ 的特征表示和量化过程,尤其是在短编码长度下的性能。

3.2. 前人工作

  • 哈希距离计算方法分类:

    • 基于汉明距离 (Hamming Distance-based) 的方法: 学习一个二进制码,并使用汉明距离度量来计算样本之间的距离。
      • 例如:LSH [16], HashNet [7], OrthoHash [18], GreedyHash [37] 等。
    • 基于字典 (Dictionary-based) 的方法: 通过码本查找表来计算距离。
      • 例如:PQ [20], CQ [50], AQ [3], DPQ [23], DTQ [27] 等。
  • 哈希方法分类:非深度方法与深度方法:

    • 非深度方法 (Non-Deep Methods):
      • 局部敏感哈希 (Locality Sensitive Hashing, LSH) [16]: 一种数据无关的随机哈希算法,通过随机投影或分桶直接进行哈希。
      • 乘积量化 (Product Quantization, PQ) [20]: 前面已详细介绍。
      • 优化乘积量化 (Optimized Product Quantization, OPQ) [14]: 在 PQ 的基础上,通过对原始数据进行旋转变换来减少量化误差。
      • 局部优化乘积量化 (Locally Optimized Product Quantization, LOPQ) [21]: 改进 OPQ,同时考虑向量的局部关系。
      • 组合量化 (Composite Quantization, CQ) [50] 和加性量化 (Additive Quantization, AQ) [3]: 其他形式的向量量化方法,旨在通过组合简单的量化器来提高压缩效率和检索精度。
      • 特点: 通常效率较高但性能相对较低。
    • 深度方法 (Deep Methods):
      • 特点: 利用神经网络强大的表示学习能力,同时学习哈希码和特征表示,减少量化误差以获得更好的性能。
      • 非可微分性处理: 常用的技术包括使用 sigmoidtanh 函数近似 sign 函数 [7],或使用 straight-through (ST) estimator [5] 避免梯度不传递(如 DPQ [23] 和 GreedyHash [37])。
      • 使用预定义哈希码作为监督: 一些工作如 DPN [12]、CSQ [46] 和 OrthoHash [18] 利用预定义哈希码(例如通过 Hadamard 矩阵 [41] 或 Bernoulli 采样生成)作为监督目标,以确保哈希码在目标空间中均匀分布并最大化码间距离。

3.3. 技术演进

哈希技术从最初的 LSH 等数据无关的随机方法,发展到 PQ 等通过聚类对数据进行压缩的方法。随着深度学习的兴起,研究者开始将神经网络与哈希结合,通过端到端训练学习更优的特征表示和哈希码,即深度哈希。早期的深度哈希主要关注如何解决 sign 函数的不可微分问题,并引入各种监督信号(如成对标签、三元组损失、预定义哈希码)来提高哈希码的判别力。 然而,这些深度哈希方法大多在小规模数据集上进行验证。当数据集规模急剧增大,类别和样本数量达到数万、数百万甚至数亿时,现有方法暴露出严重的计算效率和精度问题,例如:

  • DPQ [23] 的 Gini Impurity 惩罚项在大规模数据下容易导致网络崩溃。
  • PQN [45] 和 DTQ [27] 因构建三元组而计算成本高昂。
  • DQN [47] 需要频繁对整个训练数据进行聚类以更新哈希码中心。
  • ADSVQ [51] 和 DCDH [48] 在训练过程中需要计算类别数量的平方矩阵,限制了类别规模的扩展。
  • OPQN [49] 的比特数受限于特征维度。

3.4. 差异化分析

本文提出的 FPPQ 方法与上述相关工作的主要区别和创新点在于:

  1. 目标场景: FPPQ 明确针对超大规模图像检索场景(百万级类别,千万级样本),这是现有许多深度哈希方法难以有效处理的。
  2. 核心机制: 提出了一种基于类级别乘积量化编码监督的深度量化方法,直接优化特征表示以更好地适应 PQ 编码。
  3. 计算效率: FPPQ 不涉及大规模矩阵运算,因此能在大规模数据集上高效训练。这与 ADSVQ、DCDH 等需要计算类别数量平方矩阵的方法形成鲜明对比。
  4. 性能衰减特性: FPPQ 有效解决了传统 PQ 性能随编码长度缩短而迅速衰减的问题,实现了更低的衰减斜率,使其在短编码场景下更具实用性。
  5. 码本学习方式: 传统 PQ 需要在检索前进行 k-means 聚类以生成码本。FPPQ 则通过深度学习直接训练 PQ 分支的权重作为可自适应的码本,无需额外的聚类步骤,更易于集成到现有检索模块中。
  6. 监督信号: 虽然有些方法使用预定义哈希码作为监督,但 FPPQ 特别地生成类级别的 PQ 标签,并将它们用于指导特征在子空间中的聚类。

4. 方法论

4.1. 方法原理

传统乘积量化(PQ)旨在通过聚类算法最小化量化误差。然而,当为了提高压缩强度而减少编码比特数时,PQ 会面临以下问题:

  1. 子向量维度增加导致错误影响增大: 编码比特数减少意味着分段数量 MM 减少,每个子向量的维度 D/M 增加。子向量维度增加会导致量化误差增大,同时每个分段的重要性也随之增加,单个分段的错误分配对整体性能的影响更大。

  2. 子向量判别力增强导致聚类困难: 当分段数量减少且子向量维度增加时,子向量会更像完整的特征,通常具有更强的判别力,导致子向量分布更均匀。这意味着需要将 NN 个类别分配给 KK 个聚类中心(其中 NK=2bN \gg K = 2^b),这使得不同类别的特征更容易被分配到相同的 PQ 码,或同一类别被分配到不同的 PQ 码,从而严重影响 PQ 性能。

    为了解决这些问题,本文提出了 FPPQ 方法。其核心目标是训练一个主干网络(backbone)以生成更适合短 PQ 编码的特征。具体来说,FPPQ 旨在实现两个目标:

  3. 类内一致性: 将同一类别的特征分配到相同的 PQ 码。

  4. 子空间聚类: 在每个子空间内,将属于相同编码的子向量聚类在一起。

    为了实现这些目标,本文采取了两个行动:

  5. 类级别 PQ 码监督学习: 基于一组预定义的类级别 PQ 码监督,学习一个主干网络,使其生成的特征更适合短 PQ 编码。

  6. 自适应码本引导: 使用学习到的自适应码本(adaptive codebook)来指导 PQ 编码过程。

4.2. 核心方法详解

下图(原文 Figure 1)展示了 FPPQ 框架的整体流程。

Figure 1: The overall flow of our framework. It consists two branches during the training phase: a one-hot classification branch for the entire feature and another PQ classification branch that const…
该图像是示意图,展示了提出的深度哈希框架的总体流程。框架在训练阶段包含一个一热分类分支和一个约束特征子向量的PQ分类分支,利用预定义的类级PQ标签引导学习,从而提升特征在子空间中的分离效果。检索阶段与传统PQ的不同之处在于无需进行聚类,而是直接使用从PQ分支学习得到的代码本。

Figure 1: The overall flow of our framework. It consists two branches during the training phase: a one-hot classification branch for the entire feature and another PQ classification branch that constrains sub-vectors of the feature. We use the predefined class-level PQ labels to guide the learning of the PQ branch and improve feature separation in sub-spaces. During the retrieval phase, the only difference with traditional PQ is that our framework does not require clustering for the codebook. Instead, we directly use the learned codebook obtained from the PQ branch, which comprises the fully connected weights of multiple sub-branches in the PQ branch.

4.2.1. 框架总览与 PQ 分支

FPPQ 框架在主干网络(backbone)的末端引入了一个 PQ 分支,该分支与传统的分类器(classifier)并行运行。 为了学习每个类别的 PQ 码目标,模型将特征 F\mathcal{F} 划分为 MM 个分段,这与传统的 PQ 编码过程一致。对于每个 PQ 子分支,模型旨在最大化真实标签(ground-truth)的后验概率。这个过程通过 PQ 损失 LpqL_{pq} 来实现:

Lpq=1BMb=1Bm=1Mlogezmklk=1Kezmk L _ { p q } = - \frac { 1 } { B M } \sum _ { b = 1 } ^ { B } \sum _ { m = 1 } ^ { M } l o g \frac { e ^ { z _ { m k } l } } { \sum _ { k = 1 } ^ { K } e ^ { z _ { m k } } }

其中:

  • BB 表示训练批次(batch)的大小。
  • MM 表示 PQ 码的段数。
  • KK 表示每个分段中的聚类(cluster)数量。
  • zmkz_{mk} 是第 mm 个 PQ 子分支中第 kk 个单元的输出。
  • klk^l 是真实标签(ground-truth)的值,表示 PQ 标签中某个单元的码值。

4.2.2. 基于角度优化子分支

为了更好地优化子分支,本文从欧几里得距离的角度进行分析。考虑第 mm 个分段中的子向量 Fm\mathcal{F}_m 与属于第 mm 个 PQ 子分支的 KK 个分类权重 {wmk;k[1,K]}\{w_{mk}; k \in [1, K]\} 之间的欧几里得距离:

DEuclideanFm,wmk=Fm2+wmk22Fmwmkcosθmk D _ { E u c l i d e a n } \langle \mathcal { F } _ { m } , w _ { m k } \rangle = \sqrt { \left. \mathcal { F } _ { m } \right. ^ { 2 } + \left. w _ { m k } \right. ^ { 2 } - 2 \left. \mathcal { F } _ { m } \right. \left. w _ { m k } \right. \cos \theta _ { m k } }

其中:

  • θmk\theta_{mk}wmkw_{mk} 和子向量 Fm\mathcal{F}_m 之间的夹角。

  • Fm\|\mathcal{F}_m\|wmk\|w_{mk}\| 分别是子向量和权重的 L2 范数。

    通过将 {wmk}\{w_{mk}\} 归一化,即设置 wmk=1\|w_{mk}\| = 1,上述公式可以简化为:

DEuclideanFm,wmk=Fm2+12Fmcosθmk D _ { E u c l i d e a n } \big \langle \mathcal { F } _ { m } , w _ { m k } \big \rangle = \sqrt { \| \mathcal { F } _ { m } \| ^ { 2 } + 1 - 2 \| \mathcal { F } _ { m } \| \cos \theta _ { m k } }

此时,子向量 Fm\mathcal{F}_m 与所有权重 {wmk}\{w_{mk}\} 之间的欧几里得距离排名,仅取决于角度 {θmk;θ[0,π]}\{ \theta_{mk}; \theta \in [0, \pi] \},因为 Fm\|\mathcal{F}_m\| 的范数对权重的幅值变化是不变的。 利用这一特性,模型可以基于角度优化 MMsoftmax 子分支。为了进一步稳定训练过程并加速模型收敛,本文省略了全连接(FC)层中的偏置项(bias term)。此外,将 Fm\mathcal{F}_m 归一化并设置 Fm=1\|\mathcal{F}_m\| = 1 后,可以得到:

zmk=Fmwmkcosθmk=cosθmk z _ { m k } = \| \mathcal { F } _ { m } \| \| w _ { m k } \| \cos \theta _ { m k } = \cos \theta _ { m k }

检索任务通常比分类任务需要更高程度的判别力。简单的 softmax 交叉熵损失可能无法达到理想效果。为了增强每个子分支的判别力,可以在损失中添加一个边距(margin)。本文借鉴了现有的度量学习损失(metric learning losses),例如 CosFace [39],成功地实现了这一目标:

Lpq=1BMb=1Bm=1Mloges(cos(θmkl+margin))es(cos(θmkl+margin))+k=1,kklKes cos(θmk) L _ { p q } = - \frac { 1 } { B M } \sum _ { b = 1 } ^ { B } \sum _ { m = 1 } ^ { M } l o g \frac { e ^ { s ( c o s ( \theta _ { m k l } + m a r g i n ) ) } } { e ^ { s ( c o s ( \theta _ { m k l } + m a r g i n ) ) } + \sum _ { k = 1 , k \neq k ^ { l } } ^ { K } e ^ { s \ c o s ( \theta _ { m k } ) } }

其中:

  • margin0margin \ge 0 是一个固定参数,用于控制余弦边距的大小。

  • ss 是一个缩放因子。

    除了 PQ 分支,传统的分类分支(classification branch)也被用于增强完整特征的判别力。最终的优化目标定义为这两个损失项的和:

L=Lcls+Lpq { \cal L } = { \cal L } _ { c l s } + { \cal L } _ { p q }

其中 LclsL_{cls} 表示用于学习主干网络的任何分类损失。通过这种方式,整个模型可以以端到端(end-to-end)的方式进行优化。

4.2.3. 预定义类级别 PQ 标签

本文的另一个关键创新点是使用预定义的类级别 PQ 标签作为监督信号。

  • 生成过程:
    1. 首先,使用一个预训练模型(其分类器已被丢弃)提取每个类别的平均特征 Favg\mathcal{F}_{avg}
    2. 然后,对这些平均特征 {Favg}\{ \mathcal{F}_{avg} \} 执行 PQ 编码过程。这包括在每个子空间中进行 k-means [31] 聚类,以生成相应的类级别 PQ 编码。这些 PQ 码隐式地捕获了类间关系。
    3. 类级别 PQ 标签的形式为: PQlabel=PQ({Favg})={[k1,,km,,kM]cls;cls[1,class_num]}. \begin{array} { r l } & { P Q _ { l a b e l } = P Q ( \{ \mathcal { F } _ { a v g } \} ) } \\ & { \qquad = \{ [ k _ { 1 } , \cdots , k _ { m } , \cdots , k _ { M } ] _ { c l s } ; c l s \in [ 1 , c l a s s \_ n u m ] \} . } \end{array} 其中 class_numclass\_num 是类别的总数。
  • 处理重复码: 在数据类别众多且编码比特数较低的情况下,PQ 码可能会出现重复。为消除重复并确保有意义的类间关系,本文通过将重复码分配给量化误差最低且未被其他 PQ 码占用的位置来解决。
  • 与现有方法的比较: 早期工作如 DPN [12]、CSQ [46] 和 OrthoHash [18] 也使用预定义哈希码作为监督。但它们通常通过 Hadamard 矩阵或 Bernoulli 采样生成哈希码。本文的方法是基于类平均特征进行 PQ 编码,更直接地反映了特征的量化特性。

4.2.4. 编码与检索

训练阶段完成后,检索过程如下:

  1. 特征提取: 使用训练好的 backbone 提取输入图像 T\mathcal{T} 的特征表示。
  2. 码本初始化: PQ 分支的权重(由 MM 个全连接层组成)被直接用作 PQ 算法中的码本。具体来说,提取 PQ 分支的权重 wmkw_{mk},并对其进行归一化:w~ˉmkwˉmk/wmk\bar { \tilde { w } } _ { m k } \leftarrow \bar { w } _ { m k } / ||w_{mk}||,其中 w~mkRD/M\widetilde{w}_{mk} \in \mathbb{R}^{D/M}。所有 M×KM \times Kw~mk\widetilde{w}_{mk} 组成了码本 CRM×K×(D/M)\mathcal{C} \in \mathbb{R}^{M \times K \times (D/M)},其中 Cmk=w~mk\mathcal{C}_{mk} = \widetilde{w}_{mk}
  3. 编码图库集: 使用这个学习到的码本 C\mathcal{C} 对图库(gallery)集中的样本进行 PQ 编码,得到 PQ(FG)={[k1,,km,,kM]i;i[1,num_images]}\overline{{PQ(\mathcal{F}_\mathcal{G})}} = \{ [ k_1, \cdots, k_m, \cdots, k_M ]_i; i \in [1, num\_images] \}。此时,PQ 算法无需再次训练。
  4. 距离计算与检索:
    • 对称检索 (Symmetric Retrieval): 在对称检索中,查询集和图库集中的样本都通过量化码表示。距离计算如下: Dsym=m=1MCmk,Cmki { \mathcal { D } } _ { s y m } = \sum _ { m = 1 } ^ { M } \langle { \mathcal { C } } _ { m k ^ { * } } , { \mathcal { C } } _ { m k ^ { i } } \rangle 其中:
      • kk^* 是查询样本的第 mm 个子向量在码本的第 mm 部分中最近码字的索引。
      • Cmk\mathcal{C}_{mk^*}Cmki\mathcal{C}_{mk^i} 分别表示查询样本和图库样本的第 mm 个分段的量化表示。
    • 非对称检索 (Asymmetric Retrieval): 在非对称检索中,查询样本使用其原始特征表示,而图库样本使用量化码表示。距离计算如下: Dasym=m=1M<Fmquery,Cmki> \mathcal { D } _ { a s y m } = \sum _ { m = 1 } ^ { M } \big < \mathcal { F } _ { m } ^ { q u e r y } , \mathcal { C } _ { m k ^ { i } } \big > 其中 Fmquery\mathcal{F}_m^{query} 是查询样本的第 mm 个分段的子向量。
    • 寻找最近码字索引 kk^* k=argmink[0,K1] Fm,Cmk=argmink[0,K1] F~m,Cmk, \begin{array} { r } { k ^ { * } = \underset { k \in [ 0 , K - 1 ] } { \arg \operatorname* { m i n } } \ \big \langle \mathcal { F } _ { m } , \mathcal { C } _ { m k } \big \rangle } \\ { = \underset { k \in [ 0 , K - 1 ] } { \arg \operatorname* { m i n } } \ \big \langle \widetilde { \mathcal { F } } _ { m } , \mathcal { C } _ { m k } \big \rangle , } \end{array} 其中 F~m\widetilde{\mathcal{F}}_mFm\mathcal{F}_m 的归一化向量,\langle \bullet \rangle 可以是余弦距离或欧几里得距离。
  • 不需额外预处理: 与传统 PQ 算法相比,FPPQ 在检索阶段不需要对特征进行任何额外的处理。实验发现,即使在训练阶段对特征进行分段归一化,最终检索性能受到的影响也很小,这表明 FPPQ 对特征预处理不敏感。

5. 实验设置

5.1. 数据集

为了全面评估所提出的哈希方法,本文在不同规模的数据集上进行了验证,包括一个超大规模人脸数据集 Glint360K,以及两个相对较小规模的图像分类数据集 ImageNet1K 和 ImageNet100。

  • Glint360K [2]:

    • 来源与规模: Glint360K 是目前公开可用的最大人脸数据集之一,包含超过 360,000 个身份(IDs)和 1700 万张图像。
    • 用途: 用于训练哈希方法,并通过评估在 MegaFace 和 FaceScrub(与 Glint360K 无交叉)上的检索性能来测试模型的收敛性。
    • 特点: 超大规模,高类别数(360k),高样本数(17M)。
  • MegaFace [22] 和 FaceScrub [33]:

    • 来源与规模:
      • MegaFace: 包含 100 万张图像,覆盖超过 690,000 个不同个体。
      • FaceScrub: 包含 530 位名人的超过 10 万张照片。
    • 用途: 用于评估在 Glint360K 上训练的模型。
      • MegaFace 被用作图库集(gallery set)。
      • FaceScrub 的一个子集被用作查询集(query set),该子集包含 80 位名人(40 男 40 女),每人拥有超过 50 张图像。遵循 [22] 的建议,移除了噪声和重复样本。最终查询集包含 3529 张来自 80 个不同个体的面部图像。
    • 特点: 挑战性的大规模人脸识别基准。
  • ImageNet1K [35]:

    • 来源与规模: 广泛使用的视觉识别挑战数据集,包含 1000 个类别和超过 120 万张图像。
    • 用途:
      • 训练集(1.2M 图像)用于训练哈希方法。
      • 验证集(50,000 图像)用于评估哈希检索性能。具体地,从验证集中每个类别选取前 5 张图像构成查询集(共 5000 张),其余 45,000 张图像构成图库集。
    • 特点: 大规模图像分类数据集,作为通用图像检索的基准。
  • ImageNet100:

    • 来源与规模: ImageNet1K 的一个子集,包含 100 个类别。
    • 用途: 流行于之前的深度哈希方法 [46, 18, 7],用于在相对较小规模(但仍比 MNIST 等大)数据集上进行验证。
    • 特点: 相对较小规模的图像分类数据集,用于测试方法在有限数据和类别下的性能。

5.2. 评估指标

论文中使用了两种主要的评估指标:Top-k AccuracymAP@R1000

  • Top-1, Top-5, Top-20 准确率 (Top-1, Top-5, Top-20 Accuracies):

    • 概念定义 (Conceptual Definition): Top-k 准确率衡量的是,在检索任务中,当给定一个查询图像时,其对应的真实匹配(例如,同一身份的人脸图像)是否出现在检索结果列表的前 kk 个位置中。它关注的是模型在检索任务中将正确匹配项排在靠前位置的能力。Top-1 表示真实匹配是排在第一位的概率;Top-5 表示真实匹配出现在前五位的概率,以此类推。

    • 数学公式 (Mathematical Formula): 对于一个查询集合 QQ,其中包含 NqN_q 个查询,每个查询 qiQq_i \in Q 有一个真实标签 yiy_i 和一个真实的匹配集合 MiM_i(例如,所有属于同一身份的图像)。对于每个查询 qiq_i,模型会返回一个排序的检索结果列表 Ri=(ri,1,ri,2,,ri,L)R_i = (r_{i,1}, r_{i,2}, \dots, r_{i,L}),其中 LL 是检索列表的总长度。 Top-k 准确率 可以定义为: Accuracy@k=1Nqi=1NqI(ri,jRi s.t. jk and ri,jMi) \text{Accuracy@k} = \frac{1}{N_q} \sum_{i=1}^{N_q} \mathbb{I}\left( \exists r_{i,j} \in R_i \text{ s.t. } j \le k \text{ and } r_{i,j} \in M_i \right) 其中 I()\mathbb{I}(\cdot) 是指示函数,如果括号内的条件为真则为1,否则为0。

    • 符号解释 (Symbol Explanation):

      • NqN_q: 查询集合 QQ 中的查询总数。
      • I()\mathbb{I}(\cdot): 指示函数,当条件满足时返回1,否则返回0。
      • RiR_i: 对于第 ii 个查询,模型返回的排序检索结果列表。
      • ri,jr_{i,j}: 第 ii 个查询的检索结果列表中的第 jj 个项目。
      • MiM_i: 对于第 ii 个查询,所有真实匹配的集合(例如,图库中与查询 qiq_i 属于同一身份的所有图像)。
      • kk: 考察的排名位置阈值(例如 1, 5, 20)。
  • 平均精度均值 (mean Average Precision, mAP) @R1000:

    • 概念定义 (Conceptual Definition): mAP 是信息检索和机器学习领域广泛使用的评估指标,尤其适用于衡量排名任务的性能。它首先计算每个查询的平均精度(Average Precision, AP),然后对所有查询的 AP 值取平均。AP 衡量的是检索结果列表的整体质量,它综合考虑了精确率(Precision)和召回率(Recall)。具体来说,AP 是在每个相关项目被检索到时,其精确率的平均值。@R1000 表示在计算 mAP 时,只考虑检索列表的前 1000 个结果。
    • 数学公式 (Mathematical Formula): 对于一个查询 qq,其平均精度 AP 定义为: APq=k=1nP(k)Δr(k) \text{AP}_q = \sum_{k=1}^{n} P(k) \cdot \Delta r(k) 其中:
      • nn: 对于查询 qq,检索列表的总长度(在 @R1000 的情况下,通常是 1000 或相关项目的总数,取两者较小值)。
      • P(k): 在检索列表前 kk 个结果中的精确率(Precision),即前 kk 个结果中相关项目的比例。
      • Δr(k)\Delta r(k): 召回率(Recall)的变化量,即在位置 kk 处检索到的相关项目数量相对于总相关项目数量的增量。如果第 kk 个结果是相关项,则 Δr(k)=1Total relevant items\Delta r(k) = \frac{1}{\text{Total relevant items}},否则为0。 mAP 是所有查询的 AP 的平均值: mAP=1Qq=1QAPq \text{mAP} = \frac{1}{|Q|} \sum_{q=1}^{|Q|} \text{AP}_q
    • 符号解释 (Symbol Explanation):
      • qq: 单个查询。
      • APq\text{AP}_q: 对于查询 qq 的平均精度。
      • nn: 检索结果列表的长度,通常限制为 1000。
      • P(k)=Number of relevant items in top kkP(k) = \frac{\text{Number of relevant items in top k}}{\text{k}}: 在检索列表前 kk 个结果中的精确率。
      • Δr(k)\Delta r(k): 如果第 kk 个结果是相关项,则为 1/(总相关项目数)1 / (\text{总相关项目数});如果不是,则为 0。
      • Q|Q|: 查询集合中的查询总数。

5.3. 对比基线

本文将 FPPQ 方法与一系列具有代表性的哈希方法进行了比较,涵盖了传统 PQ、基于汉明距离的深度哈希以及其他字典/量化方法:

  • PQ [20]: 传统乘积量化方法,作为重要的基线。
  • HHF [42]: Hashing-guided Hinge Function for Deep Hashing Retrieval。
  • CSQ [46]: Central Similarity Quantization for Efficient Image and Video Retrieval。
  • OrthoHash [18]: One Loss For All: Deep Hashing with a Single Cosine Similarity Based Learning Objective。
  • GreedyHash [37]: Towards Fast Optimization for Accurate Hash Coding in CNN。
  • JMLH [36]: Embarrassingly Simple Binary Representation Learning。
  • DPQ [23]: End-to-End Supervised Product Quantization for Image Search and Retrieval。
  • DCDH [48]: Deep Center-Based Dual-Constrained Hashing for Discriminative Face Image Retrieval。
  • DWDM [10]: One Loss for Quantization: Deep Hashing with Discrete Wasserstein Distributional Matching。
  • HashNet [7]: Deep Learning to Hash by Continuation。
  • DPN [12]: Deep Polarized Network for Supervised Learning of Accurate Binary Hashing Codes。
  • DFH [25]: Deep Fisher Hashing。
  • HBS-RL [43]: Hash Bit Selection with Reinforcement Learning for Image Retrieval。

基线的代表性分析: 这些基线方法涵盖了深度哈希领域的多个方向:

  • 传统量化方法: PQ [20] 是衡量深度量化方法提升效果的重要参照。
  • 基于监督学习的深度哈希: HashNet [7], GreedyHash [37] 等,它们通过各种损失函数和优化策略生成二值哈希码。
  • 特定损失函数或架构: 如 OrthoHash [18] 使用角度损失,CSQ [46] 关注中心相似性,HHF [42] 使用铰链函数。
  • 深度量化方法: DPQ [23] 是直接的深度乘积量化方法。
  • 为大规模数据设计的哈希方法: 部分方法试图扩展到更大规模,但如论文所述,DCDH [48]、DWDM [10]、JMLH [36] 和 DPQ [23] 等在大规模 Glint360K 数据集上表现不佳或需要不切实际的计算资源,因此在某些实验中未列出。

5.4. 实现细节

  • 硬件与框架: 所有实验均使用 PyTorch 框架,并在 8 块 NVIDIA 2080Ti 或 3090Ti GPU 上进行训练。
  • 预训练模型与类级别 PQ 标签: 使用预训练模型获取特征,从而生成类级别 PQ 标签。作者指出此操作公平,因为其他对比方法也使用相同的预训练模型初始化参数。
  • 超参数: ss 设置为 64,margin 设置为 0.2。
  • PQ 段设置: 每段 8 比特(即 K=28=256K=2^8=256 个聚类)。总比特数 [16, 32, 64, 128 比特] 对应分段数 [2, 4, 8, 16]。
  • 对比方法实现: 其他哈希方法基于 cisip-FIRe 项目实现,并集成了一些作者提供的公共项目。为了公平比较,均使用默认设置或论文中指定的超参数。
  • 训练策略: 大多数对比方法都基于预训练模型进行微调。哈希层初始学习率为 0.0001,在训练总 epoch 数的 80% 后衰减至 0.00001。主干网络学习率始终是哈希层的 0.1 倍。

Glint360K 补充细节:

  • 主干网络 (Backbone): 使用 iResnet [11](具体为 iResnet50, iResnet18, iResnet100)作为主干网络,采用 insightface 项目的默认训练设置。
  • 特征维度: 主干网络输出的特征维度为 512。
  • 优化器: SGD 优化器,权重衰减 weight decay 为 0.0001。
  • 批处理大小 (Batch Size): 128×8128 \times 8
  • 学习率调度 (Learning Rate Schedule): 初始学习率为 0.1,并根据训练步数线性衰减至 0。
  • 对比方法调整: 为了提高在大规模数据上的可行性,OrthoHash 的超参数 ssmargin 也分别设置为 64 和 0.2。对于使用预定义哈希中心的 CSQ 和 OrthoHash,使用 Bernoulli 采样并确保哈希中心不冗余,以解决在大规模类别下生成哈希中心效率低的问题。

ImageNet100 补充细节:

  • 主干网络: 使用 ResNet50 [17],并用 ImageNet1K 预训练参数初始化模型。
  • 特征维度: 主干网络输出特征维度为 2048。
  • 特殊处理: 由于数据规模小且类别数少(100类),k-means 聚类无法直接在类平均特征上有效执行。因此,通过训练所有实例特征的 PQ,然后编码类平均特征来克服此限制。
  • 过拟合预防: 为防止过拟合,固定主干网络,并在其末端添加一个从 2048 维到 128 维的线性层进行学习。
  • 微调: 模型微调 100 个 epoch,学习率为 0.0001。

ImageNet1K 补充细节:

  • 主干网络: 使用 ResNet50 [17],并用 ImageNet1K 预训练参数初始化模型。
  • 特征维度: 主干网络输出特征维度为 2048。
  • 特殊处理: 由于 ImageNet1K 只有 1000 个类别,训练 PQ 具有挑战性,且预训练模型生成的特征类间判别力较低,导致 PQ 编码后出现大量重复码(32 比特压缩时重复率可超过 50%)。
  • PQ 标签生成: 为了解决上述问题,本文采用了 OrthoHash 提出的方法,即通过重复的 Bernoulli 采样生成具有足够汉明距离的二进制编码。然后将这些二进制编码分段并转换为十进制码,作为 PQ 标签。
  • 训练策略: 采用 cisip-FIRe 项目的默认训练策略,微调 90 个 epoch。

6. 实验结果与分析

6.1. 核心结果分析

6.1.1. 在大规模数据集 Glint360K 上的结果

以下是原文 Table 1 的结果:

iResnet50Glint360K
Method32 bits64 bits128 bits
Top-1Top-5Top-20Top-1Top-5Top-20Top-1Top-5Top-20
PQ [20]0.17240.29990.42540.66650.77490.84040.91840.94920.9610
HHF [42]0.00010.00140.00540.07730.16460.2661000
CSQ [46]0.00610.01130.01830.01240.01970.02690.02830.03720.0451
OrthoHash [18]0.30980.37060.41710.55260.60070.63510.66260.71040.7454
GreedyHash [37]0.36880.52200.63230.61020.74520.82510.82590.90030.9338
FPPQ(Ours)0.93430.96010.96520.94670.95710.96280.95680.96900.9731

分析:

  • 在 Glint360K 这样的大规模数据集上,FPPQ 显著优于所有基线方法。

  • 在 32 比特编码设置下,FPPQTop-1 性能达到 0.9343,比 GreedyHash 高出近 57%,比传统 PQ 高出超过 76%。这表明 FPPQ 在极端压缩强度下仍能保持极高的判别力。

  • 在 64 比特和 128 比特设置下,FPPQ 也分别实现了约 28% 和近 4% 的 Top-1 性能增长,尽管此时传统 PQ 的性能已经相当不错。这进一步验证了 FPPQ 在不同编码长度下的优越性和稳定性。

  • HHF 和 CSQ 在 Glint360K 上的性能非常差,这验证了论文在引言中提出的观点:许多现有方法不适用于大规模数据集。HHF 在 128 比特下甚至无法收敛。

  • OrthoHash 和 GreedyHash 尽管取得了一定性能,但在 64 比特和 128 比特下仍不如传统的 PQ 方法,这凸显了在大规模场景下,优化深度哈希的挑战性。

    以下是原文 Table 2 的结果:

    Glint360K
    BackboneiResnet18iResnet50iResnet100
    Method Metric128 bits64 bits32 bits128 bits 64 bits32 bits128 bits64 bits32 bits
    PQ [20]Top-10.80050.45880.09730.9184 0.66650.17240.94650.73800.2074
    Top-50.86590.59580.19400.9492 0.77490.29990.96580.83780.3569
    Top-200.90250.69030.30310.9610 0.84040.42540.97200.88780.4941
    FPPQ(Ours)Top-10.82310.70190.69450.9568 0.94670.93420.96790.95780.9305
    Top-50.88240.78900.75760.9690 0.95710.96010.97460.97280.9700
    Top-200.91330.84140.80060.9731 0.96280.96520.97720.97530.9734

分析:

  • FPPQ 在不同主干网络(iResnet18, iResnet50, iResnet100)和比特设置下,均取得了显著且一致的性能提升,尤其是在低比特(32 比特)设置下。

  • 例如,在使用 iResnet18 和 32 比特时,FPPQTop-1 性能从 PQ 的 0.0973 大幅提升至 0.6945。

  • 总体而言,更大的主干网络通常能带来更好的性能。然而,在 32 比特编码下,iResnet100 相比 iResnet50 并未带来一致的性能提升(Top-1 下降,Top-5Top-20 上升)。作者推测这可能受到 32 比特压缩强度内在限制的影响。

    下图(原文 Figure 2)展示了在 Glint360K 数据集上,不同方法在压缩效率与非对称检索性能趋势的对比。

    Figure 2: In Glint360K, comparison of the asymmetric retrieval performance trend of PQ with compression efficiency and the results of our methods for improving quality. 'L2' represents using the orig… 该图像是图表,展示了在 Glint360K 数据集上不同方法在压缩效率与检索性能趋势的对比。图中包含多条曲线,其中 'L2' 表示使用原始特征进行 L2 检索,extbfextitM=256extbfextitho extbf{ extit{M}} = 256 extbf{ extit{ ho }} 表示将每个特征划分为 256 段以进行 PQ 检索,以及每段 8 位的设置。

Figure 2: In Glint360K, comparison of the asymmetric retrieval performance trend of PQ with compression efficiency and the results of our methods for improving quality. 'L2' represents using the original features for L2 retrieval, while M^=256ρ^\mathbf { \hat { M } } = 2 5 6 \mathbf { \hat { \rho } } represents dividing each feature into 256 segments for PQ retrieval, and 8 bits per segment.

分析:

  • 图 2 展示了随着编码比特长度的减少,传统 PQ 的性能会急剧下降。

  • 相比之下,FPPQ 的性能衰减斜率明显更低,这意味着在相同短编码长度下,FPPQ 能够保持更高的检索性能。这直接验证了 FPPQ 旨在解决传统 PQ 在短编码下性能迅速衰减问题的有效性。

  • FPPQ 使得 PQ 在低比特长度下成为更实用的选择。

    下图(原文 Figure 3)展示了 Glint360K 数据集中两种方法的子向量和聚类中心的可视化。

    Figure 3: The visualization of the sub-vectors and clustering centers for the 10k classes in the Glint360K dataset of two approaches: (a) classification loss with PQ and (b) our proposed method. The… 该图像是一个示意图,展示了Glint360K数据集中两种方法的子向量和聚类中心的可视化:左侧(a)为传统的PQ分类损失,右侧(b)为我们提出的方法FPQ。图中黑点表示子特征,而红点在(a)中表示通过k-means聚类获得的聚类中心,在(b)中则表示由我们的方法训练得到的码字。

Figure 3: The visualization of the sub-vectors and clustering centers for the 10k classes in the Glint360K dataset of two approaches: (a) classification loss with PQ and (b) our proposed method. The black dots represent subfeatures, while the red dots in (a) depict the clustering centers obtained by performing k-means clustering on the sub-features of all classes. In contrast, in (b), the red dots represent the codewords trained by our proposed method.

分析:

  • 图 3 通过 t-SNE 可视化,直观地展示了 FPPQ 的效果。

  • 图 3(a) 显示,在仅使用分类损失训练的 backbone 上进行 PQ,其子向量(黑点)在子空间中倾向于均匀分布。传统的 k-means 聚类中心(红点)在这种均匀分布下,难以有效地压缩子向量。

  • 图 3(b) 显示,经过 FPPQ 训练后,子向量被有效地引导聚类到 KK 个簇中,且由 FPPQ 训练得到的码字(红点)能更好地代表这些簇。这表明 FPPQ 成功地学习了类级别 PQ 标签,使得子向量在子空间中形成了更紧凑、更适合聚类的结构,从而降低了量化误差。

    下图(原文 Figure 4)展示了使用 FaceScrub 作为查询集和 MegaFace 作为图库集的前20个检索样本。

    Figure 4: Visualization of the Top-20 retrieval samples using FaceScrub as the query set and MegaFace as the gallery set. 该图像是一个示意图,展示了使用 FaceScrub 作为查询集和 MegaFace 作为图库集的前20个检索样本。图像中展示了不同方法(如 Ours、L2、PQ4-F、PQ4-Fnor、PQ4-SegFnor)下的检索结果。每一行展示不同的查询图像及其对应的检索目标。

Figure 4: Visualization of the Top-20 retrieval samples using FaceScrub as the query set and MegaFace as the gallery set.

分析:

  • 图 4 展示了 FPPQ 在人脸检索任务中的实际效果。
  • 对比不同的检索方式(L2 检索、PQ4 检索,以及是否进行特征预处理),FPPQ 在各种设置下均能生成相似且高质量的 Top-20 检索结果。
  • 这进一步验证了 FPPQ 对特征预处理(如归一化或分段归一化)的不敏感性,这在实际应用中是一个重要的优势,简化了部署流程。

6.1.2. 在较小规模数据集上的结果

以下是原文 Table 3 的结果:

MethodImageNet100 mAP@R1000
16 bits32 bits64 bits
HashNet [7]0.51010.70590.7997
CSQ [46]0.83790.87500.8874
DPN [12]0.85430.87990.8927
DFH [25]0.83520.87810.8849
DCDH [48]0.78560.81580.8400
JMLH [36]0.83660.86710.8799
GreedyHash [37]0.85440.87960.8886
HBS-RL [43]DPQ [23]HBS-RL [43]0.8465
0.88600.8770 0.8660
HHF [42]OrthoHash [18]FPPQ(Ours)0.87100.8910 0.8960
0.86930.8869 0.8994
0.89560.9128 0.9154

分析:

  • 在 ImageNet100 数据集上,FPPQ 在 16 比特、32 比特和 64 比特下均取得了最佳的 mAP@R1000 性能。

  • 这表明 FPPQ 不仅在大规模数据集上表现出色,在数据规模较小、类别数量有限(100 类)的场景下也具有高效性。这验证了 FPPQ 应对不同数据集规模的通用能力。

  • 尤其在 16 比特下,FPPQ 的 0.8956 mAP 显著高于其他方法,展示了其在强压缩下的优势。

    以下是原文 Table 4 的结果:

    MethodImageNet1K mAP@R1000
    16 bits32 bits64 bits
    HHF [42]0.29610.59790.6121
    DCDH [48]0.36660.47640.5299
    CSQ [46]0.50400.60610.6093
    JMLH [36]0.52860.58760.6098
    GreedyHash [37]0.54240.58960.5952
    OrthoHash [18]0.59360.65140.6761
    FPPQ(Ours)0.62070.65430.6649

分析:

  • 在 ImageNet1K 数据集上,FPPQ 取得了有竞争力的结果,尤其是在编码长度相对较短时(16 比特 mAP 达到 0.6207,优于所有基线)。
  • 尽管在 32 比特和 64 比特下 OrthoHash 略微领先,但 FPPQ 的表现仍然非常接近。
  • ImageNet1K 的实验还揭示了 FPPQ 在面对“难以获得良好类级别 PQ 标签”场景时的处理方式:当训练样本有限或特征判别力较低导致 PQ 码重复率高时,可以通过借鉴 OrthoHash 的方法,使用 Bernoulli 采样生成二进制编码作为 PQ 标签。这表明 FPPQ 对于预定义 PQ 标签的生成方式具有一定的灵活性。

6.2. 消融实验/参数分析

论文中没有专门的“消融实验”章节,但通过以下方式间接展示了其方法的鲁棒性和有效性:

  • 不同主干网络性能(Table 2): 比较了 iResnet18、iResnet50 和 iResnet100 在 Glint360K 上的表现,验证了 FPPQ 在不同模型容量下的稳定优势。这类似于对 backbone 影响的消融。
  • 不同比特长度(Table 1, 2, 3, 4): 在 16、32、64、128 比特等多种编码长度下进行实验,展示了 FPPQ 在压缩效率和性能之间取得的良好平衡,尤其是其在低比特下的性能优势和低衰减斜率(Figure 2)。
  • 超参数 ssmargin 的选择: 论文提到将 ss 设为 64,margin 设为 0.2,并参照了 CosFace 的经验。这表明这些参数经过了调优,但具体调优过程未详细展开。
  • 特征预处理的鲁棒性(Figure 4): 检索结果可视化显示,FPPQ 对特征预处理(如 L2 归一化或分段归一化)不敏感,这可以看作是对方法鲁棒性的一种验证。

7. 总结与思考

7.1. 结论总结

本文深入探讨了深度哈希方法在大规模图像检索场景中的局限性,并提出了一个名为 FPPQ (Full Potential Product Quantization) 的新型深度哈希框架。FPPQ 的核心贡献在于利用基于 Softmax 的可微分 PQ 分支,并通过预定义的类级别 PQ 码进行监督学习。该方法使得主干网络能够生成更适合乘积量化编码的特征,从而有效解决了传统 PQ 在短编码长度下性能急剧衰减的问题,实现了更低的性能衰减斜率。

FPPQ 具有以下显著优点:

  1. 大规模适用性: 在 Glint360K 等超大规模数据集上,FPPQ 显著优于现有主流深度哈希方法,解决了其在计算成本和精度上的瓶颈。

  2. 效率与简洁性: 方法易于实现,不涉及大规模矩阵运算,并且在检索阶段直接使用学习到的权重作为码本,无需额外的聚类步骤。

  3. 高判别力与紧凑性: 通过 CosFace 损失和类级别 PQ 标签的监督,FPPQ 学习到高度判别性的紧凑编码。

  4. 鲁棒性: 对特征预处理操作不敏感。

  5. 普适性: 独立于类别数量和数据样本量,只需增加 D×KD \times K 的额外参数量和相对较少的计算资源。

    广泛的实验结果,包括在 Glint360K、ImageNet1K 和 ImageNet100 等数据集上的验证,均证实了 FPPQ 的优越性能和潜力。

7.2. 局限性与未来工作

  • 预定义 PQ 标签的生成依赖: 论文提到,类级别 PQ 标签的生成依赖于预训练模型的特征以及 k-means 聚类。在 ImageNet1K 这种类别判别力不强或样本有限的场景下,可能会导致 PQ 码重复率高,需要引入 Bernoulli 采样等额外策略。这表明 PQ 标签的质量对方法性能有重要影响,且其生成过程并非总是一帆风顺。

  • 低比特数下的性能极限: 尽管 FPPQ 显著提升了低比特数下的性能,但论文也观察到在 32 比特下,更大的主干网络(iResnet100 相比 iResnet50)并未带来一致的提升,这暗示了可能存在压缩强度的内在限制。未来工作可以进一步探索如何突破这些极限。

  • 计算资源细节不足: 论文强调其方法“不涉及大规模矩阵操作”且“计算资源相对较少”,但缺乏与其他方法的具体计算时间(训练/推理)和内存消耗对比数据,这使得“效率”的论证稍显不足。

  • 通用特征学习的泛化性: 尽管方法有效,但其专注于优化特征以适应 PQ 量化。这是否会限制特征在其他下游任务(而非检索)中的通用性,值得进一步探讨。

    未来研究方向可能包括:

  • 探索更鲁棒、更自适应的类级别 PQ 标签生成机制,以减少对预训练模型特征质量的依赖。

  • 研究如何进一步提升在极低比特数下的检索性能,突破现有方法的理论极限。

  • 进行更全面的计算资源分析,提供详细的训练时间、推理时间和内存占用对比。

  • 探索 FPPQ 特征在其他任务中的迁移学习能力。

7.3. 个人启发与批判

  • 启发:
    1. 问题切入点精妙: 论文没有简单地否定传统 PQ,而是深入分析其在大规模短编码场景下的痛点,并提出通过深度学习“优化”特征以适应 PQ,这种结合传统与深度学习的思路非常值得借鉴。它承认了传统方法的工业实用性,并通过深度学习来弥补其短板。
    2. 类级别监督的有效性: 利用预训练模型产生的类平均特征来生成类级别 PQ 标签,作为深度网络的监督信号,这是一个非常直观且有效的思想。它将离线生成的聚类信息注入到在线的深度特征学习过程中,实现了量化和特征学习的有机结合。
    3. 损失函数设计:PQ 分支CosFace 等度量学习损失结合,以增强子空间内特征的判别力,是一种巧妙的损失设计,利用了现有成熟的 metric learning 技术来提升量化效果。
    4. 工程实践意义: “易于实现,不涉及大规模矩阵运算,且对特征预处理不敏感”等特点,使得 FPPQ 在实际工业级大规模图像检索系统中具有很强的部署潜力。
  • 批判:
    1. “预定义”PQ 标签的稳定性: 论文依赖预训练模型生成初始特征,再通过 k-means 生成类级别 PQ 标签。这个“预定义”过程的稳定性、对不同预训练模型的敏感性以及在类别数量极度庞大且类间区分度模糊的场景下的有效性,可能会是一个潜在的瓶颈。例如,如果初始特征质量不佳,或 k-means 聚类不稳定,是否会影响后续深度学习的上限?论文提到在 ImageNet1K 上处理重复码的问题,也间接说明了这一挑战。
    2. 可解释性与理论保障: 尽管实验效果显著,但 FPPQ 如何精确地将同一类特征映射到相同的 PQ 码,以及它在量化误差理论上的优势,可以进一步深入探讨。
    3. 计算成本的量化: 论文强调了效率,但缺乏详细的训练/推理时间及内存占用数据,这对于一个声称解决大规模效率问题的论文来说,是一个可以改进的地方。例如,与 DCDH 等方法进行直接的 GPU 小时数或内存峰值对比,会使论证更具说服力。

相似论文推荐

基于向量语义检索推荐的相关论文。

暂时没有找到相似论文。