feat: trace quality agent selection report, identity clustering runner_v2 DB write, age/gender CoreML selection, updated experiment config UUID

This commit is contained in:
Warren
2026-05-06 14:41:48 +08:00
parent 74b6182eba
commit 65a1f77e65
1048 changed files with 103499 additions and 0 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,11 @@
{
"id": "001",
"name": "Baseline: Fixed Threshold (0.85), min 3 frames, no TMDb",
"file_uuid": "1a04db97be5fa12bd77369831dc141fd",
"min_frames": 3,
"clustering_method": "threshold",
"threshold": 0.85,
"adaptive_threshold": false,
"enable_tmdb": false,
"notes": "sample_interval=60 導致 trace 碎片化。min_frames=3 納入大部分 traces。"
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,10 @@
{
"total_traces": 677,
"clustered_traces": 677,
"cluster_count": 199,
"coverage": 1.0,
"avg_cluster_size": 3.4020100502512562,
"tmdb_matched": 0,
"tmdb_coverage": 0.0,
"execution_time_s": 3.706886053085327
}

View File

@@ -0,0 +1,36 @@
Experiment 001: Baseline: Fixed Threshold (0.85), min 3 frames, no TMDb
====================================
Date: 2026-05-04T17:13:02.183318
Config: {
"id": "001",
"name": "Baseline: Fixed Threshold (0.85), min 3 frames, no TMDb",
"file_uuid": "1a04db97be5fa12bd77369831dc141fd",
"min_frames": 3,
"clustering_method": "threshold",
"threshold": 0.85,
"adaptive_threshold": false,
"enable_tmdb": false,
"notes": "sample_interval=60 \u5c0e\u81f4 trace \u788e\u7247\u5316\u3002min_frames=3 \u7d0d\u5165\u5927\u90e8\u5206 traces\u3002"
}
Results:
Traces loaded: 677
Clusters: 379
Clustered traces: 677
Coverage: 100.0%
Avg cluster size: 1.8
TMDb matched: 0
Execution time: 3.6s
Top clusters:
Cluster 2: 74 traces → None (sim=0.000)
Cluster 29: 38 traces → None (sim=0.000)
Cluster 133: 14 traces → None (sim=0.000)
Cluster 14: 13 traces → None (sim=0.000)
Cluster 62: 10 traces → None (sim=0.000)
Cluster 126: 8 traces → None (sim=0.000)
Cluster 31: 7 traces → None (sim=0.000)
Cluster 13: 6 traces → None (sim=0.000)
Cluster 19: 6 traces → None (sim=0.000)
Cluster 89: 6 traces → None (sim=0.000)

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,11 @@
{
"id": "002",
"name": "Adaptive Threshold (pose-aware), min 30 frames, no TMDb",
"file_uuid": "1a04db97be5fa12bd77369831dc141fd",
"min_frames": 3,
"clustering_method": "threshold",
"threshold": 0.85,
"adaptive_threshold": true,
"enable_tmdb": false,
"notes": "Pose-aware: 短 trace 放寬 threshold 5%。適合 profile/three_quarter 角度辨識。"
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,10 @@
{
"total_traces": 677,
"clustered_traces": 677,
"cluster_count": 143,
"coverage": 1.0,
"avg_cluster_size": 4.734265734265734,
"tmdb_matched": 0,
"tmdb_coverage": 0.0,
"execution_time_s": 3.065944194793701
}

View File

@@ -0,0 +1,36 @@
Experiment 002: Adaptive Threshold (pose-aware), min 30 frames, no TMDb
====================================
Date: 2026-05-04T17:13:05.263374
Config: {
"id": "002",
"name": "Adaptive Threshold (pose-aware), min 30 frames, no TMDb",
"file_uuid": "1a04db97be5fa12bd77369831dc141fd",
"min_frames": 3,
"clustering_method": "threshold",
"threshold": 0.85,
"adaptive_threshold": true,
"enable_tmdb": false,
"notes": "Pose-aware: \u77ed trace \u653e\u5bec threshold 5%\u3002\u9069\u5408 profile/three_quarter \u89d2\u5ea6\u8fa8\u8b58\u3002"
}
Results:
Traces loaded: 677
Clusters: 293
Clustered traces: 677
Coverage: 100.0%
Avg cluster size: 2.3
TMDb matched: 0
Execution time: 3.0s
Top clusters:
Cluster 2: 114 traces → None (sim=0.000)
Cluster 13: 43 traces → None (sim=0.000)
Cluster 51: 19 traces → None (sim=0.000)
Cluster 112: 15 traces → None (sim=0.000)
Cluster 28: 12 traces → None (sim=0.000)
Cluster 30: 12 traces → None (sim=0.000)
Cluster 56: 11 traces → None (sim=0.000)
Cluster 107: 11 traces → None (sim=0.000)
Cluster 169: 11 traces → None (sim=0.000)
Cluster 74: 9 traces → None (sim=0.000)

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,11 @@
{
"id": "003",
"name": "DBSCAN (eps=0.3), min 30 frames, no TMDb",
"file_uuid": "1a04db97be5fa12bd77369831dc141fd",
"min_frames": 3,
"clustering_method": "dbscan",
"eps": 0.3,
"min_samples": 2,
"enable_tmdb": false,
"notes": "DBSCAN 自動偵測 cluster 數量,不需要手設 threshold。eps=0.3 對應 cosine distance。"
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,10 @@
{
"total_traces": 677,
"clustered_traces": 677,
"cluster_count": 34,
"coverage": 1.0,
"avg_cluster_size": 19.91176470588235,
"tmdb_matched": 0,
"tmdb_coverage": 0.0,
"execution_time_s": 2.6430821418762207
}

View File

@@ -0,0 +1,36 @@
Experiment 003: DBSCAN (eps=0.3), min 30 frames, no TMDb
====================================
Date: 2026-05-04T17:13:08.042584
Config: {
"id": "003",
"name": "DBSCAN (eps=0.3), min 30 frames, no TMDb",
"file_uuid": "1a04db97be5fa12bd77369831dc141fd",
"min_frames": 3,
"clustering_method": "dbscan",
"eps": 0.3,
"min_samples": 2,
"enable_tmdb": false,
"notes": "DBSCAN \u81ea\u52d5\u5075\u6e2c cluster \u6578\u91cf\uff0c\u4e0d\u9700\u8981\u624b\u8a2d threshold\u3002eps=0.3 \u5c0d\u61c9 cosine distance\u3002"
}
Results:
Traces loaded: 677
Clusters: 78
Clustered traces: 677
Coverage: 100.0%
Avg cluster size: 8.7
TMDb matched: 0
Execution time: 2.7s
Top clusters:
Cluster 1: 537 traces → None (sim=0.000)
Cluster 10: 26 traces → None (sim=0.000)
Cluster 2: 14 traces → None (sim=0.000)
Cluster 9: 9 traces → None (sim=0.000)
Cluster 47: 8 traces → None (sim=0.000)
Cluster 37: 4 traces → None (sim=0.000)
Cluster 7: 2 traces → None (sim=0.000)
Cluster 32: 2 traces → None (sim=0.000)
Cluster 36: 2 traces → None (sim=0.000)
Cluster 48: 2 traces → None (sim=0.000)

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,11 @@
{
"id": "004",
"name": "DBSCAN (eps=0.25), min 30 frames, no TMDb",
"file_uuid": "1a04db97be5fa12bd77369831dc141fd",
"min_frames": 3,
"clustering_method": "dbscan",
"eps": 0.25,
"min_samples": 2,
"enable_tmdb": false,
"notes": "DBSCAN 更嚴格版本eps=0.25),預期更多 cluster、較少 false positive。"
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,10 @@
{
"total_traces": 677,
"clustered_traces": 677,
"cluster_count": 64,
"coverage": 1.0,
"avg_cluster_size": 10.578125,
"tmdb_matched": 0,
"tmdb_coverage": 0.0,
"execution_time_s": 2.588068962097168
}

View File

@@ -0,0 +1,36 @@
Experiment 004: DBSCAN (eps=0.25), min 30 frames, no TMDb
====================================
Date: 2026-05-04T17:13:10.776315
Config: {
"id": "004",
"name": "DBSCAN (eps=0.25), min 30 frames, no TMDb",
"file_uuid": "1a04db97be5fa12bd77369831dc141fd",
"min_frames": 3,
"clustering_method": "dbscan",
"eps": 0.25,
"min_samples": 2,
"enable_tmdb": false,
"notes": "DBSCAN \u66f4\u56b4\u683c\u7248\u672c\uff08eps=0.25\uff09\uff0c\u9810\u671f\u66f4\u591a cluster\u3001\u8f03\u5c11 false positive\u3002"
}
Results:
Traces loaded: 677
Clusters: 129
Clustered traces: 677
Coverage: 100.0%
Avg cluster size: 5.2
TMDb matched: 0
Execution time: 2.6s
Top clusters:
Cluster 1: 444 traces → None (sim=0.000)
Cluster 32: 43 traces → None (sim=0.000)
Cluster 14: 24 traces → None (sim=0.000)
Cluster 4: 13 traces → None (sim=0.000)
Cluster 115: 6 traces → None (sim=0.000)
Cluster 38: 4 traces → None (sim=0.000)
Cluster 53: 4 traces → None (sim=0.000)
Cluster 65: 4 traces → None (sim=0.000)
Cluster 88: 4 traces → None (sim=0.000)
Cluster 102: 4 traces → None (sim=0.000)

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,12 @@
{
"id": "005",
"name": "Adaptive Threshold + TMDb matching, min 30 frames",
"file_uuid": "1a04db97be5fa12bd77369831dc141fd",
"min_frames": 3,
"clustering_method": "threshold",
"threshold": 0.85,
"adaptive_threshold": true,
"enable_tmdb": true,
"enable_speaker_verify": false,
"notes": "最佳方案候選pose-aware + TMDb 自動標註。預期 Cary Grant, Audrey Hepburn 等主要角色被標出。"
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,10 @@
{
"total_traces": 677,
"clustered_traces": 677,
"cluster_count": 293,
"coverage": 1.0,
"avg_cluster_size": 2.310580204778157,
"tmdb_matched": 0,
"tmdb_coverage": 0.0,
"execution_time_s": 3.034806966781616
}

View File

@@ -0,0 +1,37 @@
Experiment 005: Adaptive Threshold + TMDb matching, min 30 frames
====================================
Date: 2026-05-04T17:05:33.808099
Config: {
"id": "005",
"name": "Adaptive Threshold + TMDb matching, min 30 frames",
"file_uuid": "1a04db97be5fa12bd77369831dc141fd",
"min_frames": 3,
"clustering_method": "threshold",
"threshold": 0.85,
"adaptive_threshold": true,
"enable_tmdb": true,
"enable_speaker_verify": false,
"notes": "\u6700\u4f73\u65b9\u6848\u5019\u9078\uff1apose-aware + TMDb \u81ea\u52d5\u6a19\u8a3b\u3002\u9810\u671f Cary Grant, Audrey Hepburn \u7b49\u4e3b\u8981\u89d2\u8272\u88ab\u6a19\u51fa\u3002"
}
Results:
Traces loaded: 677
Clusters: 293
Clustered traces: 677
Coverage: 100.0%
Avg cluster size: 2.3
TMDb matched: 0
Execution time: 3.0s
Top clusters:
Cluster 2: 114 traces → None (sim=0.000)
Cluster 13: 43 traces → None (sim=0.000)
Cluster 51: 19 traces → None (sim=0.000)
Cluster 112: 15 traces → None (sim=0.000)
Cluster 28: 12 traces → None (sim=0.000)
Cluster 30: 12 traces → None (sim=0.000)
Cluster 56: 11 traces → None (sim=0.000)
Cluster 107: 11 traces → None (sim=0.000)
Cluster 169: 11 traces → None (sim=0.000)
Cluster 74: 9 traces → None (sim=0.000)

View File

@@ -0,0 +1,13 @@
{
"id": "006",
"name": "Multi-Stage: Face-level high-conf binding + centroid clustering + speaker",
"file_uuid": "1a04db97be5fa12bd77369831dc141fd",
"min_frames": 3,
"enable_identity_match": true,
"stage1_face_threshold": 0.92,
"stage1_bind_ratio": 0.85,
"stage2_threshold": 0.85,
"stage2_adaptive": true,
"enable_tmdb": false,
"notes": "Stage1: each face vs identity ref, bind if >85% faces match >0.92. Stage2: centroid clustering of unbound + speaker merge."
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,10 @@
{
"total_traces": 677,
"stage1_bound": 0,
"stage1_bound_traces": 0,
"stage2_clusters": 295,
"stage2_unbound_clustered": 677,
"total_clusters": 295,
"execution_time_s": 3.226997137069702,
"coverage": 1.0
}

View File

@@ -0,0 +1,13 @@
{
"id": "007",
"name": "Multi-Stage: relaxed TMDb bind + 3-angle anchor selection",
"file_uuid": "1a04db97be5fa12bd77369831dc141fd",
"min_frames": 3,
"enable_identity_match": true,
"stage1_face_threshold": 0.72,
"stage1_bind_ratio": 0.75,
"stage2_threshold": 0.85,
"stage2_adaptive": true,
"enable_tmdb": false,
"notes": "Stage1: TMDb bind threshold 0.72 (跨 domain 較寬)。Stage2: 每個 identity 從 bound traces 挑 frontal/three_quarter/profile 三角度 face 組合成多角度 reference用於 further matching。"
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,10 @@
{
"total_traces": 677,
"stage1_bound": 0,
"stage1_bound_traces": 0,
"stage2_clusters": 295,
"stage2_unbound_clustered": 677,
"total_clusters": 295,
"execution_time_s": 3.2448980808258057,
"coverage": 1.0
}

View File

@@ -0,0 +1,15 @@
{
"id": "008",
"name": "Composite: TMDb vector + speaker frequency scoring",
"file_uuid": "417a7e93860d70c87aee6c4c1b715d70",
"min_frames": 3,
"enable_identity_match": true,
"stage1_face_threshold": 0.55,
"stage1_bind_ratio": 0.6,
"stage2_threshold": 0.85,
"stage2_adaptive": true,
"enable_speaker_weight": true,
"speaker_weight_factor": 0.3,
"notes": "V2.0 embedding space。Speaker 出現次數(segment count)加權 × vector similarity 綜合評分。主角(SPEAKER_0/SPEAKER_1)加權較高。",
"write_db": true
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,10 @@
{
"total_traces": 677,
"stage1_bound": 671,
"stage1_bound_traces": 671,
"stage2_clusters": 6,
"stage2_unbound_clustered": 6,
"total_clusters": 677,
"execution_time_s": 11.841914176940918,
"coverage": 1.0
}