Extracting outputs from Ultralytics YOLOv8
Learn how to extract bounding boxes, masks, keypoints, and class probabilities from Ultralytics YOLOv8 Results objects and use them in your own Python code.
Nuvola Ladi3 min readListen to this article

Ultralytics YOLOv8 is a widely used computer vision model for tasks like object detection, segmentation, and tracking. Whether you're a seasoned developer or a beginner in artificial intelligence (AI), understanding how to effectively extract outputs from YOLOv8 can significantly enhance your projects. This blog post walks through the practical steps to extract and use results from the YOLOv8 model.
Setting up Ultralytics YOLOv8#
Before diving into the results extraction, it's crucial to have your Ultralytics YOLOv8 model up and running. If you're new, you can watch our previous videos where we cover the basics of setting up and using YOLO models for various computer vision tasks. To start with results extraction, ensure your model is configured correctly:
- Model Initialization: Initialize the Ultralytics YOLOv8 model appropriately, making sure you choose the right model configuration that suits your specific needs, be it object detection or more complex tasks like pose estimation.
- Running Inference: Input your data through the model to perform inference. This process will generate a list of Results objects, one per image or frame, which is your key to accessing all detection data.
Understanding the results object#
Each Results object in Ultralytics YOLOv8 contains all the detection data that you need to proceed with your project, including:
- Bounding Boxes: Use
result.boxesto access coordinates of detected objects. - Masks and Keypoints: Access segmentation masks and keypoints for pose estimation using
result.masksandresult.keypointsrespectively. - Class Probabilities:
result.probsholds the class probabilities from classification models, whileresult.boxes.confgives the confidence score of each detected box, useful for filtering detections.
Extracting data for custom use#
To use these outputs in your applications, follow these steps:
- Convert Data for Processing: If you’re running your model on a GPU, convert the outputs to CPU format using
.cpu()for further manipulation. - Accessing Bounding Box Coordinates: Retrieve and manipulate bounding box coordinates directly from the results object. This includes accessing normalized coordinates or specific attributes like width and height.
- Handling Classifications: Extract top classifications to utilize class IDs and confidence scores effectively.
Practical application in code#
Transitioning from theory to practice, Nicolai Nielsen demonstrates how to implement these concepts within a custom Python script using Visual Studio Code. The script involves:
- Setting up a Detection Class: Initialize and configure your Ultralytics YOLOv8 model within a class structure, preparing it for live data input.
- Extracting Results: Run the detection and extract bounding boxes, masks, and classifications directly from the results object.
- Utilizing Outputs: Convert results into usable formats like JSON or CSV, or use them directly to draw bounding boxes on images or video streams.
Visualization and beyond#
While extracting raw data is crucial, visualizing these detections can provide immediate insights into the model's performance:
- Drawing Rectangles: Use bounding box data to draw rectangles around detected objects in image or video outputs.
- Direct Plotting: Use the built-in
result.plot()method to visualize detections without additional coding.
Expanding your AI toolkit with Ultralytics YOLOv8#
Mastering Ultralytics YOLOv8 output extraction not only boosts your project’s capabilities but also deepens your understanding of object detection systems.
By following these steps, you can tailor Ultralytics YOLOv8 detections to your specific needs, whether in developing advanced AI-driven applications or conducting robust data analysis.
Stay tuned for more tutorials on Ultralytics YOLOv8 and other AI technologies. Join our community to stay up to date with all the latest developments as well as check out our docs to learn more!
Written by
Comments
Ask a question, share your results, or help someone else.










