如何在自己计算机上以图搜图?
。。。。。。。。。
想了想,没有想到有类似的软件,要不我给你讲讲如何自己写一个吧
几个关键的步骤:
- 搜索本地所有图片
- 为所有图片抽取特征,建立索引
- 抽取所要查询图片的特征
- 搜索
稍微详细一点的解释:
- 图片,太复杂了,所以我们的思路是把它转化为一个更简单的东西来搜索——向量。
- 我们只使用颜色特征。简单。
- 对于一个图,我们可以考虑其RGB值。比如其中一个点的RGB为(100,50,255)。它有很多各种各样的点。
- 颜色直方图(color histogram)统计其中所有点的颜色的分布。同时,我们可以做一些降维处理。
- 比如,我们将R.G.B(0-255)各分成两份(0-127,128-255)则我们可以有:
R G B PixelCount
0 0 0 44
0 0 1 21
0 1 0 42
0 1 1 80
1 0 0 29
1 0 1 30
1 1 0 20
1 1 1 40
- 则此时,我们可以用一个向量(44,21,42,80,29,30,20,40)来表示这个图,完成了特征的抽取!
- 我们为每一张图片进行特征的抽取,得到了一堆向量B。同时我们对查询的图片进行特征抽取,得到了一个向量,比如A.
- 则此时,我们需要在B中找到最“接近”A的向量,此处的“接近”你可以用欧式距离即可。
- 此时,在B中暴力搜索就可以啦!已经很简单啦!
- 考虑到图片数量众多,以后可能还会查询,建议可以建立一个索引树,使用Rtree比较好。
我以Python为例,说下比较重要的技术问题
- 搜索本机所有图片:这个。。听起来比较简单,以“python+查找文件夹下所有文件”之类的关键词可以很容易找到。
- 为图片抽取特征:考虑到最简单的特征,我们只抽取颜色直方图(color histogram),python有图像库Image,其中可以直接调用histogram来获取颜色直方图。你可以进一步将其处理为一个向量。
- 为向量建立索引:Rtree是一个不错的索引结构,我看了看此处有已经实现了的(http://pypi.python.org/pypi/Rtree/),直接使用即可。
- 抽取所要查询的特征:见第2步
- 搜索:在Rtree上搜索向量即可,也应该没什么问题。
————————
嗯,自己动手,丰衣足食!
继续阅读
全部内容知乎/回答6 分钟
当前AI大模型哪家最好用?各家主要擅长哪些领域?普通人使用,推荐哪个?
作为一个日常工作中有超过 50% 时间都在与各种大模型对话的人,想跟大家分享一下我在使用各个主流模型时的一些体验和感受。 Google Gemini 系列 优点: 1. 极其便宜:无论是免费额度还是付费使用,价格都非常有优势。 2. Context Window 超级大:1-2M 的上下文长度,基本能覆盖绝大部分任务场...
知乎/回答2 分钟
编程的难点在于哪里?是逻辑、数学、算法,还是模块、框架、接口的掌握?
编程最大的难点其实都不在这些技术层面上,而是在于如何把一个复杂的现实问题转化为计算机可以理解和执行的形式。 我之前中提到过一个观点:"部署、运维等工具的逐渐标准化使得重复造轮子的需求越来越弱,越来越多的工程师核心任务并不是研发,而是整合(Integration)。"这背后的深意是:现在的编程工作,难点已经从"如何实现"...
知乎/回答1 分钟
Docker 的应用场景在哪里?
Docker for Data Science at Trulia 和一点感悟 - Hello陈然! - 知乎专栏 我们在Trulia Data Science Team 里面推行了Docker。一方面是搭建API做SOA,另一方面也在帮助每一个Data Scientist 都可以直接从最开始算法分析、开发一直做到部署...
