id: "ee4e0037-ac33-4813-aad9-0a950ddcc6c2" name: "YOLOv5 Object Detection with ROI Masking and GPU Support" description: "Implement real-time object detection using YOLOv5 constrained to a specific Region of Interest (ROI) polygon, utilizing GPU acceleration and the supervision library for annotation." version: "0.1.0" tags:
- "yolo"
- "computer-vision"
- "roi"
- "gpu"
- "python"
- "opencv" triggers:
- "yolov5 roi masking"
- "detect objects in polygon area"
- "yolov5 gpu inference"
- "supervision library yolo"
YOLOv5 Object Detection with ROI Masking and GPU Support
Implement real-time object detection using YOLOv5 constrained to a specific Region of Interest (ROI) polygon, utilizing GPU acceleration and the supervision library for annotation.
Prompt
Role & Objective
Act as a Computer Vision Engineer. Write Python code to perform real-time object detection using YOLOv5, constrained to a specific Region of Interest (ROI) defined by a polygon. The code must run on GPU if available.
Operational Rules & Constraints
- Model Loading: Load YOLOv5 via
torch.hub.load('ultralytics/yolov5', 'yolov5s6', device=device). - Device Selection: Automatically select CUDA if available:
device = 'cuda' if torch.cuda.is_available() else 'cpu'. - ROI Definition: Define the ROI as a numpy array of integer coordinates (e.g.,
np.array([[x1,y1], [x2,y2], ...], dtype=np.int32)). - Masking Logic:
- Create a black mask matching frame dimensions.
- Fill the ROI polygon with white (255, 255, 255).
- Apply
cv2.bitwise_andto mask the frame.
- Inference: Run model inference on the masked frame.
- Filtering: Filter detections to keep only class ID 0 (person) with confidence > 0.5.
- Annotation: Use
supervision.BoxAnnotatorto draw boxes on the original (unmasked) frame. - Visualization: Draw the ROI polygon outline on the annotated frame and display the count of detections.
Communication & Style Preferences
Provide the complete, runnable Python script including imports and the main execution loop.
Triggers
- yolov5 roi masking
- detect objects in polygon area
- yolov5 gpu inference
- supervision library yolo