计算机是怎么知道两张图片相似的呢?

标签: geek | 发表时间:2016-11-02 08:00 | 作者:
出处:http://itindex.net/admin/pagedetail

36大数据

作者:数之联

摘要:以图搜图功能,特别是移动端的以图搜图,成为日益增长的流量入口和用户需求。有机构表明:未来5年,用户使用语音和图像进行意图表达的比例将超过50%。移动端的以图搜图是一代又一代的图像人、搜索人的梦想,而如今梦想在一步步贯彻并变为现实。

那么对于我们这些非专业的seo人员来说,36大数据(http://www.36dsj.com/)

可以不去学习图像搜索的算法,但是一定要知道搜索引擎是如何辨别图片的。

在以图搜图功能日渐普及的当下,相信有不少人经常会用到,你可以直接上传本地图片来搜索不同尺寸的相似图片。

就拿拍图购图像搜索产品为例:36大数据(http://www.36dsj.com/)

36大数据

你可以上传一张图片搜索各大互联网电商网站上所有与它相似的图片。

36大数据

那么咱们就拿这张穿着白裙子的女孩图片为例,反馈的搜索结果如下:

36大数据

相似度高达百分百另外还能同色系同材质进行匹配

那么问题就来了!36大数据(http://www.36dsj.com/)

计算机又是怎么知道两张图片相似呢?这种技术的原理是什么?

其实原理非常简单易懂,我们可以用一个快速算法,就达到基本的效果。这里的关键技术叫做“感知哈希算法”(Perceptual hash algorithm),它的作用是对每张图片生成一个“指纹”(fingerprint)字符串,然后比较不同图片的指纹。结果越接近,就说明图片越相似。

感知哈希算法:36大数据(http://www.36dsj.com/)

第一步,缩小尺寸。将图片缩小到8*8的尺寸,总共64个像素。这一步的作用是去除图片的细节,只保留结构、明暗等基本信息,摒弃不同尺寸、比例带来的图片差异。

第二步,简化色彩。 将缩小后的图片,转为64级灰度。也就是说,所有像素点总共只有64种颜色。 第三步,计算平均值。 计算所有64个像素的灰度平均值。 第四步,比较像素的灰度。 将每个像素的灰度,与平均值进行比较。大于或等于平均值,记为1;小于平均值,记为0。 第五步,计算哈希值。将上一步的比较结果,组合在一起,就构成了一个64位的整数,这就是这张图片的指纹。组合的次序并不重要,只要保证所有图片都采用同样次序就行了。 得到指纹以后,就可以对比不同的图片,看看64位中有多少位是不一样的。在理论上,这等同于计算”汉明距离”(Hamming distance)。如果不相同的数据位不超过5,就说明两张图片很相似;如果大于10,就说明这是两张不同的图片。 优这种算法的优点是简单快速不受图片大小缩放的影响劣缺点是图片的内容不能变更如果在图片上加几个文字

它就认不出来了。36大数据(http://www.36dsj.com/)

所以它的最佳用途是根据缩略图找出原图。

实际应用中,往往采用更强大的pHash算法和SIFT算法,它们能够识别图片的变形。只要变形程度不超过25%,它们就能匹配原图。这些算法虽然更复杂,但是原理与上面的简便算法是一样的,就是先将图片转化成Hash字符串,然后再进行比较。

颜色分布法:每张图片都可以生成颜色分布的直方图(color histogram)。如果两张图片的直方图很接近,就可以认为它们很相似。

36大数据

任何一种颜色都是由红绿蓝三原色(RGB)构成的,所以上图共有4张直方图(三原色直方图 + 最后合成的直方图)。 如果每种原色都可以取256个值,那么整个颜色空间共有1600万种颜色(256的三次方)。针对这1600万种颜色比较直方图,计算量实在太大了,因此需要采用简化方法。可以将0~255分成四个区:0~63为第0区,64~127为第1区,128~191为第2区,192~255为第3区。这意味着红绿蓝分别有4个区,总共可以构成64种组合(4的3次方)。

任何一种颜色必然属于这64种组合中的一种,这样就可以统计每一种组合包含的像素数量。

36大数据

上图是某张图片的颜色分布表,将表中最后一栏提取出来,组成一个64维向量(7414, 230, 0, 0, 8, …, 109, 0, 0, 3415, 53929)。这个向量就是这张图片的特征值或者叫”指纹”。

于是,寻找相似图片就变成了找出与其最相似的向量。这可以用皮尔逊相关系数或者余弦相似度算出。

深度学习:自从Hinton在2012年将深度卷积神经网络(CNN)带入到图像分类领域后,深度学习在图像处理相关领域的研究一下子变得异常火热起来

36大数据

简单概括就是:36大数据(http://www.36dsj.com/)

  1. 利用多个隐藏层
  2. 每层多个卷积核对输入图像进行卷积
  3. 每层的输出作为下一层的输入
  4. 最后连接一个分类器进行分类
  5. 通过不断的训练修改各层的参数
  6. 最后再每个隐藏层训练得到一些抽象的特征图谱
  7. 网络训练好后就可以对输入图像进行分类了

基于深度学习原理的图像检索,更多的是从一种图像理解的角度来进行的,得到的是一种更加抽象的描述,也可以定义为“语义”,它更多的是在解释这个图像描绘的是什么物体或者什么场景之类的。

综合多媒体和移动化的特点,未来搜索技术的发展将为用户提供更加灵活、多样化的搜索请求方式,以及综合音频、视频、图片、文本等多媒体信息的搜索结果,使得搜索领域的人机交互更加自然、有效。

在未来二至五年内,图像搜索将迎来新一轮的应用高潮。36大数据(http://www.36dsj.com/)

End.



无觅相关文章插件,快速提升流量

转载请注明来自36大数据(36dsj.com): 36大数据» 计算机是怎么知道两张图片相似的呢?

相关 [计算机 知道 图片] 推荐:

计算机是怎么知道两张图片相似的呢?

- - IT瘾-geek
摘要:以图搜图功能,特别是移动端的以图搜图,成为日益增长的流量入口和用户需求. 有机构表明:未来5年,用户使用语音和图像进行意图表达的比例将超过50%. 移动端的以图搜图是一代又一代的图像人、搜索人的梦想,而如今梦想在一步步贯彻并变为现实. 那么对于我们这些非专业的seo人员来说,36大数据(http://www.36dsj.com/).

学生党最应该知道的资源---技能/软件/编程/英语/二外/计算机二级/其他学习/论文下载/电子书/PPT模板_哔哩哔哩_bilibili

- -
1、技能学习平台:哔哩哔哩、中国大学慕课、coursera、edX. 2、软件操作:up主:oeasy、doyoudo、星月兮、Genji是真想教会你、旁门左道PPT、Excel自学成才、我是于干,+实战演练. 3、编程:基础:菜鸟教程、进阶:CSDN、Github、stackoverflow、leetcode.

计算机学科漫谈

- - 编程 - 编程语言 - ITeye博客
    PHP设计模式之观察者模式. 在这篇博文里,我想和大家聊一聊自己对计算机学科的理解. 当下本科阶段的计算机专业教学涉及计算机学科的方方面面,分类繁杂,有时可能令新人茫然不知所措. 那么,对计算机专业的学者来说,什么是最重要的呢. 我相信,一千个读者,一千个哈姆雷特,同样的,每个计算机的学习者都有自己对专业的一番认识.

天才计算机程序员 -- fabrice bellard

- 山石 - 小美的部落格
这位老兄就是写jslinux的那位,它的主页是:. 上面有他的几个作品,包括qemu,ffmpeg,tcc等. 这个世界从来不缺天才,只缺乏利用天分坚持理想和信念不断创新的人,这些人用恒心和努力缔造一个又一个传奇. 法国人Fabrice Bellard 就是这样一个了不起的程序员. Fabrice Bellard1972年生于法国,曾就读于巴黎高等综合理工学院和法国电信研究院.

计算机爱好者 VS. 程序员

- kapster - 博客园新闻频道
  本文是从 Hackers vs. Coders 这篇文章翻译而来.   优秀的计算机爱好者具有一种无价的技能. 可作为一名程序员会跟计算机爱好者一样吗. 难道程序员跟那些不知道如何编码的计算机爱好者们相比,会在创造性上处于劣势吗.   下面的这个故事让我看清了他们之间的不同.   我最近被邀请在一个周末创业活动中做指导.

计算机的10大经典错误

- chris - 伯乐在线 -博客
10、DOS的Abort,Retry, Fail. 85年以后出生的人可能不知道DOS是什么了,只有那老家伙还知道这是什么. 我还记得当时的我对于Abort和Fail这两个选择还是比较清楚的, 不过,今天完全忘记了Abort和Fail的差别是什么. 这个出是DOS下的经常出现,也相当的经典,以至于在Wikepedia上都有专门的业面 Abort, Retry, Fail?.

当计算机算法控制世界

- 洞箫 - cnBeta.COM
感谢Bluehost中国的投递. BBC的报导称,看不见的 算法正在控制我们在数字世界里的互动,而糟糕的是我们正失 去对这些代码的控制. 从图书和电影推荐算法,到Facebook的朋友推荐和图像标记服务,到搜索引擎,算法已经渗透到了我们生活之中.

[图]计算机10大经典错误

- wu - cnBeta.COM
感谢404NotFound的投递. 10、DOS的Abort,Retry, Fail.

首个计算机Bug的由来

- bill - cnBeta.COM
“Bug”一词,是指“故障”、“缺陷”. 了解软件开发的朋友都非常熟悉,程序员和测试人员更不用说,在工作中会常遇到. 9月9日下午在微博上看到@新浪科技发了一条微博消息:.

计算机科学经典论文

- zii - 负暄琐话
从Jao的Programming Musing 看到的:Babar Kazar 整理了一堆经典论文. Jao强烈建议每个严肃的程序员读每篇论文,说它们都或多或少有意思. 粗粗扫了一下,很多论文都没读过. Hoare Tony Hoare名下的公理化语义(Axiomatic Semantics). 著名的Hoare Triples, P{C}Q, 就是从这里来的.