0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

以图搜图背后的技术,你了解吗?

nlfO_thejiangme 来源:lq 2019-05-14 09:29 次阅读

当你看到一株未曾见过的植物,你可以打开百度APP,拍照搜索,找到相关信息;当你看到朋友穿了一件你特别喜欢的衣服,你也想买一件,你可以通过淘宝APP的拍立淘功能,找到商品;当你到达一个陌生的地方,你可以通过微信APP对着当地的街区或者建筑物拍一张照片,来定位你的详细位置。这背后都是强大的以图搜图技术。

以图搜图技术发展了许多年,从早期以图搜图的精度不尽如人意,到后来基于以图搜图技术开发出非常多的改变用户行为和提升效率的应用,经历了不小于10年的发展,整体的技术方案、数据量级、工程架构都进行了多轮的迭代。当前,各个大厂都在基于以图搜图技术来提供更好的产品和服务。我们希望在这篇文章中对以图搜图技术做一个全面的总结,主要包含以下几个方面:

1. 以图搜图技术的通用框架;

2. 以图搜图技术迭代;

3. 以图搜图是工程+算法的结合,架构演进。

Part 1. 以图搜图技术的通用框架

在这一章,我们来介绍以图搜图技术的通用框架。在介绍以图搜图技术之前,我们来看任何一个搜索技术所拥有的基本组件。举个例子,我们需要到图书馆查找一本书,需要几个基本的要素:1. 图书馆(海量图书);2. 图书的分类、书名或者作者(在图书馆的编码体系下,这些信息的组合能够唯一表示这一本书);3. 图书馆的书需要按照一定的规律来布置(科目、难易程度、首字母、作者、年份等);在有了这些基本的要素之外,只要图书馆有这本书,我们就能够快速找到它;或者即便没有某一本具体的书,我们也能够查询到与这本书有着相近内容的书。

结合上面的例子,我们来看一个典型的以图搜图系统所拥有的基础框架:

先来看offline部分,包括3个基本的要素:

01. 检索图片库:这就相当于上一个例子中的图书,我们需要有一个足够规模的图片库,比如淘宝的所有商品的图片集合,比如百度图片搜索中收集到的互联网图片数据集合。当然,这里我们介绍的是一个静态的图片库,在实际项目中,我们需要有能力来处理动态变化的图片数据库。

02. 特征提取:这就相当于上一个例子中图书的作者、年份、科目等等,我们称为图片的特征。实际上,图片的任何统计量都可以作为图片的特征,甚至图像的像素值本身通过归一化之后也可以作为图片的特征。在实际中,我们使用图片的颜色分布、梯度变化统计量、纹理、BOW统计、底层/中层/高层语义特征等作为图片的特征,非常丰富。

03. 检索结构:检索结构的唯一目的就是让查找更快更准。简单的,一一对比是最简单的查询结构,最准,但是最慢;所以所有检索结构本质上都是效率和精度的平衡。常见的,我们可以对数据集进行聚类,把数据分成一堆一堆的,比对时先选择相似的堆,然后在堆内部再进行细致的比对。而分堆的理念又可以通过树结构、Hash结构、倒排索引、图结构等等来刻画。

再来看online部分,其中特征提取和offline的特征提取需要保持高度的一致性,所以实际中我们通常使用一个单独的特征服务器来提供特征提取服务。这里之所以将检索结构和检索引擎分开,主要是基于如下的考虑:检索引擎需要应对高并发等一些的工程方面的问题,所以本质上检索引擎更倾向于工程架构的优化,而检索结构更倾向于检索结构算法方面的优化;但实际上,二者是没办法完全拆分开的。

以图搜图技术本质上是寻找相似图片,但两张图片是否相似有非常多的维度:

因此在很多时候,以图搜图技术需要根据不同的使用场景来选择合适的技术方案,尤其是特征的选择。产品层面,也层出不穷,可以参考下面的几个链接:

The Best Image Search Engines on the Web

https://www.lifewire.com/where-to-find-images-online-3482427

The 7 Best Search Engines for Finding Free Images

https://www.sitepoint.com/7-best-search-engines-free-images/

Part 2. 以图搜图的技术迭代

这个部分我先打算介绍一下特征、检索引擎各自都经历了哪些迭代,然后在以不同时段典型的工业界的使用方案来介绍以图搜图技术代际的迭代。

特征层面:

