您最好的猜测是Google图片搜索如何工作?我可以上传照片,也可以搜索相似的图像。它用于识别相似图像的算法是什么?
您最好的猜测是Google图片搜索如何工作?我可以上传照片,也可以搜索相似的图像。它用于识别相似图像的算法是什么?
Answers:
我不知道Google使用哪种算法。但是,既然您想要一个最佳的猜测,那么让我就如何构建类似的系统给出一些想法。
处理基于图像的逐个图像的整个领域称为基于内容的图像检索(CBIR)。该想法是要以某种方式构造包含有关图像内容的信息的图像表示(人类不一定理解)。
存在两种基本方法:
对底层的本地方法进行了很好的研究。当前最好的方法是提取局部特征(这里涉及到特征提取算法的选择),并使用其局部描述符(同样,选择描述符)来比较图像。
在较新的作品中,首先对本地描述符进行聚类,然后将聚类视为可视单词 -然后,该技术与Google文档搜索非常相似,只是使用可视单词而不是字母单词。
您可以将视觉单词视为等同于语言中的单词词根:例如,单词:work,working,worked都属于同一个单词词根。
这些方法的缺点之一是它们通常在低纹理图像上表现不佳。
我已经给出并看到了许多详细说明这些方法的答案,因此,我仅提供指向这些答案的链接:
语义方法通常基于整个图像的分层表示。这些方法尚未完善,特别是对于一般图像类型。将这类技术应用于特定的图像域取得了一些成功。
由于我目前正在研究这些方法,因此无法得出任何结论。话虽如此,我在这个答案中解释了这些技术背后的总体思路。
再次,简短地说:总体想法是用树形结构表示图像,其中叶子包含图像细节,并且可以在更靠近此类树根的节点中找到对象。然后,以某种方式比较子树以标识包含在不同图像中的对象。
以下是有关不同树表示形式的一些参考。我没有全部阅读,其中一些使用这种表示法而不是CBIR进行细分,但它们仍然是:
除了对佩内洛普的回答外,还有两种方法,感知哈希和词袋模型,它们的基本功能易于实现,因此在尝试进入更高级的领域之前可以很好地使用或学习。
感知哈希
感知哈希算法旨在构造一个哈希,该哈希与密码哈希不同,它将为已通过例如缩放或JPEG压缩而稍微失真的相同图像提供相似或接近相似的哈希值。它们在检测图像集合中的重复项时很有用。
您可以按照其最基本的形式来实现此目标:
将图像转换为灰度
使您的图像为零均值
结果是有弹性的64位哈希,因为它基于图像的低频成分。此主题的一种变体是将每个图像划分为64个子块,并将全局图像均值与本地子块均值进行比较,并相应地写出1或0。
感知哈希例如由phash实现
词袋模型
词袋模型旨在从语义上识别图像,例如其中包含狗的所有图像。它通过使用某些图像补丁来实现此目的,其精神与人们根据某些单词的出现来对文本文档进行分类一样。可以对单词进行分类,例如说“ dog”和“ dogs”,并将它们作为标识符存储在反向文件中,其中“ dog”类别现在指向包含“ dog”或“ dogs”的所有文档。
以最简单的形式,可以使用以下图像进行操作:
您现在拥有了大量的SIFT描述符。问题是,即使来自几乎相同的图像,描述符之间也会存在一些不匹配。您希望将相同的词或多或少地组合在一起,就像将某些单词视为“ dog”和“ dogs”一样一样,并且需要补偿错误。这就是群集发挥作用的地方。
图像查询(例如,找到与查询图像相似的图像)将按以下方式解决:
似乎在上述答案中被忽略的另一种有趣的方法是深度卷积神经网络。看来Google现在正在将其用于图像搜索引擎和翻译服务。CNN在诸如相似度发现之类的认知任务中非常强大.CNN似乎执行了类似的``世界之袋''程序,该程序通过其网络层嵌入。这种技术的缺点是无法学习,需要庞大的数据集进行训练,而且训练阶段的计算成本当然很高。
关于此方面的建议论文:
和开源深度学习图像检索实现(后面的文章):https : //github.com/paucarre/tiefvision