Python图片去重归类应优先用pHash实现快速鲁棒比对,再依规模升级至ResNet/CLIP特征嵌入与余弦相似度聚类,结合EXIF规则(时间>设备>场景标签)自动构建多级目录,并通过流式处理、质量过滤和报告生成保障工程稳定性。

要实现Python自动检测图片重复内容并归类整理,核心不是“逐像素比对”,而是用感知哈希(pHash)或特征向量(如CLIP、ResNet提取的嵌入)来衡量视觉相似性。关键在“快、准、可扩展”——小规模用pHash足够,中大规模建议结合局部敏感哈希(LSH)或FAISS加速检索。
1. 图片去重:用pHash快速筛出高度相似图
pHash对缩放、轻微裁剪、亮度调整鲁棒,适合日常去重。流程是:读图 → 灰度化 → 缩放至8×8 → DCT变换 → 取低频 → 生成64位二进制指纹 → 计算汉明距离(≤5通常视为重复)。
- 用imagehash库一行生成hash:
hash = imagehash.phash(Image.open(path)) - 遍历所有图,存{path: hash}字典;两两比对太慢,改用分桶:把hash按前4位分组,只在同桶内比对
- 发现重复时,保留原始尺寸大、文件名更规范(如含日期)、或修改时间早的那张作为主图
2. 相似图聚类:用特征嵌入+余弦相似度分组
当需识别“同一场景不同角度”“同人不同穿搭”等语义重复时,pHash失效,应提取深度特征。推荐用torchvision.models.resnet18(pretrained=True)去掉最后层,提取512维特征向量。
- 批量预处理图片(统一尺寸、归一化),送入模型得embedding矩阵
- 用sklearn.metrics.pairwise.cosine_similarity算相似度矩阵
- 设定阈值(如0.85),构建相似图,再用networkx.connected_components或DBSCAN聚类
- 每组输出一个文件夹,命名可含关键词(如“办公室_多人_窗边”),靠CLIP零样本分类辅助打标
3. 自动归类逻辑:规则+轻量模型协同判断
纯靠相似度聚类不够智能,需叠加业务规则提升可用性。例如:优先按拍摄设备(EXIF中的Model字段)、按时间(取创建/修改时间戳,按天/月建文件夹)、按宽高比(横图/竖图/方图分三类)。
标签: python js json windows 编码 iphone ai win 大模型 cos
还木有评论哦,快来抢沙发吧~