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