单目3D初始代码
This commit is contained in:
469
docs/en/platform/data/annotation.md
Executable file
469
docs/en/platform/data/annotation.md
Executable file
@@ -0,0 +1,469 @@
|
||||
---
|
||||
comments: true
|
||||
description: Learn to annotate images in Ultralytics Platform with manual tools, SAM smart annotation, and YOLO auto-labeling for all 5 task types.
|
||||
keywords: Ultralytics Platform, annotation, labeling, SAM, auto-annotation, bounding box, polygon, keypoints, segmentation, YOLO
|
||||
---
|
||||
|
||||
# Annotation Editor
|
||||
|
||||
[Ultralytics Platform](https://platform.ultralytics.com) includes a powerful annotation editor for labeling images with bounding boxes, polygons, keypoints, oriented boxes, and classifications. The editor supports manual drawing and SAM-powered smart annotation.
|
||||
|
||||

|
||||
|
||||
```mermaid
|
||||
graph TB
|
||||
subgraph Manual["Manual Tools"]
|
||||
A[Box] & B[Polygon] & C[Keypoint] & D[OBB] & E[Classify]
|
||||
end
|
||||
subgraph AI["AI-Assisted"]
|
||||
F[SAM Smart]
|
||||
end
|
||||
Manual --> H[Save Labels]
|
||||
AI --> H
|
||||
```
|
||||
|
||||
## Supported Task Types
|
||||
|
||||
The annotation editor supports all 5 YOLO task types:
|
||||
|
||||
| Task | Tool | Annotation Format |
|
||||
| ------------------------------------------------ | -------------- | -------------------------------------- |
|
||||
| **[Detect](../../datasets/detect/index.md)** | Rectangle | Bounding boxes (x, y, width, height) |
|
||||
| **[Segment](../../datasets/segment/index.md)** | Polygon | Pixel-precise masks (polygon vertices) |
|
||||
| **[Pose](../../datasets/pose/index.md)** | Keypoint | 17-point COCO skeleton |
|
||||
| **[OBB](../../datasets/obb/index.md)** | Oriented Box | Rotated bounding boxes (4 corners) |
|
||||
| **[Classify](../../datasets/classify/index.md)** | Class Selector | Image-level labels |
|
||||
|
||||
### Task Details
|
||||
|
||||
??? info "Object Detection"
|
||||
|
||||
**What it does:** Identifies objects and their locations with axis-aligned bounding boxes.
|
||||
|
||||
**Label format:** [`class_id center_x center_y width height`](../../datasets/detect/index.md#ultralytics-yolo-format) (all normalized 0-1)
|
||||
|
||||
**Example:** `0 0.5 0.5 0.2 0.3` — Class 0 centered at (50%, 50%) with 20% width and 30% height
|
||||
|
||||
**Use cases:** Inventory counting, traffic monitoring, wildlife detection, security systems
|
||||
|
||||
??? info "Instance Segmentation"
|
||||
|
||||
**What it does:** Creates pixel-precise masks for each object instance.
|
||||
|
||||
**Label format:** [`class_id x1 y1 x2 y2 x3 y3 ...`](../../datasets/segment/index.md#ultralytics-yolo-format) (polygon vertices, normalized 0-1)
|
||||
|
||||
**Example:** `0 0.1 0.1 0.9 0.1 0.9 0.9 0.1 0.9` — Quadrilateral mask
|
||||
|
||||
**Use cases:** Medical imaging, autonomous vehicles, photo editing, agricultural analysis
|
||||
|
||||
??? info "Pose Estimation"
|
||||
|
||||
**What it does:** Detects body keypoints for skeleton tracking.
|
||||
|
||||
**Label format:** [`class_id cx cy w h kx1 ky1 v1 kx2 ky2 v2 ...`](../../datasets/pose/index.md#ultralytics-yolo-format)
|
||||
|
||||
- Visibility flags: `0`=not labeled, `1`=labeled but occluded, `2`=labeled and visible
|
||||
|
||||
**Example:** `0 0.5 0.5 0.2 0.3 0.6 0.7 2 0.4 0.8 1` — Person with 2 keypoints
|
||||
|
||||
**Use cases:** Sports analysis, physical therapy, animation, gesture recognition
|
||||
|
||||
??? info "Oriented Bounding Box (OBB)"
|
||||
|
||||
**What it does:** Detects rotated objects with angle-aware bounding boxes.
|
||||
|
||||
**Label format:** [`class_id x1 y1 x2 y2 x3 y3 x4 y4`](../../datasets/obb/index.md#yolo-obb-format) (four corner points, normalized)
|
||||
|
||||
**Example:** `0 0.1 0.1 0.9 0.1 0.9 0.9 0.1 0.9` — Rotated rectangle
|
||||
|
||||
**Use cases:** Aerial imagery, document analysis, manufacturing inspection, ship detection
|
||||
|
||||
??? info "Image Classification"
|
||||
|
||||
**What it does:** Assigns a single label to the entire image.
|
||||
|
||||
**Label format:** [Folder-based](../../datasets/classify/index.md#dataset-structure-for-yolo-classification-tasks) — images organized by class name (`train/cats/`, `train/dogs/`)
|
||||
|
||||
**Use cases:** Content moderation, quality control, medical diagnosis, scene recognition
|
||||
|
||||
## Getting Started
|
||||
|
||||
To annotate images:
|
||||
|
||||
1. Navigate to your dataset
|
||||
2. Click on an image to open the fullscreen viewer
|
||||
3. Click `Edit` to enter annotation mode
|
||||
4. Select your annotation tool from the toolbar
|
||||
5. Draw annotations on the image
|
||||
6. Click `Save` when finished
|
||||
|
||||

|
||||
|
||||
```mermaid
|
||||
graph LR
|
||||
A[Open Dataset] --> B[Click Image]
|
||||
B --> C[Click Edit]
|
||||
C --> D[Draw Annotations]
|
||||
D --> E[Save]
|
||||
E --> F[Next Image]
|
||||
F --> B
|
||||
|
||||
style C fill:#2196F3,color:#fff
|
||||
style D fill:#FF9800,color:#fff
|
||||
style E fill:#4CAF50,color:#fff
|
||||
```
|
||||
|
||||
## Annotation Modes
|
||||
|
||||
The editor provides two annotation modes, selectable from the toolbar:
|
||||
|
||||
| Mode | Description | Shortcut |
|
||||
| --------- | ------------------------------------------------------- | -------- |
|
||||
| **Draw** | Manual annotation with task-specific tools | `V` |
|
||||
| **Smart** | SAM-powered interactive annotation (detect/segment/OBB) | `S` |
|
||||
|
||||
## Manual Annotation Tools
|
||||
|
||||
### Bounding Box (Detect)
|
||||
|
||||
Draw rectangular boxes around objects:
|
||||
|
||||
1. Enter edit mode and select `Draw`
|
||||
2. Click and drag to draw a rectangle
|
||||
3. Release to complete the box
|
||||
4. Select a class from the dropdown
|
||||
|
||||

|
||||
|
||||
!!! tip "Resize and Move"
|
||||
|
||||
- Drag 8 corner/edge handles to resize
|
||||
- Drag the center to move
|
||||
- Press `Delete` or `Backspace` to remove selected annotation
|
||||
|
||||
### Polygon (Segment)
|
||||
|
||||
Draw precise polygon masks:
|
||||
|
||||
1. Enter edit mode and select `Draw`
|
||||
2. Click to add vertices
|
||||
3. Right-click or press `Enter` to close the polygon
|
||||
4. Select a class from the dropdown
|
||||
|
||||

|
||||
|
||||
!!! tip "Edit Vertices"
|
||||
|
||||
- Drag individual vertices to adjust
|
||||
- Drag the entire polygon to move
|
||||
- Click on a vertex and press `Delete` to remove it
|
||||
|
||||
### Keypoint (Pose)
|
||||
|
||||
Place [17 COCO keypoints](../../datasets/pose/index.md#ultralytics-yolo-format) for human pose:
|
||||
|
||||
1. Enter edit mode and select `Draw`
|
||||
2. Click to place keypoints in sequence
|
||||
3. Follow the [COCO skeleton order](../../datasets/pose/index.md)
|
||||
|
||||
The 17 COCO keypoints are:
|
||||
|
||||
| # | Keypoint | # | Keypoint |
|
||||
| --- | -------------- | --- | ----------- |
|
||||
| 1 | Nose | 10 | Left wrist |
|
||||
| 2 | Left eye | 11 | Right wrist |
|
||||
| 3 | Right eye | 12 | Left hip |
|
||||
| 4 | Left ear | 13 | Right hip |
|
||||
| 5 | Right ear | 14 | Left knee |
|
||||
| 6 | Left shoulder | 15 | Right knee |
|
||||
| 7 | Right shoulder | 16 | Left ankle |
|
||||
| 8 | Left elbow | 17 | Right ankle |
|
||||
| 9 | Right elbow | | |
|
||||
|
||||

|
||||
|
||||
!!! info "Keypoint Visibility"
|
||||
|
||||
Each keypoint has a visibility flag: `0` = not labeled, `1` = labeled but occluded, `2` = labeled and visible. Occluded keypoints (behind other objects) should be marked with visibility `1` — the model learns to infer their position.
|
||||
|
||||
### Oriented Bounding Box (OBB)
|
||||
|
||||
Draw rotated boxes for angled objects:
|
||||
|
||||
1. Enter edit mode and select `Draw`
|
||||
2. Click and drag to draw an initial box
|
||||
3. Use the rotation handle to adjust angle
|
||||
4. Drag corner handles to resize
|
||||
5. Select a class from the dropdown
|
||||
|
||||

|
||||
|
||||
### Classification (Classify)
|
||||
|
||||
Assign image-level class labels:
|
||||
|
||||
1. Enter edit mode
|
||||
2. A side panel appears with class selection buttons
|
||||
3. Click on class buttons or press number keys `1-9`
|
||||
|
||||

|
||||
|
||||
## SAM Smart Annotation
|
||||
|
||||
[Segment Anything Model (SAM)](https://docs.ultralytics.com/models/sam/) enables intelligent annotation with just a few clicks. Smart mode is available for **detect**, **segment**, and **OBB** tasks.
|
||||
|
||||
1. Enter edit mode and select `Smart` or press `S`
|
||||
2. **Left-click** to add positive points (include this area)
|
||||
3. **Right-click** to add negative points (exclude this area)
|
||||
4. SAM generates a precise mask in real-time
|
||||
5. Press `Enter` or `Escape` to save the annotation
|
||||
|
||||

|
||||
|
||||
```mermaid
|
||||
graph LR
|
||||
A[Press S] --> B[Left-click Object]
|
||||
B --> C[SAM Generates Mask]
|
||||
C --> D{Accurate?}
|
||||
D -->|Yes| E[Enter to Save]
|
||||
D -->|No| F[Add +/- Points]
|
||||
F --> C
|
||||
|
||||
style A fill:#2196F3,color:#fff
|
||||
style C fill:#FF9800,color:#fff
|
||||
style E fill:#4CAF50,color:#fff
|
||||
```
|
||||
|
||||
!!! tip "SAM Tips"
|
||||
|
||||
- Start with a positive click on the object center
|
||||
- Add negative clicks to exclude background
|
||||
- Hold `Alt`/`Option` to invert click behavior (left-click becomes negative, right-click becomes positive)
|
||||
- Works best for distinct objects with clear edges
|
||||
- Use 2-3 positive points for elongated objects
|
||||
|
||||
SAM smart annotation can generate:
|
||||
|
||||
- **Polygons** for segmentation tasks
|
||||
- **Bounding boxes** for detection tasks
|
||||
- **Oriented boxes** for OBB tasks
|
||||
|
||||
!!! warning "SAM Task Support"
|
||||
|
||||
SAM smart annotation is only available for **detect**, **segment**, and **OBB** tasks. Classification and pose tasks require manual annotation.
|
||||
|
||||
## Class Sidebar
|
||||
|
||||
The annotation editor includes a collapsible class sidebar on the right side of the canvas. The sidebar provides:
|
||||
|
||||
- **Search classes**: Filter the class list by typing in the search field. Press `Enter` on an exact match to select it, or create a new class if no match exists.
|
||||
- **Create new class inline**: Click `Add class` at the bottom of the list, type a name, and optionally pick a custom color. Press `Enter` to create.
|
||||
- **Edit class name inline**: Hover over a class name and click the pencil icon to rename it.
|
||||
- **Color picker**: Click the color swatch next to any class to change its color.
|
||||
- **Per-class annotation count**: Each class row shows a superscript count of annotations.
|
||||
- **Expand/collapse**: Click the chevron to expand a class and see individual annotations listed below it.
|
||||
- **Bidirectional hover highlighting**: Hovering an annotation on the canvas highlights it in the sidebar, and vice versa. The sidebar auto-scrolls and auto-expands to the relevant class.
|
||||
- **Hide/show individual annotations**: Click the eye icon on any annotation row to toggle its visibility on the canvas.
|
||||
- **Delete annotations**: Click the trash icon on any annotation row to delete it.
|
||||
- **Keyboard shortcuts**: Press `1-9` to quickly select the first 9 classes.
|
||||
|
||||
## Context Menu
|
||||
|
||||
Right-click on selected annotations to open a context menu with:
|
||||
|
||||
| Action | Shortcut |
|
||||
| -------------------- | ---------------------- |
|
||||
| Delete Annotation(s) | `Delete` / `Backspace` |
|
||||
| Bring to Front | `Cmd/Ctrl+Shift+]` |
|
||||
| Send to Back | `Cmd/Ctrl+Shift+[` |
|
||||
| Bring Forward | `Cmd/Ctrl+]` |
|
||||
| Send Backward | `Cmd/Ctrl+[` |
|
||||
|
||||
## Visibility Controls
|
||||
|
||||
The visibility dropdown (eye icon) lets you toggle display of individual elements:
|
||||
|
||||
| Toggle | Description |
|
||||
| ------------------ | ------------------------------------------------------------------------------------------ |
|
||||
| **Annotations** | Show or hide all annotation overlays |
|
||||
| **Class labels** | Show or hide class name labels on annotations |
|
||||
| **Show pixels** | Toggle pixelated rendering for zoom inspection (fullscreen) |
|
||||
| **Crosshairs** | Show crosshair cursor with pixel coordinates (edit mode) |
|
||||
| **Nav thumbnails** | Show navigation thumbnail strip (fullscreen) |
|
||||
| **Show all** | Toggle annotations, labels, crosshairs, and thumbnails at once (does not affect pixelated) |
|
||||
|
||||
## Crosshair Cursor
|
||||
|
||||
In edit mode, a crosshair overlay tracks the cursor position and displays pixel coordinates on the canvas. This helps place annotations with precision. Toggle it via the visibility dropdown.
|
||||
|
||||
## SAM Hover Preview
|
||||
|
||||
In Smart mode for **segment** tasks, SAM provides a real-time mask preview as you hover over the image — before clicking any points. This lets you see the predicted segmentation boundary and decide where to click. Once you add positive or negative points, the preview updates to reflect your refinements.
|
||||
|
||||
## Polygon Vertex Editing
|
||||
|
||||
For segment annotations, you can edit polygon vertices after drawing:
|
||||
|
||||
- **Move vertices**: Drag any vertex handle to reposition it
|
||||
- **Delete vertices**: Select a vertex and press `Delete` to remove it
|
||||
|
||||
## Class Management
|
||||
|
||||
### Creating Classes
|
||||
|
||||
Define annotation classes for your dataset in the `Classes` tab:
|
||||
|
||||
1. Navigate to the `Classes` tab
|
||||
2. Use the input field at the bottom to type a class name
|
||||
3. Click `Add` or press `Enter`
|
||||
4. A color is assigned automatically from the Ultralytics palette
|
||||
|
||||

|
||||
|
||||
### Add New Class During Annotation
|
||||
|
||||
You can create new classes directly while annotating without leaving the editor:
|
||||
|
||||
1. Draw an annotation on the image
|
||||
2. In the class dropdown, click `Add New Class`
|
||||
3. Enter the class name
|
||||
4. Press Enter to create and assign
|
||||
|
||||
This allows for a seamless workflow where you can define classes as you encounter new object types in your data.
|
||||
|
||||
!!! tip "Unified Classes Table"
|
||||
|
||||
All classes across your dataset are managed in a unified table. Changes to class names or colors apply throughout the entire dataset automatically.
|
||||
|
||||
### Editing Classes
|
||||
|
||||
- **Rename**: Click a class name in the table to edit it inline
|
||||
- **Change color**: Click the color swatch to open the color picker
|
||||
- **Search**: Use the search field to filter classes by name
|
||||
- **Sort**: Click column headers to sort by name, label count, or image count
|
||||
|
||||
### Class Colors
|
||||
|
||||
Each class is assigned a color from the Ultralytics palette. You can customize colors using the color picker on the `Classes` tab. Colors are consistent across the platform for easy recognition.
|
||||
|
||||
## Keyboard Shortcuts
|
||||
|
||||
Efficient annotation with keyboard shortcuts:
|
||||
|
||||
=== "General"
|
||||
|
||||
| Shortcut | Action |
|
||||
| ---------------------- | -------------------------- |
|
||||
| `Cmd/Ctrl+S` | Save annotations |
|
||||
| `Cmd/Ctrl+Z` | Undo |
|
||||
| `Cmd/Ctrl+Shift+Z` | Redo |
|
||||
| `Cmd/Ctrl+Y` | Redo (alternative) |
|
||||
| `Escape` | Save / Deselect / Exit |
|
||||
| `Delete` / `Backspace` | Delete selected annotation |
|
||||
| `1-9` | Select class 1-9 |
|
||||
| `Cmd/Ctrl+Scroll` | Zoom in/out |
|
||||
| `Shift+Click` | Multi-select annotations |
|
||||
| `Cmd/Ctrl+A` | Select all annotations |
|
||||
|
||||
=== "Modes"
|
||||
|
||||
| Shortcut | Action |
|
||||
| -------- | ------------------ |
|
||||
| `V` | Draw mode (manual) |
|
||||
| `S` | Smart mode (SAM) |
|
||||
|
||||
=== "Drawing"
|
||||
|
||||
| Shortcut | Action |
|
||||
| ------------- | --------------------------------------------------- |
|
||||
| `Click+Drag` | Draw bounding box (detect/OBB) |
|
||||
| `Click` | Add polygon point (segment) / Place keypoint (pose) |
|
||||
| `Right-click` | Complete polygon / Add SAM negative point |
|
||||
| `Enter` | Complete polygon / Save SAM annotation |
|
||||
| `Escape` | Save SAM annotation / Deselect / Exit edit mode |
|
||||
|
||||
=== "Arrange (Z-Order)"
|
||||
|
||||
| Shortcut | Action |
|
||||
| ------------------ | -------------- |
|
||||
| `Cmd/Ctrl+]` | Bring forward |
|
||||
| `Cmd/Ctrl+[` | Send backward |
|
||||
| `Cmd/Ctrl+Shift+]` | Bring to front |
|
||||
| `Cmd/Ctrl+Shift+[` | Send to back |
|
||||
|
||||

|
||||
|
||||
??? tip "View All Shortcuts"
|
||||
|
||||
Click the keyboard icon in the annotation toolbar to open the shortcuts reference.
|
||||
|
||||
## Undo/Redo
|
||||
|
||||
The annotation editor maintains a full undo/redo history:
|
||||
|
||||
- **Undo**: `Cmd/Ctrl+Z`
|
||||
- **Redo**: `Cmd/Ctrl+Shift+Z` or `Cmd/Ctrl+Y`
|
||||
|
||||
History tracks:
|
||||
|
||||
- Adding annotations (single and batch)
|
||||
- Editing annotations (move, resize, rotate)
|
||||
- Deleting annotations (single and batch)
|
||||
- Changing classes (single and batch)
|
||||
- Reordering annotations (z-order)
|
||||
- Editing polygon vertices (add, remove, move)
|
||||
- Moving keypoints
|
||||
|
||||
!!! info "Unlimited Undo"
|
||||
|
||||
The undo stack has no fixed limit — you can undo all changes made during the current editing session, back to the original state of the image when you clicked `Edit`.
|
||||
|
||||
## Saving Annotations
|
||||
|
||||
Annotations are saved when you click `Save` or press `Cmd/Ctrl+S`:
|
||||
|
||||
- **Save**: Click the save button or press `Cmd/Ctrl+S`
|
||||
- **Cancel**: Click cancel to discard changes
|
||||
- **Escape**: Saves if there are unsaved changes, otherwise exits edit mode
|
||||
|
||||
!!! warning "Save Your Work"
|
||||
|
||||
Always save before navigating to another image. Unsaved changes will be lost.
|
||||
|
||||
## FAQ
|
||||
|
||||
### How accurate is SAM annotation?
|
||||
|
||||
SAM provides high-quality masks for most objects. Accuracy depends on:
|
||||
|
||||
- Object distinctiveness from background
|
||||
- Image quality and resolution
|
||||
- Number of positive/negative points provided
|
||||
|
||||
For best results, start with a positive point on the object center and add negative points to exclude nearby objects.
|
||||
|
||||
### Can I import existing annotations?
|
||||
|
||||
Yes, upload your dataset with [YOLO-format label files](../../datasets/detect/index.md#ultralytics-yolo-format). The Platform automatically parses and displays them in the editor.
|
||||
|
||||
### How do I annotate multiple objects of the same class?
|
||||
|
||||
After drawing an annotation:
|
||||
|
||||
1. Keep the same class selected
|
||||
2. Draw the next annotation
|
||||
3. Repeat until all objects are labeled
|
||||
|
||||
The keyboard shortcut `1-9` quickly selects classes.
|
||||
|
||||
### Can I train on partially annotated datasets?
|
||||
|
||||
Yes, but for best results:
|
||||
|
||||
- Label all objects of your target classes in each image
|
||||
- Use the label filter set to `Unannotated` to identify unlabeled images
|
||||
- Exclude unannotated images from training configuration
|
||||
|
||||
### Which tasks support SAM smart annotation?
|
||||
|
||||
SAM smart annotation is available for **detect**, **segment**, and **OBB** tasks. Classification and pose tasks use manual annotation only.
|
||||
575
docs/en/platform/data/datasets.md
Executable file
575
docs/en/platform/data/datasets.md
Executable file
@@ -0,0 +1,575 @@
|
||||
---
|
||||
comments: true
|
||||
description: Learn how to upload, manage, and organize datasets in Ultralytics Platform for YOLO model training with automatic processing and statistics.
|
||||
keywords: Ultralytics Platform, datasets, dataset management, YOLO, data upload, training data, computer vision, machine learning
|
||||
---
|
||||
|
||||
# Datasets
|
||||
|
||||
[Ultralytics Platform](https://platform.ultralytics.com) datasets provide a streamlined solution for managing your training data. Once uploaded, datasets can be immediately used for model training, with automatic processing and statistics generation.
|
||||
|
||||
## Upload Dataset
|
||||
|
||||
Ultralytics Platform accepts multiple upload formats for flexibility.
|
||||
|
||||
### Supported Formats
|
||||
|
||||
=== "Images"
|
||||
|
||||
| Format | Extensions | Notes | Max Size |
|
||||
| ------ | --------------- | ------------------------ | -------- |
|
||||
| JPEG | `.jpg`, `.jpeg` | Most common, recommended | 50 MB |
|
||||
| PNG | `.png` | Supports transparency | 50 MB |
|
||||
| WebP | `.webp` | Modern, good compression | 50 MB |
|
||||
| BMP | `.bmp` | Uncompressed | 50 MB |
|
||||
| TIFF | `.tiff`, `.tif` | High quality | 50 MB |
|
||||
| HEIC | `.heic` | iPhone photos | 50 MB |
|
||||
| AVIF | `.avif` | Next-gen format | 50 MB |
|
||||
| JP2 | `.jp2` | JPEG 2000 | 50 MB |
|
||||
| DNG | `.dng` | Raw camera | 50 MB |
|
||||
| MPO | `.mpo` | Multi-picture object | 50 MB |
|
||||
|
||||
=== "Videos"
|
||||
|
||||
Videos are automatically extracted to frames on the client side at 1 FPS (max 100 frames per video).
|
||||
|
||||
| Format | Extensions | Extraction | Max Size |
|
||||
| ------ | ---------- | --------------------- | -------- |
|
||||
| MP4 | `.mp4` | 1 FPS, max 100 frames | 1 GB |
|
||||
| WebM | `.webm` | 1 FPS, max 100 frames | 1 GB |
|
||||
| MOV | `.mov` | 1 FPS, max 100 frames | 1 GB |
|
||||
| AVI | `.avi` | 1 FPS, max 100 frames | 1 GB |
|
||||
| MKV | `.mkv` | 1 FPS, max 100 frames | 1 GB |
|
||||
| M4V | `.m4v` | 1 FPS, max 100 frames | 1 GB |
|
||||
|
||||
!!! info "Video Frame Extraction"
|
||||
|
||||
Video frames are extracted at 1 frame per second in the browser before upload. A 60-second video produces 60 frames. The maximum is 100 frames per video, so videos longer than ~100 seconds will be sampled.
|
||||
|
||||
=== "Archives"
|
||||
|
||||
Archives are extracted and processed automatically.
|
||||
|
||||
| Format | Extensions | Notes | Max Size |
|
||||
| ------ | ----------------- | -------------------- | -------- |
|
||||
| ZIP | `.zip` | Most common | 10 GB |
|
||||
| TAR | `.tar` | Uncompressed archive | 10 GB |
|
||||
| TAR.GZ | `.tar.gz`, `.tgz` | Compressed archive | 10 GB |
|
||||
| GZ | `.gz` | Gzip compressed | 10 GB |
|
||||
|
||||
### Preparing Your Dataset
|
||||
|
||||
The Platform supports two annotation formats plus raw uploads: [Ultralytics YOLO](../../datasets/detect/index.md#ultralytics-yolo-format), [COCO](https://cocodataset.org/#format-data), and raw (unannotated images):
|
||||
|
||||
=== "YOLO Format"
|
||||
|
||||
Use the standard YOLO directory structure with a `data.yaml` file:
|
||||
|
||||
```
|
||||
my-dataset/
|
||||
├── images/
|
||||
│ ├── train/
|
||||
│ │ ├── img001.jpg
|
||||
│ │ └── img002.jpg
|
||||
│ └── val/
|
||||
│ ├── img003.jpg
|
||||
│ └── img004.jpg
|
||||
├── labels/
|
||||
│ ├── train/
|
||||
│ │ ├── img001.txt
|
||||
│ │ └── img002.txt
|
||||
│ └── val/
|
||||
│ ├── img003.txt
|
||||
│ └── img004.txt
|
||||
└── data.yaml
|
||||
```
|
||||
|
||||
The YAML file defines your dataset configuration:
|
||||
|
||||
```yaml
|
||||
# data.yaml
|
||||
path: .
|
||||
train: images/train
|
||||
val: images/val
|
||||
|
||||
names:
|
||||
0: person
|
||||
1: car
|
||||
2: dog
|
||||
```
|
||||
|
||||
=== "COCO Format"
|
||||
|
||||
Use JSON annotation files with the standard [COCO structure](https://cocodataset.org/#format-data):
|
||||
|
||||
```
|
||||
my-coco-dataset/
|
||||
├── train/
|
||||
│ ├── _annotations.coco.json
|
||||
│ ├── img001.jpg
|
||||
│ └── img002.jpg
|
||||
└── val/
|
||||
├── _annotations.coco.json
|
||||
├── img003.jpg
|
||||
└── img004.jpg
|
||||
```
|
||||
|
||||
The JSON file contains `images`, `annotations`, and `categories` arrays:
|
||||
|
||||
```json
|
||||
{
|
||||
"images": [{ "id": 1, "file_name": "img001.jpg", "width": 640, "height": 480 }],
|
||||
"annotations": [{ "id": 1, "image_id": 1, "category_id": 0, "bbox": [100, 50, 200, 300] }],
|
||||
"categories": [{ "id": 0, "name": "person" }]
|
||||
}
|
||||
```
|
||||
|
||||
COCO annotations are automatically converted during upload. Detection (`bbox`), segmentation (`segmentation` polygons), and pose (`keypoints`) tasks are supported. Category IDs are remapped to a dense 0-indexed sequence across all annotation files. For converting between formats, see [format conversion tools](../../datasets/detect/index.md#port-or-convert-label-formats).
|
||||
|
||||
!!! tip "Raw Uploads"
|
||||
|
||||
**Raw**: Upload unannotated images (no labels). Useful when you plan to annotate directly on the platform using the [annotation editor](annotation.md).
|
||||
|
||||
!!! tip "Flat Directory Structure"
|
||||
|
||||
You can also upload images without the train/val folder structure. Images uploaded without split folders are assigned to the `train` split by default. You can reassign them later using the bulk move-to-split feature.
|
||||
|
||||
!!! tip "Format Auto-Detection"
|
||||
|
||||
The format is detected automatically: datasets with a `data.yaml` containing `names`, `train`, or `val` keys are treated as YOLO. Datasets with COCO JSON files (containing `images`, `annotations`, and `categories` arrays) are treated as COCO. Datasets with only images and no annotations are treated as raw.
|
||||
|
||||
For task-specific format details, see [supported tasks](index.md#supported-tasks) and the [Datasets Overview](../../datasets/index.md).
|
||||
|
||||
### Upload Process
|
||||
|
||||
1. Navigate to `Datasets` in the sidebar
|
||||
2. Click `New Dataset` or drag files into the upload zone
|
||||
3. Select the task type (see [supported tasks](index.md#supported-tasks))
|
||||
4. Add a name and optional description
|
||||
5. Set visibility (public or private) and optional license (see [available licenses](#available-licenses))
|
||||
6. Click `Create`
|
||||
|
||||

|
||||
|
||||
After upload, the platform processes your data through a multi-stage pipeline:
|
||||
|
||||
```mermaid
|
||||
graph LR
|
||||
A[Upload] --> B[Validate]
|
||||
B --> C[Normalize]
|
||||
C --> D[Thumbnail]
|
||||
D --> E[Parse Labels]
|
||||
E --> F[Statistics]
|
||||
|
||||
style A fill:#4CAF50,color:#fff
|
||||
style B fill:#2196F3,color:#fff
|
||||
style C fill:#2196F3,color:#fff
|
||||
style D fill:#2196F3,color:#fff
|
||||
style E fill:#2196F3,color:#fff
|
||||
style F fill:#9C27B0,color:#fff
|
||||
```
|
||||
|
||||
1. **Validation**: Format and size checks
|
||||
2. **Normalization**: Large images resized (max 4096px, min dimension 28px)
|
||||
3. **Thumbnails**: 256px WebP previews generated
|
||||
4. **Label Parsing**: [YOLO](../../datasets/detect/index.md#ultralytics-yolo-format) and COCO format labels extracted
|
||||
5. **Statistics**: Class distributions and image dimensions computed
|
||||
|
||||

|
||||
|
||||
??? tip "Validate Before Upload"
|
||||
|
||||
You can validate your dataset locally before uploading:
|
||||
|
||||
```python
|
||||
from ultralytics.hub import check_dataset
|
||||
|
||||
check_dataset("path/to/dataset.zip", task="detect")
|
||||
```
|
||||
|
||||
!!! warning "Image Size Requirements"
|
||||
|
||||
Images must be at least 28px on their shortest side. Images smaller than this are rejected during processing. Images larger than 4096px on their longest side are automatically resized with aspect ratio preserved.
|
||||
|
||||
## Browse Images
|
||||
|
||||
View your dataset images in multiple layouts:
|
||||
|
||||
| View | Description |
|
||||
| ----------- | --------------------------------------------------------------------------------- |
|
||||
| **Grid** | Thumbnail grid with annotation overlays (default) |
|
||||
| **Compact** | Smaller thumbnails for quick scanning |
|
||||
| **Table** | List with thumbnail, filename, dimensions, size, split, classes, and label counts |
|
||||
|
||||

|
||||
|
||||
### Sorting and Filtering
|
||||
|
||||
Images can be sorted and filtered for efficient browsing:
|
||||
|
||||
=== "Sort Options"
|
||||
|
||||
| Sort | Description |
|
||||
| --------------- | -------------------- |
|
||||
| Newest | Most recently added |
|
||||
| Oldest | Earliest added |
|
||||
| Name A-Z | Alphabetical |
|
||||
| Name Z-A | Reverse alphabetical |
|
||||
| Size (smallest) | Smallest files first |
|
||||
| Size (largest) | Largest files first |
|
||||
| Most labels | Most annotations |
|
||||
| Fewest labels | Fewest annotations |
|
||||
|
||||
=== "Filters"
|
||||
|
||||
| Filter | Options |
|
||||
| ---------------- | ---------------------------------- |
|
||||
| **Split filter** | Train, Val, Test, or All |
|
||||
| **Label filter** | All images, Annotated, or Unannotated |
|
||||
| **Search** | Filter images by filename |
|
||||
|
||||
!!! tip "Finding Unlabeled Images"
|
||||
|
||||
Use the label filter set to `Unannotated` to quickly find images that still need annotation. This is especially useful for large datasets where you want to track labeling progress.
|
||||
|
||||
### Fullscreen Viewer
|
||||
|
||||
Click any image to open the fullscreen viewer with:
|
||||
|
||||
- **Navigation**: Arrow keys or thumbnail previews to browse
|
||||
- **Metadata**: Filename, dimensions, split badge, annotation count
|
||||
- **Annotations**: Toggle annotation overlay visibility
|
||||
- **Class Breakdown**: Per-class label counts with color indicators
|
||||
- **Edit**: Enter annotation mode to add or modify labels
|
||||
- **Download**: Download the original image file
|
||||
- **Delete**: Delete the image from the dataset
|
||||
- **Zoom**: `Cmd/Ctrl+Scroll` to zoom in/out
|
||||
- **Pixel view**: Toggle pixelated rendering for close inspection
|
||||
|
||||

|
||||
|
||||
### Filter by Split
|
||||
|
||||
Filter images by their dataset split:
|
||||
|
||||
| Split | Purpose |
|
||||
| --------- | ----------------------------------- |
|
||||
| **Train** | Used for model training |
|
||||
| **Val** | Used for validation during training |
|
||||
| **Test** | Used for final evaluation |
|
||||
|
||||
## Dataset Tabs
|
||||
|
||||
Each dataset page has five tabs accessible from the tab bar:
|
||||
|
||||
### Images Tab
|
||||
|
||||
The default view showing the image gallery with annotation overlays. Supports grid, compact, and table view modes. Drag and drop files here to add more images.
|
||||
|
||||
### Classes Tab
|
||||
|
||||
Manage annotation classes for your dataset:
|
||||
|
||||
- **Class histogram**: Bar chart showing annotation count per class with linear/log scale toggle
|
||||
- **Class table**: Sortable, searchable table with class name, label count, and image count
|
||||
- **Edit class names**: Click any class name to rename it inline
|
||||
- **Edit class colors**: Click a color swatch to change the class color
|
||||
- **Add new class**: Use the input at the bottom to add classes
|
||||
|
||||

|
||||
|
||||
!!! note "Log Scale for Imbalanced Datasets"
|
||||
|
||||
If your dataset has class imbalance (e.g., 10,000 "person" annotations but only 50 "bicycle"), use the `Log Scale` toggle on the class histogram to visualize all classes clearly.
|
||||
|
||||
### Charts Tab
|
||||
|
||||
Automatic statistics computed from your dataset:
|
||||
|
||||
| Chart | Description |
|
||||
| ------------------------ | -------------------------------------------------------------- |
|
||||
| **Split Distribution** | Donut chart of train/val/test image counts and labeled percent |
|
||||
| **Top Classes** | Donut chart of the 10 most frequent annotation classes |
|
||||
| **Image Widths** | Histogram of image width distribution with mean |
|
||||
| **Image Heights** | Histogram of image height distribution with mean |
|
||||
| **Points per Instance** | Polygon vertex or keypoint count per annotation (segment/pose) |
|
||||
| **Annotation Locations** | 2D heatmap of bounding box center positions |
|
||||
| **Image Dimensions** | 2D width vs height heatmap with aspect ratio guide lines |
|
||||
|
||||

|
||||
|
||||
!!! tip "Statistics Caching"
|
||||
|
||||
Statistics are cached for 5 minutes. Changes to annotations will be reflected after the cache expires.
|
||||
|
||||
!!! info "Fullscreen Heatmaps"
|
||||
|
||||
Click the expand button on any heatmap to view it in fullscreen mode. This provides a larger, more detailed view — useful for understanding spatial patterns in large datasets.
|
||||
|
||||
### Models Tab
|
||||
|
||||
View all models trained on this dataset in a searchable table:
|
||||
|
||||
| Column | Description |
|
||||
| -------- | ------------------------- |
|
||||
| Name | Model name with link |
|
||||
| Project | Parent project with icon |
|
||||
| Status | Training status badge |
|
||||
| Task | YOLO task type |
|
||||
| Epochs | Best epoch / total epochs |
|
||||
| mAP50-95 | Mean average precision |
|
||||
| mAP50 | mAP at IoU 0.50 |
|
||||
| Created | Creation date |
|
||||
|
||||

|
||||
|
||||
### Errors Tab
|
||||
|
||||
Images that failed processing are listed here with:
|
||||
|
||||
- **Error banner**: Total count of failed images and guidance
|
||||
- **Error table**: Filename, user-friendly error description, fix hints, and preview thumbnail
|
||||
- Common errors include corrupted files, unsupported formats, images too small (min 28px), and unsupported color modes
|
||||
|
||||
<!-- Screenshot: platform-datasets-errors-tab-processing-failures.avif -->
|
||||
|
||||
??? info "Common Processing Errors"
|
||||
|
||||
| Error | Cause | Fix |
|
||||
| -------------------------- | --------------------------------------- | -------------------------------------- |
|
||||
| Unable to read image file | Corrupted or unsupported format | Re-export from image editor |
|
||||
| Incomplete or corrupted | File was truncated during transfer | Re-download the original file |
|
||||
| Image too small | Minimum dimension below 28px | Use higher resolution source images |
|
||||
| Unsupported color mode | CMYK or indexed color mode | Convert to RGB mode |
|
||||
|
||||
## Export Dataset
|
||||
|
||||
Export your dataset in [NDJSON](../../datasets/detect/index.md#ultralytics-ndjson-format) format for offline use:
|
||||
|
||||
1. Click the download icon in the dataset header
|
||||
2. The NDJSON file downloads automatically
|
||||
|
||||

|
||||
|
||||
The NDJSON format stores one JSON object per line. The first line contains dataset metadata, followed by one line per image:
|
||||
|
||||
```json
|
||||
{"type": "dataset", "task": "detect", "name": "my-dataset", "description": "...", "url": "https://platform.ultralytics.com/...", "class_names": {"0": "person", "1": "car"}, "version": 1, "created_at": "2026-01-15T10:00:00Z", "updated_at": "2026-02-20T14:30:00Z"}
|
||||
{"type": "image", "file": "img001.jpg", "url": "https://...", "width": 640, "height": 480, "split": "train", "annotations": {"boxes": [[0, 0.5, 0.5, 0.2, 0.3]]}}
|
||||
{"type": "image", "file": "img002.jpg", "url": "https://...", "width": 1280, "height": 720, "split": "val"}
|
||||
```
|
||||
|
||||
!!! note "Signed URLs"
|
||||
|
||||
Image URLs in the exported NDJSON are signed and valid for 7 days. If you need fresh URLs, re-export the dataset.
|
||||
|
||||
See the [Ultralytics NDJSON format documentation](../../datasets/detect/index.md#ultralytics-ndjson-format) for full specification.
|
||||
|
||||
## Bulk Operations
|
||||
|
||||
Manage images in bulk using the table view's context menu:
|
||||
|
||||
### Move to Split
|
||||
|
||||
Reassign selected images to a different split within the same dataset:
|
||||
|
||||
1. Switch to **Table** view
|
||||
2. Select images using checkboxes
|
||||
3. Right-click to open the context menu
|
||||
4. Choose `Move to split` > **Train**, **Validation**, or **Test**
|
||||
|
||||
You can also drag and drop images onto the split filter tabs in grid view.
|
||||
|
||||
!!! tip "Organizing Train/Val Splits"
|
||||
|
||||
Upload all images to one dataset, then use bulk move-to-split to organize subsets into train, validation, and test splits.
|
||||
|
||||
### Bulk Delete
|
||||
|
||||
Delete multiple images at once:
|
||||
|
||||
1. Select images in the table view
|
||||
2. Right-click and choose `Delete`
|
||||
3. Confirm deletion
|
||||
|
||||
## Dataset URI
|
||||
|
||||
Reference Platform datasets using the `ul://` URI format (see [Using Platform Datasets](../api/index.md#using-platform-datasets)):
|
||||
|
||||
```
|
||||
ul://username/datasets/dataset-slug
|
||||
```
|
||||
|
||||
Use this URI to train models from anywhere:
|
||||
|
||||
=== "CLI"
|
||||
|
||||
```bash
|
||||
export ULTRALYTICS_API_KEY="your_api_key"
|
||||
yolo train model=yolo26n.pt data=ul://username/datasets/my-dataset epochs=100
|
||||
```
|
||||
|
||||
=== "Python"
|
||||
|
||||
```python
|
||||
from ultralytics import YOLO
|
||||
|
||||
model = YOLO("yolo26n.pt")
|
||||
model.train(data="ul://username/datasets/my-dataset", epochs=100)
|
||||
```
|
||||
|
||||
!!! example "Train Anywhere with Platform Data"
|
||||
|
||||
The `ul://` URI works from any environment:
|
||||
|
||||
- **Local machine**: Train on your hardware, data downloaded automatically
|
||||
- **Google Colab**: Access your Platform datasets in notebooks
|
||||
- **Remote servers**: Train on cloud VMs with full dataset access
|
||||
|
||||
## Available Licenses
|
||||
|
||||
The Platform supports the following licenses for datasets:
|
||||
|
||||
| License | Type |
|
||||
| --------------- | ------------------- |
|
||||
| None | No license selected |
|
||||
| CC0-1.0 | Public domain |
|
||||
| CC-BY-2.5 | Permissive |
|
||||
| CC-BY-4.0 | Permissive |
|
||||
| CC-BY-SA-4.0 | Copyleft |
|
||||
| CC-BY-NC-4.0 | Non-commercial |
|
||||
| CC-BY-NC-SA-4.0 | Copyleft |
|
||||
| CC-BY-ND-4.0 | No derivatives |
|
||||
| CC-BY-NC-ND-4.0 | Non-commercial |
|
||||
| Apache-2.0 | Permissive |
|
||||
| MIT | Permissive |
|
||||
| AGPL-3.0 | Copyleft |
|
||||
| GPL-3.0 | Copyleft |
|
||||
| Research-Only | Restricted |
|
||||
| Other | Custom |
|
||||
|
||||
!!! note "Copyleft Licenses"
|
||||
|
||||
When cloning a dataset with a copyleft license (AGPL-3.0, GPL-3.0, CC-BY-SA-4.0, CC-BY-NC-SA-4.0), the clone inherits the license and the license selector is locked.
|
||||
|
||||
## Visibility Settings
|
||||
|
||||
Control who can see your dataset:
|
||||
|
||||
| Setting | Description |
|
||||
| ----------- | ------------------------------- |
|
||||
| **Private** | Only you can access |
|
||||
| **Public** | Anyone can view on Explore page |
|
||||
|
||||
Visibility is set when creating a dataset in the `New Dataset` dialog using a toggle switch. Public datasets are visible on the [Explore](../explore.md) page.
|
||||
|
||||
## Edit Dataset
|
||||
|
||||
Dataset metadata is edited inline directly on the dataset page — no dialog needed:
|
||||
|
||||
- **Name**: Click the dataset name to edit it. Changes auto-save on blur or `Enter`.
|
||||
- **Description**: Click the description (or "Add a description..." placeholder) to edit. Changes auto-save.
|
||||
- **Task type**: Click the task badge to select a different task type.
|
||||
- **License**: Click the license selector to change the dataset license.
|
||||
|
||||
!!! warning "Changing Task Type"
|
||||
|
||||
Changing the task type may affect how existing annotations are visualized. Incompatible annotations won't be displayed.
|
||||
|
||||
## Clone Dataset
|
||||
|
||||
When viewing a public dataset you do not own, click `Clone Dataset` to create a copy in your workspace. The clone includes all images, annotations, and class definitions. If the original dataset has a copyleft license, the clone inherits it and the license selector is locked.
|
||||
|
||||
## Star and Share
|
||||
|
||||
- **Star**: Click the star button to bookmark a dataset. The star count is visible to all users.
|
||||
- **Share**: For public datasets, click the share button to copy a link or share to social platforms.
|
||||
|
||||
## Delete Dataset
|
||||
|
||||
Delete a dataset you no longer need:
|
||||
|
||||
1. Open dataset actions menu
|
||||
2. Click `Delete`
|
||||
3. Confirm in the dialog: "This will move [name] to trash. You can restore it within 30 days."
|
||||
|
||||
!!! note "Trash and Restore"
|
||||
|
||||
Deleted datasets are moved to Trash — not permanently deleted. You can restore them within 30 days from [`Settings > Trash`](../account/trash.md).
|
||||
|
||||
## Train on Dataset
|
||||
|
||||
Start training directly from your dataset:
|
||||
|
||||
1. Click `New Model` on the dataset page
|
||||
2. Select a project or create new
|
||||
3. Configure training parameters
|
||||
4. Start training
|
||||
|
||||
```mermaid
|
||||
graph LR
|
||||
A[Dataset] --> B[New Model]
|
||||
B --> C[Select Project]
|
||||
C --> D[Configure]
|
||||
D --> E[Start Training]
|
||||
|
||||
style A fill:#2196F3,color:#fff
|
||||
style E fill:#4CAF50,color:#fff
|
||||
```
|
||||
|
||||
See [Cloud Training](../train/cloud-training.md) for details.
|
||||
|
||||
## FAQ
|
||||
|
||||
### What happens to my data after upload?
|
||||
|
||||
Your data is processed and stored in your selected region (US, EU, or AP). Images are:
|
||||
|
||||
1. Validated for format and size
|
||||
2. Rejected if minimum dimension is below 28px
|
||||
3. Normalized if larger than 4096px (preserving aspect ratio; encoded for optimized storage)
|
||||
4. Stored using Content-Addressable Storage (CAS) with XXH3-128 hashing
|
||||
5. Thumbnails generated at 256px WebP for fast browsing
|
||||
|
||||
### How does storage work?
|
||||
|
||||
Ultralytics Platform uses **Content-Addressable Storage (CAS)** for efficient storage:
|
||||
|
||||
- **Deduplication**: Identical images uploaded by different users are stored only once
|
||||
- **Integrity**: XXH3-128 hashing ensures data integrity
|
||||
- **Efficiency**: Reduces storage costs and speeds up processing
|
||||
- **Regional**: Data stays in your selected region (US, EU, or AP)
|
||||
|
||||
### Can I add images to an existing dataset?
|
||||
|
||||
Yes, drag and drop files onto the dataset page or use the upload button to add additional images. New statistics will be computed automatically.
|
||||
|
||||
### How do I move images between splits?
|
||||
|
||||
Use the bulk move-to-split feature:
|
||||
|
||||
1. Select images in the table view
|
||||
2. Right-click and choose `Move to split`
|
||||
3. Select the target split (Train, Validation, or Test)
|
||||
|
||||
### What label formats are supported?
|
||||
|
||||
Ultralytics Platform supports two annotation formats for upload:
|
||||
|
||||
=== "YOLO Format"
|
||||
|
||||
One `.txt` file per image with normalized coordinates (0-1 range):
|
||||
|
||||
| Task | Format | Example |
|
||||
| -------- | -------------------------------- | ----------------------------------- |
|
||||
| Detect | `class cx cy w h` | `0 0.5 0.5 0.2 0.3` |
|
||||
| Segment | `class x1 y1 x2 y2 ...` | `0 0.1 0.1 0.9 0.1 0.9 0.9` |
|
||||
| Pose | `class cx cy w h kx1 ky1 v1 ...` | `0 0.5 0.5 0.2 0.3 0.6 0.7 2` |
|
||||
| OBB | `class x1 y1 x2 y2 x3 y3 x4 y4` | `0 0.1 0.1 0.9 0.1 0.9 0.9 0.1 0.9` |
|
||||
| Classify | Directory structure | `train/cats/`, `train/dogs/` |
|
||||
|
||||
Pose visibility flags: 0=not labeled, 1=labeled but occluded, 2=labeled and visible.
|
||||
|
||||
=== "COCO Format"
|
||||
|
||||
JSON files with `images`, `annotations`, and `categories` arrays. Supports detection (`bbox`), segmentation (polygon), and pose (`keypoints`) tasks. COCO uses absolute pixel coordinates which are automatically converted to normalized format during upload.
|
||||
165
docs/en/platform/data/index.md
Executable file
165
docs/en/platform/data/index.md
Executable file
@@ -0,0 +1,165 @@
|
||||
---
|
||||
comments: true
|
||||
description: Learn about data management in Ultralytics Platform including dataset upload, annotation tools, and statistics visualization for YOLO model training.
|
||||
keywords: Ultralytics Platform, data management, datasets, annotation, YOLO, computer vision, data preparation, labeling
|
||||
---
|
||||
|
||||
# Data Preparation
|
||||
|
||||
Data preparation is the foundation of successful [computer vision](https://www.ultralytics.com/glossary/computer-vision-cv) models. [Ultralytics Platform](https://platform.ultralytics.com) provides comprehensive tools for managing your training data, from upload through annotation to analysis.
|
||||
|
||||
## Overview
|
||||
|
||||
The Data section of Ultralytics Platform helps you:
|
||||
|
||||
- **Upload** images, videos, and archives (ZIP, TAR, GZ)
|
||||
- **Annotate** with manual drawing tools and SAM-powered smart labeling
|
||||
- **Analyze** your data with statistics and visualizations
|
||||
- **Export** in [NDJSON format](../../datasets/detect/index.md#ultralytics-ndjson-format) for local training
|
||||
|
||||

|
||||
|
||||
## Workflow
|
||||
|
||||
```mermaid
|
||||
graph LR
|
||||
A[Upload] --> B[Annotate]
|
||||
B --> C[Analyze]
|
||||
C --> D[Train]
|
||||
|
||||
style A fill:#4CAF50,color:#fff
|
||||
style B fill:#2196F3,color:#fff
|
||||
style C fill:#FF9800,color:#fff
|
||||
style D fill:#9C27B0,color:#fff
|
||||
```
|
||||
|
||||
| Stage | Description |
|
||||
| ------------ | ----------------------------------------------------------------------------------------------------- |
|
||||
| **Upload** | Import images, videos, or archives with automatic processing |
|
||||
| **Annotate** | Label data with bounding boxes, polygons, keypoints, or classifications |
|
||||
| **Analyze** | View class distributions, spatial heatmaps, and dimension statistics |
|
||||
| **Export** | Download in [NDJSON format](../../datasets/detect/index.md#ultralytics-ndjson-format) for offline use |
|
||||
|
||||
## Supported Tasks
|
||||
|
||||
Ultralytics Platform supports all 5 YOLO task types:
|
||||
|
||||
| Task | Description | Annotation Tool |
|
||||
| ------------------------------------------------ | ------------------------------------------- | ----------------- |
|
||||
| **[Detect](../../datasets/detect/index.md)** | Object detection with bounding boxes | Rectangle tool |
|
||||
| **[Segment](../../datasets/segment/index.md)** | Instance segmentation with pixel masks | Polygon tool |
|
||||
| **[Pose](../../datasets/pose/index.md)** | Keypoint estimation (17-point COCO format) | Keypoint tool |
|
||||
| **[OBB](../../datasets/obb/index.md)** | Oriented bounding boxes for rotated objects | Oriented box tool |
|
||||
| **[Classify](../../datasets/classify/index.md)** | Image-level classification | Class selector |
|
||||
|
||||
!!! info "Task Type Selection"
|
||||
|
||||
The task type is set when creating a dataset and determines which annotation tools are available. You can change it later from the dataset settings, but incompatible annotations won't be displayed after switching.
|
||||
|
||||
## Key Features
|
||||
|
||||
### Smart Storage
|
||||
|
||||
Ultralytics Platform uses Content-Addressable Storage (CAS) for efficient data management:
|
||||
|
||||
- **Deduplication**: Identical images stored only once via XXH3-128 hashing
|
||||
- **Integrity**: Hash-based addressing ensures data integrity
|
||||
- **Efficiency**: Optimized storage and fast processing
|
||||
|
||||
### Dataset URIs
|
||||
|
||||
Reference datasets using the `ul://` URI format (see [Using Platform Datasets](../api/index.md#using-platform-datasets)):
|
||||
|
||||
```bash
|
||||
yolo train data=ul://username/datasets/my-dataset
|
||||
```
|
||||
|
||||
This allows training on the platform's datasets from any machine with your [API key](../account/api-keys.md) configured.
|
||||
|
||||
!!! example "Use Platform Data from Python"
|
||||
|
||||
```python
|
||||
from ultralytics import YOLO
|
||||
|
||||
model = YOLO("yolo26n.pt")
|
||||
model.train(data="ul://username/datasets/my-dataset", epochs=100)
|
||||
```
|
||||
|
||||
### Dataset Tabs
|
||||
|
||||
Every dataset page provides five tabs:
|
||||
|
||||
| Tab | Description |
|
||||
| ----------- | ---------------------------------------------------------------------------- |
|
||||
| **Images** | Browse images in grid, compact, or table view with annotation overlays |
|
||||
| **Classes** | View and edit class names, colors, and label counts per class |
|
||||
| **Charts** | Automatic statistics: split distribution, class counts, heatmaps |
|
||||
| **Models** | [Models](../train/models.md) trained on this dataset with metrics and status |
|
||||
| **Errors** | Images that failed processing with error details and fix guidance |
|
||||
|
||||
### Statistics and Visualization
|
||||
|
||||
The `Charts` tab provides automatic analysis including:
|
||||
|
||||
- **Split Distribution**: Donut chart of train/val/test image counts
|
||||
- **Top Classes**: Donut chart of most frequent annotation classes
|
||||
- **Image Widths**: Histogram of image width distribution
|
||||
- **Image Heights**: Histogram of image height distribution
|
||||
- **Points per Instance**: Polygon vertex or keypoint count distribution (segment/pose datasets)
|
||||
- **Annotation Locations**: 2D heatmap of bounding box center positions
|
||||
- **Image Dimensions**: 2D heatmap of width vs height with aspect ratio guide lines
|
||||
|
||||
## Quick Links
|
||||
|
||||
- [**Datasets**](datasets.md): Upload and manage your training data
|
||||
- [**Annotation**](annotation.md): Label data with manual and AI-assisted tools
|
||||
|
||||
## FAQ
|
||||
|
||||
### What file formats are supported for upload?
|
||||
|
||||
Ultralytics Platform supports:
|
||||
|
||||
**Images:** JPEG, PNG, WebP, BMP, TIFF, HEIC, AVIF, JP2, DNG, MPO (max 50MB each)
|
||||
|
||||
**Videos:** MP4, WebM, MOV, AVI, MKV, M4V (max 1GB, frames extracted at 1 FPS, max 100 frames)
|
||||
|
||||
**Archives:** ZIP, TAR, TAR.GZ, TGZ, GZ (max 10GB) containing images with optional [YOLO-format labels](../../datasets/detect/index.md#ultralytics-yolo-format)
|
||||
|
||||
### What is the maximum dataset size?
|
||||
|
||||
Storage limits depend on your plan:
|
||||
|
||||
| Plan | Storage Limit |
|
||||
| ---------- | ------------- |
|
||||
| Free | 100 GB |
|
||||
| Pro | 500 GB |
|
||||
| Enterprise | Custom |
|
||||
|
||||
Individual file limits: Images 50MB, Videos 1GB, Archives 10GB
|
||||
|
||||
### Can I use my Platform datasets for local training?
|
||||
|
||||
Yes! Use the dataset URI format to train locally:
|
||||
|
||||
=== "CLI"
|
||||
|
||||
```bash
|
||||
export ULTRALYTICS_API_KEY="your_key"
|
||||
yolo train model=yolo26n.pt data=ul://username/datasets/my-dataset epochs=100
|
||||
```
|
||||
|
||||
=== "Python"
|
||||
|
||||
```python
|
||||
import os
|
||||
|
||||
os.environ["ULTRALYTICS_API_KEY"] = "your_key"
|
||||
|
||||
from ultralytics import YOLO
|
||||
|
||||
model = YOLO("yolo26n.pt")
|
||||
model.train(data="ul://username/datasets/my-dataset", epochs=100)
|
||||
```
|
||||
|
||||
Or export your dataset in [NDJSON format](../../datasets/detect/index.md#ultralytics-ndjson-format) for fully offline training.
|
||||
Reference in New Issue
Block a user