feat: Phase 2.6 edges migration to Qdrant (TKG-only architecture)
Phase 2.6.1: co_occurrence_edges migration - build_co_occurrence_edges_from_qdrant() - Qdrant embeddings → frame grouping → YOLO objects - Result: 6679 edges (vs 6701 PostgreSQL) Phase 2.6.2: face_face_edges migration - build_face_face_edges_from_qdrant() - Qdrant embeddings → frame grouping → face pairs - mutual_gaze detection preserved - Result: 6 edges (exact match) Phase 2.6.3: speaker_face_edges migration - build_speaker_face_edges_from_qdrant() - Qdrant embeddings → trace_id frame ranges - SPEAKS_AS edge creation Architecture: - All edges use Qdrant payload (no face_detections queries) - PostgreSQL fallback for empty Qdrant - Estimated 3.6x performance improvement Testing: - Playground (3003): ✓ All Phase 2.6 logs verified - Edge counts: ✓ Close match with PostgreSQL - Fallback: ✓ Working Docs: - docs_v1.0/DESIGN/TKG_PHASE2_6_EDGES_MIGRATION.md - docs_v1.0/M4_workspace/2026-06-21_phase2_6_test.md
This commit is contained in:
45
v1.1/scripts/visualize_stamp_v1.11.py
Normal file
45
v1.1/scripts/visualize_stamp_v1.11.py
Normal file
@@ -0,0 +1,45 @@
|
||||
#!/opt/homebrew/bin/python3.11
|
||||
"""
|
||||
Draw Detection Result on Image
|
||||
"""
|
||||
|
||||
import cv2
|
||||
import os
|
||||
|
||||
UUID = "384b0ff44aaaa1f1"
|
||||
OUTPUT_DIR = f"output/{UUID}/florence2_results"
|
||||
INPUT_IMG = os.path.join(OUTPUT_DIR, "raw_6846.jpg")
|
||||
OUTPUT_IMG = os.path.join(OUTPUT_DIR, "raw_6846_detected.jpg")
|
||||
|
||||
# Florence-2 Result from previous run: [x_min, y_min, x_max, y_max]
|
||||
# Note: Florence-2 usually returns coordinates in normalized 0-1000 scale.
|
||||
box_raw = [1721.28, 23.22, 1813.44, 173.34]
|
||||
|
||||
# Image dimensions
|
||||
img_width, img_height = 1920, 1080
|
||||
|
||||
print(f"🎨 Drawing box on {INPUT_IMG}...")
|
||||
|
||||
img = cv2.imread(INPUT_IMG)
|
||||
if img is None:
|
||||
print("❌ Failed to load image.")
|
||||
exit()
|
||||
|
||||
# Convert normalized coordinates to pixel coordinates
|
||||
# Florence-2 uses 1000x1000 normalized coordinates
|
||||
x1 = int((box_raw[0] / 1000.0) * img_width)
|
||||
y1 = int((box_raw[1] / 1000.0) * img_height)
|
||||
x2 = int((box_raw[2] / 1000.0) * img_width)
|
||||
y2 = int((box_raw[3] / 1000.0) * img_height)
|
||||
|
||||
print(f"📍 Pixel Coordinates: ({x1}, {y1}) to ({x2}, {y2})")
|
||||
|
||||
# Draw Rectangle (Color: Green, Thickness: 4)
|
||||
cv2.rectangle(img, (x1, y1), (x2, y2), (0, 255, 0), 4)
|
||||
|
||||
# Add Label
|
||||
cv2.putText(img, "STAMP", (x1, y1 - 10), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2)
|
||||
|
||||
# Save
|
||||
cv2.imwrite(OUTPUT_IMG, img)
|
||||
print(f"✅ Saved result to {OUTPUT_IMG}")
|
||||
Reference in New Issue
Block a user