feat: pHash阈值校准+颜色直方图融合 #1658 #1674

Merged
auto-approve-bot merged 1 commits from feat/phash-histogram-fusion-1658 into develop 2026-09-04 02:06:59 +08:00

1 Commits

Author SHA1 Message Date
xiaoxia 859e38eea5 feat(dedup): pHash 阈值校准 10→8 + 融合得分统一收口 #1658
CI/CD Pipeline / Check push changed paths (pull_request) Has been skipped
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (pull_request) Successful in 2s
CI/CD Pipeline / Retag skipped Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 2s
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / PR Build Web Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 36s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 37s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 1m39s
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Successful in 2m0s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 2m4s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 2m4s
CI/CD Pipeline / Validate - Style (pull_request) Successful in 2m30s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 2m59s
AI Code Review / AI Code Review (pull_request) Successful in 3m47s
CI/CD Pipeline / Validate - Security (pull_request) Successful in 5m6s
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / CI Gate (pull_request) Successful in 1s
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Canary Release to Production (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 2m46s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 10s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 35s
develop 已由 #1659/#1675 合入融合权重常量、Bhattacharyya、中位数、
滑动窗口等大部分融合逻辑,本 PR 补齐 #1658 剩余增量:

1. PHASH_THRESHOLD 10→8:收紧 pHash 汉明距离阈值,距离 8~9 的帧不再
   计为匹配,降低不同视频误判率
2. 新增 VideoDeduplicator._compute_fusion_score() 统一融合得分计算,
   check_duplicate/check_batch_duplicate/compute_duplicate_rate 三处
   复用,权重统一走 PHASH_WEIGHT/HISTOGRAM_WEIGHT 常量(消除硬编码
   0.7/0.3),帧匹配门槛统一走 MATCH_RATIO_THRESHOLD
3. 防御加固:
   - color_histograms JSON NULL(None)显式回退空列表;全零直方图
     (全黑视频)作为有效数据参与 Bhattacharyya,不误走 0.5 中性回退
   - Bhattacharyya 系数改用标准库 math.sqrt + max(0.0, ai*bi),
     消除 numpy 依赖并防御异常负值的 sqrt domain error
4. 新增 test_phash_threshold_calibration_1658.py(17 用例),覆盖
   阈值校准、融合得分公式、None/全零直方图、负值防御
2026-09-04 02:00:42 +08:00