1. 图像特征向量:计算机视觉的通用语言
在计算机视觉领域,我们常常需要将图像转换为机器可以理解的数学表示。这个转换过程就像给图像制作一张"数字身份证",而卷积神经网络(CNN)就是最优秀的"身份证制作机"。
当一张图像通过CNN时,网络会逐步提取从低级到高级的特征:
- 浅层网络捕捉边缘、颜色等基础信息
- 深层网络识别物体部件、整体结构等复杂特征
- 最终在全连接层或全局池化层输出一个固定长度的特征向量
这个特征向量通常被称为embedding,数学上表示为f∈ℝᵈ,其中d是向量的维度。现代CNN模型如ResNet、EfficientNet等产生的特征向量维度通常在512到2048之间。
为什么这种表示方式如此有效?因为它将图像内容编码为一个紧凑的数值向量,使得:
- 相似图像的特征向量在向量空间中距离相近
- 不同图像的特征向量相距较远
- 这种距离关系保持了语义上的相似性
在实际应用中,我们通常会处理大量图像的特征向量。例如在人脸识别系统中,数据库可能存储着数百万人的特征向量;在电商图像搜索中,商品图片库可能有上千万的特征向量。高效地比较这些向量的相似度是计算机视觉系统的核心能力之一。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 距离度量:图像相似性的数学表达
2.1 距离度量的基本概念
当我们有了图像的特征表示后,如何量化两个图像的相似程度?这就需要引入距离度量的概念。距离度量本质上是一个函数,它接受两个向量作为输入,输出一个非负实数表示它们之间的"距离"或"差异"。
一个好的距离度量应该满足以下数学性质:
- 非负性:d(x,y) ≥ 0
- 同一性:d(x,y)=0 当且仅当 x=y
- 对称性:d(x,y)=d(y,x)
- 三角不等式:d(x,z) ≤ d(x,y)+d(y,z)
在计算机视觉中,最常用的距离度量都基于范数(norm)的概念。范数是将向量映射到非负实数的函数,满足类似的性质。给定一个向量x=(x₁,...,xₙ),p-范数定义为:
‖x‖ₚ = (∑|xᵢ|ᵖ)^(1/p)
不同的p值对应不同的范数,进而产生不同的距离度量。
2.2 L1与L2范数的数学定义
L1范数(曼哈顿范数):
‖x‖₁ = ∑|xᵢ|
即向量各元素绝对值的和
L2范数(欧几里得范数):
‖x‖₂ = √(∑xᵢ²)
即向量各元
