sakura32 发表于 2024-1-5 16:25

大量图片查重,如何给图片分组以加快速度

本帖最后由 sakura32 于 2024-1-5 21:42 编辑

目前我查重的逻辑是:计算图片的感知、均值、差异哈希>>>循环对比两张图片哈希值的韩明距离>>>韩明距离<10的作为重复图片。
由于没有分组,所以导致计算量很大,n张图片的计算量是n-1的阶加,实际运行下来10000张图片算了20分钟左右(Python)。
所以来求助下如何加快查重速度,是分组还是如何,如果分组以什么规则分?目前的想法是以图片的宽高比分一次,相近宽高比的分为一组。
或者说有没有更好的图片查重方法?

补充一下:不是图片二进制的相同,而是图片视觉上的相似,md5是没办法用的,目前我用的图片哈希比较算法和ssim相似度比较算法。
在补充一下:哈希值已经算好存在数据库了,现在相当于循环对比10000个二进制字符串的汉明距离,计算次数相当于9999的阶加,实际用时大概20分钟,用时太久了,所以想找个能给这些图片按特征分组的方法,分组计算而不是每张图片与其他全部图片对比一遍

sai609 发表于 2024-1-5 16:39

同问同求,大量PDF文件,图片,音频视频,如何python查重?

hrpzcf 发表于 2024-1-5 16:40

本帖最后由 hrpzcf 于 2024-1-5 16:44 编辑

审错题了{:1_924:}

BonnieRan 发表于 2024-1-5 17:15

方法错了,查重的话计算图片的md5/sha值,值一样为同一张图片,论坛有很多类似软件,要是想自己写一个,可以面向gpt/搜索引擎编程...

jiuling9090 发表于 2024-1-5 17:29

用md5查重,分组依据也根据md5。
1、定义一个字典,md5值作为key,value保存一个list,内容是所有重复文件的信息。
2、遍历所有文件,如果key不存在则添加到字典,存在则追加文件到字典中这个key对应的列表。

这样只用遍历一遍文件就可以完成查重。


之前用c#写过一个重复文件查找的工具,有兴趣可以参考下查重逻辑:
https://github.com/JiuLing-zhang/FindDuplicateFiles/blob/main/src/SearchFile/CheckDuplicateQueue.cs#L112

boxer 发表于 2024-1-5 17:30

BonnieRan 发表于 2024-1-5 17:15
方法错了,查重的话计算图片的md5/sha值,值一样为同一张图片,论坛有很多类似软件,要是想自己写一个,可 ...

应该是你理解错了楼主的意思, 他要求的是视觉上的相同或高度相似, 不是完全相同, 所以不能直接通过hash判断

知心 发表于 2024-1-5 17:37

重复的定义是什么

sakura32 发表于 2024-1-5 17:45

知心 发表于 2024-1-5 17:37
重复的定义是什么

汉明距离差异<10或者ssim相似度>0.95

15872174574 发表于 2024-1-5 18:10

也就是说现在主要的时间是在对比上?这样的话还算简单,有以下几种思路,聚类再对比可以减少对比次数。降维再把数据加载进内存对比可以增加速度,先建立索引可以极大的提升搜索速度比如说暴力索引倒排索引。等等,但是这些其实都会有精度损失,具体损失多少不确定。新来一个同学身高170附近,身高要跟全校对比,不需要跟全校所有人,只需要先跟一班170附近的人对比,再跟二班的170附近对比。我之前进行相似度对比搜索算法用过的一个框架是faiss框架,python里面的,支持自动聚类,向量化,暴力索引,等等,你可以搜索试试看。

go4399 发表于 2024-1-5 18:35

可以先抽样到原图的1/4或1/16,再对比;时间应该能大幅下降
页: [1] 2
查看完整版本: 大量图片查重,如何给图片分组以加快速度