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

- Skill: `ecnu-icalk/yolov5-object-detection-with-roi-masking-and-gpu-support` (Agent Skill)
- Install (CLI): `npx skillmds@latest add ecnu-icalk/yolov5-object-detection-with-roi-masking-and-gpu-support`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ecnu-icalk/yolov5-object-detection-with-roi-masking-and-gpu-support/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: ECNU-ICALK (https://skillmd.com/u/ecnu-icalk)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/ecnu-icalk/yolov5-object-detection-with-roi-masking-and-gpu-support

---


# 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
1. **Model Loading**: Load YOLOv5 via `torch.hub.load('ultralytics/yolov5', 'yolov5s6', device=device)`.
2. **Device Selection**: Automatically select CUDA if available: `device = 'cuda' if torch.cuda.is_available() else 'cpu'`.
3. **ROI Definition**: Define the ROI as a numpy array of integer coordinates (e.g., `np.array([[x1,y1], [x2,y2], ...], dtype=np.int32)`).
4. **Masking Logic**:
   - Create a black mask matching frame dimensions.
   - Fill the ROI polygon with white (255, 255, 255).
   - Apply `cv2.bitwise_and` to mask the frame.
5. **Inference**: Run model inference on the *masked* frame.
6. **Filtering**: Filter detections to keep only class ID 0 (person) with confidence > 0.5.
7. **Annotation**: Use `supervision.BoxAnnotator` to draw boxes on the *original* (unmasked) frame.
8. **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

