Data Science Jupyter Notebooks
11K subscribers
269 photos
31 videos
9 files
727 links
Explore the world of Data Science through Jupyter Notebooks—insights, tutorials, and tools to boost your data journey. Code, analyze, and visualize smarter with every post.
Download Telegram
🎯 Trackers Library is Officially Released! 🚀

If you're working in computer vision and object tracking, this one's for you!

💡 Trackers is a powerful open-source library with support for a wide range of detection models and tracking algorithms:

Plug-and-play compatibility with detection models from:
Roboflow Inference, Hugging Face Transformers, Ultralytics, MMDetection, and more!

Tracking algorithms supported:
SORT, DeepSORT, and advanced trackers like StrongSORT, BoT‑SORT, ByteTrack, OC‑SORT – with even more coming soon!

🧩 Released under the permissive Apache 2.0 license – free for everyone to use and contribute.

👏 Huge thanks to Piotr Skalski for co-developing this library, and to Raif Olson and Onuralp SEZER for their outstanding contributions!

📌 Links:
🔗 GitHub
🔗 Docs


📚 Quick-start notebooks for SORT and DeepSORT are linked 👇🏻
https://www.linkedin.com/posts/skalskip92_trackers-library-is-out-plugandplay-activity-7321128111503253504-3U6-?utm_source=share&utm_medium=member_desktop&rcm=ACoAAEXwhVcBcv2n3wq8JzEai3TfWmKLRLTefYo


#ComputerVision #ObjectTracking #OpenSource #DeepLearning #AI


📡 By: https://t.iss.one/DataScienceN
👍41🔥1
#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 Configuration

We 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 Monitoring

This 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 Alerts

Inside 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.