Add TFLite object detection to reduce false positives
Motion detection now optionally runs MobileNet V2 SSD (COCO, quantized) on frames that trigger motion, identifying objects like people, cats, and cars. Events without detected objects are suppressed by default. Snapshots include bounding box annotations. New MCP tool vision_get_detections() enables label-based queries. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -41,6 +41,13 @@ COLLECTOR_URL = os.getenv("COLLECTOR_URL", "")
|
||||
COLLECTOR_API_KEY = os.getenv("COLLECTOR_API_KEY", "")
|
||||
CAMERA_ID = os.getenv("CAMERA_ID", "camera")
|
||||
|
||||
# Object detection config
|
||||
DETECTION_ENABLED = os.getenv("DETECTION_ENABLED", "false").lower() == "true"
|
||||
DETECTION_MODEL_PATH = os.getenv("DETECTION_MODEL_PATH", "models/ssd_mobilenet_v2_coco_quant_postprocess.tflite")
|
||||
DETECTION_LABELS_PATH = os.getenv("DETECTION_LABELS_PATH", "models/coco_labels.txt")
|
||||
DETECTION_CONFIDENCE = float(os.getenv("DETECTION_CONFIDENCE", "0.5"))
|
||||
DETECTION_SUPPRESS_EMPTY = os.getenv("DETECTION_SUPPRESS_EMPTY", "true").lower() == "true"
|
||||
|
||||
if not API_KEY:
|
||||
raise ValueError("API_KEY not set in .env file")
|
||||
|
||||
@@ -141,6 +148,11 @@ if MOTION_ENABLED:
|
||||
min_area_percent=MOTION_MIN_AREA,
|
||||
cooldown_seconds=MOTION_COOLDOWN,
|
||||
check_interval=MOTION_INTERVAL,
|
||||
detection_enabled=DETECTION_ENABLED,
|
||||
detection_model_path=DETECTION_MODEL_PATH,
|
||||
detection_labels_path=DETECTION_LABELS_PATH,
|
||||
detection_confidence=DETECTION_CONFIDENCE,
|
||||
detection_suppress_empty=DETECTION_SUPPRESS_EMPTY,
|
||||
)
|
||||
|
||||
|
||||
@@ -219,9 +231,16 @@ def enable_motion(api_key: str = Security(verify_api_key)):
|
||||
motion_detector = MotionDetector(
|
||||
camera_id=CAMERA_ID,
|
||||
collector_url=COLLECTOR_URL if COLLECTOR_URL else None,
|
||||
collector_api_key=COLLECTOR_API_KEY if COLLECTOR_API_KEY else None,
|
||||
threshold=MOTION_THRESHOLD,
|
||||
min_area_percent=MOTION_MIN_AREA,
|
||||
cooldown_seconds=MOTION_COOLDOWN,
|
||||
check_interval=MOTION_INTERVAL,
|
||||
detection_enabled=DETECTION_ENABLED,
|
||||
detection_model_path=DETECTION_MODEL_PATH,
|
||||
detection_labels_path=DETECTION_LABELS_PATH,
|
||||
detection_confidence=DETECTION_CONFIDENCE,
|
||||
detection_suppress_empty=DETECTION_SUPPRESS_EMPTY,
|
||||
)
|
||||
|
||||
motion_detector.start(camera_manager.get_raw_frame)
|
||||
|
||||
Reference in New Issue
Block a user