学习
实践
活动
工具
TVP
写文章

高效大规模图像搜索开源实现

传统Bag of Features方法的OpenCV C++代码。

(关注“我爱计算机视觉”公众号,一个有价值有深度的公众号~)

在深度学习逐渐统治计算机视觉领域的时候,传统算法依然有用武之地。在以图搜图应用里,“搜相同”仍旧广泛使用Bag of Features方法,本文来源于《Image Processing On Line》期刊最新的论文“Efficient Large-scale Image Search With a Vocabulary Tree”,回顾并开源了基于词汇树的大规模图像搜索。

搜索和识别图像中的对象已成为图像处理和计算机视觉领域的重要研究课题。给定输入查询图像,尽可能快地在大数据集中寻找类似图像,是非常具有挑战性的任务。在本文中,研究了Bag of Features方法,并介绍了Nistér和Stewénius的视觉词汇树方法的实现。训练时使用局部不变描述符技术描述图像,然后使用倒排索引在数据库中索引图像以用于后续进一步的查询。根据视觉词汇表量化图像局部特征描述符,创建稀疏矢量,这可以使得执行查询时非常高效地计算索引图像的相似性并据此排序。在性能分析部分研究了不同的因素对检索结果的影响,如词汇树构造的参数,局部描述符提取的不同技术(SIFT、SURF、ORB等)和PCA的降维。结果显示,检索性能随着训练时词汇量的增加而增加,而随着数据集的规模增大,检索性能衰减得非常缓慢。证明本文实现的图像检索方法可以有效应对大规模的图像检索。

图像被表示为Bag of Features稀疏向量:

使用视觉词汇表倒排索引技术索引数据库所有图像:

图像检索流程,计算局部特征,生成Bag of Features稀疏特征向量,倒排索引查询得到候选图像集,最后使用局部特征位置信息作几何验证,得到最终的结果图像排序。

实验中用到的数据集UKBench和MirFlickr1M,使用了100W的图像增大数据集规模。

检索准确性评价标准mAP计算方法:

使用不同的局部特征提取方法,包括SIFT、KAZE、SURF、ORB、AKAZE,得到的检索性能比较。

检索性能随着词汇树训练集规模增大,逐渐变好。

检索示例,3D对象–鞋子,平面对象–书本:

检索示例,视频帧:

检索示例,红酒标签:

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180806G0646300?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券