以图搜图要靠算力么?

2020-07-01 14:23:59 +08:00
 imn1
先把最后的问题提前:有没有减少循环的方法?

图 A,图集 B,从 B 中找 A 相似
图集 B,千万级,数据库,有字节、CRC32 、以及一些 image hash 数据等字段
要实现上述需求是否只有乖乖的逐个算?有没有偷懒(省点算力)的方法?
3229 次点击
所在节点    Python
12 条回复
jtacm
2020-07-01 14:35:08 +08:00
kd tree
ball tree
jtacm
2020-07-01 14:36:33 +08:00
approximate nearest neighbor search
GM
2020-07-01 15:33:56 +08:00
必然有快速算法,买下整个全世界服务器都不够 google 用
ddgweb
2020-07-01 15:49:39 +08:00
有,和搜索引擎思路一样,提前编码索引,然后对比交叉直接对比索引,和你图片没有关系了,哪怕你单张图片有 20M,识别只要 0.0001s
azcvcza
2020-07-01 16:14:38 +08:00
应该是会把整个图片矩阵算出一个特征值,然后根据特征值匹配的吧。应该不会实时跑矩阵相似运算的吧
zjsxwc
2020-07-01 16:48:39 +08:00
图片提取特征后,计算图片特征矩阵之间的距离范数应该没有多大计算量,真的数据量大了就加机器呗
triptipstop
2020-07-01 16:52:01 +08:00
请参见,机器学习,特征工程。
zjsxwc
2020-07-01 16:56:43 +08:00
而且可以先对 B 集里面每个图片归类,比如 B 集下面 可以有 猫、狗、人,鱼这 4 个归类的代表特征矩阵, 要搜索 A 时先 让 A 与 4 个归类的代表特征矩阵比较,然后再在最像的 归类下的 图片 比较;
类似的,对归类 再归类,这样多分几个层次,运算量就小下来了。
Tromso
2020-07-01 16:57:43 +08:00
关键词 simhash, faiss
zjsxwc
2020-07-01 17:01:45 +08:00
这归类的归类的 N 层分类,
可以 工程上, 定期,抽取 M 个随机图片 作为 第一级 归类的 M 个 代表特征矩阵, 然后 在 在 每个 归类特征 下 统一的方式 构建 第二级 归类, 其实就是索引了
Morriaty
2020-07-01 17:10:47 +08:00
抽象出的问题是 ANN (approximate nearest neighbor), 一般方法有

- LSH and multiprobe LSH for euclidean distance
- partition trees for euclidean/cosine distance
- clustering-based approaches, including product quantization

python 的话就直接调用 annoy
ruanimal
2020-07-02 10:25:02 +08:00
有,图库的图片先算好 simhash 或者 briefhash

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/686247

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX