tgoop.com/DataScienceN/841
Create:
Last Update:
Last Update:
#YOLOv8 #ComputerVision #HomeSecurity #ObjectTracking #AI #Python
Lesson: Tracking Suspicious Individuals Near a Home at Night with YOLOv8
This tutorial demonstrates how to build an advanced security system using YOLOv8's object tracking capabilities. The system will detect people in a night-time video feed, track their movements, and trigger an alert if a person loiters for too long within a predefined "alert zone" (e.g., a driveway or porch).
---#Step 1: Project Setup and Dependencies
We will use ultralytics for YOLOv8 and its built-in tracker, opencv-python for video processing, and numpy for defining our security zone.
pip install ultralytics opencv-python numpy
Create a Python script (e.g.,
security_tracker.py) and import the necessary libraries. We'll also use defaultdict to easily manage timers for each tracked person.import cv2
import numpy as np
from ultralytics import YOLO
from collections import defaultdict
import time
# Hashtags: #Setup #Python #OpenCV #YOLOv8
---
#Step 2: Model Loading and Zone ConfigurationWe will load a standard YOLOv8 model capable of detecting 'person'. The key is to define a polygon representing the area we want to monitor. We will also set a time threshold to define "loitering". You will need a video file of your target area, for example,
night_security_footage.mp4.# Load the YOLOv8 model
model = YOLO('yolov8n.pt')
# Path to your night-time video file
VIDEO_PATH = 'night_security_footage.mp4'
# Define the polygon for the alert zone.
# IMPORTANT: You MUST adjust these [x, y] coordinates to fit your video's perspective.
# This example defines a rectangular area for a driveway.
ALERT_ZONE_POLYGON = np.array([
[100, 500], [800, 500], [850, 250], [50, 250]
], np.int32)
# Time in seconds a person can be in the zone before an alert is triggered
LOITERING_THRESHOLD_SECONDS = 5.0
# Dictionaries to store tracking data
# Stores the time when a tracked object first enters the zone
loitering_timers = {}
# Stores the IDs of individuals who have triggered an alert
alert_triggered_ids = set()
# Hashtags: #Configuration #AIModel #SecurityZone
---
#Step 3: Main Loop for Tracking and Zone MonitoringThis is the core of the system. We will read the video frame by frame and use YOLOv8's
track() function. This function not only detects objects but also assigns a unique ID to each one, allowing us to follow them across frames.cap = cv2.VideoCapture(VIDEO_PATH)
while cap.isOpened():
success, frame = cap.read()
if not success:
break
# Run YOLOv8 tracking on the frame, persisting tracks between frames
results = model.track(frame, persist=True)
# Get the bounding boxes and track IDs
boxes = results[0].boxes.xywh.cpu()
track_ids = results[0].boxes.id.int().cpu().tolist()
# Visualize the results on the frame
annotated_frame = results[0].plot()
# Draw the alert zone polygon on the frame
cv2.polylines(annotated_frame, [ALERT_ZONE_POLYGON], isClosed=True, color=(0, 255, 255), thickness=2)
# Hashtags: #RealTime #ObjectTracking #VideoProcessing
(Note: The code below should be placed inside the
while loop of Step 3)---
#Step 4: Implementing Loitering Logic and AlertsInside the main loop, we'll iterate through each tracked person. We check if their position is inside our alert zone. If it is, we start or update a timer. If the timer exceeds our threshold, we trigger an alert for that person's ID.
BY Data Science Jupyter Notebooks
Share with your friend now:
tgoop.com/DataScienceN/841