简单的,图像的单通道、多通道的颜色直方图可以作为一个简单的特征;进一步颜色矩特征,图像中任何的颜色分布都可以通过它的矩来表示。另外需要强调的局部特征是SIFT特征(参考:https://blog.csdn.net/abcjennifer/article/details/7639681),SURF特征,HOG特征等;当有了局部特征之后,我们需要对局部特征进行聚合,作为图像的全局表示;将多个局部特征矢量聚合成一个统一维度的矢量表示的方法有:BOW、VLAD、Fisher Vector等等。

深度学习技术兴起之后,基于深度学习的图像特征开始成为图像检索的主流。我们知道CNN网络具有很多不同程度对图像进行抽象的layer,较低的层得到的是图像的简单特征,而较高层得到的是图像的语义相关的特征,不同层的特征在检索层面精度有很大的区别,在Oxford Building数据集上,使用VGGNet进行简单的测试,得到了如下的统计结果。

(参考:http://yongyuan.name/blog/layer-selection-and-finetune-for-cbir.html)

实际上,深度网络最后的FC层同样可以作为图像的特征表示,当使用FC作为特征时,网络训练时使用的label对检索的效果有较大的影响。理论上,label如果能够提供更多的细粒度的信息,则学习到的FC特征则更能够表达图像的细粒度特征。

特征类型对检索效果影响很大;但特征的学习方式,尤其是引入度量学习的思路之后,即便是同一个网络的同一层特征,不同的训练方式对最后的精度也会有很大的影响。

比如Class weighted conv features

(参考:https://github.com/bikong2/retrieval-2017-cam)

分类loss和triplet loss结合:

引入更多监督信息的学习:

以及通过KL散度来优化:

其实通过不同的方式进行网络学习的优化方式还有很多,这里大致总结几个优化的大致方向:

1. 引入更多的监督信息;

2. 不同程度、维度的attention(包括层、channel、类等等);

3. Triplet loss及其各种变种;

4. 不同的特征聚合方式。

检索引擎:

检索引擎方面,早期我们通过层次化的聚类来对数据分组,通过K-D Tree对数据进行划分,通过Hash对空间进行划分,通过倒排索引加速检索的效率,通过PQ量化对更大规模的数据进行二次方的划分。参考:

▫️ 图像检索:再叙ANN Search

https://blog.csdn.net/qq_27245709/article/details/72393613

▫️ 图像检索:基于内容的图像检索技术

https://yongyuan.name/blog/cbir-technique-summary.html

▫️ Product Quantization for Nearest Neighbor Search论文理解

https://blog.csdn.net/CHIERYU/article/details/50347735

层次化的聚类算法可以通过如下的图片来表示:

通过聚类来减少检索时比对的检索时间。K-D Tree和Hash请参考下面的图片。K-D Tree相对层次化聚类基本原理是一致的,不过聚类算法更多的是数据的划分,但树结构的层次化划分包含特征和数据的划分两方面。Hash方法,尤其是LSH(局部敏感哈希),则是同时在寻找特征的mapping和空间的划分。

PQ量化本质上是在特征和数据的两个层面对数据集进行量化,如下图所示,特征向量本身是16*8=128维,通过特征层面的划分,分成y1…y8总共8组特征;划分之后,对每一组特征在全数据集上进行聚类等量化手段,比如量化的长度是8bits的01向量。最终得到的是8*8bits的01向量,压缩比超高。

接下来,介绍两代不同的以图搜图技术。

局部特征(如SIFT特征)+BOW+LSH的方案:

这种方案大致在2015年之前算是比较流行的框架,通常针对特殊的使用场景,在检索基础上可能还需要进行细粒度的精排序。这个方案在10亿以内的数据量级上非常适用,当然如果数量级更大,也是可以的,只是需要引入其他的检索结构。关于LSH,推荐使用一个开源的工具包FALCONN:

https://github.com/FALCONN-LIB/FALCONN

CNN卷积特征+VLAD+PQ量化的方案:

这是目前比较主流的方案,卷积特征建议做多层特征的组合,PQ量化建议根据数据规模做密集的参数选择,推荐使用Facebook开源的工具包FAISS:

https://github.com/facebookresearch/faiss

当然,卷积特征的学习方式的选择层面,需要根据实际拥有的数据的标签信息来决策。有一些基于弱监督学习的方案,也可以尝试。

Part 3. 以图搜图是工程+算法的结合

架构演进

在这里,我们介绍一个理想状态下的以图搜图架构,需要尝试去解决的几个问题:

1. 如何解决检索库动态增加的问题;

2. 如何解决全量的特征迭代的问题,也就是说query和database的特征需要同步;

3. 特征增强,在检索结构确定的情况下获得更好的检索效果;

4. 高并发低延迟。

以上只是一个简单的架构示意图,如果涉及到特征评价,检索结构评价,甚至其他的策略迭代等一系列的关于AB Test的需要,架构层面需要进行深度的优化。

到这里基本上对以图搜图技术从特征、检索结构、架构等层面进行了一个基本的介绍。其实工业界的以图搜图产品或者说引擎远比我写到的要复杂,如果有大家有兴趣,建议研究以下几个检索系统的演进:

阿里的拍立淘

百度的图片搜索

谷歌的图片搜索

Pinterest的商品搜索

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 图像
    +关注

    关注

    2

    文章

    1063

    浏览量

    40038
  • 数据集
    +关注

    关注

    4

    文章

    1178

    浏览量

    24348
  • cnn
    cnn
    +关注

    关注

    3

    文章

    327

    浏览量

    21296

原文标题:一文了解「以图搜图」技术背后的原理及架构优化

文章出处:【微信号:thejiangmen,微信公众号:将门创投】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    了解电源电路的电路

    本帖最后由 eehome 于 2013-1-5 09:58 编辑 让尽快了解电源电路的电路
    发表于 05-24 19:10

    了解频率控制技术的演进

    一起来涨姿势,如题,分享一张频率控制技术演进的(图片来源:世强先进),了解下电子产品心脏的技术发展过程。貌似CMEMS可编程振荡器有替代石英振荡器的趋势,作为一个新出现的
    发表于 03-28 18:57

    了解自供电吗

    了解自供电吗,或者是否使用自供电技术,一起来评论围观自供电吧
    发表于 07-15 10:08

    的DIY背后有什么故事?

    背后的故事,即可参加本次活动。活动时间:4月28日——5月25日要求:1、下载电子发烧友APP,在APP里选择发动态。要求在动态前加上#的DIY背后有什么故事?例:2、有有真相,“
    发表于 04-28 20:45

    了解AI人工智能背后的科学?

    的调整。 您的用户无需采用新技术即可体验AI的收益。总之,了解人工智能到底是什么,就会越懂得如何利用它助长的业务!文章来源:怡海软件
    发表于 09-25 10:03

    GRID Test Drive背后技术是什么?

    大家好,我想知道GRID Test Drive背后技术。它是Citrix / VMware?还要别的吗?悬念在杀我......差不多;-)问候,约亨。以上来自于谷歌翻译以下为原文Hi all,I
    发表于 10-09 15:15

    RTL与技术原理怎么更好地查看

    你好,我一直在解决我正在进行的设计上的一些错误和连接问题。我只是想知道是否有任何理由或情况,更好地查看RTL原理而不是技术原理。我已经阅读了AR#41500并且它说“应该总是参考
    发表于 03-22 15:22

    智能天线技术了解多少

    在无线通信领域中,面临着如何抗同道干扰及多径衰落等诸多问题。智能天线利用数字信号处理的能力,合成天线阵列的输入和输出,自适应的方式发射和接收信号。也就是说,相应于信号环境的改变,系统能自动改变其
    发表于 06-12 06:32

    电路设计上贴片电容的应用,想了解都有哪些电路和设计方式?

    有哪位朋友可以分享下的知识吗?我想了解下在电路设计图上,像这样CL05A106MQ5NUNC的贴片电容一般应用于哪些电路图上?主要用于什么产品,我想找有关的线路来学习,不知道从何入手?大神们,助我一臂之力吧~~~~~~万分感
    发表于 07-08 14:23

    Facebook后台背后技术

    今天我们一起来了解Facebook背后的软件,看看作为当今世界上访问量最大的网站之一,Facebook是如何保证5亿用户的系统一直稳定可靠的运行。Facebook的扩展性挑战
    发表于 07-17 06:18

    一篇文章让全面了解测试!细节干货满满!绝对良心文章!

    扰和噪声的影响,体现了数字信号整体的特征,从而估计系统优劣程度,因而眼分析是高速互连系统信号完整性分析的核心。另外也可以用此图形对接收滤波器的特性加以调整,减小码间串扰,改善系统的传输性能。观察眼
    发表于 09-25 11:54

    云计算背后采用的具体技术有哪些?

    云计算的平台建设方法以及应用构建方式是什么?云计算背后采用的具体技术有哪些?
    发表于 05-20 07:00

    CCD与CMOS技术,这些是所不了解

    CCD与CMOS技术,这些是所不了解
    发表于 06-01 07:12

    模型和数据库

    应用。模型与面向对象的模型相比更加能够描述事物之间的数据脉络(Data Context)。在互联网,物联网,智能制造,工业4.0 等诸多领域,采纳了模型和数据库技术。理解了
    发表于 09-02 07:18

    机器视觉中的过滤器技术

    机器视觉中有许多不同类型的滤光片,可以用来改善或改变被检查对象的图像。了解各种类型的过滤器背后的不同技术了解它们的优势和局限性是很重要的。尽管滤光片种类繁多,但几乎所有滤光片都可以分
    的头像 发表于 09-15 10:25 423次阅读
    机器视觉中的过滤器<b class='flag-5'>技术</b>