--- tags: - keypoint-detection - sports - football - soccer - roboflow - yolov8 license: mit --- # Football Field Keypoint Detection (Roboflow) YOLOv8 keypoint detection model for identifying field lines and key points on a football/soccer pitch. ## Model Details - **Model ID**: `football-field-detection-f07vi/14` - **Platform**: Roboflow - **Architecture**: YOLOv8 Pose - **Task**: Keypoint detection ## Quick Start ### Installation ```bash pip install inference-gpu # or inference for CPU pip install supervision ``` ### Basic Usage ```python from inference import get_model import supervision as sv # Initialize model api_key = "YOUR_ROBOFLOW_API_KEY" model = get_model( model_id="football-field-detection-f07vi/14", api_key=api_key ) # Run inference result = model.infer("image.jpg", confidence=0.3)[0] key_points = sv.KeyPoints.from_inference(result) print(f"Detected {len(key_points.xy[0])} keypoints") ``` ### Using the Wrapper ```python from field_inference import FootballFieldDetector import os detector = FootballFieldDetector(api_key=os.getenv("ROBOFLOW_API_KEY")) results = detector.predict("image.jpg", confidence=0.3) ``` ## Applications - **Homography Estimation**: Map player positions to tactical view - **Camera Calibration**: Align multiple camera views - **Tactical Analysis**: Project player movements on 2D pitch - **AR Overlays**: Augmented reality graphics on field - **Voronoi Diagrams**: Team possession and control analysis ## Example: View Transformation ```python import numpy as np from sports.common.view import ViewTransformer from sports.configs.soccer import SoccerPitchConfiguration # Get field keypoints result = model.infer(frame, confidence=0.3)[0] key_points = sv.KeyPoints.from_inference(result) # Filter confident keypoints filter = key_points.confidence[0] > 0.5 frame_points = key_points.xy[0][filter] # Create transformer config = SoccerPitchConfiguration() pitch_points = np.array(config.vertices)[filter] transformer = ViewTransformer( source=frame_points, target=pitch_points ) # Transform player positions to pitch coordinates pitch_xy = transformer.transform_points(player_xy) ``` ## API Key You need a Roboflow API key to use this model. Get one at [roboflow.com](https://roboflow.com). ## Citation ``` @misc{football-field-detection, title={Football Field Detection}, author={Roboflow}, year={2024}, url={https://universe.roboflow.com/roboflow-jvuqo/football-field-detection-f07vi} } ```