大量图片查重,如何给图片分组以加快速度
本帖最后由 sakura32 于 2024-1-5 21:42 编辑目前我查重的逻辑是:计算图片的感知、均值、差异哈希>>>循环对比两张图片哈希值的韩明距离>>>韩明距离<10的作为重复图片。
由于没有分组,所以导致计算量很大,n张图片的计算量是n-1的阶加,实际运行下来10000张图片算了20分钟左右(Python)。
所以来求助下如何加快查重速度,是分组还是如何,如果分组以什么规则分?目前的想法是以图片的宽高比分一次,相近宽高比的分为一组。
或者说有没有更好的图片查重方法?
补充一下:不是图片二进制的相同,而是图片视觉上的相似,md5是没办法用的,目前我用的图片哈希比较算法和ssim相似度比较算法。
在补充一下:哈希值已经算好存在数据库了,现在相当于循环对比10000个二进制字符串的汉明距离,计算次数相当于9999的阶加,实际用时大概20分钟,用时太久了,所以想找个能给这些图片按特征分组的方法,分组计算而不是每张图片与其他全部图片对比一遍 同问同求,大量PDF文件,图片,音频视频,如何python查重? 本帖最后由 hrpzcf 于 2024-1-5 16:44 编辑
审错题了{:1_924:} 方法错了,查重的话计算图片的md5/sha值,值一样为同一张图片,论坛有很多类似软件,要是想自己写一个,可以面向gpt/搜索引擎编程... 用md5查重,分组依据也根据md5。
1、定义一个字典,md5值作为key,value保存一个list,内容是所有重复文件的信息。
2、遍历所有文件,如果key不存在则添加到字典,存在则追加文件到字典中这个key对应的列表。
这样只用遍历一遍文件就可以完成查重。
之前用c#写过一个重复文件查找的工具,有兴趣可以参考下查重逻辑:
https://github.com/JiuLing-zhang/FindDuplicateFiles/blob/main/src/SearchFile/CheckDuplicateQueue.cs#L112
BonnieRan 发表于 2024-1-5 17:15
方法错了,查重的话计算图片的md5/sha值,值一样为同一张图片,论坛有很多类似软件,要是想自己写一个,可 ...
应该是你理解错了楼主的意思, 他要求的是视觉上的相同或高度相似, 不是完全相同, 所以不能直接通过hash判断 重复的定义是什么 知心 发表于 2024-1-5 17:37
重复的定义是什么
汉明距离差异<10或者ssim相似度>0.95 也就是说现在主要的时间是在对比上?这样的话还算简单,有以下几种思路,聚类再对比可以减少对比次数。降维再把数据加载进内存对比可以增加速度,先建立索引可以极大的提升搜索速度比如说暴力索引倒排索引。等等,但是这些其实都会有精度损失,具体损失多少不确定。新来一个同学身高170附近,身高要跟全校对比,不需要跟全校所有人,只需要先跟一班170附近的人对比,再跟二班的170附近对比。我之前进行相似度对比搜索算法用过的一个框架是faiss框架,python里面的,支持自动聚类,向量化,暴力索引,等等,你可以搜索试试看。 可以先抽样到原图的1/4或1/16,再对比;时间应该能大幅下降
页:
[1]
2