百万量级的汉明距离的数据有没有什么快速计算接近的方法呢?

2020-04-25 09:06:29 +08:00
 phpfpm

目前有近 100w 图片需要判重,挑了几个 hash 算法,正在跑 hamming code,都是 128bit 的 binary

这些图片都是经过 md5 与判重之后的图片了,所以需要找出来一些汉明距离接近的肉眼观察一下

所以要找到一些距离是 0,1,2,3 的图片组。

当然了,挨个计算一次(1M * 1M = 1T)

好像似乎,也不是很长时间吧,还勉强能接受,跑几天跑完了

有什么能再快一些的算法吗?

目前有一台机器(9400f+1660s)可以跑一点机器学习,勉强够看。

5289 次点击
所在节点    问与答
43 条回复
0o0o0o0
2020-04-26 07:47:26 +08:00
向量搜索,记得有一个叫 hnsw 的算法。。。不知道可不可以。。。
phpfpm
2020-04-26 09:19:57 +08:00
@0o0o0o0
@tzm41
@yuruizhe
@also24

昨天想了一个思路,准备动手去做
还是空间换时间,而且要利用好“diff < n”这个条件去筛。

128bit diff <=3 那么把 128bit 分成四段,至少能有一段是完全一致的。

1M 个 分成 4M 段 每段按照哈希值存到一个桶里面,会有 2^32 个桶,每个桶基本不会有冲突。
之后每个 hash 找近邻的时候只需要找 4 段对应的 hash 取个并集,算一下这部分就好。
phpfpm
2020-04-26 19:35:18 +08:00
根据上面的帖子优化了一版
从 5*200*25k 个 distance 用 10s 了
到 5*200*200k 个 distance 用 15s

之后一个点的全量数据对比 (5*1M )个 distance 在 20s 内能搞定,考虑用队列离线算~

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

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

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

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

© 2021 V2EX