图像搜索中的嵌入相似度是通过比较图像的数值表示(嵌入)来计算的,以确定它们匹配的紧密程度。当图像通过神经网络(如 CNN 或 Transformer)处理时,模型会生成一个高维向量(嵌入),捕捉图像的视觉特征。这些嵌入通常从网络在分类前的最终层提取,模型在该层编码语义信息,例如物体、纹理或图案。例如,一张狗的照片可能会产生一个强调毛皮纹理、耳朵形状或背景上下文的嵌入。然后,通过使用数学度量比较它们对应的嵌入向量来衡量两幅图像之间的相似度。
比较嵌入的最常用方法是计算向量之间的距离。余弦相似度被广泛使用,因为它衡量向量之间的夹角,使其对向量幅度差异(例如,图像光照变化)具有鲁棒性。欧氏距离(L2)是另一种选择,它直接测量向量之间的直线距离。例如,如果两只猫图像的嵌入在欧氏空间中距离很近,它们很可能共享视觉相似性。曼哈顿距离(L1)不太常用,但对稀疏嵌入很有用。开发者通常在应用余弦相似度之前将嵌入归一化到单位长度,这简化了计算,使其成为点积。PyTorch 或 TensorFlow 等工具提供了内置的这些操作函数,可实现直接的实现。
为了有效地扩展图像搜索,可以使用近似最近邻(ANN)算法(如 FAISS、Annoy 或 HNSW)对嵌入进行索引。这些工具将嵌入组织成可搜索的结构(例如,树或图),以避免穷举比较每一对向量。例如,FAISS 使用量化对相似向量进行分组,将大型数据集的搜索时间从数小时缩短到毫秒。在实践中,搜索系统可能会将查询图像处理成嵌入,然后使用 ANN 从索引中检索前 k 个最相似的嵌入。实际应用包括反向图像搜索(Google 图片)或产品推荐(电子商务),其中速度和准确性取决于嵌入的质量以及相似度度量和索引策略的选择。