图像搜索中的相似度评分通过比较图像的数值表示来寻找视觉或语义上相似的匹配项。该过程主要包括三个步骤:特征提取、向量比较和高效搜索。使用深度学习模型(如 CNN(卷积神经网络))将每张图像转换为特征向量——一个包含其视觉属性的数字列表。例如,预训练的 ResNet 模型可以生成一个 1,024 维的向量,表示图像中的边缘、纹理或对象形状。这些向量充当独特的指纹,相似的图像产生在数学上更接近的向量。
实际评分依赖于距离度量来衡量两个向量之间的“距离”。常用的方法包括余弦相似度(测量向量之间的角度)和欧几里得距离(向量空间中的直线距离)。通常首选余弦相似度,因为它侧重于方向对齐,使其对图像亮度或比例的差异具有鲁棒性。例如,红色汽车的查询图像可能与另一张红色汽车图像具有很高的余弦相似度,即使一张图像更暗或略微旋转。这些度量是在查询图像的向量和数据库中的所有向量之间计算的,并按其接近程度对结果进行排序。
实际实现优化了速度和可扩展性。实时将每个查询与数百万个向量进行比较在计算上非常昂贵,因此使用 FAISS 或 Annoy(Approximate Nearest Neighbors Oh Yeah)等工具对向量进行索引以进行快速近似搜索。这些库以小的精度损失换取显着的速度提升。例如,FAISS 可以使用聚类来对相似的向量进行分组,从而缩小搜索空间。特征提取模型的选择也会影响结果:在对象识别上训练的模型(例如,MobileNet)将优先考虑形状,而在纹理上微调的模型可能更好地匹配图案。开发人员可以根据其特定用例调整这些组件,从而平衡准确性、延迟和资源约束。