072、千万级图片去重怎样快?二阶段召回:感知哈希粗筛 + 局部特征精排方案 072、千万级图片去重怎样快?二阶段召回:感知哈希粗筛 + 局部特征精排方案一、从一次线上事故说起去年双十一大促前夜,我盯着监控面板上飙升的Redis内存使用率,CPU负载曲线像心电图一样剧烈抖动。排查发现,用户上传的图片去重服务在高峰期每秒要处理近万张图片,全量计算局部特征(SIFT)的代价让系统直接崩了。更讽刺的是,很多重复图片只是加了水印、调了滤镜,SIFT特征匹配耗时却和完全不同图片一样长。那晚我蹲在机房,一边重启服务一边想:能不能先快速筛掉明显不同的图片,只对疑似重复的做精细匹配?这个思路后来演变成了“二阶段召回”架构——感知哈希粗筛 + 局部特征精排。今天就把这套方案的工程落地细节掰开揉碎讲清楚。二、第一阶段:感知哈希粗筛——用“指纹”快速排除90%无关图片2.1 为什么选感知哈希而不是传统哈希?传统MD5/SHA256对像素级变化极其敏感,一张图片旋转1度、压缩质量从95%降到90%,哈希值就完全变了。感知哈希(pHash)的核心思想是:两张视觉相似的图片,它们的哈希值在汉明距离上应该很近。我踩过的坑:早期用aHash(平均哈希),虽然快但抗干扰能力差,加个水印就判为不同。后来换成dHash(差异哈希),速度比pHash快30%,但精度略低。最终线上方案是pHash + 汉明距离阈值,在速度和精度之间找到了平衡点。