构建图像相似度引擎
1. 图像数据处理与算法选择
1.1 图像数据表示
在处理图像数据时,我们已具备将其输入算法所需的条件。此前主要讨论了黑白图像的处理,而彩色图像的处理同样简单。每个像素可用三个特征表示,分别对应 RGB 值;若希望保留单一特征,也可使用三个 RGB 值的均值。
1.2 寻找相似图像
通常,MNIST 数字数据库用于分类任务,即根据手写数字找出其目标标签。这里我们采用不同方式,对于给定图像,尝试在数据集中找到与之最相似的图像,这是无监督任务,不使用标签信息。
我们先使用之前处理文本特征时介绍的余弦相似度算法。该算法为 X 矩阵的每一行计算单位向量,然后计算两两向量的点积,得到向量间的余弦夹角,以此衡量两幅图像的“接近”程度。以下是具体代码:
import pandas as pd
from sklearn.metrics.pairwise import cosine_similarity
# 假设 digits 是已加载的图像数据
X = digits.data
co_sim = cosine_similarity(X[0].reshape(1,-1), X)
cosf = pd.DataFrame(co_sim).T
cosf.columns = ['similarity']
cosf.sort_values('similarity', ascending=False)
运行上述代码后,第一行的相似度为 1,因为这是原始图像本身。下面按相似度排序展示其他图像。例如,查看图像编号 877: <
超级会员免费看
订阅专栏 解锁全文
833

被折叠的 条评论
为什么被折叠?



