64 lines
1.6 KiB
Python
64 lines
1.6 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Run the full LangGraph detection pipeline on a test video.
|
|
|
|
Usage:
|
|
python tests/detect/manual/run_graph.py [--job JOB_ID] [--port PORT]
|
|
|
|
Opens: http://mpr.local.ar/detection/?job=<JOB_ID>
|
|
"""
|
|
|
|
import argparse
|
|
import logging
|
|
import os
|
|
import sys
|
|
|
|
import time as _time
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument("--job", default=f"graph-{int(_time.time()) % 100000}")
|
|
parser.add_argument("--port", type=int, default=6382)
|
|
args = parser.parse_args()
|
|
|
|
os.environ["REDIS_URL"] = f"redis://localhost:{args.port}/0"
|
|
logging.basicConfig(level=logging.INFO, format="%(levelname)-7s %(name)s — %(message)s")
|
|
|
|
sys.path.insert(0, ".")
|
|
|
|
from core.detect.graph import get_pipeline
|
|
from core.detect.state import DetectState
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
VIDEO = "media/out/chunks/95043d50-4df6-4ac8-bbd5-2ba873117c6e/chunk_0000.mp4"
|
|
|
|
|
|
def main():
|
|
logger.info("Job: %s", args.job)
|
|
logger.info("Open: http://mpr.local.ar/detection/?job=%s", args.job)
|
|
input("\nPress Enter to start...")
|
|
|
|
pipeline = get_pipeline()
|
|
|
|
initial_state = DetectState(
|
|
video_path=VIDEO,
|
|
job_id=args.job,
|
|
profile_name="soccer_broadcast",
|
|
)
|
|
|
|
logger.info("Running pipeline...")
|
|
result = pipeline.invoke(initial_state)
|
|
|
|
frames = result.get("frames", [])
|
|
filtered = result.get("filtered_frames", [])
|
|
report = result.get("report")
|
|
|
|
logger.info("Frames extracted: %d", len(frames))
|
|
logger.info("Frames after filter: %d", len(filtered))
|
|
if report:
|
|
logger.info("Brands found: %d", len(report.brands))
|
|
logger.info("Done.")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|