图片搜索的原理

作者: , 共 1325 字

Google 新推出了 图片搜索 ,可直接上传图片(或者用图片链接)搜索网络上的相似图片, 例子 。估计还没多少人意识到,这玩意儿是人肉搜索的大杀器,以后大家还是少上传私人照片到公开网络。

阮一峰介绍 了一个简单的图片搜索原理,可分为下面几步:

  1. 缩小尺寸。将图片缩小到 8x8 的尺寸,总共 64 个像素。这一步的作用是去除图片的细节,只保留结构、明暗等基本信息,摒弃不同尺寸、比例带来的图片差异。
  2. 简化色彩。将缩小后的图片,转为 64 级灰度。也就是说,所有像素点总共只有 64 种颜色。
  3. 计算平均值。计算所有 64 个像素的灰度平均值。
  4. 比较像素的灰度。将每个像素的灰度,与平均值进行比较。大于或等于平均值,记为 1 ;小于平均值,记为 0。
  5. 计算哈希值。将上一步的比较结果,组合在一起,就构成了一个 64 位的整数,这就是这张图片的指纹。组合的次序并不重要,只要保证所有图片都采用同样次序就行了。

这种方法对于寻找一模一样的图片是有效的,但并不能够去搜索「相似」的照片,也不能局部搜索,比如从一个人的单人照找到这个人与别人的合影。这些 Google Images 都能做到。

Google 的算法,其 官方描述 为:

When you upload an image to Search by Image, the algorithms analyze the content of the image and break it down into smaller pieces called 「 features 」. These features try to capture specific, distinct characteristics of the image - like textures, colors, and shapes. Features and their geometric configuration represent the computer』s understanding of what the image looks like.

大意是说在 Google 眼里,图片并不是一个由像素点构成点阵,而是一些「features",包括形状、质地和颜色块。图片之间的比较,是直接去比较图片里的线条等。 官方文档里有一个视频 (在 Youtube 上)动态地描述了计算机是如何看图片的。

早在 2008 年, Google 公布了一篇图片搜索的论文( PDF 版 ),和文本搜索的思路是一样的:

  • 对于每张图片,抽取其特征。这和文本搜索对于网页进行分词类似。
  • 对于两张图片,其相关性定义为其特征的相似度。这和文本搜索里的文本相关性也是差不多的。
  • 图片一样有 image rank。文本搜索中的 page rank 依靠文本之间的超链接。图片之间并不存在这样的超链接, image rank 主要依靠图片之间的相似性(两张图片相似,便认为它们之间存在超链接)。具有更多相似图片的图片,其 image rank 更高一些。

Q. E. D.

类似文章:
相似度: 0.083
碎碎念 » 谣言
不知道最初来源于哪里,这个数字我最早是从 李笑来 那里看到的,我看完之后随便搜了几个数字,觉得结果也大同小异,心想为何笑来突然关注这个数字。后来才发现网上被传得到处都是,包括 我的老同学也参与了 ,最后发现其根源是下面这条「新闻」
现在相机的像素实在是太高了,上次 去泰山玩 ,朋友的 1200 万像素的 D90 照出来的照片分辨率高达 4288×2848 ,即使转为 jpg 格式,每张都在 5M 以上。而现在电脑屏幕的分辨率最高也在 1920 以下吧,超高分辨率的照片除了打印大照片之外没什么用处,反而不方便传输、流通、保存。
相似度: 0.049
今天香港中文大学的 Prof. Cai 给我们上 graph algorithm。第一节课上教我们玩魔方,先给每人发了一个。我喜欢这样的教学方法 :) 。
IT » css, 打印
最近碰到这个问题,我需要将网页打印成 PDF 文件。Chrome 可直接将网页保存(打印)为 PDF (无需安装 Adobe ),但式样跟网页上显示的截然不同。我测试了一下用法,了解了其中的一些原理和解决方法,总结如下。
利用线性代数可以给某些问题很精妙的证明, Matrix67 就给出了一个这样的例子 ,这也让我想起以前看见的另外一个例子,分享如下:
三体里有不少让人印象深刻的情节,但维度攻击是其中的佼佼者。
压力测试(或情景分析),是指一个组合在特定场合下的损失程度。在这个场景下,我们会假设某些因子的走势,然后计算组合当这些因子变动时所造成的损失。比如,我们可以假设利率曲线上移 100BP ,从而导致债券价格下跌造成损失。对于股票,通常假设指数的跌幅,然后通过股票与指数之间的关系(通常使用 Beta )来确定股票的损失。