基于图像的搜索如何工作?

How does Image-Based search works?

我一直在做一个电子商务项目,现在我正在尝试实现基于图像的搜索。我在网上搜索了可能的 solution.I 知道 google 并且雅虎已经停止了它支持图像搜索 API.I 想知道需要从图像中提取什么,根据我需要搜索的内容,我的 db.Any 建议将是 helpful.Thanks

如果你想要一个蛮力方法,你可以计算每个图像的哈希值,将它存储在数据库中并计算要搜索的文件的哈希值,将它与数据库匹配......现在你找到了图像的完全匹配。

这在某些情况下可能会有用,但在大多数情况下您会希望找到 "similar" 个图像。您可以从图像中提取元数据,如拍摄日期、文件名等。如果您想搜索自己的相册,很可能是大约在同一时间拍摄的图像,位于同一位置附近,因此包含相同的内容。

Google 使用(据我所知)未知方法截取图像的一部分并使用该信息进行搜索。例如:如果您将图像分成 X × Y 网格并计算平均颜色值,您可以在数据库中搜索匹配项(显然,您必须对每张图像都执行此操作并将结果存储在数据库中) .如果您允许搜索图像和数据库值之间存在一定的差异,您很可能会找到另一张相似的图像。在数据库中仅搜索图像的一部分,可以让您找到看起来相同但被移动的图片。

Microsoft 已经创建了 photoDNA,一种找到图片中对象的 "edges" 的方法,将其变成黑白图像。然后他们将其调整为较小的分辨率并计算出 has。使用此方法,您可以找到几乎相同但略有不同的照片。如果您想查找编辑过的图像和调整过大小的图像,这是理想之选。

另一种方法是计算图像的色谱,将其归一化并在数据库中搜索(变化很小)。比起你会得到颜色接近相同的图像,但内容可能完全不同!

深度学习也可以是一种选择,如果你有相同对象的分配图像。通过训练计算机(例如使用 nVidea cuda),您可以让模型识别物体。如果您不是搜索带有狗的照片,您的结果可能是其他带有狗的图片。

总结:方法有很多种,每一种都有自己的优点和缺点,但它们的共同点是:做起来不容易!