fix: face traces split at scene cuts — even same person, different cut

This commit is contained in:
Accusys
2026-05-14 00:21:17 +08:00
parent 9007e46b9f
commit 74f00d3baa
2 changed files with 40 additions and 5 deletions

View File

@@ -62,8 +62,17 @@ def run_face_tracker(face_json_path: str, traced_json_path: str) -> str:
}
print(f"[TRACE] Processing {len(face_data.get('frames', {}))} frames")
face_data = track_faces(face_data, use_embedding=True)
# Load cut boundaries from cut.json (same directory as face.json)
cut_boundaries = None
cuts_path = face_json_path.replace("_traced.json", ".cut.json").replace(".face.json", ".cut.json")
if os.path.exists(cuts_path):
with open(cuts_path) as f:
cuts = json.load(f)
cut_boundaries = {s["start_frame"] for s in cuts.get("scenes", []) if s["start_frame"] > 0}
print(f"[TRACE] Loaded {len(cut_boundaries)} cut boundaries")
face_data = track_faces(face_data, use_embedding=True, cut_boundaries=cut_boundaries)
metadata = face_data.get("metadata", {})
metadata["tracking_method"] = "iou_embedding"
metadata["tracked_at"] = datetime.now().isoformat()