Datasets Overview (original) (raw)

Ultralytics provides support for various datasets to facilitate computer vision tasks such as detection, instance segmentation, pose estimation, classification, and multi-object tracking. Below is a list of the main Ultralytics datasets, followed by a summary of each computer vision task and the respective datasets.

Watch: Ultralytics Datasets Overview

Object Detection

Bounding box object detection is a computer vision technique that involves detecting and localizing objects in an image by drawing a bounding box around each object.

Instance Segmentation

Instance segmentation is a computer vision technique that involves identifying and localizing objects in an image at the pixel level. Unlike semantic segmentation which only classifies each pixel, instance segmentation distinguishes between different instances of the same class.

Pose Estimation

Pose estimation is a technique used to determine the pose of the object relative to the camera or the world coordinate system. This involves identifying key points or joints on objects, particularly humans or animals.

Classification

Image classification is a computer vision task that involves categorizing an image into one or more predefined classes or categories based on its visual content.

Oriented Bounding Boxes (OBB)

Oriented Bounding Boxes (OBB) is a method in computer vision for detecting angled objects in images using rotated bounding boxes, often applied to aerial and satellite imagery. Unlike traditional bounding boxes, OBB can better fit objects at various orientations.

Multi-Object Tracking

Multi-object tracking is a computer vision technique that involves detecting and tracking multiple objects over time in a video sequence. This task extends object detection by maintaining consistent identities of objects across frames.

Contribute New Datasets

Contributing a new dataset involves several steps to ensure that it aligns well with the existing infrastructure. Below are the necessary steps:

Watch: How to Contribute to Ultralytics Datasets 🚀

Steps to Contribute a New Dataset

  1. Collect Images: Gather the images that belong to the dataset. These could be collected from various sources, such as public databases or your own collection.
  2. Annotate Images: Annotate these images with bounding boxes, segments, or keypoints, depending on the task.
  3. Export Annotations: Convert these annotations into the YOLO *.txt file format which Ultralytics supports.
  4. Organize Dataset: Arrange your dataset into the correct folder structure. You should have train/ and val/ top-level directories, and within each, an images/ and labels/ subdirectory.
    dataset/ ├── train/ │ ├── images/ │ └── labels/ └── val/ ├── images/ └── labels/
  5. Create a data.yaml File: In your dataset's root directory, create a data.yaml file that describes the dataset, classes, and other necessary information.
  6. Optimize Images (Optional): If you want to reduce the size of the dataset for more efficient processing, you can optimize the images using the code below. This is not required, but recommended for smaller dataset sizes and faster download speeds.
  7. Zip Dataset: Compress the entire dataset folder into a zip file.
  8. Document and PR: Create a documentation page describing your dataset and how it fits into the existing framework. After that, submit a Pull Request (PR). Refer to Ultralytics Contribution Guidelines for more details on how to submit a PR.

Example Code to Optimize and Zip a Dataset

Optimize and Zip a Dataset

`from pathlib import Path

from ultralytics.data.utils import compress_one_image from ultralytics.utils.downloads import zip_directory

Define dataset directory

path = Path("path/to/dataset")

Optimize images in dataset (optional)

for f in path.rglob("*.jpg"): compress_one_image(f)

Zip dataset into 'path/to/dataset.zip'

zip_directory(path) `

By following these steps, you can contribute a new dataset that integrates well with Ultralytics' existing structure.

FAQ

What datasets does Ultralytics support for object detection?

Ultralytics supports a wide variety of datasets for object detection, including:

These datasets facilitate training robust Ultralytics YOLO models for various object detection applications.

How do I contribute a new dataset to Ultralytics?

Contributing a new dataset involves several steps:

  1. Collect Images: Gather images from public databases or personal collections.
  2. Annotate Images: Apply bounding boxes, segments, or keypoints, depending on the task.
  3. Export Annotations: Convert annotations into the YOLO *.txt format.
  4. Organize Dataset: Use the folder structure with train/ and val/ directories, each containing images/ and labels/ subdirectories.
  5. Create a data.yaml File: Include dataset descriptions, classes, and other relevant information.
  6. Optimize Images (Optional): Reduce dataset size for efficiency.
  7. Zip Dataset: Compress the dataset into a zip file.
  8. Document and PR: Describe your dataset and submit a Pull Request following Ultralytics Contribution Guidelines.

Visit Contribute New Datasets for a comprehensive guide.

Why should I use Ultralytics HUB for my dataset?

Ultralytics HUB offers powerful features for dataset management and analysis, including:

The platform streamlines the transition from dataset management to model training, making the entire process more efficient. Learn more about Ultralytics HUB Datasets.

What are the unique features of Ultralytics YOLO models for computer vision?

Ultralytics YOLO models provide several unique features for computer vision tasks:

Discover more about YOLO models on the Ultralytics Models page.

How can I optimize and zip a dataset using Ultralytics tools?

To optimize and zip a dataset using Ultralytics tools, follow this example code:

Optimize and Zip a Dataset

Python

`from pathlib import Path

from ultralytics.data.utils import compress_one_image from ultralytics.utils.downloads import zip_directory

Define dataset directory

path = Path("path/to/dataset")

Optimize images in dataset (optional)

for f in path.rglob("*.jpg"): compress_one_image(f)

Zip dataset into 'path/to/dataset.zip'

zip_directory(path) `

This process helps reduce dataset size for more efficient storage and faster download speeds. Learn more on how to Optimize and Zip a Dataset.