

PDQ 指纹、汉明距离与 24 小时时间窗,如何平衡整理准确率与 NAS 性能
连拍孩子最灿烂的笑容,保存多个日落滤镜版本——现代摄影让记录美好瞬间变得更容易,也让相册越来越杂乱。群晖在一篇技术解析中,介绍了 Synology Photos“堆叠相似项目”功能背后的设计取舍:算法如何判断“相似”,又如何在百万级图库中高效比较,同时不拖慢 NAS、不剥夺用户控制权。
“相似”到底由谁定义?
群晖团队指出,人类对相似照片的判断非常灵活。整理孩子生日派对照片时,几张表情略有不同的连拍可能被视为“相似”;但挑选风景照打印时,云的位置稍有变化,就可能被看作两幅独立作品。算法无法完全复制这种主观而多变的思维,因此必须建立客观、一致的标准。开发团队的第一步,是教计算机“抓住重点”。
给每张照片画一张“灵魂素描”
Synology Photos 采用 PDQ 哈希算法。它会自动忽略照片中不重要的表面差异,例如保存为 PNG 还是 JPG、分辨率高低、是否存在数字噪点,只专注于轮廓、线条和明暗分布。其过程大致分为几步:
首先,算法把彩色照片转为灰度图,就像艺术家起草时忽略颜色,专注主体轮廓、光线与阴影。接着,无论原图来自手机人像还是相机风景,都会被缩放到固定小尺寸,确保比较基础一致。这里的关键是找到“最优分辨率”:缩得太小会丢失细节,导致不同照片被误判;因此团队采用相对较大的标准尺寸,在准确性和性能之间取得平衡。
随后,算法使用离散余弦变换(DCT)将图像拆解为基本视觉纹理和布局模式,提取核心视觉特征。最终,每张照片会生成一串由 256 个 0 和 1 组成的代码,也就是它的“视觉指纹”。PDQ 算法还会给出质量分,评估照片是否足够清晰,可用于有意义的比较。
阈值之争:宁可多堆叠,也不漏掉
有了视觉指纹,下一个问题是:两幅指纹要多相似,才算同一组?群晖使用汉明距离量化差异:把两幅“素描”的 256 个特征点逐一比较,统计不同点的数量。
汉明距离为 0 到 15,通常意味着两张照片几乎完全相同,很可能是同一张照片的副本;16 到 40 之间,通常只是轻微裁剪、缩放或亮度调整,视觉内容高度相似;41 到 80 之间,则可能主题相关,但构图、人物或景物已经出现明显差异。
阈值太严格,轻微调整就会被当成不同照片,自动整理失去意义;阈值太宽松,构图相似但主题无关的照片又可能被错误堆叠。经过大量测试,团队确立“宁可多堆叠,也不漏掉”的原则,采用相对宽松但经过严格验证的阈值。目标是让算法找到的照片在用户眼中“大概率相关”。用户可能想分开查看,但很少会觉得两张照片完全无关。
群晖认为,用户从已整理集合中手动移除几张照片,远比手动查找并合并散落图库中的照片省时。因此,目前功能只提供“取消堆叠”和“从堆叠中移除”,不开放手动创建堆叠。算法被定位为高效的“筛选助手”,完成约 80% 的繁琐工作,把最后 20% 充满个人偏好的整理乐趣留给用户。
百万图库中如何高效比较?
如果每张新照片都与整个图库比对,计算量将难以承受。为此,Synology Photos 设计了多级任务分配与优化机制。
首先,算法被限制在特定“视野”内。群晖观察到,大多数相似照片,例如连拍和编辑版本,都产生于相近时间。因此,无论新上传照片还是后台定时任务,都只与拍摄时间在 24 小时窗口,也就是前后 12 小时内的照片比较。这大幅缩小了比较范围。
其次,移动端承担了部分算力。用户通过手机上传照片时,手机处理器会先在本地预计算 PDQ 素描,再随照片一起上传到 NAS。NAS 只需接收数据并执行指纹数据库比对。
最后,后台比较和堆叠任务被接入 DSM 核心系统调度器,成为整个系统智能资源调度的一部分,而不是孤立运行。这能避免频繁唤醒休眠硬盘,保持 NAS 能效,并与 Download Station、Hyper Backup 等后台任务协调,选择合适时间运行,减少资源争抢,提高整体稳定性和可预测性。
智能辅助,而不是代替决定
群晖表示,Synology Photos 的“堆叠相似照片”功能围绕一个核心理念:让技术成为用户的得力助手,而不是取代用户决策。团队投入资源优化算法准确率、大规模比较效率以及 NAS 性能,同时保留最大自由度——用户可以设置堆叠封面、一键取消堆叠,也可以从堆叠中移除任意照片。
在群晖看来,最好的自动化应当替用户完成繁琐的前期工作,再把最终整理的乐趣交还给用户。这样,用户在享受整洁时间线的同时,也能感受到这套系统“恰到好处”的设计分寸。
Search from here