1. 首页
  2. 数据分析

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

以图搜图功能,特别是移动端的以图搜图,成为日益增长的流量入口和用户需求。移动端的以图搜图是一代又一代的图像人、搜索人的梦想,而如今梦想在一步步贯彻并变为现实。

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

对于一般人来讲,你可以不去学习图像搜索的算法,但是一定有必要知道搜索引擎是如何辨别图片的。

在以图搜图功能日渐普及的当下,相信有不少人经常会用到,你可以直接上传本地图片来搜索不同尺寸的相似图片,我们以一款叫做拍图购的图像搜索产品为例:

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

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

输入这张穿着白裙子的女孩图片,反馈的搜索结果如下:

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

相似度如此之高另外还能同色系同材质进行匹配,那么问题就来了!

这种技术的原理是什么?

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

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

感知哈希算法:

第一步,缩小尺寸。

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

第二步,简化色彩。

将缩小后的图片,转为64级灰度。也就是说,所有像素点总共只有64种颜色。

第三步,计算平均值。

计算所有64个像素的灰度平均值。

第四步,比较像素的灰度。

将每个像素的灰度,与平均值进行比较。大于或等于平均值,记为1;小于平均值,记为0。

第五步,计算哈希值。

将上一步的比较结果,组合在一起,就构成了一个64位的整数,这就是这张图片的指纹。组合的次序并不重要,只要保证所有图片都采用同样次序就行了。

得到指纹以后,就可以对比不同的图片,看看 64 位中有多少位是不一样的。在理论上,这等同于计算” 汉明距离”(Hamming distance)。如果不相同的数据位不超过5,就说明两张图片很相似;如果大于10,就说明这是两张不同的图片。

这种算法的优点是简单快速,不受图片大小缩放的影响,

缺点是图片的内容不能变更。如果在图片上加几个文字,它就认不出来了。

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

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

颜色分布法:

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

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

任何一种颜色都是由红绿蓝三原色(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种组合中的一种,这样就可以统计每一种组合包含的像素数量。

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

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

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

深度学习:

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

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

简单概括就是:利用多个隐藏层,每层多个卷积核对输入图像进行卷积,每层的输出作为下一层的输入,最后连接一个分类器进行分类,通过不断的训练修改各层的参数,最后再每个隐藏层训练得到一些抽象的特征图谱,网络训练好后就可以对输入图像进行分类了。

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

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

来源:数之联大数据

更多推荐
1.图说技术:大数据顶峰滑落,人工智能崛起
2.【学习】为什么需要数据可视化,如何用图表讲故事?(一)
3.【学习】为什么需要数据可视化,如何用图表讲故事?(二-1)
4.【学习】为什么需要数据可视化,如何用图表讲故事?(三)
5.【图说】原创信息图:网页玩家喜好分析报告

原文始发于微信公众号(PPV课数据科学社区):图说天下:计算机是怎么知道两张图片相似的呢?

原创文章,作者:ppvke,如若转载,请注明出处:http://www.ppvke.com/archives/11269

联系我们

4000-51-9191

在线咨询:点击这里给我发消息

工作时间:周一至周五,9:30-18:30,节假日休息