Summary
The current pipeline first detects people with YOLOv8, crops a padded ROI, and then runs YOLO11-Pose inside that ROI. This keeps the pipeline modular, but it may reduce pose quality when the crop clips limbs/equipment or removes global context.
Expected behavior
Evaluate whether YOLO11-Pose should run on the full frame, or on a larger/aspect-preserved crop, with track-aware person selection. Keep the current ROI path only if it wins on representative skiing footage.
Current behavior
YOLOv8 supplies bboxes, Yolo11Backend.estimate(...) crops a padded ROI, and YOLO11-Pose selects the highest-confidence person inside that cropped ROI.
Evidence
README.md:75 documents ROI-based pose estimation.
src/skisense/main.py:440 runs YOLO person detection.
src/skisense/main.py:448 iterates detected bboxes.
src/skisense/backends/yolo11_backend.py:119 to src/skisense/backends/yolo11_backend.py:132 pads and crops the ROI before pose inference.
src/skisense/backends/yolo11_backend.py:174 to src/skisense/backends/yolo11_backend.py:197 selects the highest-confidence detected person inside the ROI.
Impact
Deep ski angulation often pushes wrists, ankles, skis, and poles near bbox edges. A crop-first pose path can lose context before the pose model runs, which may reduce keypoint stability even with YOLO11-Pose.
Suspected cause
The pipeline reuses a detector-first architecture even though YOLO11-Pose can already detect people and keypoints together.
Priority
medium
Labels
enhancement
Acceptance criteria
- Add an experiment comparing current ROI inference against full-frame or larger context inference on representative skiing frames.
- Use track association, bbox overlap, or target ID to choose the skier when multiple people are present.
- Measure keypoint confidence, score stability, and inference time.
- Document the chosen mode and any config switch if both modes are kept.
Notes
This is not a duplicate of #3. That issue is about adding a different SOTA backend; this issue keeps YOLO11-Pose and evaluates the inference strategy around it.
Summary
The current pipeline first detects people with YOLOv8, crops a padded ROI, and then runs YOLO11-Pose inside that ROI. This keeps the pipeline modular, but it may reduce pose quality when the crop clips limbs/equipment or removes global context.
Expected behavior
Evaluate whether YOLO11-Pose should run on the full frame, or on a larger/aspect-preserved crop, with track-aware person selection. Keep the current ROI path only if it wins on representative skiing footage.
Current behavior
YOLOv8 supplies bboxes,
Yolo11Backend.estimate(...)crops a padded ROI, and YOLO11-Pose selects the highest-confidence person inside that cropped ROI.Evidence
README.md:75documents ROI-based pose estimation.src/skisense/main.py:440runs YOLO person detection.src/skisense/main.py:448iterates detected bboxes.src/skisense/backends/yolo11_backend.py:119tosrc/skisense/backends/yolo11_backend.py:132pads and crops the ROI before pose inference.src/skisense/backends/yolo11_backend.py:174tosrc/skisense/backends/yolo11_backend.py:197selects the highest-confidence detected person inside the ROI.Impact
Deep ski angulation often pushes wrists, ankles, skis, and poles near bbox edges. A crop-first pose path can lose context before the pose model runs, which may reduce keypoint stability even with YOLO11-Pose.
Suspected cause
The pipeline reuses a detector-first architecture even though YOLO11-Pose can already detect people and keypoints together.
Priority
medium
Labels
enhancement
Acceptance criteria
Notes
This is not a duplicate of #3. That issue is about adding a different SOTA backend; this issue keeps YOLO11-Pose and evaluates the inference strategy around it.