请问图片识别搜索引擎的相关功能是如何实现的?
那么,怎么做呢,就是从像素中提取特征,特征有各种各样的提取方法,这也是每种算法性能不同的主要原因。但是简单来说,可以理解为将像素或者像素间关系翻译为有代表性的表达方法。特征能在编码方式不同,受到噪音攻击或其他各种攻击下依然不变的,就是最完美的,不过现在还很难找到。 之后,就是如何快速搜索特征了。一幅图,可以提取很多特征值,根据算法不同而变,假比方说400X400的图片,4个点提取一个特征,没有overlap,那么可以提取40000个特征,这就是一个图片的特征。当你要搜索这个图片时候,需要将待识别的图片和库中图片的特征形成比较,原则上来说,如果40000个特征全部匹配上了,那么,一定就是你要的了。 但是,又出现了两个问题,一个就是,准确度,一个是时间。 准确度在于,特征收到“攻击”后,可能不能完全匹配,那么,就去找最相近的即可。比如,有39000个特征匹配上了,那我估计结果也是想要的。这就是设定阈值的问题,高于这个阈值了,系统认为就是你要的了,然后就输出结果给你了。 时间在于,库中上亿的图片,每个图片很多特征点,你需要一一比较,可以想象即使在现在的硬件条件下,这个速度也够呛。那么,就需要一些比较快速定位的算法,而不能用简单粗暴的欧氏距离啥的。推荐快速定位的方法,有LSH等。 总的来说就是这么个步骤了,但是,困难重重,根据商业化的需求和技术人员的要求不同,难点很多。打个比方,如果你要查的图片是400X400的,但是有张图片中有一个20X20的小块是你要找的,那怎么办呢?这就要考虑类似SIFT金字塔的算法了。反正知识点很多,这是一个学科,我不喜欢回答长篇大论,不过这全是我手打的,一不小心就啰嗦了,罪过罪过。