在 Python 中比较图像相似度

数据挖掘 Python
2021-09-21 17:06:43

我正在使用电影数据集,如果电影在不同零售商中相同,我想进行分组。

例子:

电影:美女与野兽

平台:谷歌、Netflix、iTunes、亚马逊。

我可以访问以下信号:工作室、电影名称、运行时间、语言、发行年份等。但是,在这种情况下,一些不一样的电影和前面提到的信号无法找到正确的匹配项。我需要做人类会做的事情:检查电影封面。例子:

我可以访问艺术图像。我正在使用 Python 进行比较。

是否有可以帮助我比较 2 张图像并确定它们是否相似的库?

2个回答

您可以使用 ImageHash

散列图像之间的差异将为您提供相似度分数

from PIL import Image
import imagehash

hash = imagehash.average_hash(Image.open('test.png'))
otherhash = imagehash.average_hash(Image.open('other.bmp'))

print(hash - otherhash)

https://pypi.org/project/ImageHash/

你提到的问题不是微不足道的。没有开箱即用的库可以为您比较图片并为您提供可靠的相似度值。因此,您需要开发一个既适用于您的问题又适用于您的数据集的系统。

话虽如此,由于神经网络比任何其他图像识别方法工作得更好,您可以尝试:

  • 自动编码器:(如果您的数据未标记)其想法是模型为您提取特征,然后您省略输出层,因此您拥有图像的新表示,但在模型从数据中学习的新特征空间中。一旦你的图像进入这个新的特征空间,你就可以使用任何技术来计算相似度。您可以在此处查看如何执行此操作的示例

  • 哈希二进制代码:(如果您的数据被标记)。这是一种基于 CNN 的监督方法,似乎可以很好地找到图像中的相关特征。看看这篇论文

使用图像通常不是很简单,需要一些努力和实验来掌握这些技术。然而,这绝对值得而且很有趣。