Spaces:
Sleeping
Sleeping
Commit Β·
add24bd
0
Parent(s):
RefDiffNet: A11_CA prebackbone demo (clean history, no images in git)
Browse filesThis view is limited to 50 files because it contains too many changes. Β See raw diff
- .gitattributes +9 -0
- .gitignore +8 -0
- README.md +104 -0
- app.py +92 -0
- deploy_to_refdiffnet.sh +52 -0
- extract_prebackbone_weights.py +83 -0
- fix_hf_binaries.sh +31 -0
- git_hf_sync.sh +63 -0
- prebackbone_infer.py +295 -0
- push_clean_space.sh +56 -0
- requirements.txt +13 -0
- setup.sh +10 -0
- vendor/pyproject.toml +194 -0
- vendor/ultralytics.egg-info/PKG-INFO +88 -0
- vendor/ultralytics.egg-info/SOURCES.txt +308 -0
- vendor/ultralytics.egg-info/dependency_links.txt +1 -0
- vendor/ultralytics.egg-info/entry_points.txt +3 -0
- vendor/ultralytics.egg-info/requires.txt +83 -0
- vendor/ultralytics.egg-info/top_level.txt +1 -0
- vendor/ultralytics/__init__.py +48 -0
- vendor/ultralytics/cfg/__init__.py +1039 -0
- vendor/ultralytics/cfg/datasets/Argoverse.yaml +78 -0
- vendor/ultralytics/cfg/datasets/DOTAv1.5.yaml +37 -0
- vendor/ultralytics/cfg/datasets/DOTAv1.yaml +36 -0
- vendor/ultralytics/cfg/datasets/GlobalWheat2020.yaml +68 -0
- vendor/ultralytics/cfg/datasets/HomeObjects-3K.yaml +32 -0
- vendor/ultralytics/cfg/datasets/ImageNet.yaml +2025 -0
- vendor/ultralytics/cfg/datasets/Objects365.yaml +447 -0
- vendor/ultralytics/cfg/datasets/SKU-110K.yaml +58 -0
- vendor/ultralytics/cfg/datasets/TT100K.yaml +346 -0
- vendor/ultralytics/cfg/datasets/VOC.yaml +102 -0
- vendor/ultralytics/cfg/datasets/VisDrone.yaml +87 -0
- vendor/ultralytics/cfg/datasets/african-wildlife.yaml +25 -0
- vendor/ultralytics/cfg/datasets/brain-tumor.yaml +22 -0
- vendor/ultralytics/cfg/datasets/carparts-seg.yaml +44 -0
- vendor/ultralytics/cfg/datasets/coco-pose.yaml +64 -0
- vendor/ultralytics/cfg/datasets/coco.yaml +118 -0
- vendor/ultralytics/cfg/datasets/coco12-formats.yaml +101 -0
- vendor/ultralytics/cfg/datasets/coco128-seg.yaml +101 -0
- vendor/ultralytics/cfg/datasets/coco128.yaml +101 -0
- vendor/ultralytics/cfg/datasets/coco8-grayscale.yaml +103 -0
- vendor/ultralytics/cfg/datasets/coco8-multispectral.yaml +104 -0
- vendor/ultralytics/cfg/datasets/coco8-pose.yaml +47 -0
- vendor/ultralytics/cfg/datasets/coco8-seg.yaml +101 -0
- vendor/ultralytics/cfg/datasets/coco8.yaml +101 -0
- vendor/ultralytics/cfg/datasets/construction-ppe.yaml +32 -0
- vendor/ultralytics/cfg/datasets/crack-seg.yaml +22 -0
- vendor/ultralytics/cfg/datasets/dog-pose.yaml +52 -0
- vendor/ultralytics/cfg/datasets/dota8-multispectral.yaml +38 -0
- vendor/ultralytics/cfg/datasets/dota8.yaml +35 -0
.gitattributes
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
*.jpg filter=lfs diff=lfs merge=lfs -text
|
| 2 |
+
*.jpeg filter=lfs diff=lfs merge=lfs -text
|
| 3 |
+
*.png filter=lfs diff=lfs merge=lfs -text
|
| 4 |
+
*.webp filter=lfs diff=lfs merge=lfs -text
|
| 5 |
+
*.pt filter=lfs diff=lfs merge=lfs -text
|
| 6 |
+
*.pth filter=lfs diff=lfs merge=lfs -text
|
| 7 |
+
*.onnx filter=lfs diff=lfs merge=lfs -text
|
| 8 |
+
*.ckpt filter=lfs diff=lfs merge=lfs -text
|
| 9 |
+
*.safetensors filter=lfs diff=lfs merge=lfs -text
|
.gitignore
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
__pycache__/
|
| 2 |
+
*.pyc
|
| 3 |
+
.gradio/
|
| 4 |
+
*.log
|
| 5 |
+
.DS_Store
|
| 6 |
+
# Full YOLO checkpoint optional locally; Space ships prebackbone_a11_ca.pt only
|
| 7 |
+
weights/best.pt
|
| 8 |
+
examples/
|
README.md
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
title: RefDiffNet
|
| 3 |
+
emoji: π¬
|
| 4 |
+
colorFrom: blue
|
| 5 |
+
colorTo: green
|
| 6 |
+
sdk: gradio
|
| 7 |
+
sdk_version: "4.44.0"
|
| 8 |
+
app_file: app.py
|
| 9 |
+
pinned: false
|
| 10 |
+
license: agpl-3.0
|
| 11 |
+
---
|
| 12 |
+
|
| 13 |
+
# RefDiffNet β PCB ReferenceβDefect Enrichment (A11_CA)
|
| 14 |
+
|
| 15 |
+
**Space:** [vinayedula/RefDiffNet](https://huggingface.co/spaces/vinayedula/RefDiffNet)
|
| 16 |
+
|
| 17 |
+
Gradio demo for the **A11_CA** prebackbone trained with YOLO12n on HR-IPCB.
|
| 18 |
+
|
| 19 |
+
- **Inputs:** defect PCB image + golden reference image
|
| 20 |
+
- **Output:** enriched image (`enriched = defect + Ξ± Β· gate Β· delta`)
|
| 21 |
+
|
| 22 |
+
Weights: `weights/prebackbone_a11_ca.pt` (~few MB, prebackbone only β not full `best.pt`)
|
| 23 |
+
|
| 24 |
+
## Deploy to Hugging Face Spaces
|
| 25 |
+
|
| 26 |
+
### 1. Prepare the Space folder locally
|
| 27 |
+
|
| 28 |
+
From the VYOLO repo root:
|
| 29 |
+
|
| 30 |
+
```bash
|
| 31 |
+
cd /mnt/data/vinay/work/VYOLO
|
| 32 |
+
bash hf_prebackbone_demo/prepare_space.sh
|
| 33 |
+
```
|
| 34 |
+
|
| 35 |
+
This will:
|
| 36 |
+
|
| 37 |
+
- Copy the custom **Ultralytics** fork into `hf_prebackbone_demo/vendor/`
|
| 38 |
+
- Extract `prebackbone_a11_ca.pt` from `best.pt` (small file for the Space)
|
| 39 |
+
- Copy example image pairs into `hf_prebackbone_demo/examples/`
|
| 40 |
+
|
| 41 |
+
### 2. Create a new Space on Hugging Face
|
| 42 |
+
|
| 43 |
+
1. Go to [huggingface.co/new-space](https://huggingface.co/new-space)
|
| 44 |
+
2. Choose **Gradio** SDK
|
| 45 |
+
3. Clone the empty Space repo locally
|
| 46 |
+
|
| 47 |
+
### 3. Push to [vinayedula/RefDiffNet](https://huggingface.co/spaces/vinayedula/RefDiffNet)
|
| 48 |
+
|
| 49 |
+
```bash
|
| 50 |
+
cd hf_prebackbone_demo
|
| 51 |
+
bash deploy_to_refdiffnet.sh
|
| 52 |
+
```
|
| 53 |
+
|
| 54 |
+
Or manually:
|
| 55 |
+
|
| 56 |
+
```bash
|
| 57 |
+
git clone https://huggingface.co/spaces/vinayedula/RefDiffNet
|
| 58 |
+
cd RefDiffNet
|
| 59 |
+
# copy app.py, vendor/, weights/prebackbone_a11_ca.pt, examples/, etc.
|
| 60 |
+
git add . && git commit -m "RefDiffNet demo" && git push
|
| 61 |
+
```
|
| 62 |
+
|
| 63 |
+
> **Note:** `prebackbone_a11_ca.pt` is only a few MB (no LFS needed). Full `best.pt` is optional.
|
| 64 |
+
|
| 65 |
+
### 4. Space settings (recommended)
|
| 66 |
+
|
| 67 |
+
| Setting | Value |
|
| 68 |
+
|---------|--------|
|
| 69 |
+
| Hardware | CPU Basic (works) or **GPU** for faster loads |
|
| 70 |
+
| Secrets | Optional: `HF_TOKEN` if weights are in a private model repo |
|
| 71 |
+
|
| 72 |
+
### Alternative: host weights on the Hub
|
| 73 |
+
|
| 74 |
+
Upload `prebackbone_a11_ca.pt` to a model repo, then set:
|
| 75 |
+
|
| 76 |
+
```
|
| 77 |
+
HF_MODEL_REPO=YOUR_USER/YOUR_MODEL
|
| 78 |
+
```
|
| 79 |
+
|
| 80 |
+
The app downloads `prebackbone_a11_ca.pt` from that repo.
|
| 81 |
+
|
| 82 |
+
## Run locally
|
| 83 |
+
|
| 84 |
+
```bash
|
| 85 |
+
cd hf_prebackbone_demo
|
| 86 |
+
pip install -r requirements.txt
|
| 87 |
+
pip install -e ../ultralytics # custom fork with A11_CA
|
| 88 |
+
python extract_prebackbone_weights.py --ckpt /path/to/best.pt
|
| 89 |
+
export PREBACKBONE_ONLY_WEIGHTS=weights/prebackbone_a11_ca.pt
|
| 90 |
+
python app.py
|
| 91 |
+
```
|
| 92 |
+
|
| 93 |
+
Open http://localhost:7860
|
| 94 |
+
|
| 95 |
+
## Environment variables
|
| 96 |
+
|
| 97 |
+
| Variable | Description |
|
| 98 |
+
|----------|-------------|
|
| 99 |
+
| `PREBACKBONE_ONLY_WEIGHTS` | Path to `prebackbone_a11_ca.pt` |
|
| 100 |
+
| `PREBACKBONE_FULL_CKPT` | Full `best.pt` (only for one-time extraction) |
|
| 101 |
+
| `HF_MODEL_REPO` | Hub repo with `prebackbone_a11_ca.pt` |
|
| 102 |
+
| `PREBACKBONE_IMGSZ` | Letterbox size (default `640`) |
|
| 103 |
+
| `ULTRALYTICS_ROOT` | Path to ultralytics repo if not vendored |
|
| 104 |
+
| `PORT` | Gradio port (default `7860`) |
|
app.py
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""Gradio demo: PCB defect + golden reference -> enriched image (A11_CA prebackbone)."""
|
| 2 |
+
|
| 3 |
+
from __future__ import annotations
|
| 4 |
+
|
| 5 |
+
import os
|
| 6 |
+
from pathlib import Path
|
| 7 |
+
|
| 8 |
+
import gradio as gr
|
| 9 |
+
import numpy as np
|
| 10 |
+
from PIL import Image
|
| 11 |
+
|
| 12 |
+
from prebackbone_infer import enrich_pair, get_enricher
|
| 13 |
+
|
| 14 |
+
EXAMPLES_DIR = Path(__file__).resolve().parent / "examples"
|
| 15 |
+
TITLE = "RefDiffNet β PCB ReferenceβDefect Enrichment"
|
| 16 |
+
DESCRIPTION = """
|
| 17 |
+
Upload a **defect PCB image** and its **golden reference** (same board, no defect).
|
| 18 |
+
The trained A11_CA prebackbone fuses them into an **enriched** image used by YOLO detection.
|
| 19 |
+
|
| 20 |
+
Formula: `enriched = defect + Ξ± Β· gate Β· delta`
|
| 21 |
+
"""
|
| 22 |
+
|
| 23 |
+
|
| 24 |
+
def _examples() -> list[list[str]]:
|
| 25 |
+
if not EXAMPLES_DIR.exists():
|
| 26 |
+
return []
|
| 27 |
+
inputs = sorted(EXAMPLES_DIR.glob("*_input.jpg"))
|
| 28 |
+
out: list[list[str]] = []
|
| 29 |
+
for inp in inputs:
|
| 30 |
+
ref = EXAMPLES_DIR / inp.name.replace("_input.", "_reference.")
|
| 31 |
+
if ref.exists():
|
| 32 |
+
out.append([str(inp), str(ref)])
|
| 33 |
+
return out
|
| 34 |
+
|
| 35 |
+
|
| 36 |
+
def run_demo(defect_img, reference_img):
|
| 37 |
+
if defect_img is None or reference_img is None:
|
| 38 |
+
raise gr.Error("Please upload both defect and reference images.")
|
| 39 |
+
|
| 40 |
+
defect_rgb, ref_rgb, enriched_rgb = enrich_pair(defect_img, reference_img)
|
| 41 |
+
|
| 42 |
+
# Side-by-side comparison for the demo panel
|
| 43 |
+
h = max(defect_rgb.shape[0], ref_rgb.shape[0], enriched_rgb.shape[0])
|
| 44 |
+
|
| 45 |
+
def _pad(im: np.ndarray) -> np.ndarray:
|
| 46 |
+
if im.shape[0] == h:
|
| 47 |
+
return im
|
| 48 |
+
pad = h - im.shape[0]
|
| 49 |
+
return np.pad(im, ((0, pad), (0, 0), (0, 0)), mode="constant", constant_values=114)
|
| 50 |
+
|
| 51 |
+
row = np.concatenate([_pad(defect_rgb), _pad(ref_rgb), _pad(enriched_rgb)], axis=1)
|
| 52 |
+
return enriched_rgb, row
|
| 53 |
+
|
| 54 |
+
|
| 55 |
+
def _preload_model():
|
| 56 |
+
try:
|
| 57 |
+
get_enricher()
|
| 58 |
+
except FileNotFoundError as e:
|
| 59 |
+
print(f"[warn] Model not loaded yet: {e}")
|
| 60 |
+
|
| 61 |
+
|
| 62 |
+
if __name__ == "__main__":
|
| 63 |
+
_preload_model()
|
| 64 |
+
|
| 65 |
+
with gr.Blocks(title=TITLE) as demo:
|
| 66 |
+
gr.Markdown(f"# {TITLE}")
|
| 67 |
+
gr.Markdown(DESCRIPTION)
|
| 68 |
+
|
| 69 |
+
with gr.Row():
|
| 70 |
+
defect_in = gr.Image(label="Defect image (input)", type="numpy", image_mode="RGB")
|
| 71 |
+
ref_in = gr.Image(label="Golden reference", type="numpy", image_mode="RGB")
|
| 72 |
+
|
| 73 |
+
run_btn = gr.Button("Generate enriched image", variant="primary")
|
| 74 |
+
with gr.Row():
|
| 75 |
+
enriched_out = gr.Image(label="Enriched output", type="numpy", image_mode="RGB")
|
| 76 |
+
compare_out = gr.Image(
|
| 77 |
+
label="Defect | Reference | Enriched",
|
| 78 |
+
type="numpy",
|
| 79 |
+
image_mode="RGB",
|
| 80 |
+
)
|
| 81 |
+
|
| 82 |
+
run_btn.click(fn=run_demo, inputs=[defect_in, ref_in], outputs=[enriched_out, compare_out])
|
| 83 |
+
|
| 84 |
+
ex = _examples()
|
| 85 |
+
if ex:
|
| 86 |
+
gr.Examples(examples=ex, inputs=[defect_in, ref_in], label="Example pairs")
|
| 87 |
+
|
| 88 |
+
demo.launch(
|
| 89 |
+
server_name="0.0.0.0",
|
| 90 |
+
server_port=int(os.environ.get("PORT", "7860")),
|
| 91 |
+
share=os.environ.get("GRADIO_SHARE", "").lower() in {"1", "true", "yes"},
|
| 92 |
+
)
|
deploy_to_refdiffnet.sh
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/usr/bin/env bash
|
| 2 |
+
# Push hf_prebackbone_demo to https://huggingface.co/spaces/vinayedula/RefDiffNet
|
| 3 |
+
set -euo pipefail
|
| 4 |
+
cd "$(dirname "$0")"
|
| 5 |
+
|
| 6 |
+
SPACE_REMOTE="${SPACE_REMOTE:-https://huggingface.co/spaces/vinayedula/RefDiffNet}"
|
| 7 |
+
|
| 8 |
+
if [[ ! -f weights/prebackbone_a11_ca.pt ]]; then
|
| 9 |
+
echo "Run: python extract_prebackbone_weights.py --ckpt /path/to/best.pt"
|
| 10 |
+
exit 1
|
| 11 |
+
fi
|
| 12 |
+
|
| 13 |
+
git init
|
| 14 |
+
git lfs install 2>/dev/null || true
|
| 15 |
+
|
| 16 |
+
git add \
|
| 17 |
+
app.py \
|
| 18 |
+
prebackbone_infer.py \
|
| 19 |
+
extract_prebackbone_weights.py \
|
| 20 |
+
deploy_to_refdiffnet.sh \
|
| 21 |
+
prepare_space.sh \
|
| 22 |
+
requirements.txt \
|
| 23 |
+
setup.sh \
|
| 24 |
+
README.md \
|
| 25 |
+
.gitattributes \
|
| 26 |
+
.gitignore \
|
| 27 |
+
vendor/ \
|
| 28 |
+
examples/ \
|
| 29 |
+
weights/prebackbone_a11_ca.pt
|
| 30 |
+
|
| 31 |
+
# Commit only if there are staged changes
|
| 32 |
+
if ! git diff --cached --quiet; then
|
| 33 |
+
git commit -m "RefDiffNet: A11_CA prebackbone enrichment demo"
|
| 34 |
+
elif ! git rev-parse HEAD >/dev/null 2>&1; then
|
| 35 |
+
echo "ERROR: No commit to push. Check git add / files."
|
| 36 |
+
exit 1
|
| 37 |
+
else
|
| 38 |
+
echo "No new changes; pushing existing commit."
|
| 39 |
+
fi
|
| 40 |
+
|
| 41 |
+
# HF Spaces use 'main' (git init often creates 'master')
|
| 42 |
+
git branch -M main
|
| 43 |
+
|
| 44 |
+
if git remote get-url origin &>/dev/null; then
|
| 45 |
+
git remote set-url origin "${SPACE_REMOTE}"
|
| 46 |
+
else
|
| 47 |
+
git remote add origin "${SPACE_REMOTE}"
|
| 48 |
+
fi
|
| 49 |
+
|
| 50 |
+
echo "Pushing branch 'main' to ${SPACE_REMOTE}"
|
| 51 |
+
echo "HF token as password: https://huggingface.co/settings/tokens"
|
| 52 |
+
git push -u origin main
|
extract_prebackbone_weights.py
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/usr/bin/env python3
|
| 2 |
+
"""One-time: extract prebackbone weights from a full YOLO best.pt checkpoint."""
|
| 3 |
+
|
| 4 |
+
from __future__ import annotations
|
| 5 |
+
|
| 6 |
+
import argparse
|
| 7 |
+
import sys
|
| 8 |
+
from pathlib import Path
|
| 9 |
+
|
| 10 |
+
import torch
|
| 11 |
+
|
| 12 |
+
# Allow running before vendor is installed
|
| 13 |
+
_HERE = Path(__file__).resolve().parent
|
| 14 |
+
for base in (_HERE / "vendor", _HERE.parent / "ultralytics"):
|
| 15 |
+
if (base / "ultralytics" / "__init__.py").exists():
|
| 16 |
+
sys.path.insert(0, str(base))
|
| 17 |
+
break
|
| 18 |
+
|
| 19 |
+
|
| 20 |
+
def _clean_state_dict(state: dict) -> dict:
|
| 21 |
+
"""Drop thop profiling keys (total_ops, total_params) not in nn.Module."""
|
| 22 |
+
skip = ("total_ops", "total_params")
|
| 23 |
+
return {k: v for k, v in state.items() if not any(k == s or k.endswith(f".{s}") for s in skip)}
|
| 24 |
+
|
| 25 |
+
|
| 26 |
+
def extract(
|
| 27 |
+
full_ckpt: Path,
|
| 28 |
+
out_path: Path,
|
| 29 |
+
prebackbone_name: str | None = None,
|
| 30 |
+
) -> Path:
|
| 31 |
+
from ultralytics.nn.tasks import torch_safe_load
|
| 32 |
+
|
| 33 |
+
ckpt, _ = torch_safe_load(str(full_ckpt))
|
| 34 |
+
train_args = ckpt.get("train_args") or {}
|
| 35 |
+
name = (prebackbone_name or train_args.get("prebackbone") or "A11_CA").upper()
|
| 36 |
+
channels = int(train_args.get("channels", 3) or 3)
|
| 37 |
+
|
| 38 |
+
model = (ckpt.get("ema") or ckpt.get("model")).float()
|
| 39 |
+
pb = getattr(model, "prebackbone", None)
|
| 40 |
+
if pb is None:
|
| 41 |
+
raise RuntimeError(f"No prebackbone in {full_ckpt}")
|
| 42 |
+
|
| 43 |
+
state = _clean_state_dict(pb.state_dict())
|
| 44 |
+
|
| 45 |
+
# Save only tensors + metadata (no YOLO backbone/head)
|
| 46 |
+
payload = {
|
| 47 |
+
"prebackbone": name,
|
| 48 |
+
"channels": channels,
|
| 49 |
+
"state_dict": state,
|
| 50 |
+
"source_checkpoint": str(full_ckpt.resolve()),
|
| 51 |
+
}
|
| 52 |
+
out_path.parent.mkdir(parents=True, exist_ok=True)
|
| 53 |
+
torch.save(payload, out_path)
|
| 54 |
+
|
| 55 |
+
n_params = sum(t.numel() for t in payload["state_dict"].values())
|
| 56 |
+
size_mb = out_path.stat().st_size / (1024 * 1024)
|
| 57 |
+
print(f"Saved {out_path} ({size_mb:.2f} MB, {n_params:,} parameters, type={name})")
|
| 58 |
+
return out_path
|
| 59 |
+
|
| 60 |
+
|
| 61 |
+
def main() -> None:
|
| 62 |
+
p = argparse.ArgumentParser(description="Extract prebackbone-only weights from best.pt")
|
| 63 |
+
p.add_argument(
|
| 64 |
+
"--ckpt",
|
| 65 |
+
type=Path,
|
| 66 |
+
default=_HERE / "weights" / "best.pt",
|
| 67 |
+
help="Full YOLO checkpoint (best.pt)",
|
| 68 |
+
)
|
| 69 |
+
p.add_argument(
|
| 70 |
+
"--out",
|
| 71 |
+
type=Path,
|
| 72 |
+
default=_HERE / "weights" / "prebackbone_a11_ca.pt",
|
| 73 |
+
help="Output path for prebackbone-only weights",
|
| 74 |
+
)
|
| 75 |
+
p.add_argument("--name", type=str, default=None, help="Override prebackbone type (default: from train_args)")
|
| 76 |
+
args = p.parse_args()
|
| 77 |
+
if not args.ckpt.exists():
|
| 78 |
+
raise SystemExit(f"Checkpoint not found: {args.ckpt}")
|
| 79 |
+
extract(args.ckpt, args.out, args.name)
|
| 80 |
+
|
| 81 |
+
|
| 82 |
+
if __name__ == "__main__":
|
| 83 |
+
main()
|
fix_hf_binaries.sh
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/usr/bin/env bash
|
| 2 |
+
# Fix HF push rejection: binary files must use Git LFS (images + weights).
|
| 3 |
+
set -euo pipefail
|
| 4 |
+
cd "$(dirname "$0")"
|
| 5 |
+
|
| 6 |
+
unset GIT_ASKPASS SSH_ASKPASS
|
| 7 |
+
|
| 8 |
+
echo "==> Installing Git LFS tracking for images and weights"
|
| 9 |
+
git lfs install
|
| 10 |
+
git lfs track "*.jpg" "*.jpeg" "*.png" "*.webp" "*.pt" "*.pth"
|
| 11 |
+
|
| 12 |
+
echo "==> Removing unneeded vendor binaries (not used by prebackbone demo)"
|
| 13 |
+
rm -rf vendor/ultralytics/assets
|
| 14 |
+
rm -f vendor/ultralytics/*.pt
|
| 15 |
+
|
| 16 |
+
git rm -rf --cached vendor/ultralytics/assets 2>/dev/null || true
|
| 17 |
+
git rm -f --cached vendor/ultralytics/*.pt 2>/dev/null || true
|
| 18 |
+
|
| 19 |
+
echo "==> Re-staging images via LFS"
|
| 20 |
+
git rm -r --cached examples 2>/dev/null || true
|
| 21 |
+
git add .gitattributes
|
| 22 |
+
git add examples/
|
| 23 |
+
git add weights/prebackbone_a11_ca.pt
|
| 24 |
+
git add -A
|
| 25 |
+
|
| 26 |
+
if ! git diff --cached --quiet; then
|
| 27 |
+
git commit -m "Track binaries with Git LFS; drop unused vendor assets"
|
| 28 |
+
fi
|
| 29 |
+
|
| 30 |
+
echo "==> Force push (run: FORCE_PUSH=1 bash git_hf_sync.sh)"
|
| 31 |
+
echo " Or: unset GIT_ASKPASS && git push -u origin main --force"
|
git_hf_sync.sh
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/usr/bin/env bash
|
| 2 |
+
# Sync to Hugging Face Space β bypasses Cursor's broken GIT_ASKPASS.
|
| 3 |
+
set -euo pipefail
|
| 4 |
+
cd "$(dirname "$0")"
|
| 5 |
+
|
| 6 |
+
unset GIT_ASKPASS SSH_ASKPASS
|
| 7 |
+
|
| 8 |
+
SPACE_REMOTE="${SPACE_REMOTE:-https://huggingface.co/spaces/vinayedula/RefDiffNet}"
|
| 9 |
+
USER="${HF_USER:-vinayedula}"
|
| 10 |
+
FORCE="${FORCE_PUSH:-0}"
|
| 11 |
+
|
| 12 |
+
if ! command -v hf >/dev/null 2>&1; then
|
| 13 |
+
echo "ERROR: 'hf' not found. Run: pip install -U huggingface_hub"
|
| 14 |
+
exit 1
|
| 15 |
+
fi
|
| 16 |
+
|
| 17 |
+
TOKEN="$(hf auth token 2>/dev/null | tr -d '[:space:]')"
|
| 18 |
+
if [[ -z "${TOKEN}" ]]; then
|
| 19 |
+
echo "ERROR: No HF token. Run: hf auth login"
|
| 20 |
+
exit 1
|
| 21 |
+
fi
|
| 22 |
+
|
| 23 |
+
CRED_FILE="${HOME}/.git-credentials"
|
| 24 |
+
LINE="https://${USER}:${TOKEN}@huggingface.co"
|
| 25 |
+
if [[ -f "${CRED_FILE}" ]] && grep -q "huggingface.co" "${CRED_FILE}" 2>/dev/null; then
|
| 26 |
+
grep -v "huggingface.co" "${CRED_FILE}" > "${CRED_FILE}.tmp" || true
|
| 27 |
+
mv "${CRED_FILE}.tmp" "${CRED_FILE}"
|
| 28 |
+
fi
|
| 29 |
+
echo "${LINE}" >> "${CRED_FILE}"
|
| 30 |
+
chmod 600 "${CRED_FILE}"
|
| 31 |
+
|
| 32 |
+
git branch -M main 2>/dev/null || true
|
| 33 |
+
git remote set-url origin "${SPACE_REMOTE}"
|
| 34 |
+
|
| 35 |
+
# Clean up a stuck rebase from a previous attempt
|
| 36 |
+
if [[ -d .git/rebase-merge ]] || [[ -d .git/rebase-apply ]]; then
|
| 37 |
+
echo "==> Aborting in-progress rebase..."
|
| 38 |
+
git rebase --abort 2>/dev/null || true
|
| 39 |
+
fi
|
| 40 |
+
|
| 41 |
+
git add -A
|
| 42 |
+
if ! git diff --cached --quiet 2>/dev/null; then
|
| 43 |
+
git commit -m "RefDiffNet demo" || true
|
| 44 |
+
fi
|
| 45 |
+
|
| 46 |
+
if [[ "${FORCE}" == "1" ]]; then
|
| 47 |
+
echo "==> Force pushing to ${SPACE_REMOTE}"
|
| 48 |
+
git push -u origin main --force
|
| 49 |
+
else
|
| 50 |
+
echo "==> Pulling remote..."
|
| 51 |
+
if git pull origin main --rebase --allow-unrelated-histories; then
|
| 52 |
+
echo "==> Pushing to ${SPACE_REMOTE}"
|
| 53 |
+
git push -u origin main
|
| 54 |
+
else
|
| 55 |
+
echo ""
|
| 56 |
+
echo "Pull/rebase failed (conflicts?). Options:"
|
| 57 |
+
echo " 1) Resolve conflicts, then: git rebase --continue && git push -u origin main"
|
| 58 |
+
echo " 2) Overwrite remote Space: FORCE_PUSH=1 bash git_hf_sync.sh"
|
| 59 |
+
exit 1
|
| 60 |
+
fi
|
| 61 |
+
fi
|
| 62 |
+
|
| 63 |
+
echo "==> Done: https://huggingface.co/spaces/${USER}/RefDiffNet"
|
prebackbone_infer.py
ADDED
|
@@ -0,0 +1,295 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""Prebackbone enrichment inference (A11_CA) β loads prebackbone weights only."""
|
| 2 |
+
|
| 3 |
+
from __future__ import annotations
|
| 4 |
+
|
| 5 |
+
import os
|
| 6 |
+
from pathlib import Path
|
| 7 |
+
from typing import Any
|
| 8 |
+
|
| 9 |
+
import cv2
|
| 10 |
+
import numpy as np
|
| 11 |
+
import torch
|
| 12 |
+
from PIL import Image
|
| 13 |
+
|
| 14 |
+
IMGSZ = int(os.environ.get("PREBACKBONE_IMGSZ", "640"))
|
| 15 |
+
PREBACKBONE_ONLY_NAME = "prebackbone_a11_ca.pt"
|
| 16 |
+
|
| 17 |
+
|
| 18 |
+
def _resolve_ultralytics_root() -> Path | None:
|
| 19 |
+
here = Path(__file__).resolve().parent
|
| 20 |
+
for base in (
|
| 21 |
+
here / "vendor",
|
| 22 |
+
here.parent / "ultralytics",
|
| 23 |
+
Path(os.environ.get("ULTRALYTICS_ROOT", "")).expanduser(),
|
| 24 |
+
):
|
| 25 |
+
if not base:
|
| 26 |
+
continue
|
| 27 |
+
if (base / "ultralytics" / "__init__.py").exists():
|
| 28 |
+
return base
|
| 29 |
+
if base.name == "ultralytics" and (base / "__init__.py").exists():
|
| 30 |
+
return base.parent
|
| 31 |
+
return None
|
| 32 |
+
|
| 33 |
+
|
| 34 |
+
def _ensure_ultralytics_import() -> None:
|
| 35 |
+
import sys
|
| 36 |
+
|
| 37 |
+
root = _resolve_ultralytics_root()
|
| 38 |
+
if root is not None:
|
| 39 |
+
root_str = str(root.resolve())
|
| 40 |
+
if root_str not in sys.path:
|
| 41 |
+
sys.path.insert(0, root_str)
|
| 42 |
+
|
| 43 |
+
|
| 44 |
+
def _here() -> Path:
|
| 45 |
+
return Path(__file__).resolve().parent
|
| 46 |
+
|
| 47 |
+
|
| 48 |
+
def _prebackbone_only_path() -> Path:
|
| 49 |
+
env = os.environ.get("PREBACKBONE_ONLY_WEIGHTS", "").strip()
|
| 50 |
+
if env:
|
| 51 |
+
return Path(env).expanduser()
|
| 52 |
+
return _here() / "weights" / PREBACKBONE_ONLY_NAME
|
| 53 |
+
|
| 54 |
+
|
| 55 |
+
def _full_checkpoint_path() -> Path | None:
|
| 56 |
+
"""Fallback full YOLO ckpt β only used to auto-extract prebackbone weights."""
|
| 57 |
+
env = os.environ.get("PREBACKBONE_FULL_CKPT", "").strip()
|
| 58 |
+
if env:
|
| 59 |
+
p = Path(env).expanduser()
|
| 60 |
+
return p if p.exists() else None
|
| 61 |
+
for candidate in (
|
| 62 |
+
_here() / "weights" / "best.pt",
|
| 63 |
+
_here().parent
|
| 64 |
+
/ "ultralytics"
|
| 65 |
+
/ "Proposed"
|
| 66 |
+
/ "yolo12_training"
|
| 67 |
+
/ "HRIPCB_Results"
|
| 68 |
+
/ "yolo12n_hripcb_200epochs_batch16"
|
| 69 |
+
/ "weights"
|
| 70 |
+
/ "best.pt",
|
| 71 |
+
):
|
| 72 |
+
if candidate.exists():
|
| 73 |
+
return candidate
|
| 74 |
+
return None
|
| 75 |
+
|
| 76 |
+
|
| 77 |
+
def _download_hf_file(repo_id: str, filename: str) -> Path:
|
| 78 |
+
from huggingface_hub import hf_hub_download
|
| 79 |
+
|
| 80 |
+
dest_dir = _here() / "weights"
|
| 81 |
+
dest_dir.mkdir(parents=True, exist_ok=True)
|
| 82 |
+
return Path(hf_hub_download(repo_id=repo_id, filename=filename, local_dir=str(dest_dir)))
|
| 83 |
+
|
| 84 |
+
|
| 85 |
+
def _resolve_weights_path() -> Path:
|
| 86 |
+
"""Prefer small prebackbone-only file; optional HF hub download."""
|
| 87 |
+
pb_only = _prebackbone_only_path()
|
| 88 |
+
if pb_only.exists():
|
| 89 |
+
return pb_only
|
| 90 |
+
|
| 91 |
+
hf_repo = os.environ.get("HF_MODEL_REPO", "").strip()
|
| 92 |
+
if hf_repo:
|
| 93 |
+
try:
|
| 94 |
+
return _download_hf_file(hf_repo, PREBACKBONE_ONLY_NAME)
|
| 95 |
+
except Exception:
|
| 96 |
+
pass # try full ckpt filename below
|
| 97 |
+
env_weights = os.environ.get("PREBACKBONE_WEIGHTS", PREBACKBONE_ONLY_NAME)
|
| 98 |
+
return _download_hf_file(hf_repo, env_weights)
|
| 99 |
+
|
| 100 |
+
env = os.environ.get("PREBACKBONE_WEIGHTS", "").strip()
|
| 101 |
+
if env and Path(env).expanduser().exists():
|
| 102 |
+
return Path(env).expanduser()
|
| 103 |
+
|
| 104 |
+
return pb_only
|
| 105 |
+
|
| 106 |
+
|
| 107 |
+
def _maybe_extract_from_full_ckpt(pb_only_path: Path) -> Path:
|
| 108 |
+
"""If only best.pt exists, extract prebackbone tensors once."""
|
| 109 |
+
if pb_only_path.exists():
|
| 110 |
+
return pb_only_path
|
| 111 |
+
full = _full_checkpoint_path()
|
| 112 |
+
if full is None:
|
| 113 |
+
return pb_only_path
|
| 114 |
+
from extract_prebackbone_weights import extract
|
| 115 |
+
|
| 116 |
+
print(f"[prebackbone] Extracting weights from {full} -> {pb_only_path}")
|
| 117 |
+
return extract(full, pb_only_path)
|
| 118 |
+
|
| 119 |
+
|
| 120 |
+
def _filter_state_dict(state: dict, module: torch.nn.Module) -> dict:
|
| 121 |
+
"""Keep only keys that belong to the module (drops thop total_ops/total_params)."""
|
| 122 |
+
expected = set(module.state_dict().keys())
|
| 123 |
+
filtered = {k: v for k, v in state.items() if k in expected}
|
| 124 |
+
if len(filtered) < len(expected):
|
| 125 |
+
missing = expected - set(filtered.keys())
|
| 126 |
+
raise RuntimeError(f"Prebackbone weights missing keys: {sorted(missing)[:8]}...")
|
| 127 |
+
return filtered
|
| 128 |
+
|
| 129 |
+
|
| 130 |
+
def _load_prebackbone_module(weights_path: Path, device: torch.device) -> torch.nn.Module:
|
| 131 |
+
_ensure_ultralytics_import()
|
| 132 |
+
from ultralytics.nn.prebackbone import build_prebackbone
|
| 133 |
+
|
| 134 |
+
if not weights_path.exists():
|
| 135 |
+
weights_path = _maybe_extract_from_full_ckpt(weights_path)
|
| 136 |
+
|
| 137 |
+
if not weights_path.exists():
|
| 138 |
+
raise FileNotFoundError(
|
| 139 |
+
f"Prebackbone weights not found: {weights_path}\n"
|
| 140 |
+
"Run: python extract_prebackbone_weights.py --ckpt weights/best.pt\n"
|
| 141 |
+
"Or set PREBACKBONE_ONLY_WEIGHTS / HF_MODEL_REPO."
|
| 142 |
+
)
|
| 143 |
+
|
| 144 |
+
try:
|
| 145 |
+
payload = torch.load(weights_path, map_location="cpu", weights_only=True)
|
| 146 |
+
except TypeError:
|
| 147 |
+
payload = torch.load(weights_path, map_location="cpu")
|
| 148 |
+
|
| 149 |
+
if isinstance(payload, dict) and "state_dict" in payload:
|
| 150 |
+
name = str(payload.get("prebackbone", "A11_CA")).upper()
|
| 151 |
+
channels = int(payload.get("channels", 3))
|
| 152 |
+
state = payload["state_dict"]
|
| 153 |
+
else:
|
| 154 |
+
name, channels, state = "A11_CA", 3, payload
|
| 155 |
+
|
| 156 |
+
module = build_prebackbone(name, channels=channels)
|
| 157 |
+
if module is None:
|
| 158 |
+
raise RuntimeError(f"build_prebackbone({name}) returned None")
|
| 159 |
+
state = _filter_state_dict(state, module)
|
| 160 |
+
missing, unexpected = module.load_state_dict(state, strict=True)
|
| 161 |
+
if missing or unexpected:
|
| 162 |
+
raise RuntimeError(f"State dict mismatch: missing={missing}, unexpected={unexpected}")
|
| 163 |
+
return module.to(device).eval()
|
| 164 |
+
|
| 165 |
+
|
| 166 |
+
def _bgr_to_rgb(im_bgr: np.ndarray) -> np.ndarray:
|
| 167 |
+
return cv2.cvtColor(im_bgr, cv2.COLOR_BGR2RGB)
|
| 168 |
+
|
| 169 |
+
|
| 170 |
+
def _rgb_to_bgr(im_rgb: np.ndarray) -> np.ndarray:
|
| 171 |
+
return cv2.cvtColor(im_rgb, cv2.COLOR_RGB2BGR)
|
| 172 |
+
|
| 173 |
+
|
| 174 |
+
def _letterbox_pair_bgr(
|
| 175 |
+
defect_bgr: np.ndarray,
|
| 176 |
+
golden_bgr: np.ndarray,
|
| 177 |
+
new_shape: tuple[int, int] = (IMGSZ, IMGSZ),
|
| 178 |
+
) -> tuple[np.ndarray, np.ndarray]:
|
| 179 |
+
shape = defect_bgr.shape[:2]
|
| 180 |
+
if golden_bgr.shape[:2] != shape:
|
| 181 |
+
golden_bgr = cv2.resize(golden_bgr, (shape[1], shape[0]), interpolation=cv2.INTER_LINEAR)
|
| 182 |
+
|
| 183 |
+
new_h, new_w = new_shape
|
| 184 |
+
r = min(new_h / shape[0], new_w / shape[1])
|
| 185 |
+
new_unpad = (round(shape[1] * r), round(shape[0] * r))
|
| 186 |
+
dw, dh = (new_w - new_unpad[0]) / 2, (new_h - new_unpad[1]) / 2
|
| 187 |
+
|
| 188 |
+
if shape[::-1] != new_unpad:
|
| 189 |
+
defect_bgr = cv2.resize(defect_bgr, new_unpad, interpolation=cv2.INTER_LINEAR)
|
| 190 |
+
golden_bgr = cv2.resize(golden_bgr, new_unpad, interpolation=cv2.INTER_LINEAR)
|
| 191 |
+
|
| 192 |
+
top, bottom = round(dh - 0.1), round(dh + 0.1)
|
| 193 |
+
left, right = round(dw - 0.1), round(dw + 0.1)
|
| 194 |
+
pad = (114, 114, 114)
|
| 195 |
+
defect_bgr = cv2.copyMakeBorder(defect_bgr, top, bottom, left, right, cv2.BORDER_CONSTANT, value=pad)
|
| 196 |
+
golden_bgr = cv2.copyMakeBorder(golden_bgr, top, bottom, left, right, cv2.BORDER_CONSTANT, value=pad)
|
| 197 |
+
return defect_bgr, golden_bgr
|
| 198 |
+
|
| 199 |
+
|
| 200 |
+
def _img_to_tensor_rgb(im_rgb: np.ndarray, device: torch.device) -> torch.Tensor:
|
| 201 |
+
x = torch.from_numpy(im_rgb).to(device=device)
|
| 202 |
+
return x.permute(2, 0, 1).contiguous().float().unsqueeze(0) / 255.0
|
| 203 |
+
|
| 204 |
+
|
| 205 |
+
def _tensor_to_rgb_u8(x: torch.Tensor) -> np.ndarray:
|
| 206 |
+
if x.ndim == 4:
|
| 207 |
+
x = x[0]
|
| 208 |
+
x = x.detach().float().clamp(0.0, 1.0).cpu()
|
| 209 |
+
return (x.permute(1, 2, 0).numpy() * 255.0).round().astype(np.uint8)
|
| 210 |
+
|
| 211 |
+
|
| 212 |
+
def _load_image_rgb(image: str | Path | Image.Image | np.ndarray) -> np.ndarray:
|
| 213 |
+
if isinstance(image, Image.Image):
|
| 214 |
+
return np.array(image.convert("RGB"))
|
| 215 |
+
if isinstance(image, np.ndarray):
|
| 216 |
+
arr = image
|
| 217 |
+
if arr.ndim == 2:
|
| 218 |
+
return np.stack([arr, arr, arr], axis=-1)
|
| 219 |
+
if arr.shape[2] == 4:
|
| 220 |
+
return arr[..., :3]
|
| 221 |
+
return arr[..., :3] if arr.shape[2] >= 3 else arr
|
| 222 |
+
path = Path(image)
|
| 223 |
+
bgr = cv2.imread(str(path))
|
| 224 |
+
if bgr is None:
|
| 225 |
+
raise FileNotFoundError(f"Unable to read image: {path}")
|
| 226 |
+
return _bgr_to_rgb(bgr)
|
| 227 |
+
|
| 228 |
+
|
| 229 |
+
class PreBackboneEnricher:
|
| 230 |
+
"""Runs A11_CA prebackbone only (no YOLO backbone/head loaded)."""
|
| 231 |
+
|
| 232 |
+
def __init__(self, weights: str | Path | None = None, device: str | None = None):
|
| 233 |
+
if device is None:
|
| 234 |
+
device = "cuda" if torch.cuda.is_available() else "cpu"
|
| 235 |
+
self.device = torch.device(device)
|
| 236 |
+
self.weights = Path(weights) if weights else _resolve_weights_path()
|
| 237 |
+
self.prebackbone = _load_prebackbone_module(self.weights, self.device)
|
| 238 |
+
self.imgsz = IMGSZ
|
| 239 |
+
|
| 240 |
+
@torch.inference_mode()
|
| 241 |
+
def enrich(
|
| 242 |
+
self,
|
| 243 |
+
defect: str | Path | Image.Image | np.ndarray,
|
| 244 |
+
reference: str | Path | Image.Image | np.ndarray,
|
| 245 |
+
*,
|
| 246 |
+
letterbox: bool = True,
|
| 247 |
+
return_reference: bool = False,
|
| 248 |
+
) -> np.ndarray | tuple[np.ndarray, np.ndarray, np.ndarray]:
|
| 249 |
+
defect_rgb0 = _load_image_rgb(defect)
|
| 250 |
+
golden_rgb0 = _load_image_rgb(reference)
|
| 251 |
+
|
| 252 |
+
defect_bgr0 = _rgb_to_bgr(defect_rgb0)
|
| 253 |
+
golden_bgr0 = _rgb_to_bgr(golden_rgb0)
|
| 254 |
+
|
| 255 |
+
if letterbox:
|
| 256 |
+
defect_bgr, golden_bgr = _letterbox_pair_bgr(defect_bgr0, golden_bgr0, (self.imgsz, self.imgsz))
|
| 257 |
+
else:
|
| 258 |
+
if defect_bgr0.shape != golden_bgr0.shape:
|
| 259 |
+
golden_bgr0 = cv2.resize(
|
| 260 |
+
golden_bgr0, (defect_bgr0.shape[1], defect_bgr0.shape[0]), interpolation=cv2.INTER_LINEAR
|
| 261 |
+
)
|
| 262 |
+
defect_bgr, golden_bgr = defect_bgr0, golden_bgr0
|
| 263 |
+
|
| 264 |
+
defect_rgb = _bgr_to_rgb(defect_bgr)
|
| 265 |
+
golden_rgb = _bgr_to_rgb(golden_bgr)
|
| 266 |
+
|
| 267 |
+
defect_t = _img_to_tensor_rgb(defect_rgb, self.device)
|
| 268 |
+
golden_t = _img_to_tensor_rgb(golden_rgb, self.device)
|
| 269 |
+
_ = self.prebackbone(defect_t, golden_t)
|
| 270 |
+
dbg: dict[str, Any] = getattr(self.prebackbone, "_debug", {})
|
| 271 |
+
enriched = dbg.get("enriched")
|
| 272 |
+
if enriched is None:
|
| 273 |
+
raise RuntimeError("Prebackbone did not populate _debug['enriched'].")
|
| 274 |
+
|
| 275 |
+
enriched_rgb = _tensor_to_rgb_u8(enriched)
|
| 276 |
+
if return_reference:
|
| 277 |
+
return defect_rgb, golden_rgb, enriched_rgb
|
| 278 |
+
return enriched_rgb
|
| 279 |
+
|
| 280 |
+
|
| 281 |
+
_enricher: PreBackboneEnricher | None = None
|
| 282 |
+
|
| 283 |
+
|
| 284 |
+
def get_enricher() -> PreBackboneEnricher:
|
| 285 |
+
global _enricher
|
| 286 |
+
if _enricher is None:
|
| 287 |
+
_enricher = PreBackboneEnricher()
|
| 288 |
+
return _enricher
|
| 289 |
+
|
| 290 |
+
|
| 291 |
+
def enrich_pair(
|
| 292 |
+
defect: str | Path | Image.Image | np.ndarray,
|
| 293 |
+
reference: str | Path | Image.Image | np.ndarray,
|
| 294 |
+
) -> tuple[np.ndarray, np.ndarray, np.ndarray]:
|
| 295 |
+
return get_enricher().enrich(defect, reference, return_reference=True) # type: ignore[return-value]
|
push_clean_space.sh
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/usr/bin/env bash
|
| 2 |
+
# One clean commit with NO .jpg in git history (HF rejects raw binaries in any commit).
|
| 3 |
+
set -euo pipefail
|
| 4 |
+
cd "$(dirname "$0")"
|
| 5 |
+
|
| 6 |
+
unset GIT_ASKPASS SSH_ASKPASS
|
| 7 |
+
|
| 8 |
+
if [[ ! -f weights/prebackbone_a11_ca.pt ]]; then
|
| 9 |
+
echo "ERROR: weights/prebackbone_a11_ca.pt missing. Run extract_prebackbone_weights.py first."
|
| 10 |
+
exit 1
|
| 11 |
+
fi
|
| 12 |
+
|
| 13 |
+
if command -v hf >/dev/null 2>&1; then
|
| 14 |
+
TOKEN="$(hf auth token 2>/dev/null | tr -d '[:space:]')"
|
| 15 |
+
if [[ -n "${TOKEN}" ]]; then
|
| 16 |
+
CRED_FILE="${HOME}/.git-credentials"
|
| 17 |
+
grep -v "huggingface.co" "${CRED_FILE}" 2>/dev/null > "${CRED_FILE}.tmp" || true
|
| 18 |
+
[[ -f "${CRED_FILE}.tmp" ]] && mv "${CRED_FILE}.tmp" "${CRED_FILE}"
|
| 19 |
+
echo "https://vinayedula:${TOKEN}@huggingface.co" >> "${CRED_FILE}"
|
| 20 |
+
chmod 600 "${CRED_FILE}"
|
| 21 |
+
fi
|
| 22 |
+
fi
|
| 23 |
+
|
| 24 |
+
git lfs install
|
| 25 |
+
git lfs track "*.pt" "*.pth"
|
| 26 |
+
|
| 27 |
+
grep -q "^examples/" .gitignore 2>/dev/null || echo "examples/" >> .gitignore
|
| 28 |
+
|
| 29 |
+
git checkout --orphan main-clean
|
| 30 |
+
git rm -rf --cached . 2>/dev/null || true
|
| 31 |
+
|
| 32 |
+
git add \
|
| 33 |
+
.gitattributes \
|
| 34 |
+
.gitignore \
|
| 35 |
+
app.py \
|
| 36 |
+
prebackbone_infer.py \
|
| 37 |
+
extract_prebackbone_weights.py \
|
| 38 |
+
requirements.txt \
|
| 39 |
+
setup.sh \
|
| 40 |
+
README.md \
|
| 41 |
+
deploy_to_refdiffnet.sh \
|
| 42 |
+
git_hf_sync.sh \
|
| 43 |
+
fix_hf_binaries.sh \
|
| 44 |
+
push_clean_space.sh \
|
| 45 |
+
vendor/ \
|
| 46 |
+
weights/prebackbone_a11_ca.pt
|
| 47 |
+
|
| 48 |
+
git commit -m "RefDiffNet: A11_CA prebackbone demo (clean history, no images in git)"
|
| 49 |
+
|
| 50 |
+
git branch -M main
|
| 51 |
+
git remote set-url origin https://huggingface.co/spaces/vinayedula/RefDiffNet
|
| 52 |
+
|
| 53 |
+
echo "==> Force pushing clean history..."
|
| 54 |
+
git push -f origin main
|
| 55 |
+
|
| 56 |
+
echo "==> Done: https://huggingface.co/spaces/vinayedula/RefDiffNet"
|
requirements.txt
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
gradio>=4.44.0
|
| 2 |
+
torch>=2.0.0
|
| 3 |
+
torchvision>=0.15.0
|
| 4 |
+
opencv-python-headless>=4.8.0
|
| 5 |
+
pillow>=10.0.0
|
| 6 |
+
numpy>=1.23.0
|
| 7 |
+
pyyaml>=6.0
|
| 8 |
+
huggingface_hub>=0.23.0
|
| 9 |
+
matplotlib>=3.7.0
|
| 10 |
+
scipy>=1.10.0
|
| 11 |
+
psutil>=5.9.0
|
| 12 |
+
polars>=0.20.0
|
| 13 |
+
ultralytics-thop>=2.0.18
|
setup.sh
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/usr/bin/env bash
|
| 2 |
+
# Hugging Face Spaces: install vendored custom Ultralytics before app starts.
|
| 3 |
+
set -euo pipefail
|
| 4 |
+
cd "$(dirname "$0")"
|
| 5 |
+
if [[ -d vendor ]]; then
|
| 6 |
+
pip install -q -e ./vendor
|
| 7 |
+
echo "Installed custom ultralytics from ./vendor"
|
| 8 |
+
else
|
| 9 |
+
echo "WARN: vendor/ missing β run prepare_space.sh before deploying"
|
| 10 |
+
fi
|
vendor/pyproject.toml
ADDED
|
@@ -0,0 +1,194 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Ultralytics π AGPL-3.0 License - https://ultralytics.com/license
|
| 2 |
+
|
| 3 |
+
# Overview:
|
| 4 |
+
# This pyproject.toml file manages the build, packaging, and distribution of the Ultralytics library.
|
| 5 |
+
# It defines essential project metadata, dependencies, and settings used to develop and deploy the library.
|
| 6 |
+
|
| 7 |
+
# Key Sections:
|
| 8 |
+
# - [build-system]: Specifies the build requirements and backend (e.g., setuptools, wheel).
|
| 9 |
+
# - [project]: Includes details like name, version, description, authors, dependencies and more.
|
| 10 |
+
# - [project.optional-dependencies]: Provides additional, optional packages for extended features.
|
| 11 |
+
# - [tool.*]: Configures settings for various tools (pytest, yapf, etc.) used in the project.
|
| 12 |
+
|
| 13 |
+
# Installation:
|
| 14 |
+
# The Ultralytics library can be installed using the command: 'pip install ultralytics'
|
| 15 |
+
# For development purposes, you can install the package in editable mode with: 'pip install -e .'
|
| 16 |
+
# This approach allows for real-time code modifications without the need for re-installation.
|
| 17 |
+
|
| 18 |
+
# Documentation:
|
| 19 |
+
# For comprehensive documentation and usage instructions, visit: https://docs.ultralytics.com
|
| 20 |
+
|
| 21 |
+
[build-system]
|
| 22 |
+
requires = ["setuptools>=70.0.0,<=82.0.1", "wheel"]
|
| 23 |
+
build-backend = "setuptools.build_meta"
|
| 24 |
+
|
| 25 |
+
# Project settings -----------------------------------------------------------------------------------------------------
|
| 26 |
+
[project]
|
| 27 |
+
name = "ultralytics"
|
| 28 |
+
dynamic = ["version"]
|
| 29 |
+
description = "Ultralytics YOLO π for SOTA object detection, multi-object tracking, instance segmentation, pose estimation and image classification."
|
| 30 |
+
readme = "README.md"
|
| 31 |
+
requires-python = ">=3.8"
|
| 32 |
+
license = { "text" = "AGPL-3.0" }
|
| 33 |
+
keywords = ["machine-learning", "deep-learning", "computer-vision", "ML", "DL", "AI", "YOLO", "YOLOv3", "YOLOv5", "YOLOv8", "YOLOv9", "YOLOv10", "YOLO11", "HUB", "Ultralytics"]
|
| 34 |
+
authors = [
|
| 35 |
+
{ name = "Glenn Jocher", email = "glenn.jocher@ultralytics.com" },
|
| 36 |
+
{ name = "Jing Qiu", email = "jing.qiu@ultralytics.com" },
|
| 37 |
+
]
|
| 38 |
+
maintainers = [
|
| 39 |
+
{ name = "Ultralytics", email = "hello@ultralytics.com" },
|
| 40 |
+
]
|
| 41 |
+
classifiers = [
|
| 42 |
+
"Development Status :: 4 - Beta",
|
| 43 |
+
"Intended Audience :: Developers",
|
| 44 |
+
"Intended Audience :: Education",
|
| 45 |
+
"Intended Audience :: Science/Research",
|
| 46 |
+
"License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)",
|
| 47 |
+
"Programming Language :: Python :: 3",
|
| 48 |
+
"Programming Language :: Python :: 3.8",
|
| 49 |
+
"Programming Language :: Python :: 3.9",
|
| 50 |
+
"Programming Language :: Python :: 3.10",
|
| 51 |
+
"Programming Language :: Python :: 3.11",
|
| 52 |
+
"Programming Language :: Python :: 3.12",
|
| 53 |
+
"Topic :: Software Development",
|
| 54 |
+
"Topic :: Scientific/Engineering",
|
| 55 |
+
"Topic :: Scientific/Engineering :: Artificial Intelligence",
|
| 56 |
+
"Topic :: Scientific/Engineering :: Image Recognition",
|
| 57 |
+
"Operating System :: POSIX :: Linux",
|
| 58 |
+
"Operating System :: MacOS",
|
| 59 |
+
"Operating System :: Microsoft :: Windows",
|
| 60 |
+
]
|
| 61 |
+
|
| 62 |
+
# Required dependencies ------------------------------------------------------------------------------------------------
|
| 63 |
+
dependencies = [
|
| 64 |
+
"numpy>=1.23.0",
|
| 65 |
+
"matplotlib>=3.3.0",
|
| 66 |
+
"opencv-python>=4.6.0",
|
| 67 |
+
"pillow>=7.1.2",
|
| 68 |
+
"pyyaml>=5.3.1",
|
| 69 |
+
"requests>=2.23.0",
|
| 70 |
+
"scipy>=1.4.1",
|
| 71 |
+
"torch>=1.8.0",
|
| 72 |
+
"torch>=1.8.0,!=2.4.0; sys_platform == 'win32'", # Windows CPU errors w/ 2.4.0 https://github.com/ultralytics/ultralytics/issues/15049
|
| 73 |
+
"torchvision>=0.9.0",
|
| 74 |
+
"psutil>=5.8.0", # system utilization
|
| 75 |
+
"polars>=0.20.0",
|
| 76 |
+
"ultralytics-thop>=2.0.18", # FLOPs computation https://github.com/ultralytics/thop
|
| 77 |
+
]
|
| 78 |
+
|
| 79 |
+
# Optional dependencies ------------------------------------------------------------------------------------------------
|
| 80 |
+
[project.optional-dependencies]
|
| 81 |
+
dev = [
|
| 82 |
+
"ipython",
|
| 83 |
+
"pytest",
|
| 84 |
+
"pytest-cov",
|
| 85 |
+
"coverage[toml]",
|
| 86 |
+
"zensical>=0.0.15; python_version >= '3.10'",
|
| 87 |
+
"mkdocs-ultralytics-plugin>=0.2.4", # for meta descriptions and images, dates and authors
|
| 88 |
+
"minijinja>=2.0.0", # render docs macros without mkdocs-macros-plugin
|
| 89 |
+
]
|
| 90 |
+
export = [
|
| 91 |
+
"numpy<2.0.0", # TF 2.20 compatibility
|
| 92 |
+
"onnx>=1.12.0; platform_system != 'Darwin'", # ONNX export
|
| 93 |
+
"onnx>=1.12.0,<1.18.0; platform_system == 'Darwin'", # TF inference hanging on MacOS (tested up to onnx==1.20.0)
|
| 94 |
+
"onnxslim>=0.1.82",
|
| 95 |
+
"coremltools>=9.0; platform_system != 'Windows' and python_version <= '3.13'", # CoreML supported on macOS and Linux
|
| 96 |
+
"scikit-learn>=1.3.2; platform_system != 'Windows' and python_version <= '3.13'", # CoreML k-means quantization
|
| 97 |
+
"openvino>=2024.0.0", # OpenVINO export
|
| 98 |
+
"tensorflow>=2.0.0,<=2.19.0", # TF bug https://github.com/ultralytics/ultralytics/issues/5161
|
| 99 |
+
"tensorflowjs>=2.0.0", # TF.js export, automatically installs tensorflow
|
| 100 |
+
"tensorstore>=0.1.63; platform_machine == 'aarch64' and python_version >= '3.9'", # for TF Raspberry Pi exports
|
| 101 |
+
"h5py!=3.11.0; platform_machine == 'aarch64'", # fix h5py build issues due to missing aarch64 wheels in 3.11 release
|
| 102 |
+
"setuptools<=81.0.0", # pin due to >=82.0.0 breaking tensorflow.js package
|
| 103 |
+
"packaging>=26.0; platform_machine == 'aarch64' and platform_system == 'Linux' and python_version >= '3.9'", # IMX export bug
|
| 104 |
+
]
|
| 105 |
+
solutions = [
|
| 106 |
+
"shapely>=2.0.0", # shapely for point and polygon data matching
|
| 107 |
+
"streamlit>=1.51.0; python_version >= '3.10'", # for live inference on web browser, i.e `yolo streamlit-predict`
|
| 108 |
+
"streamlit>=1.29.0,<1.51.0; python_version < '3.10' and (python_version < '3.9' or platform_machine != 'aarch64' or platform_system != 'Linux')",
|
| 109 |
+
"flask>=3.0.1", # for similarity search solution
|
| 110 |
+
]
|
| 111 |
+
logging = [
|
| 112 |
+
"wandb", # https://docs.ultralytics.com/integrations/weights-biases/
|
| 113 |
+
"tensorboard", # https://docs.ultralytics.com/integrations/tensorboard/
|
| 114 |
+
"mlflow", # https://docs.ultralytics.com/integrations/mlflow/
|
| 115 |
+
]
|
| 116 |
+
extra = [
|
| 117 |
+
"ipython", # interactive notebook
|
| 118 |
+
"albumentations>=1.4.6", # training augmentations
|
| 119 |
+
"faster-coco-eval>=1.6.7", # COCO mAP
|
| 120 |
+
]
|
| 121 |
+
typing = [
|
| 122 |
+
"scipy-stubs>=1.14.1.4; python_version >= '3.10'",
|
| 123 |
+
"types-pillow",
|
| 124 |
+
"types-psutil",
|
| 125 |
+
"types-pyyaml",
|
| 126 |
+
"types-requests",
|
| 127 |
+
"types-shapely",
|
| 128 |
+
]
|
| 129 |
+
|
| 130 |
+
[project.urls]
|
| 131 |
+
"Homepage" = "https://ultralytics.com"
|
| 132 |
+
"Source" = "https://github.com/ultralytics/ultralytics"
|
| 133 |
+
"Documentation" = "https://docs.ultralytics.com"
|
| 134 |
+
"Bug Reports" = "https://github.com/ultralytics/ultralytics/issues"
|
| 135 |
+
"Changelog" = "https://github.com/ultralytics/ultralytics/releases"
|
| 136 |
+
|
| 137 |
+
[project.scripts]
|
| 138 |
+
yolo = "ultralytics.cfg:entrypoint"
|
| 139 |
+
ultralytics = "ultralytics.cfg:entrypoint"
|
| 140 |
+
|
| 141 |
+
# Tools settings -------------------------------------------------------------------------------------------------------
|
| 142 |
+
[tool.setuptools] # configuration specific to the `setuptools` build backend.
|
| 143 |
+
packages = { find = { where = ["."], include = ["ultralytics", "ultralytics.*"] } }
|
| 144 |
+
# Tests included below for checking Conda builds in https://github.com/conda-forge/ultralytics-feedstock
|
| 145 |
+
package-data = { "ultralytics" = ["**/*.yaml", "**/*.sh", "../tests/*.py"], "ultralytics.assets" = ["*.jpg"], "ultralytics.solutions.templates" = ["*.html"]}
|
| 146 |
+
|
| 147 |
+
[tool.setuptools.dynamic]
|
| 148 |
+
version = { attr = "ultralytics.__version__" }
|
| 149 |
+
|
| 150 |
+
[tool.pytest.ini_options]
|
| 151 |
+
addopts = "--doctest-modules --durations=30 --color=yes"
|
| 152 |
+
markers = [
|
| 153 |
+
"slow: skip slow tests unless --slow is set",
|
| 154 |
+
]
|
| 155 |
+
norecursedirs = [".git", "dist", "build"]
|
| 156 |
+
|
| 157 |
+
[tool.coverage.run]
|
| 158 |
+
source = ["ultralytics/"]
|
| 159 |
+
data_file = "tests/.coverage"
|
| 160 |
+
omit = ["ultralytics/utils/callbacks/*"]
|
| 161 |
+
|
| 162 |
+
[tool.isort]
|
| 163 |
+
line_length = 120
|
| 164 |
+
multi_line_output = 0
|
| 165 |
+
|
| 166 |
+
[tool.yapf]
|
| 167 |
+
based_on_style = "pep8"
|
| 168 |
+
spaces_before_comment = 2
|
| 169 |
+
column_limit = 120
|
| 170 |
+
coalesce_brackets = true
|
| 171 |
+
spaces_around_power_operator = true
|
| 172 |
+
space_between_ending_comma_and_closing_bracket = true
|
| 173 |
+
split_before_closing_bracket = false
|
| 174 |
+
split_before_first_argument = false
|
| 175 |
+
|
| 176 |
+
[tool.ruff]
|
| 177 |
+
line-length = 120
|
| 178 |
+
|
| 179 |
+
[tool.ruff.format]
|
| 180 |
+
docstring-code-format = true
|
| 181 |
+
|
| 182 |
+
[tool.ruff.lint.pydocstyle]
|
| 183 |
+
convention = "google"
|
| 184 |
+
|
| 185 |
+
[tool.docformatter]
|
| 186 |
+
wrap-summaries = 120
|
| 187 |
+
wrap-descriptions = 120
|
| 188 |
+
pre-summary-newline = true
|
| 189 |
+
close-quotes-on-newline = true
|
| 190 |
+
in-place = true
|
| 191 |
+
|
| 192 |
+
[tool.codespell]
|
| 193 |
+
ignore-words-list = "grey,writeable,finalY,RepResNet,Idenfy,WIT,Smoot,EHR,ROUGE,ALS,iTerm,Carmel,FPR,Hach,Calle,ore,COO,MOT,crate,nd,ned,strack,dota,ane,segway,fo,gool,winn,commend,bloc,nam,afterall,skelton,goin"
|
| 194 |
+
skip = "*.pt,*.pth,*.torchscript,*.onnx,*.tflite,*.pb,*.bin,*.param,*.mlmodel,*.engine,*.npy,*.data*,*.csv,*pnnx*,*venv*,*translat*,*lock*,__pycache__*,*.ico,*.jpg,*.png,*.webp,*.avif,*.mp4,*.mov,/runs,/.git,./docs/??/*.md,./docs/mkdocs_??.yml"
|
vendor/ultralytics.egg-info/PKG-INFO
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Metadata-Version: 2.4
|
| 2 |
+
Name: ultralytics
|
| 3 |
+
Version: 8.4.21
|
| 4 |
+
Summary: Ultralytics YOLO π for SOTA object detection, multi-object tracking, instance segmentation, pose estimation and image classification.
|
| 5 |
+
Author-email: Glenn Jocher <glenn.jocher@ultralytics.com>, Jing Qiu <jing.qiu@ultralytics.com>
|
| 6 |
+
Maintainer-email: Ultralytics <hello@ultralytics.com>
|
| 7 |
+
License: AGPL-3.0
|
| 8 |
+
Project-URL: Homepage, https://ultralytics.com
|
| 9 |
+
Project-URL: Source, https://github.com/ultralytics/ultralytics
|
| 10 |
+
Project-URL: Documentation, https://docs.ultralytics.com
|
| 11 |
+
Project-URL: Bug Reports, https://github.com/ultralytics/ultralytics/issues
|
| 12 |
+
Project-URL: Changelog, https://github.com/ultralytics/ultralytics/releases
|
| 13 |
+
Keywords: machine-learning,deep-learning,computer-vision,ML,DL,AI,YOLO,YOLOv3,YOLOv5,YOLOv8,YOLOv9,YOLOv10,YOLO11,HUB,Ultralytics
|
| 14 |
+
Classifier: Development Status :: 4 - Beta
|
| 15 |
+
Classifier: Intended Audience :: Developers
|
| 16 |
+
Classifier: Intended Audience :: Education
|
| 17 |
+
Classifier: Intended Audience :: Science/Research
|
| 18 |
+
Classifier: License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)
|
| 19 |
+
Classifier: Programming Language :: Python :: 3
|
| 20 |
+
Classifier: Programming Language :: Python :: 3.8
|
| 21 |
+
Classifier: Programming Language :: Python :: 3.9
|
| 22 |
+
Classifier: Programming Language :: Python :: 3.10
|
| 23 |
+
Classifier: Programming Language :: Python :: 3.11
|
| 24 |
+
Classifier: Programming Language :: Python :: 3.12
|
| 25 |
+
Classifier: Topic :: Software Development
|
| 26 |
+
Classifier: Topic :: Scientific/Engineering
|
| 27 |
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
| 28 |
+
Classifier: Topic :: Scientific/Engineering :: Image Recognition
|
| 29 |
+
Classifier: Operating System :: POSIX :: Linux
|
| 30 |
+
Classifier: Operating System :: MacOS
|
| 31 |
+
Classifier: Operating System :: Microsoft :: Windows
|
| 32 |
+
Requires-Python: >=3.8
|
| 33 |
+
Description-Content-Type: text/markdown
|
| 34 |
+
Requires-Dist: numpy>=1.23.0
|
| 35 |
+
Requires-Dist: matplotlib>=3.3.0
|
| 36 |
+
Requires-Dist: opencv-python>=4.6.0
|
| 37 |
+
Requires-Dist: pillow>=7.1.2
|
| 38 |
+
Requires-Dist: pyyaml>=5.3.1
|
| 39 |
+
Requires-Dist: requests>=2.23.0
|
| 40 |
+
Requires-Dist: scipy>=1.4.1
|
| 41 |
+
Requires-Dist: torch>=1.8.0
|
| 42 |
+
Requires-Dist: torch!=2.4.0,>=1.8.0; sys_platform == "win32"
|
| 43 |
+
Requires-Dist: torchvision>=0.9.0
|
| 44 |
+
Requires-Dist: psutil>=5.8.0
|
| 45 |
+
Requires-Dist: polars>=0.20.0
|
| 46 |
+
Requires-Dist: ultralytics-thop>=2.0.18
|
| 47 |
+
Provides-Extra: dev
|
| 48 |
+
Requires-Dist: ipython; extra == "dev"
|
| 49 |
+
Requires-Dist: pytest; extra == "dev"
|
| 50 |
+
Requires-Dist: pytest-cov; extra == "dev"
|
| 51 |
+
Requires-Dist: coverage[toml]; extra == "dev"
|
| 52 |
+
Requires-Dist: zensical>=0.0.15; python_version >= "3.10" and extra == "dev"
|
| 53 |
+
Requires-Dist: mkdocs-ultralytics-plugin>=0.2.4; extra == "dev"
|
| 54 |
+
Requires-Dist: minijinja>=2.0.0; extra == "dev"
|
| 55 |
+
Provides-Extra: export
|
| 56 |
+
Requires-Dist: numpy<2.0.0; extra == "export"
|
| 57 |
+
Requires-Dist: onnx>=1.12.0; platform_system != "Darwin" and extra == "export"
|
| 58 |
+
Requires-Dist: onnx<1.18.0,>=1.12.0; platform_system == "Darwin" and extra == "export"
|
| 59 |
+
Requires-Dist: onnxslim>=0.1.82; extra == "export"
|
| 60 |
+
Requires-Dist: coremltools>=9.0; (platform_system != "Windows" and python_version <= "3.13") and extra == "export"
|
| 61 |
+
Requires-Dist: scikit-learn>=1.3.2; (platform_system != "Windows" and python_version <= "3.13") and extra == "export"
|
| 62 |
+
Requires-Dist: openvino>=2024.0.0; extra == "export"
|
| 63 |
+
Requires-Dist: tensorflow<=2.19.0,>=2.0.0; extra == "export"
|
| 64 |
+
Requires-Dist: tensorflowjs>=2.0.0; extra == "export"
|
| 65 |
+
Requires-Dist: tensorstore>=0.1.63; (platform_machine == "aarch64" and python_version >= "3.9") and extra == "export"
|
| 66 |
+
Requires-Dist: h5py!=3.11.0; platform_machine == "aarch64" and extra == "export"
|
| 67 |
+
Requires-Dist: setuptools<=81.0.0; extra == "export"
|
| 68 |
+
Requires-Dist: packaging>=26.0; (platform_machine == "aarch64" and platform_system == "Linux" and python_version >= "3.9") and extra == "export"
|
| 69 |
+
Provides-Extra: solutions
|
| 70 |
+
Requires-Dist: shapely>=2.0.0; extra == "solutions"
|
| 71 |
+
Requires-Dist: streamlit>=1.51.0; python_version >= "3.10" and extra == "solutions"
|
| 72 |
+
Requires-Dist: streamlit<1.51.0,>=1.29.0; (python_version < "3.10" and (python_version < "3.9" or platform_machine != "aarch64" or platform_system != "Linux")) and extra == "solutions"
|
| 73 |
+
Requires-Dist: flask>=3.0.1; extra == "solutions"
|
| 74 |
+
Provides-Extra: logging
|
| 75 |
+
Requires-Dist: wandb; extra == "logging"
|
| 76 |
+
Requires-Dist: tensorboard; extra == "logging"
|
| 77 |
+
Requires-Dist: mlflow; extra == "logging"
|
| 78 |
+
Provides-Extra: extra
|
| 79 |
+
Requires-Dist: ipython; extra == "extra"
|
| 80 |
+
Requires-Dist: albumentations>=1.4.6; extra == "extra"
|
| 81 |
+
Requires-Dist: faster-coco-eval>=1.6.7; extra == "extra"
|
| 82 |
+
Provides-Extra: typing
|
| 83 |
+
Requires-Dist: scipy-stubs>=1.14.1.4; python_version >= "3.10" and extra == "typing"
|
| 84 |
+
Requires-Dist: types-pillow; extra == "typing"
|
| 85 |
+
Requires-Dist: types-psutil; extra == "typing"
|
| 86 |
+
Requires-Dist: types-pyyaml; extra == "typing"
|
| 87 |
+
Requires-Dist: types-requests; extra == "typing"
|
| 88 |
+
Requires-Dist: types-shapely; extra == "typing"
|
vendor/ultralytics.egg-info/SOURCES.txt
ADDED
|
@@ -0,0 +1,308 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
pyproject.toml
|
| 2 |
+
ultralytics/__init__.py
|
| 3 |
+
ultralytics/py.typed
|
| 4 |
+
ultralytics.egg-info/PKG-INFO
|
| 5 |
+
ultralytics.egg-info/SOURCES.txt
|
| 6 |
+
ultralytics.egg-info/dependency_links.txt
|
| 7 |
+
ultralytics.egg-info/entry_points.txt
|
| 8 |
+
ultralytics.egg-info/requires.txt
|
| 9 |
+
ultralytics.egg-info/top_level.txt
|
| 10 |
+
ultralytics/assets/bus.jpg
|
| 11 |
+
ultralytics/assets/zidane.jpg
|
| 12 |
+
ultralytics/cfg/__init__.py
|
| 13 |
+
ultralytics/cfg/default.yaml
|
| 14 |
+
ultralytics/cfg/datasets/Argoverse.yaml
|
| 15 |
+
ultralytics/cfg/datasets/DOTAv1.5.yaml
|
| 16 |
+
ultralytics/cfg/datasets/DOTAv1.yaml
|
| 17 |
+
ultralytics/cfg/datasets/GlobalWheat2020.yaml
|
| 18 |
+
ultralytics/cfg/datasets/HomeObjects-3K.yaml
|
| 19 |
+
ultralytics/cfg/datasets/ImageNet.yaml
|
| 20 |
+
ultralytics/cfg/datasets/Objects365.yaml
|
| 21 |
+
ultralytics/cfg/datasets/SKU-110K.yaml
|
| 22 |
+
ultralytics/cfg/datasets/TT100K.yaml
|
| 23 |
+
ultralytics/cfg/datasets/VOC.yaml
|
| 24 |
+
ultralytics/cfg/datasets/VisDrone.yaml
|
| 25 |
+
ultralytics/cfg/datasets/african-wildlife.yaml
|
| 26 |
+
ultralytics/cfg/datasets/brain-tumor.yaml
|
| 27 |
+
ultralytics/cfg/datasets/carparts-seg.yaml
|
| 28 |
+
ultralytics/cfg/datasets/coco-pose.yaml
|
| 29 |
+
ultralytics/cfg/datasets/coco.yaml
|
| 30 |
+
ultralytics/cfg/datasets/coco12-formats.yaml
|
| 31 |
+
ultralytics/cfg/datasets/coco128-seg.yaml
|
| 32 |
+
ultralytics/cfg/datasets/coco128.yaml
|
| 33 |
+
ultralytics/cfg/datasets/coco8-grayscale.yaml
|
| 34 |
+
ultralytics/cfg/datasets/coco8-multispectral.yaml
|
| 35 |
+
ultralytics/cfg/datasets/coco8-pose.yaml
|
| 36 |
+
ultralytics/cfg/datasets/coco8-seg.yaml
|
| 37 |
+
ultralytics/cfg/datasets/coco8.yaml
|
| 38 |
+
ultralytics/cfg/datasets/construction-ppe.yaml
|
| 39 |
+
ultralytics/cfg/datasets/crack-seg.yaml
|
| 40 |
+
ultralytics/cfg/datasets/dog-pose.yaml
|
| 41 |
+
ultralytics/cfg/datasets/dota8-multispectral.yaml
|
| 42 |
+
ultralytics/cfg/datasets/dota8.yaml
|
| 43 |
+
ultralytics/cfg/datasets/hand-keypoints.yaml
|
| 44 |
+
ultralytics/cfg/datasets/kitti.yaml
|
| 45 |
+
ultralytics/cfg/datasets/lvis.yaml
|
| 46 |
+
ultralytics/cfg/datasets/medical-pills.yaml
|
| 47 |
+
ultralytics/cfg/datasets/open-images-v7.yaml
|
| 48 |
+
ultralytics/cfg/datasets/package-seg.yaml
|
| 49 |
+
ultralytics/cfg/datasets/signature.yaml
|
| 50 |
+
ultralytics/cfg/datasets/tiger-pose.yaml
|
| 51 |
+
ultralytics/cfg/datasets/xView.yaml
|
| 52 |
+
ultralytics/cfg/models/11/yolo11-cls-resnet18.yaml
|
| 53 |
+
ultralytics/cfg/models/11/yolo11-cls.yaml
|
| 54 |
+
ultralytics/cfg/models/11/yolo11-obb.yaml
|
| 55 |
+
ultralytics/cfg/models/11/yolo11-pose.yaml
|
| 56 |
+
ultralytics/cfg/models/11/yolo11-seg.yaml
|
| 57 |
+
ultralytics/cfg/models/11/yolo11.yaml
|
| 58 |
+
ultralytics/cfg/models/11/yoloe-11-seg.yaml
|
| 59 |
+
ultralytics/cfg/models/11/yoloe-11.yaml
|
| 60 |
+
ultralytics/cfg/models/12/yolo12-cls.yaml
|
| 61 |
+
ultralytics/cfg/models/12/yolo12-obb.yaml
|
| 62 |
+
ultralytics/cfg/models/12/yolo12-pose.yaml
|
| 63 |
+
ultralytics/cfg/models/12/yolo12-seg.yaml
|
| 64 |
+
ultralytics/cfg/models/12/yolo12.yaml
|
| 65 |
+
ultralytics/cfg/models/26/yolo26-cls.yaml
|
| 66 |
+
ultralytics/cfg/models/26/yolo26-obb.yaml
|
| 67 |
+
ultralytics/cfg/models/26/yolo26-p2.yaml
|
| 68 |
+
ultralytics/cfg/models/26/yolo26-p6.yaml
|
| 69 |
+
ultralytics/cfg/models/26/yolo26-pose.yaml
|
| 70 |
+
ultralytics/cfg/models/26/yolo26-seg.yaml
|
| 71 |
+
ultralytics/cfg/models/26/yolo26.yaml
|
| 72 |
+
ultralytics/cfg/models/26/yoloe-26-seg.yaml
|
| 73 |
+
ultralytics/cfg/models/26/yoloe-26.yaml
|
| 74 |
+
ultralytics/cfg/models/rt-detr/rtdetr-l.yaml
|
| 75 |
+
ultralytics/cfg/models/rt-detr/rtdetr-resnet101.yaml
|
| 76 |
+
ultralytics/cfg/models/rt-detr/rtdetr-resnet50.yaml
|
| 77 |
+
ultralytics/cfg/models/rt-detr/rtdetr-x.yaml
|
| 78 |
+
ultralytics/cfg/models/v10/yolov10b.yaml
|
| 79 |
+
ultralytics/cfg/models/v10/yolov10l.yaml
|
| 80 |
+
ultralytics/cfg/models/v10/yolov10m.yaml
|
| 81 |
+
ultralytics/cfg/models/v10/yolov10n.yaml
|
| 82 |
+
ultralytics/cfg/models/v10/yolov10s.yaml
|
| 83 |
+
ultralytics/cfg/models/v10/yolov10x.yaml
|
| 84 |
+
ultralytics/cfg/models/v3/yolov3-spp.yaml
|
| 85 |
+
ultralytics/cfg/models/v3/yolov3-tiny.yaml
|
| 86 |
+
ultralytics/cfg/models/v3/yolov3.yaml
|
| 87 |
+
ultralytics/cfg/models/v5/yolov5-p6.yaml
|
| 88 |
+
ultralytics/cfg/models/v5/yolov5.yaml
|
| 89 |
+
ultralytics/cfg/models/v6/yolov6.yaml
|
| 90 |
+
ultralytics/cfg/models/v8/yoloe-v8-seg.yaml
|
| 91 |
+
ultralytics/cfg/models/v8/yoloe-v8.yaml
|
| 92 |
+
ultralytics/cfg/models/v8/yolov8-cls-resnet101.yaml
|
| 93 |
+
ultralytics/cfg/models/v8/yolov8-cls-resnet50.yaml
|
| 94 |
+
ultralytics/cfg/models/v8/yolov8-cls.yaml
|
| 95 |
+
ultralytics/cfg/models/v8/yolov8-ghost-p2.yaml
|
| 96 |
+
ultralytics/cfg/models/v8/yolov8-ghost-p6.yaml
|
| 97 |
+
ultralytics/cfg/models/v8/yolov8-ghost.yaml
|
| 98 |
+
ultralytics/cfg/models/v8/yolov8-obb.yaml
|
| 99 |
+
ultralytics/cfg/models/v8/yolov8-p2.yaml
|
| 100 |
+
ultralytics/cfg/models/v8/yolov8-p6.yaml
|
| 101 |
+
ultralytics/cfg/models/v8/yolov8-pose-p6.yaml
|
| 102 |
+
ultralytics/cfg/models/v8/yolov8-pose.yaml
|
| 103 |
+
ultralytics/cfg/models/v8/yolov8-rtdetr.yaml
|
| 104 |
+
ultralytics/cfg/models/v8/yolov8-seg-p6.yaml
|
| 105 |
+
ultralytics/cfg/models/v8/yolov8-seg.yaml
|
| 106 |
+
ultralytics/cfg/models/v8/yolov8-world.yaml
|
| 107 |
+
ultralytics/cfg/models/v8/yolov8-worldv2.yaml
|
| 108 |
+
ultralytics/cfg/models/v8/yolov8.yaml
|
| 109 |
+
ultralytics/cfg/models/v9/yolov9c-seg.yaml
|
| 110 |
+
ultralytics/cfg/models/v9/yolov9c.yaml
|
| 111 |
+
ultralytics/cfg/models/v9/yolov9e-seg.yaml
|
| 112 |
+
ultralytics/cfg/models/v9/yolov9e.yaml
|
| 113 |
+
ultralytics/cfg/models/v9/yolov9m.yaml
|
| 114 |
+
ultralytics/cfg/models/v9/yolov9s.yaml
|
| 115 |
+
ultralytics/cfg/models/v9/yolov9t.yaml
|
| 116 |
+
ultralytics/cfg/trackers/botsort.yaml
|
| 117 |
+
ultralytics/cfg/trackers/bytetrack.yaml
|
| 118 |
+
ultralytics/data/__init__.py
|
| 119 |
+
ultralytics/data/annotator.py
|
| 120 |
+
ultralytics/data/augment.py
|
| 121 |
+
ultralytics/data/base.py
|
| 122 |
+
ultralytics/data/build.py
|
| 123 |
+
ultralytics/data/converter.py
|
| 124 |
+
ultralytics/data/dataset.py
|
| 125 |
+
ultralytics/data/loaders.py
|
| 126 |
+
ultralytics/data/split.py
|
| 127 |
+
ultralytics/data/split_dota.py
|
| 128 |
+
ultralytics/data/utils.py
|
| 129 |
+
ultralytics/data/scripts/download_weights.sh
|
| 130 |
+
ultralytics/data/scripts/get_coco.sh
|
| 131 |
+
ultralytics/data/scripts/get_coco128.sh
|
| 132 |
+
ultralytics/data/scripts/get_imagenet.sh
|
| 133 |
+
ultralytics/engine/__init__.py
|
| 134 |
+
ultralytics/engine/exporter.py
|
| 135 |
+
ultralytics/engine/model.py
|
| 136 |
+
ultralytics/engine/predictor.py
|
| 137 |
+
ultralytics/engine/results.py
|
| 138 |
+
ultralytics/engine/trainer.py
|
| 139 |
+
ultralytics/engine/tuner.py
|
| 140 |
+
ultralytics/engine/validator.py
|
| 141 |
+
ultralytics/hub/__init__.py
|
| 142 |
+
ultralytics/hub/auth.py
|
| 143 |
+
ultralytics/hub/session.py
|
| 144 |
+
ultralytics/hub/utils.py
|
| 145 |
+
ultralytics/hub/google/__init__.py
|
| 146 |
+
ultralytics/models/__init__.py
|
| 147 |
+
ultralytics/models/fastsam/__init__.py
|
| 148 |
+
ultralytics/models/fastsam/model.py
|
| 149 |
+
ultralytics/models/fastsam/predict.py
|
| 150 |
+
ultralytics/models/fastsam/utils.py
|
| 151 |
+
ultralytics/models/fastsam/val.py
|
| 152 |
+
ultralytics/models/nas/__init__.py
|
| 153 |
+
ultralytics/models/nas/model.py
|
| 154 |
+
ultralytics/models/nas/predict.py
|
| 155 |
+
ultralytics/models/nas/val.py
|
| 156 |
+
ultralytics/models/rtdetr/__init__.py
|
| 157 |
+
ultralytics/models/rtdetr/model.py
|
| 158 |
+
ultralytics/models/rtdetr/predict.py
|
| 159 |
+
ultralytics/models/rtdetr/train.py
|
| 160 |
+
ultralytics/models/rtdetr/val.py
|
| 161 |
+
ultralytics/models/sam/__init__.py
|
| 162 |
+
ultralytics/models/sam/amg.py
|
| 163 |
+
ultralytics/models/sam/build.py
|
| 164 |
+
ultralytics/models/sam/build_sam3.py
|
| 165 |
+
ultralytics/models/sam/model.py
|
| 166 |
+
ultralytics/models/sam/predict.py
|
| 167 |
+
ultralytics/models/sam/modules/__init__.py
|
| 168 |
+
ultralytics/models/sam/modules/blocks.py
|
| 169 |
+
ultralytics/models/sam/modules/decoders.py
|
| 170 |
+
ultralytics/models/sam/modules/encoders.py
|
| 171 |
+
ultralytics/models/sam/modules/memory_attention.py
|
| 172 |
+
ultralytics/models/sam/modules/sam.py
|
| 173 |
+
ultralytics/models/sam/modules/tiny_encoder.py
|
| 174 |
+
ultralytics/models/sam/modules/transformer.py
|
| 175 |
+
ultralytics/models/sam/modules/utils.py
|
| 176 |
+
ultralytics/models/sam/sam3/__init__.py
|
| 177 |
+
ultralytics/models/sam/sam3/decoder.py
|
| 178 |
+
ultralytics/models/sam/sam3/encoder.py
|
| 179 |
+
ultralytics/models/sam/sam3/geometry_encoders.py
|
| 180 |
+
ultralytics/models/sam/sam3/maskformer_segmentation.py
|
| 181 |
+
ultralytics/models/sam/sam3/model_misc.py
|
| 182 |
+
ultralytics/models/sam/sam3/necks.py
|
| 183 |
+
ultralytics/models/sam/sam3/sam3_image.py
|
| 184 |
+
ultralytics/models/sam/sam3/text_encoder_ve.py
|
| 185 |
+
ultralytics/models/sam/sam3/vitdet.py
|
| 186 |
+
ultralytics/models/sam/sam3/vl_combiner.py
|
| 187 |
+
ultralytics/models/utils/__init__.py
|
| 188 |
+
ultralytics/models/utils/loss.py
|
| 189 |
+
ultralytics/models/utils/ops.py
|
| 190 |
+
ultralytics/models/yolo/__init__.py
|
| 191 |
+
ultralytics/models/yolo/model.py
|
| 192 |
+
ultralytics/models/yolo/classify/__init__.py
|
| 193 |
+
ultralytics/models/yolo/classify/predict.py
|
| 194 |
+
ultralytics/models/yolo/classify/train.py
|
| 195 |
+
ultralytics/models/yolo/classify/val.py
|
| 196 |
+
ultralytics/models/yolo/detect/__init__.py
|
| 197 |
+
ultralytics/models/yolo/detect/predict.py
|
| 198 |
+
ultralytics/models/yolo/detect/train.py
|
| 199 |
+
ultralytics/models/yolo/detect/val.py
|
| 200 |
+
ultralytics/models/yolo/obb/__init__.py
|
| 201 |
+
ultralytics/models/yolo/obb/predict.py
|
| 202 |
+
ultralytics/models/yolo/obb/train.py
|
| 203 |
+
ultralytics/models/yolo/obb/val.py
|
| 204 |
+
ultralytics/models/yolo/pose/__init__.py
|
| 205 |
+
ultralytics/models/yolo/pose/predict.py
|
| 206 |
+
ultralytics/models/yolo/pose/train.py
|
| 207 |
+
ultralytics/models/yolo/pose/val.py
|
| 208 |
+
ultralytics/models/yolo/segment/__init__.py
|
| 209 |
+
ultralytics/models/yolo/segment/predict.py
|
| 210 |
+
ultralytics/models/yolo/segment/train.py
|
| 211 |
+
ultralytics/models/yolo/segment/val.py
|
| 212 |
+
ultralytics/models/yolo/world/__init__.py
|
| 213 |
+
ultralytics/models/yolo/world/train.py
|
| 214 |
+
ultralytics/models/yolo/world/train_world.py
|
| 215 |
+
ultralytics/models/yolo/yoloe/__init__.py
|
| 216 |
+
ultralytics/models/yolo/yoloe/predict.py
|
| 217 |
+
ultralytics/models/yolo/yoloe/train.py
|
| 218 |
+
ultralytics/models/yolo/yoloe/train_seg.py
|
| 219 |
+
ultralytics/models/yolo/yoloe/val.py
|
| 220 |
+
ultralytics/nn/__init__.py
|
| 221 |
+
ultralytics/nn/ablation.py
|
| 222 |
+
ultralytics/nn/autobackend.py
|
| 223 |
+
ultralytics/nn/prebackbone.py
|
| 224 |
+
ultralytics/nn/prebackboneB.py
|
| 225 |
+
ultralytics/nn/tasks.py
|
| 226 |
+
ultralytics/nn/text_model.py
|
| 227 |
+
ultralytics/nn/modules/__init__.py
|
| 228 |
+
ultralytics/nn/modules/activation.py
|
| 229 |
+
ultralytics/nn/modules/block.py
|
| 230 |
+
ultralytics/nn/modules/conv.py
|
| 231 |
+
ultralytics/nn/modules/head.py
|
| 232 |
+
ultralytics/nn/modules/transformer.py
|
| 233 |
+
ultralytics/nn/modules/utils.py
|
| 234 |
+
ultralytics/optim/__init__.py
|
| 235 |
+
ultralytics/optim/muon.py
|
| 236 |
+
ultralytics/solutions/__init__.py
|
| 237 |
+
ultralytics/solutions/ai_gym.py
|
| 238 |
+
ultralytics/solutions/analytics.py
|
| 239 |
+
ultralytics/solutions/config.py
|
| 240 |
+
ultralytics/solutions/distance_calculation.py
|
| 241 |
+
ultralytics/solutions/heatmap.py
|
| 242 |
+
ultralytics/solutions/instance_segmentation.py
|
| 243 |
+
ultralytics/solutions/object_blurrer.py
|
| 244 |
+
ultralytics/solutions/object_counter.py
|
| 245 |
+
ultralytics/solutions/object_cropper.py
|
| 246 |
+
ultralytics/solutions/parking_management.py
|
| 247 |
+
ultralytics/solutions/queue_management.py
|
| 248 |
+
ultralytics/solutions/region_counter.py
|
| 249 |
+
ultralytics/solutions/security_alarm.py
|
| 250 |
+
ultralytics/solutions/similarity_search.py
|
| 251 |
+
ultralytics/solutions/solutions.py
|
| 252 |
+
ultralytics/solutions/speed_estimation.py
|
| 253 |
+
ultralytics/solutions/streamlit_inference.py
|
| 254 |
+
ultralytics/solutions/trackzone.py
|
| 255 |
+
ultralytics/solutions/vision_eye.py
|
| 256 |
+
ultralytics/solutions/templates/similarity-search.html
|
| 257 |
+
ultralytics/trackers/__init__.py
|
| 258 |
+
ultralytics/trackers/basetrack.py
|
| 259 |
+
ultralytics/trackers/bot_sort.py
|
| 260 |
+
ultralytics/trackers/byte_tracker.py
|
| 261 |
+
ultralytics/trackers/track.py
|
| 262 |
+
ultralytics/trackers/utils/__init__.py
|
| 263 |
+
ultralytics/trackers/utils/gmc.py
|
| 264 |
+
ultralytics/trackers/utils/kalman_filter.py
|
| 265 |
+
ultralytics/trackers/utils/matching.py
|
| 266 |
+
ultralytics/utils/__init__.py
|
| 267 |
+
ultralytics/utils/autobatch.py
|
| 268 |
+
ultralytics/utils/autodevice.py
|
| 269 |
+
ultralytics/utils/benchmarks.py
|
| 270 |
+
ultralytics/utils/checks.py
|
| 271 |
+
ultralytics/utils/cpu.py
|
| 272 |
+
ultralytics/utils/dist.py
|
| 273 |
+
ultralytics/utils/downloads.py
|
| 274 |
+
ultralytics/utils/errors.py
|
| 275 |
+
ultralytics/utils/events.py
|
| 276 |
+
ultralytics/utils/files.py
|
| 277 |
+
ultralytics/utils/git.py
|
| 278 |
+
ultralytics/utils/instance.py
|
| 279 |
+
ultralytics/utils/logger.py
|
| 280 |
+
ultralytics/utils/loss.py
|
| 281 |
+
ultralytics/utils/metrics.py
|
| 282 |
+
ultralytics/utils/nms.py
|
| 283 |
+
ultralytics/utils/ops.py
|
| 284 |
+
ultralytics/utils/patches.py
|
| 285 |
+
ultralytics/utils/plotting.py
|
| 286 |
+
ultralytics/utils/tal.py
|
| 287 |
+
ultralytics/utils/torch_utils.py
|
| 288 |
+
ultralytics/utils/tqdm.py
|
| 289 |
+
ultralytics/utils/triton.py
|
| 290 |
+
ultralytics/utils/tuner.py
|
| 291 |
+
ultralytics/utils/uploads.py
|
| 292 |
+
ultralytics/utils/callbacks/__init__.py
|
| 293 |
+
ultralytics/utils/callbacks/base.py
|
| 294 |
+
ultralytics/utils/callbacks/clearml.py
|
| 295 |
+
ultralytics/utils/callbacks/comet.py
|
| 296 |
+
ultralytics/utils/callbacks/dvc.py
|
| 297 |
+
ultralytics/utils/callbacks/hub.py
|
| 298 |
+
ultralytics/utils/callbacks/mlflow.py
|
| 299 |
+
ultralytics/utils/callbacks/neptune.py
|
| 300 |
+
ultralytics/utils/callbacks/platform.py
|
| 301 |
+
ultralytics/utils/callbacks/raytune.py
|
| 302 |
+
ultralytics/utils/callbacks/tensorboard.py
|
| 303 |
+
ultralytics/utils/callbacks/wb.py
|
| 304 |
+
ultralytics/utils/export/__init__.py
|
| 305 |
+
ultralytics/utils/export/engine.py
|
| 306 |
+
ultralytics/utils/export/executorch.py
|
| 307 |
+
ultralytics/utils/export/imx.py
|
| 308 |
+
ultralytics/utils/export/tensorflow.py
|
vendor/ultralytics.egg-info/dependency_links.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
|
vendor/ultralytics.egg-info/entry_points.txt
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
[console_scripts]
|
| 2 |
+
ultralytics = ultralytics.cfg:entrypoint
|
| 3 |
+
yolo = ultralytics.cfg:entrypoint
|
vendor/ultralytics.egg-info/requires.txt
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
numpy>=1.23.0
|
| 2 |
+
matplotlib>=3.3.0
|
| 3 |
+
opencv-python>=4.6.0
|
| 4 |
+
pillow>=7.1.2
|
| 5 |
+
pyyaml>=5.3.1
|
| 6 |
+
requests>=2.23.0
|
| 7 |
+
scipy>=1.4.1
|
| 8 |
+
torch>=1.8.0
|
| 9 |
+
torchvision>=0.9.0
|
| 10 |
+
psutil>=5.8.0
|
| 11 |
+
polars>=0.20.0
|
| 12 |
+
ultralytics-thop>=2.0.18
|
| 13 |
+
|
| 14 |
+
[:sys_platform == "win32"]
|
| 15 |
+
torch!=2.4.0,>=1.8.0
|
| 16 |
+
|
| 17 |
+
[dev]
|
| 18 |
+
ipython
|
| 19 |
+
pytest
|
| 20 |
+
pytest-cov
|
| 21 |
+
coverage[toml]
|
| 22 |
+
mkdocs-ultralytics-plugin>=0.2.4
|
| 23 |
+
minijinja>=2.0.0
|
| 24 |
+
|
| 25 |
+
[dev:python_version >= "3.10"]
|
| 26 |
+
zensical>=0.0.15
|
| 27 |
+
|
| 28 |
+
[export]
|
| 29 |
+
numpy<2.0.0
|
| 30 |
+
onnxslim>=0.1.82
|
| 31 |
+
openvino>=2024.0.0
|
| 32 |
+
tensorflow<=2.19.0,>=2.0.0
|
| 33 |
+
tensorflowjs>=2.0.0
|
| 34 |
+
setuptools<=81.0.0
|
| 35 |
+
|
| 36 |
+
[export:platform_machine == "aarch64"]
|
| 37 |
+
h5py!=3.11.0
|
| 38 |
+
|
| 39 |
+
[export:platform_machine == "aarch64" and platform_system == "Linux" and python_version >= "3.9"]
|
| 40 |
+
packaging>=26.0
|
| 41 |
+
|
| 42 |
+
[export:platform_machine == "aarch64" and python_version >= "3.9"]
|
| 43 |
+
tensorstore>=0.1.63
|
| 44 |
+
|
| 45 |
+
[export:platform_system != "Darwin"]
|
| 46 |
+
onnx>=1.12.0
|
| 47 |
+
|
| 48 |
+
[export:platform_system != "Windows" and python_version <= "3.13"]
|
| 49 |
+
coremltools>=9.0
|
| 50 |
+
scikit-learn>=1.3.2
|
| 51 |
+
|
| 52 |
+
[export:platform_system == "Darwin"]
|
| 53 |
+
onnx<1.18.0,>=1.12.0
|
| 54 |
+
|
| 55 |
+
[extra]
|
| 56 |
+
ipython
|
| 57 |
+
albumentations>=1.4.6
|
| 58 |
+
faster-coco-eval>=1.6.7
|
| 59 |
+
|
| 60 |
+
[logging]
|
| 61 |
+
wandb
|
| 62 |
+
tensorboard
|
| 63 |
+
mlflow
|
| 64 |
+
|
| 65 |
+
[solutions]
|
| 66 |
+
shapely>=2.0.0
|
| 67 |
+
flask>=3.0.1
|
| 68 |
+
|
| 69 |
+
[solutions:python_version < "3.10" and (python_version < "3.9" or platform_machine != "aarch64" or platform_system != "Linux")]
|
| 70 |
+
streamlit<1.51.0,>=1.29.0
|
| 71 |
+
|
| 72 |
+
[solutions:python_version >= "3.10"]
|
| 73 |
+
streamlit>=1.51.0
|
| 74 |
+
|
| 75 |
+
[typing]
|
| 76 |
+
types-pillow
|
| 77 |
+
types-psutil
|
| 78 |
+
types-pyyaml
|
| 79 |
+
types-requests
|
| 80 |
+
types-shapely
|
| 81 |
+
|
| 82 |
+
[typing:python_version >= "3.10"]
|
| 83 |
+
scipy-stubs>=1.14.1.4
|
vendor/ultralytics.egg-info/top_level.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
ultralytics
|
vendor/ultralytics/__init__.py
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Ultralytics π AGPL-3.0 License - https://ultralytics.com/license
|
| 2 |
+
|
| 3 |
+
__version__ = "8.4.21"
|
| 4 |
+
|
| 5 |
+
import importlib
|
| 6 |
+
import os
|
| 7 |
+
from typing import TYPE_CHECKING
|
| 8 |
+
|
| 9 |
+
# Set ENV variables (place before imports)
|
| 10 |
+
if not os.environ.get("OMP_NUM_THREADS"):
|
| 11 |
+
os.environ["OMP_NUM_THREADS"] = "1" # default for reduced CPU utilization during training
|
| 12 |
+
|
| 13 |
+
from ultralytics.utils import ASSETS, SETTINGS
|
| 14 |
+
from ultralytics.utils.checks import check_yolo as checks
|
| 15 |
+
from ultralytics.utils.downloads import download
|
| 16 |
+
|
| 17 |
+
settings = SETTINGS
|
| 18 |
+
|
| 19 |
+
MODELS = ("YOLO", "YOLOWorld", "YOLOE", "NAS", "SAM", "FastSAM", "RTDETR")
|
| 20 |
+
|
| 21 |
+
__all__ = (
|
| 22 |
+
"__version__",
|
| 23 |
+
"ASSETS",
|
| 24 |
+
*MODELS,
|
| 25 |
+
"checks",
|
| 26 |
+
"download",
|
| 27 |
+
"settings",
|
| 28 |
+
)
|
| 29 |
+
|
| 30 |
+
if TYPE_CHECKING:
|
| 31 |
+
# Enable hints for type checkers
|
| 32 |
+
from ultralytics.models import YOLO, YOLOWorld, YOLOE, NAS, SAM, FastSAM, RTDETR # noqa
|
| 33 |
+
|
| 34 |
+
|
| 35 |
+
def __getattr__(name: str):
|
| 36 |
+
"""Lazy-import model classes on first access."""
|
| 37 |
+
if name in MODELS:
|
| 38 |
+
return getattr(importlib.import_module("ultralytics.models"), name)
|
| 39 |
+
raise AttributeError(f"module {__name__} has no attribute {name}")
|
| 40 |
+
|
| 41 |
+
|
| 42 |
+
def __dir__():
|
| 43 |
+
"""Extend dir() to include lazily available model names for IDE autocompletion."""
|
| 44 |
+
return sorted(set(globals()) | set(MODELS))
|
| 45 |
+
|
| 46 |
+
|
| 47 |
+
if __name__ == "__main__":
|
| 48 |
+
print(__version__)
|
vendor/ultralytics/cfg/__init__.py
ADDED
|
@@ -0,0 +1,1039 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Ultralytics π AGPL-3.0 License - https://ultralytics.com/license
|
| 2 |
+
|
| 3 |
+
from __future__ import annotations
|
| 4 |
+
|
| 5 |
+
import ast
|
| 6 |
+
import shutil
|
| 7 |
+
import subprocess
|
| 8 |
+
import sys
|
| 9 |
+
from pathlib import Path
|
| 10 |
+
from types import SimpleNamespace
|
| 11 |
+
from typing import Any
|
| 12 |
+
|
| 13 |
+
from ultralytics import __version__
|
| 14 |
+
from ultralytics.utils import (
|
| 15 |
+
ASSETS,
|
| 16 |
+
DEFAULT_CFG,
|
| 17 |
+
DEFAULT_CFG_DICT,
|
| 18 |
+
DEFAULT_CFG_PATH,
|
| 19 |
+
FLOAT_OR_INT,
|
| 20 |
+
IS_VSCODE,
|
| 21 |
+
LOGGER,
|
| 22 |
+
RANK,
|
| 23 |
+
ROOT,
|
| 24 |
+
RUNS_DIR,
|
| 25 |
+
SETTINGS,
|
| 26 |
+
SETTINGS_FILE,
|
| 27 |
+
STR_OR_PATH,
|
| 28 |
+
TESTS_RUNNING,
|
| 29 |
+
YAML,
|
| 30 |
+
IterableSimpleNamespace,
|
| 31 |
+
checks,
|
| 32 |
+
colorstr,
|
| 33 |
+
deprecation_warn,
|
| 34 |
+
vscode_msg,
|
| 35 |
+
)
|
| 36 |
+
|
| 37 |
+
# Define valid solutions
|
| 38 |
+
SOLUTION_MAP = {
|
| 39 |
+
"count": "ObjectCounter",
|
| 40 |
+
"crop": "ObjectCropper",
|
| 41 |
+
"blur": "ObjectBlurrer",
|
| 42 |
+
"workout": "AIGym",
|
| 43 |
+
"heatmap": "Heatmap",
|
| 44 |
+
"isegment": "InstanceSegmentation",
|
| 45 |
+
"visioneye": "VisionEye",
|
| 46 |
+
"speed": "SpeedEstimator",
|
| 47 |
+
"queue": "QueueManager",
|
| 48 |
+
"analytics": "Analytics",
|
| 49 |
+
"inference": "Inference",
|
| 50 |
+
"trackzone": "TrackZone",
|
| 51 |
+
"help": None,
|
| 52 |
+
}
|
| 53 |
+
|
| 54 |
+
# Define valid tasks and modes
|
| 55 |
+
MODES = frozenset({"train", "val", "predict", "export", "track", "benchmark"})
|
| 56 |
+
TASKS = frozenset({"detect", "segment", "classify", "pose", "obb"})
|
| 57 |
+
TASK2DATA = {
|
| 58 |
+
"detect": "coco8.yaml",
|
| 59 |
+
"segment": "coco8-seg.yaml",
|
| 60 |
+
"classify": "imagenet10",
|
| 61 |
+
"pose": "coco8-pose.yaml",
|
| 62 |
+
"obb": "dota8.yaml",
|
| 63 |
+
}
|
| 64 |
+
TASK2MODEL = {
|
| 65 |
+
"detect": "yolo26n.pt",
|
| 66 |
+
"segment": "yolo26n-seg.pt",
|
| 67 |
+
"classify": "yolo26n-cls.pt",
|
| 68 |
+
"pose": "yolo26n-pose.pt",
|
| 69 |
+
"obb": "yolo26n-obb.pt",
|
| 70 |
+
}
|
| 71 |
+
TASK2METRIC = {
|
| 72 |
+
"detect": "metrics/mAP50-95(B)",
|
| 73 |
+
"segment": "metrics/mAP50-95(M)",
|
| 74 |
+
"classify": "metrics/accuracy_top1",
|
| 75 |
+
"pose": "metrics/mAP50-95(P)",
|
| 76 |
+
"obb": "metrics/mAP50-95(B)",
|
| 77 |
+
}
|
| 78 |
+
|
| 79 |
+
ARGV = sys.argv or ["", ""] # sometimes sys.argv = []
|
| 80 |
+
SOLUTIONS_HELP_MSG = f"""
|
| 81 |
+
Arguments received: {["yolo", *ARGV[1:]]!s}. Ultralytics 'yolo solutions' usage overview:
|
| 82 |
+
|
| 83 |
+
yolo solutions SOLUTION ARGS
|
| 84 |
+
|
| 85 |
+
Where SOLUTION (optional) is one of {list(SOLUTION_MAP.keys())[:-1]}
|
| 86 |
+
ARGS (optional) are any number of custom 'arg=value' pairs like 'show_in=True' that override defaults
|
| 87 |
+
at https://docs.ultralytics.com/usage/cfg
|
| 88 |
+
|
| 89 |
+
1. Call object counting solution
|
| 90 |
+
yolo solutions count source="path/to/video.mp4" region="[(20, 400), (1080, 400), (1080, 360), (20, 360)]"
|
| 91 |
+
|
| 92 |
+
2. Call heatmap solution
|
| 93 |
+
yolo solutions heatmap colormap=cv2.COLORMAP_PARULA model=yolo26n.pt
|
| 94 |
+
|
| 95 |
+
3. Call queue management solution
|
| 96 |
+
yolo solutions queue region="[(20, 400), (1080, 400), (1080, 360), (20, 360)]" model=yolo26n.pt
|
| 97 |
+
|
| 98 |
+
4. Call workout monitoring solution for push-ups
|
| 99 |
+
yolo solutions workout model=yolo26n-pose.pt kpts=[6, 8, 10]
|
| 100 |
+
|
| 101 |
+
5. Generate analytical graphs
|
| 102 |
+
yolo solutions analytics analytics_type="pie"
|
| 103 |
+
|
| 104 |
+
6. Track objects within specific zones
|
| 105 |
+
yolo solutions trackzone source="path/to/video.mp4" region="[(150, 150), (1130, 150), (1130, 570), (150, 570)]"
|
| 106 |
+
|
| 107 |
+
7. Streamlit real-time webcam inference GUI
|
| 108 |
+
yolo streamlit-predict
|
| 109 |
+
"""
|
| 110 |
+
CLI_HELP_MSG = f"""
|
| 111 |
+
Arguments received: {["yolo", *ARGV[1:]]!s}. Ultralytics 'yolo' commands use the following syntax:
|
| 112 |
+
|
| 113 |
+
yolo TASK MODE ARGS
|
| 114 |
+
|
| 115 |
+
Where TASK (optional) is one of {list(TASKS)}
|
| 116 |
+
MODE (required) is one of {list(MODES)}
|
| 117 |
+
ARGS (optional) are any number of custom 'arg=value' pairs like 'imgsz=320' that override defaults.
|
| 118 |
+
See all ARGS at https://docs.ultralytics.com/usage/cfg or with 'yolo cfg'
|
| 119 |
+
|
| 120 |
+
1. Train a detection model for 10 epochs with an initial learning_rate of 0.01
|
| 121 |
+
yolo train data=coco8.yaml model=yolo26n.pt epochs=10 lr0=0.01
|
| 122 |
+
|
| 123 |
+
2. Predict a YouTube video using a pretrained segmentation model at image size 320:
|
| 124 |
+
yolo predict model=yolo26n-seg.pt source='https://youtu.be/LNwODJXcvt4' imgsz=320
|
| 125 |
+
|
| 126 |
+
3. Validate a pretrained detection model at batch-size 1 and image size 640:
|
| 127 |
+
yolo val model=yolo26n.pt data=coco8.yaml batch=1 imgsz=640
|
| 128 |
+
|
| 129 |
+
4. Export a YOLO26n classification model to ONNX format at image size 224 by 128 (no TASK required)
|
| 130 |
+
yolo export model=yolo26n-cls.pt format=onnx imgsz=224,128
|
| 131 |
+
|
| 132 |
+
5. Ultralytics solutions usage
|
| 133 |
+
yolo solutions count or any of {list(SOLUTION_MAP.keys())[1:-1]} source="path/to/video.mp4"
|
| 134 |
+
|
| 135 |
+
6. Run special commands:
|
| 136 |
+
yolo help
|
| 137 |
+
yolo checks
|
| 138 |
+
yolo version
|
| 139 |
+
yolo settings
|
| 140 |
+
yolo copy-cfg
|
| 141 |
+
yolo cfg
|
| 142 |
+
yolo solutions help
|
| 143 |
+
|
| 144 |
+
Docs: https://docs.ultralytics.com
|
| 145 |
+
Solutions: https://docs.ultralytics.com/solutions/
|
| 146 |
+
Community: https://community.ultralytics.com
|
| 147 |
+
GitHub: https://github.com/ultralytics/ultralytics
|
| 148 |
+
"""
|
| 149 |
+
|
| 150 |
+
# Define keys for arg type checks
|
| 151 |
+
CFG_FLOAT_KEYS = frozenset(
|
| 152 |
+
{ # integer or float arguments, i.e. x=2 and x=2.0
|
| 153 |
+
"warmup_epochs",
|
| 154 |
+
"box",
|
| 155 |
+
"cls",
|
| 156 |
+
"dfl",
|
| 157 |
+
"degrees",
|
| 158 |
+
"shear",
|
| 159 |
+
"time",
|
| 160 |
+
"workspace",
|
| 161 |
+
"batch",
|
| 162 |
+
"gaussian_noise_mean",
|
| 163 |
+
}
|
| 164 |
+
)
|
| 165 |
+
CFG_FRACTION_KEYS = frozenset(
|
| 166 |
+
{ # fractional float arguments with 0.0<=values<=1.0
|
| 167 |
+
"dropout",
|
| 168 |
+
"lr0",
|
| 169 |
+
"lrf",
|
| 170 |
+
"momentum",
|
| 171 |
+
"weight_decay",
|
| 172 |
+
"warmup_momentum",
|
| 173 |
+
"warmup_bias_lr",
|
| 174 |
+
"hsv_h",
|
| 175 |
+
"hsv_s",
|
| 176 |
+
"hsv_v",
|
| 177 |
+
"translate",
|
| 178 |
+
"scale",
|
| 179 |
+
"perspective",
|
| 180 |
+
"flipud",
|
| 181 |
+
"fliplr",
|
| 182 |
+
"bgr",
|
| 183 |
+
"mosaic",
|
| 184 |
+
"mixup",
|
| 185 |
+
"cutmix",
|
| 186 |
+
"copy_paste",
|
| 187 |
+
"gaussian_noise_p",
|
| 188 |
+
"conf",
|
| 189 |
+
"iou",
|
| 190 |
+
"fraction",
|
| 191 |
+
"multi_scale",
|
| 192 |
+
"deeppcb_safe_fliplr",
|
| 193 |
+
"deeppcb_safe_flipud",
|
| 194 |
+
"deeppcb_safe_crop_p",
|
| 195 |
+
"deeppcb_safe_crop_min_frac",
|
| 196 |
+
"deeppcb_safe_translate",
|
| 197 |
+
"deeppcb_safe_scale",
|
| 198 |
+
}
|
| 199 |
+
)
|
| 200 |
+
CFG_INT_KEYS = frozenset(
|
| 201 |
+
{ # integer-only arguments
|
| 202 |
+
"epochs",
|
| 203 |
+
"patience",
|
| 204 |
+
"workers",
|
| 205 |
+
"seed",
|
| 206 |
+
"close_mosaic",
|
| 207 |
+
"mask_ratio",
|
| 208 |
+
"max_det",
|
| 209 |
+
"vid_stride",
|
| 210 |
+
"line_width",
|
| 211 |
+
"nbs",
|
| 212 |
+
"save_period",
|
| 213 |
+
}
|
| 214 |
+
)
|
| 215 |
+
CFG_BOOL_KEYS = frozenset(
|
| 216 |
+
{ # boolean-only arguments
|
| 217 |
+
"save",
|
| 218 |
+
"exist_ok",
|
| 219 |
+
"verbose",
|
| 220 |
+
"deterministic",
|
| 221 |
+
"single_cls",
|
| 222 |
+
"rect",
|
| 223 |
+
"cos_lr",
|
| 224 |
+
"overlap_mask",
|
| 225 |
+
"val",
|
| 226 |
+
"save_json",
|
| 227 |
+
"half",
|
| 228 |
+
"dnn",
|
| 229 |
+
"plots",
|
| 230 |
+
"show",
|
| 231 |
+
"save_txt",
|
| 232 |
+
"save_conf",
|
| 233 |
+
"save_crop",
|
| 234 |
+
"save_frames",
|
| 235 |
+
"show_labels",
|
| 236 |
+
"show_conf",
|
| 237 |
+
"visualize",
|
| 238 |
+
"augment",
|
| 239 |
+
"agnostic_nms",
|
| 240 |
+
"retina_masks",
|
| 241 |
+
"show_boxes",
|
| 242 |
+
"keras",
|
| 243 |
+
"optimize",
|
| 244 |
+
"int8",
|
| 245 |
+
"dynamic",
|
| 246 |
+
"simplify",
|
| 247 |
+
"nms",
|
| 248 |
+
"profile",
|
| 249 |
+
"end2end",
|
| 250 |
+
"prebackbone_input_only_non_geo_aug",
|
| 251 |
+
"isdeeppcb",
|
| 252 |
+
"deeppcb_safe_aug",
|
| 253 |
+
"augment_train",
|
| 254 |
+
}
|
| 255 |
+
)
|
| 256 |
+
|
| 257 |
+
|
| 258 |
+
def cfg2dict(cfg: str | Path | dict | SimpleNamespace) -> dict:
|
| 259 |
+
"""Convert a configuration object to a dictionary.
|
| 260 |
+
|
| 261 |
+
Args:
|
| 262 |
+
cfg (str | Path | dict | SimpleNamespace): Configuration object to be converted. Can be a file path, a string, a
|
| 263 |
+
dictionary, or a SimpleNamespace object.
|
| 264 |
+
|
| 265 |
+
Returns:
|
| 266 |
+
(dict): Configuration object in dictionary format.
|
| 267 |
+
|
| 268 |
+
Examples:
|
| 269 |
+
Convert a YAML file path to a dictionary:
|
| 270 |
+
>>> config_dict = cfg2dict("config.yaml")
|
| 271 |
+
|
| 272 |
+
Convert a SimpleNamespace to a dictionary:
|
| 273 |
+
>>> from types import SimpleNamespace
|
| 274 |
+
>>> config_sn = SimpleNamespace(param1="value1", param2="value2")
|
| 275 |
+
>>> config_dict = cfg2dict(config_sn)
|
| 276 |
+
|
| 277 |
+
Pass through an already existing dictionary:
|
| 278 |
+
>>> config_dict = cfg2dict({"param1": "value1", "param2": "value2"})
|
| 279 |
+
|
| 280 |
+
Notes:
|
| 281 |
+
- If cfg is a path or string, it's loaded as YAML and converted to a dictionary.
|
| 282 |
+
- If cfg is a SimpleNamespace object, it's converted to a dictionary using vars().
|
| 283 |
+
- If cfg is already a dictionary, it's returned unchanged.
|
| 284 |
+
"""
|
| 285 |
+
if isinstance(cfg, STR_OR_PATH):
|
| 286 |
+
cfg = YAML.load(cfg) # load dict
|
| 287 |
+
elif isinstance(cfg, SimpleNamespace):
|
| 288 |
+
cfg = vars(cfg) # convert to dict
|
| 289 |
+
return cfg
|
| 290 |
+
|
| 291 |
+
|
| 292 |
+
def get_cfg(
|
| 293 |
+
cfg: str | Path | dict | SimpleNamespace = DEFAULT_CFG_DICT, overrides: dict | None = None
|
| 294 |
+
) -> SimpleNamespace:
|
| 295 |
+
"""Load and merge configuration data from a file or dictionary, with optional overrides.
|
| 296 |
+
|
| 297 |
+
Args:
|
| 298 |
+
cfg (str | Path | dict | SimpleNamespace): Configuration data source. Can be a file path, dictionary, or
|
| 299 |
+
SimpleNamespace object.
|
| 300 |
+
overrides (dict | None): Dictionary containing key-value pairs to override the base configuration.
|
| 301 |
+
|
| 302 |
+
Returns:
|
| 303 |
+
(SimpleNamespace): Namespace containing the merged configuration arguments.
|
| 304 |
+
|
| 305 |
+
Examples:
|
| 306 |
+
>>> from ultralytics.cfg import get_cfg
|
| 307 |
+
>>> config = get_cfg() # Load default configuration
|
| 308 |
+
>>> config_with_overrides = get_cfg("path/to/config.yaml", overrides={"epochs": 50, "batch_size": 16})
|
| 309 |
+
|
| 310 |
+
Notes:
|
| 311 |
+
- If both `cfg` and `overrides` are provided, the values in `overrides` will take precedence.
|
| 312 |
+
- Special handling ensures alignment and correctness of the configuration, such as converting numeric
|
| 313 |
+
`project` and `name` to strings and validating configuration keys and values.
|
| 314 |
+
- The function performs type and value checks on the configuration data.
|
| 315 |
+
"""
|
| 316 |
+
cfg = cfg2dict(cfg)
|
| 317 |
+
|
| 318 |
+
# Merge overrides
|
| 319 |
+
if overrides:
|
| 320 |
+
overrides = cfg2dict(overrides)
|
| 321 |
+
check_dict_alignment(cfg, overrides)
|
| 322 |
+
cfg = {**cfg, **overrides} # merge cfg and overrides dicts (prefer overrides)
|
| 323 |
+
|
| 324 |
+
# Special handling for numeric project/name
|
| 325 |
+
for k in "project", "name":
|
| 326 |
+
if k in cfg and isinstance(cfg[k], FLOAT_OR_INT):
|
| 327 |
+
cfg[k] = str(cfg[k])
|
| 328 |
+
if cfg.get("name") == "model": # assign model to 'name' arg
|
| 329 |
+
cfg["name"] = str(cfg.get("model", "")).partition(".")[0]
|
| 330 |
+
LOGGER.warning(f"'name=model' automatically updated to 'name={cfg['name']}'.")
|
| 331 |
+
|
| 332 |
+
# Type and Value checks
|
| 333 |
+
check_cfg(cfg)
|
| 334 |
+
|
| 335 |
+
# Return instance
|
| 336 |
+
return IterableSimpleNamespace(**cfg)
|
| 337 |
+
|
| 338 |
+
|
| 339 |
+
def check_cfg(cfg: dict, hard: bool = True) -> None:
|
| 340 |
+
"""Check configuration argument types and values for the Ultralytics library.
|
| 341 |
+
|
| 342 |
+
This function validates the types and values of configuration arguments, ensuring correctness and converting them if
|
| 343 |
+
necessary. It checks for specific key types defined in global variables such as `CFG_FLOAT_KEYS`,
|
| 344 |
+
`CFG_FRACTION_KEYS`, `CFG_INT_KEYS`, and `CFG_BOOL_KEYS`.
|
| 345 |
+
|
| 346 |
+
Args:
|
| 347 |
+
cfg (dict): Configuration dictionary to validate.
|
| 348 |
+
hard (bool): If True, raises exceptions for invalid types and values; if False, attempts to convert them.
|
| 349 |
+
|
| 350 |
+
Examples:
|
| 351 |
+
>>> config = {
|
| 352 |
+
... "epochs": 50, # valid integer
|
| 353 |
+
... "lr0": 0.01, # valid float
|
| 354 |
+
... "momentum": 1.2, # invalid float (out of 0.0-1.0 range)
|
| 355 |
+
... "save": "true", # invalid bool
|
| 356 |
+
... }
|
| 357 |
+
>>> check_cfg(config, hard=False)
|
| 358 |
+
>>> print(config)
|
| 359 |
+
{'epochs': 50, 'lr0': 0.01, 'momentum': 1.2, 'save': False} # corrected 'save' key
|
| 360 |
+
|
| 361 |
+
Notes:
|
| 362 |
+
- The function modifies the input dictionary in-place.
|
| 363 |
+
- None values are ignored as they may be from optional arguments.
|
| 364 |
+
- Fraction keys are checked to be within the range [0.0, 1.0].
|
| 365 |
+
"""
|
| 366 |
+
for k, v in cfg.items():
|
| 367 |
+
if v is not None: # None values may be from optional args
|
| 368 |
+
if k in CFG_FLOAT_KEYS and not isinstance(v, FLOAT_OR_INT):
|
| 369 |
+
if hard:
|
| 370 |
+
raise TypeError(
|
| 371 |
+
f"'{k}={v}' is of invalid type {type(v).__name__}. "
|
| 372 |
+
f"Valid '{k}' types are int (i.e. '{k}=0') or float (i.e. '{k}=0.5')"
|
| 373 |
+
)
|
| 374 |
+
cfg[k] = float(v)
|
| 375 |
+
elif k in CFG_FRACTION_KEYS:
|
| 376 |
+
if not isinstance(v, FLOAT_OR_INT):
|
| 377 |
+
if hard:
|
| 378 |
+
raise TypeError(
|
| 379 |
+
f"'{k}={v}' is of invalid type {type(v).__name__}. "
|
| 380 |
+
f"Valid '{k}' types are int (i.e. '{k}=0') or float (i.e. '{k}=0.5')"
|
| 381 |
+
)
|
| 382 |
+
cfg[k] = v = float(v)
|
| 383 |
+
if not (0.0 <= v <= 1.0):
|
| 384 |
+
raise ValueError(f"'{k}={v}' is an invalid value. Valid '{k}' values are between 0.0 and 1.0.")
|
| 385 |
+
elif k in CFG_INT_KEYS and not isinstance(v, int):
|
| 386 |
+
if hard:
|
| 387 |
+
raise TypeError(
|
| 388 |
+
f"'{k}={v}' is of invalid type {type(v).__name__}. '{k}' must be an int (i.e. '{k}=8')"
|
| 389 |
+
)
|
| 390 |
+
cfg[k] = int(v)
|
| 391 |
+
elif k in CFG_BOOL_KEYS and not isinstance(v, bool):
|
| 392 |
+
if hard:
|
| 393 |
+
raise TypeError(
|
| 394 |
+
f"'{k}={v}' is of invalid type {type(v).__name__}. "
|
| 395 |
+
f"'{k}' must be a bool (i.e. '{k}=True' or '{k}=False')"
|
| 396 |
+
)
|
| 397 |
+
cfg[k] = bool(v)
|
| 398 |
+
|
| 399 |
+
|
| 400 |
+
def get_save_dir(args: SimpleNamespace, name: str | None = None) -> Path:
|
| 401 |
+
"""Return the directory path for saving outputs, derived from arguments or default settings.
|
| 402 |
+
|
| 403 |
+
Args:
|
| 404 |
+
args (SimpleNamespace): Namespace object containing configurations such as 'project', 'name', 'task', 'mode',
|
| 405 |
+
and 'save_dir'.
|
| 406 |
+
name (str | None): Optional name for the output directory. If not provided, it defaults to 'args.name' or the
|
| 407 |
+
'args.mode'.
|
| 408 |
+
|
| 409 |
+
Returns:
|
| 410 |
+
(Path): Directory path where outputs should be saved.
|
| 411 |
+
|
| 412 |
+
Examples:
|
| 413 |
+
>>> from types import SimpleNamespace
|
| 414 |
+
>>> args = SimpleNamespace(project="my_project", task="detect", mode="train", exist_ok=True)
|
| 415 |
+
>>> save_dir = get_save_dir(args)
|
| 416 |
+
>>> print(save_dir)
|
| 417 |
+
runs/detect/my_project/train
|
| 418 |
+
"""
|
| 419 |
+
if getattr(args, "save_dir", None):
|
| 420 |
+
save_dir = args.save_dir
|
| 421 |
+
else:
|
| 422 |
+
from ultralytics.utils.files import increment_path
|
| 423 |
+
|
| 424 |
+
project = args.project or ""
|
| 425 |
+
if not Path(project).is_absolute():
|
| 426 |
+
project = (ROOT.parent / "tests/tmp/runs" if TESTS_RUNNING else RUNS_DIR) / args.task / project
|
| 427 |
+
name = name or args.name or f"{args.mode}"
|
| 428 |
+
save_dir = increment_path(Path(project) / name, exist_ok=args.exist_ok if RANK in {-1, 0} else True)
|
| 429 |
+
|
| 430 |
+
return Path(save_dir).resolve() # resolve to display full path in console
|
| 431 |
+
|
| 432 |
+
|
| 433 |
+
def _handle_deprecation(custom: dict) -> dict:
|
| 434 |
+
"""Handle deprecated configuration keys by mapping them to current equivalents with deprecation warnings.
|
| 435 |
+
|
| 436 |
+
Args:
|
| 437 |
+
custom (dict): Configuration dictionary potentially containing deprecated keys.
|
| 438 |
+
|
| 439 |
+
Returns:
|
| 440 |
+
(dict): Updated configuration dictionary with deprecated keys replaced.
|
| 441 |
+
|
| 442 |
+
Examples:
|
| 443 |
+
>>> custom_config = {"boxes": True, "hide_labels": "False", "line_thickness": 2}
|
| 444 |
+
>>> _handle_deprecation(custom_config)
|
| 445 |
+
>>> print(custom_config)
|
| 446 |
+
{'show_boxes': True, 'show_labels': True, 'line_width': 2}
|
| 447 |
+
|
| 448 |
+
Notes:
|
| 449 |
+
This function modifies the input dictionary in-place, replacing deprecated keys with their current
|
| 450 |
+
equivalents. It also handles value conversions where necessary, such as inverting boolean values for
|
| 451 |
+
'hide_labels' and 'hide_conf'.
|
| 452 |
+
"""
|
| 453 |
+
deprecated_mappings = {
|
| 454 |
+
"boxes": ("show_boxes", lambda v: v),
|
| 455 |
+
"hide_labels": ("show_labels", lambda v: not bool(v)),
|
| 456 |
+
"hide_conf": ("show_conf", lambda v: not bool(v)),
|
| 457 |
+
"line_thickness": ("line_width", lambda v: v),
|
| 458 |
+
}
|
| 459 |
+
removed_keys = {"label_smoothing", "save_hybrid", "crop_fraction"}
|
| 460 |
+
|
| 461 |
+
for old_key, (new_key, transform) in deprecated_mappings.items():
|
| 462 |
+
if old_key not in custom:
|
| 463 |
+
continue
|
| 464 |
+
deprecation_warn(old_key, new_key)
|
| 465 |
+
custom[new_key] = transform(custom.pop(old_key))
|
| 466 |
+
|
| 467 |
+
for key in removed_keys:
|
| 468 |
+
if key not in custom:
|
| 469 |
+
continue
|
| 470 |
+
deprecation_warn(key)
|
| 471 |
+
custom.pop(key)
|
| 472 |
+
|
| 473 |
+
return custom
|
| 474 |
+
|
| 475 |
+
|
| 476 |
+
def check_dict_alignment(
|
| 477 |
+
base: dict, custom: dict, e: Exception | None = None, allowed_custom_keys: set | None = None
|
| 478 |
+
) -> None:
|
| 479 |
+
"""Check alignment between custom and base configuration dictionaries, handling deprecated keys and providing error
|
| 480 |
+
messages for mismatched keys.
|
| 481 |
+
|
| 482 |
+
Args:
|
| 483 |
+
base (dict): The base configuration dictionary containing valid keys.
|
| 484 |
+
custom (dict): The custom configuration dictionary to be checked for alignment.
|
| 485 |
+
e (Exception | None): Optional error instance passed by the calling function.
|
| 486 |
+
allowed_custom_keys (set | None): Optional set of additional keys that are allowed in the custom dictionary.
|
| 487 |
+
|
| 488 |
+
Raises:
|
| 489 |
+
SystemExit: If mismatched keys are found between the custom and base dictionaries.
|
| 490 |
+
|
| 491 |
+
Examples:
|
| 492 |
+
>>> base_cfg = {"epochs": 50, "lr0": 0.01, "batch_size": 16}
|
| 493 |
+
>>> custom_cfg = {"epoch": 100, "lr": 0.02, "batch_size": 32}
|
| 494 |
+
>>> try:
|
| 495 |
+
... check_dict_alignment(base_cfg, custom_cfg)
|
| 496 |
+
... except SystemExit:
|
| 497 |
+
... print("Mismatched keys found")
|
| 498 |
+
|
| 499 |
+
Notes:
|
| 500 |
+
- Suggests corrections for mismatched keys based on similarity to valid keys.
|
| 501 |
+
- Automatically replaces deprecated keys in the custom configuration with updated equivalents.
|
| 502 |
+
- Prints detailed error messages for each mismatched key to help users correct their configurations.
|
| 503 |
+
"""
|
| 504 |
+
custom = _handle_deprecation(custom)
|
| 505 |
+
base_keys, custom_keys = (frozenset(x.keys()) for x in (base, custom))
|
| 506 |
+
# Allow 'augmentations' as a valid custom parameter for custom Albumentations transforms
|
| 507 |
+
if allowed_custom_keys is None:
|
| 508 |
+
allowed_custom_keys = {"augmentations", "save_dir"}
|
| 509 |
+
if mismatched := [k for k in custom_keys if k not in base_keys and k not in allowed_custom_keys]:
|
| 510 |
+
from difflib import get_close_matches
|
| 511 |
+
|
| 512 |
+
string = ""
|
| 513 |
+
for x in mismatched:
|
| 514 |
+
matches = get_close_matches(x, base_keys) # key list
|
| 515 |
+
matches = [f"{k}={base[k]}" if base.get(k) is not None else k for k in matches]
|
| 516 |
+
match_str = f"Similar arguments are i.e. {matches}." if matches else ""
|
| 517 |
+
string += f"'{colorstr('red', 'bold', x)}' is not a valid YOLO argument. {match_str}\n"
|
| 518 |
+
raise SyntaxError(string + CLI_HELP_MSG) from e
|
| 519 |
+
|
| 520 |
+
|
| 521 |
+
def merge_equals_args(args: list[str]) -> list[str]:
|
| 522 |
+
"""Merge arguments around isolated '=' in a list of strings and join fragments with brackets.
|
| 523 |
+
|
| 524 |
+
This function handles the following cases:
|
| 525 |
+
1. ['arg', '=', 'val'] becomes ['arg=val']
|
| 526 |
+
2. ['arg=', 'val'] becomes ['arg=val']
|
| 527 |
+
3. ['arg', '=val'] becomes ['arg=val']
|
| 528 |
+
4. Joins fragments with brackets, e.g., ['imgsz=[3,', '640,', '640]'] becomes ['imgsz=[3,640,640]']
|
| 529 |
+
|
| 530 |
+
Args:
|
| 531 |
+
args (list[str]): A list of strings where each element represents an argument or fragment.
|
| 532 |
+
|
| 533 |
+
Returns:
|
| 534 |
+
(list[str]): A list of strings where the arguments around isolated '=' are merged and fragments with brackets
|
| 535 |
+
are joined.
|
| 536 |
+
|
| 537 |
+
Examples:
|
| 538 |
+
>>> args = ["arg1", "=", "value", "arg2=", "value2", "arg3", "=value3", "imgsz=[3,", "640,", "640]"]
|
| 539 |
+
>>> merge_equals_args(args)
|
| 540 |
+
['arg1=value', 'arg2=value2', 'arg3=value3', 'imgsz=[3,640,640]']
|
| 541 |
+
"""
|
| 542 |
+
new_args = []
|
| 543 |
+
current = ""
|
| 544 |
+
depth = 0
|
| 545 |
+
|
| 546 |
+
i = 0
|
| 547 |
+
while i < len(args):
|
| 548 |
+
arg = args[i]
|
| 549 |
+
|
| 550 |
+
# Handle equals sign merging
|
| 551 |
+
if arg == "=" and 0 < i < len(args) - 1: # merge ['arg', '=', 'val']
|
| 552 |
+
new_args[-1] += f"={args[i + 1]}"
|
| 553 |
+
i += 2
|
| 554 |
+
continue
|
| 555 |
+
elif arg.endswith("=") and i < len(args) - 1 and "=" not in args[i + 1]: # merge ['arg=', 'val']
|
| 556 |
+
new_args.append(f"{arg}{args[i + 1]}")
|
| 557 |
+
i += 2
|
| 558 |
+
continue
|
| 559 |
+
elif arg.startswith("=") and i > 0: # merge ['arg', '=val']
|
| 560 |
+
new_args[-1] += arg
|
| 561 |
+
i += 1
|
| 562 |
+
continue
|
| 563 |
+
|
| 564 |
+
# Handle bracket joining
|
| 565 |
+
depth += arg.count("[") - arg.count("]")
|
| 566 |
+
current += arg
|
| 567 |
+
if depth == 0:
|
| 568 |
+
new_args.append(current)
|
| 569 |
+
current = ""
|
| 570 |
+
|
| 571 |
+
i += 1
|
| 572 |
+
|
| 573 |
+
# Append any remaining current string
|
| 574 |
+
if current:
|
| 575 |
+
new_args.append(current)
|
| 576 |
+
|
| 577 |
+
return new_args
|
| 578 |
+
|
| 579 |
+
|
| 580 |
+
def handle_yolo_hub(args: list[str]) -> None:
|
| 581 |
+
"""Handle Ultralytics HUB command-line interface (CLI) commands for authentication.
|
| 582 |
+
|
| 583 |
+
This function processes Ultralytics HUB CLI commands such as login and logout. It should be called when executing a
|
| 584 |
+
script with arguments related to HUB authentication.
|
| 585 |
+
|
| 586 |
+
Args:
|
| 587 |
+
args (list[str]): A list of command line arguments. The first argument should be either 'login' or 'logout'. For
|
| 588 |
+
'login', an optional second argument can be the API key.
|
| 589 |
+
|
| 590 |
+
Examples:
|
| 591 |
+
$ yolo login YOUR_API_KEY
|
| 592 |
+
|
| 593 |
+
Notes:
|
| 594 |
+
- The function imports the 'hub' module from ultralytics to perform login and logout operations.
|
| 595 |
+
- For the 'login' command, if no API key is provided, an empty string is passed to the login function.
|
| 596 |
+
- The 'logout' command does not require any additional arguments.
|
| 597 |
+
"""
|
| 598 |
+
from ultralytics import hub
|
| 599 |
+
|
| 600 |
+
if args[0] == "login":
|
| 601 |
+
key = args[1] if len(args) > 1 else ""
|
| 602 |
+
# Log in to Ultralytics HUB using the provided API key
|
| 603 |
+
hub.login(key)
|
| 604 |
+
elif args[0] == "logout":
|
| 605 |
+
# Log out from Ultralytics HUB
|
| 606 |
+
hub.logout()
|
| 607 |
+
|
| 608 |
+
|
| 609 |
+
def handle_yolo_settings(args: list[str]) -> None:
|
| 610 |
+
"""Handle YOLO settings command-line interface (CLI) commands.
|
| 611 |
+
|
| 612 |
+
This function processes YOLO settings CLI commands such as reset and updating individual settings. It should be
|
| 613 |
+
called when executing a script with arguments related to YOLO settings management.
|
| 614 |
+
|
| 615 |
+
Args:
|
| 616 |
+
args (list[str]): A list of command line arguments for YOLO settings management.
|
| 617 |
+
|
| 618 |
+
Examples:
|
| 619 |
+
>>> handle_yolo_settings(["reset"]) # Reset YOLO settings
|
| 620 |
+
>>> handle_yolo_settings(["default_cfg_path=yolo26n.yaml"]) # Update a specific setting
|
| 621 |
+
|
| 622 |
+
Notes:
|
| 623 |
+
- If no arguments are provided, the function will display the current settings.
|
| 624 |
+
- The 'reset' command will delete the existing settings file and create new default settings.
|
| 625 |
+
- Other arguments are treated as key-value pairs to update specific settings.
|
| 626 |
+
- The function will check for alignment between the provided settings and the existing ones.
|
| 627 |
+
- After processing, the updated settings will be displayed.
|
| 628 |
+
- For more information on handling YOLO settings, visit:
|
| 629 |
+
https://docs.ultralytics.com/quickstart/#ultralytics-settings
|
| 630 |
+
"""
|
| 631 |
+
url = "https://docs.ultralytics.com/quickstart/#ultralytics-settings" # help URL
|
| 632 |
+
try:
|
| 633 |
+
if any(args):
|
| 634 |
+
if args[0] == "reset":
|
| 635 |
+
SETTINGS_FILE.unlink() # delete the settings file
|
| 636 |
+
SETTINGS.reset() # create new settings
|
| 637 |
+
LOGGER.info("Settings reset successfully") # inform the user that settings have been reset
|
| 638 |
+
else: # save a new setting
|
| 639 |
+
new = dict(parse_key_value_pair(a) for a in args)
|
| 640 |
+
check_dict_alignment(SETTINGS, new)
|
| 641 |
+
SETTINGS.update(new)
|
| 642 |
+
for k, v in new.items():
|
| 643 |
+
LOGGER.info(f"β
Updated '{k}={v}'")
|
| 644 |
+
|
| 645 |
+
LOGGER.info(SETTINGS) # print the current settings
|
| 646 |
+
LOGGER.info(f"π‘ Learn more about Ultralytics Settings at {url}")
|
| 647 |
+
except Exception as e:
|
| 648 |
+
LOGGER.warning(f"settings error: '{e}'. Please see {url} for help.")
|
| 649 |
+
|
| 650 |
+
|
| 651 |
+
def handle_yolo_solutions(args: list[str]) -> None:
|
| 652 |
+
"""Process YOLO solutions arguments and run the specified computer vision solutions pipeline.
|
| 653 |
+
|
| 654 |
+
Args:
|
| 655 |
+
args (list[str]): Command-line arguments for configuring and running the Ultralytics YOLO solutions.
|
| 656 |
+
|
| 657 |
+
Examples:
|
| 658 |
+
Run people counting solution with default settings:
|
| 659 |
+
>>> handle_yolo_solutions(["count"])
|
| 660 |
+
|
| 661 |
+
Run analytics with custom configuration:
|
| 662 |
+
>>> handle_yolo_solutions(["analytics", "conf=0.25", "source=path/to/video.mp4"])
|
| 663 |
+
|
| 664 |
+
Run inference with custom configuration, requires Streamlit version 1.29.0 or higher.
|
| 665 |
+
>>> handle_yolo_solutions(["inference", "model=yolo26n.pt"])
|
| 666 |
+
|
| 667 |
+
Notes:
|
| 668 |
+
- Arguments can be provided in the format 'key=value' or as boolean flags
|
| 669 |
+
- Available solutions are defined in SOLUTION_MAP with their respective classes and methods
|
| 670 |
+
- If an invalid solution is provided, defaults to 'count' solution
|
| 671 |
+
- Output videos are saved in 'runs/solution/{solution_name}' directory
|
| 672 |
+
- For 'analytics' solution, frame numbers are tracked for generating analytical graphs
|
| 673 |
+
- Video processing can be interrupted by pressing 'q'
|
| 674 |
+
- Processes video frames sequentially and saves output in .avi format
|
| 675 |
+
- If no source is specified, downloads and uses a default sample video
|
| 676 |
+
- The inference solution will be launched using the 'streamlit run' command.
|
| 677 |
+
- The Streamlit app file is located in the Ultralytics package directory.
|
| 678 |
+
"""
|
| 679 |
+
from ultralytics.solutions.config import SolutionConfig
|
| 680 |
+
|
| 681 |
+
full_args_dict = vars(SolutionConfig()) # arguments dictionary
|
| 682 |
+
overrides = {}
|
| 683 |
+
|
| 684 |
+
# check dictionary alignment
|
| 685 |
+
for arg in merge_equals_args(args):
|
| 686 |
+
arg = arg.lstrip("-").rstrip(",")
|
| 687 |
+
if "=" in arg:
|
| 688 |
+
try:
|
| 689 |
+
k, v = parse_key_value_pair(arg)
|
| 690 |
+
overrides[k] = v
|
| 691 |
+
except (NameError, SyntaxError, ValueError, AssertionError) as e:
|
| 692 |
+
check_dict_alignment(full_args_dict, {arg: ""}, e)
|
| 693 |
+
elif arg in full_args_dict and isinstance(full_args_dict.get(arg), bool):
|
| 694 |
+
overrides[arg] = True
|
| 695 |
+
check_dict_alignment(full_args_dict, overrides) # dict alignment
|
| 696 |
+
|
| 697 |
+
# Get solution name
|
| 698 |
+
if not args:
|
| 699 |
+
LOGGER.warning("No solution name provided. i.e `yolo solutions count`. Defaulting to 'count'.")
|
| 700 |
+
args = ["count"]
|
| 701 |
+
if args[0] == "help":
|
| 702 |
+
LOGGER.info(SOLUTIONS_HELP_MSG)
|
| 703 |
+
return # Early return for 'help' case
|
| 704 |
+
elif args[0] in SOLUTION_MAP:
|
| 705 |
+
solution_name = args.pop(0) # Extract the solution name directly
|
| 706 |
+
else:
|
| 707 |
+
LOGGER.warning(
|
| 708 |
+
f"β '{args[0]}' is not a valid solution. π‘ Defaulting to 'count'.\n"
|
| 709 |
+
f"π Available solutions: {', '.join(list(SOLUTION_MAP.keys())[:-1])}\n"
|
| 710 |
+
)
|
| 711 |
+
solution_name = "count" # Default for invalid solution
|
| 712 |
+
|
| 713 |
+
if solution_name == "inference":
|
| 714 |
+
checks.check_requirements("streamlit>=1.29.0")
|
| 715 |
+
LOGGER.info("π‘ Loading Ultralytics live inference app...")
|
| 716 |
+
subprocess.run(
|
| 717 |
+
[ # Run subprocess with Streamlit custom argument
|
| 718 |
+
"streamlit",
|
| 719 |
+
"run",
|
| 720 |
+
str(ROOT / "solutions/streamlit_inference.py"),
|
| 721 |
+
"--server.headless",
|
| 722 |
+
"true",
|
| 723 |
+
overrides.pop("model", "yolo26n.pt"),
|
| 724 |
+
]
|
| 725 |
+
)
|
| 726 |
+
else:
|
| 727 |
+
import cv2 # Only needed for cap and vw functionality
|
| 728 |
+
|
| 729 |
+
from ultralytics import solutions
|
| 730 |
+
|
| 731 |
+
solution = getattr(solutions, SOLUTION_MAP[solution_name])(is_cli=True, **overrides) # class i.e. ObjectCounter
|
| 732 |
+
|
| 733 |
+
cap = cv2.VideoCapture(solution.CFG["source"]) # read the video file
|
| 734 |
+
if solution_name != "crop":
|
| 735 |
+
# extract width, height and fps of the video file, create save directory and initialize video writer
|
| 736 |
+
w, h, fps = (
|
| 737 |
+
int(cap.get(x)) for x in (cv2.CAP_PROP_FRAME_WIDTH, cv2.CAP_PROP_FRAME_HEIGHT, cv2.CAP_PROP_FPS)
|
| 738 |
+
)
|
| 739 |
+
if solution_name == "analytics": # analytical graphs follow fixed shape for output i.e w=1920, h=1080
|
| 740 |
+
w, h = 1280, 720
|
| 741 |
+
save_dir = get_save_dir(SimpleNamespace(task="solutions", name="exp", exist_ok=False, project=None))
|
| 742 |
+
save_dir.mkdir(parents=True, exist_ok=True) # create the output directory i.e. runs/solutions/exp
|
| 743 |
+
vw = cv2.VideoWriter(str(save_dir / f"{solution_name}.avi"), cv2.VideoWriter_fourcc(*"mp4v"), fps, (w, h))
|
| 744 |
+
|
| 745 |
+
try: # Process video frames
|
| 746 |
+
f_n = 0 # frame number, required for analytical graphs
|
| 747 |
+
while cap.isOpened():
|
| 748 |
+
success, frame = cap.read()
|
| 749 |
+
if not success:
|
| 750 |
+
break
|
| 751 |
+
results = solution(frame, f_n := f_n + 1) if solution_name == "analytics" else solution(frame)
|
| 752 |
+
if solution_name != "crop":
|
| 753 |
+
vw.write(results.plot_im)
|
| 754 |
+
if solution.CFG["show"] and cv2.waitKey(1) & 0xFF == ord("q"):
|
| 755 |
+
break
|
| 756 |
+
finally:
|
| 757 |
+
cap.release()
|
| 758 |
+
|
| 759 |
+
|
| 760 |
+
def parse_key_value_pair(pair: str = "key=value") -> tuple:
|
| 761 |
+
"""Parse a key-value pair string into separate key and value components.
|
| 762 |
+
|
| 763 |
+
Args:
|
| 764 |
+
pair (str): A string containing a key-value pair in the format "key=value".
|
| 765 |
+
|
| 766 |
+
Returns:
|
| 767 |
+
key (str): The parsed key.
|
| 768 |
+
value (str): The parsed value.
|
| 769 |
+
|
| 770 |
+
Raises:
|
| 771 |
+
AssertionError: If the value is missing or empty.
|
| 772 |
+
|
| 773 |
+
Examples:
|
| 774 |
+
>>> key, value = parse_key_value_pair("model=yolo26n.pt")
|
| 775 |
+
>>> print(f"Key: {key}, Value: {value}")
|
| 776 |
+
Key: model, Value: yolo26n.pt
|
| 777 |
+
|
| 778 |
+
>>> key, value = parse_key_value_pair("epochs=100")
|
| 779 |
+
>>> print(f"Key: {key}, Value: {value}")
|
| 780 |
+
Key: epochs, Value: 100
|
| 781 |
+
|
| 782 |
+
Notes:
|
| 783 |
+
- The function splits the input string on the first '=' character.
|
| 784 |
+
- Leading and trailing whitespace is removed from both key and value.
|
| 785 |
+
- An assertion error is raised if the value is empty after stripping.
|
| 786 |
+
"""
|
| 787 |
+
k, v = pair.split("=", 1) # split on first '=' sign
|
| 788 |
+
k, v = k.strip(), v.strip() # remove spaces
|
| 789 |
+
assert v, f"missing '{k}' value"
|
| 790 |
+
return k, smart_value(v)
|
| 791 |
+
|
| 792 |
+
|
| 793 |
+
def smart_value(v: str) -> Any:
|
| 794 |
+
"""Convert a string representation of a value to its appropriate Python type.
|
| 795 |
+
|
| 796 |
+
This function attempts to convert a given string into a Python object of the most appropriate type. It handles
|
| 797 |
+
conversions to None, bool, int, float, and other types that can be evaluated safely.
|
| 798 |
+
|
| 799 |
+
Args:
|
| 800 |
+
v (str): The string representation of the value to be converted.
|
| 801 |
+
|
| 802 |
+
Returns:
|
| 803 |
+
(Any): The converted value. The type can be None, bool, int, float, or the original string if no conversion is
|
| 804 |
+
applicable.
|
| 805 |
+
|
| 806 |
+
Examples:
|
| 807 |
+
>>> smart_value("42")
|
| 808 |
+
42
|
| 809 |
+
>>> smart_value("3.14")
|
| 810 |
+
3.14
|
| 811 |
+
>>> smart_value("True")
|
| 812 |
+
True
|
| 813 |
+
>>> smart_value("None")
|
| 814 |
+
None
|
| 815 |
+
>>> smart_value("some_string")
|
| 816 |
+
'some_string'
|
| 817 |
+
|
| 818 |
+
Notes:
|
| 819 |
+
- The function uses a case-insensitive comparison for boolean and None values.
|
| 820 |
+
- For other types, it attempts to use Python's ast.literal_eval() function for safe evaluation.
|
| 821 |
+
- If no conversion is possible, the original string is returned.
|
| 822 |
+
"""
|
| 823 |
+
v_lower = v.lower()
|
| 824 |
+
if v_lower == "none":
|
| 825 |
+
return None
|
| 826 |
+
elif v_lower == "true":
|
| 827 |
+
return True
|
| 828 |
+
elif v_lower == "false":
|
| 829 |
+
return False
|
| 830 |
+
else:
|
| 831 |
+
try:
|
| 832 |
+
return ast.literal_eval(v)
|
| 833 |
+
except Exception:
|
| 834 |
+
return v
|
| 835 |
+
|
| 836 |
+
|
| 837 |
+
def entrypoint(debug: str = "") -> None:
|
| 838 |
+
"""Ultralytics entrypoint function for parsing and executing command-line arguments.
|
| 839 |
+
|
| 840 |
+
This function serves as the main entry point for the Ultralytics CLI, parsing command-line arguments and executing
|
| 841 |
+
the corresponding tasks such as training, validation, prediction, exporting models, and more.
|
| 842 |
+
|
| 843 |
+
Args:
|
| 844 |
+
debug (str): Space-separated string of command-line arguments for debugging purposes.
|
| 845 |
+
|
| 846 |
+
Examples:
|
| 847 |
+
Train a detection model for 10 epochs with an initial learning_rate of 0.01:
|
| 848 |
+
>>> entrypoint("train data=coco8.yaml model=yolo26n.pt epochs=10 lr0=0.01")
|
| 849 |
+
|
| 850 |
+
Predict a YouTube video using a pretrained segmentation model at image size 320:
|
| 851 |
+
>>> entrypoint("predict model=yolo26n-seg.pt source='https://youtu.be/LNwODJXcvt4' imgsz=320")
|
| 852 |
+
|
| 853 |
+
Validate a pretrained detection model at batch-size 1 and image size 640:
|
| 854 |
+
>>> entrypoint("val model=yolo26n.pt data=coco8.yaml batch=1 imgsz=640")
|
| 855 |
+
|
| 856 |
+
Notes:
|
| 857 |
+
- If no arguments are passed, the function will display the usage help message.
|
| 858 |
+
- For a list of all available commands and their arguments, see the provided help messages and the
|
| 859 |
+
Ultralytics documentation at https://docs.ultralytics.com.
|
| 860 |
+
"""
|
| 861 |
+
args = (debug.split(" ") if debug else ARGV)[1:]
|
| 862 |
+
if not args: # no arguments passed
|
| 863 |
+
LOGGER.info(CLI_HELP_MSG)
|
| 864 |
+
return
|
| 865 |
+
|
| 866 |
+
special = {
|
| 867 |
+
"checks": checks.collect_system_info,
|
| 868 |
+
"version": lambda: LOGGER.info(__version__),
|
| 869 |
+
"settings": lambda: handle_yolo_settings(args[1:]),
|
| 870 |
+
"cfg": lambda: YAML.print(DEFAULT_CFG_PATH),
|
| 871 |
+
"hub": lambda: handle_yolo_hub(args[1:]),
|
| 872 |
+
"login": lambda: handle_yolo_hub(args),
|
| 873 |
+
"logout": lambda: handle_yolo_hub(args),
|
| 874 |
+
"copy-cfg": copy_default_cfg,
|
| 875 |
+
"solutions": lambda: handle_yolo_solutions(args[1:]),
|
| 876 |
+
"help": lambda: LOGGER.info(CLI_HELP_MSG), # help below hub for -h flag precedence
|
| 877 |
+
}
|
| 878 |
+
full_args_dict = {**DEFAULT_CFG_DICT, **{k: None for k in TASKS}, **{k: None for k in MODES}, **special}
|
| 879 |
+
|
| 880 |
+
# Define common misuses of special commands, i.e. -h, -help, --help
|
| 881 |
+
special.update({k[0]: v for k, v in special.items()}) # singular
|
| 882 |
+
special.update({k[:-1]: v for k, v in special.items() if len(k) > 1 and k.endswith("s")}) # singular
|
| 883 |
+
special = {**special, **{f"-{k}": v for k, v in special.items()}, **{f"--{k}": v for k, v in special.items()}}
|
| 884 |
+
|
| 885 |
+
overrides = {} # basic overrides, i.e. imgsz=320
|
| 886 |
+
for a in merge_equals_args(args): # merge spaces around '=' sign
|
| 887 |
+
if a.startswith("--"):
|
| 888 |
+
LOGGER.warning(f"argument '{a}' does not require leading dashes '--', updating to '{a[2:]}'.")
|
| 889 |
+
a = a[2:]
|
| 890 |
+
if a.endswith(","):
|
| 891 |
+
LOGGER.warning(f"argument '{a}' does not require trailing comma ',', updating to '{a[:-1]}'.")
|
| 892 |
+
a = a[:-1]
|
| 893 |
+
if "=" in a:
|
| 894 |
+
try:
|
| 895 |
+
k, v = parse_key_value_pair(a)
|
| 896 |
+
if k == "cfg" and v is not None: # custom.yaml passed
|
| 897 |
+
LOGGER.info(f"Overriding {DEFAULT_CFG_PATH} with {v}")
|
| 898 |
+
overrides = {k: val for k, val in YAML.load(checks.check_yaml(v)).items() if k != "cfg"}
|
| 899 |
+
else:
|
| 900 |
+
overrides[k] = v
|
| 901 |
+
except (NameError, SyntaxError, ValueError, AssertionError) as e:
|
| 902 |
+
check_dict_alignment(full_args_dict, {a: ""}, e)
|
| 903 |
+
|
| 904 |
+
elif a in TASKS:
|
| 905 |
+
overrides["task"] = a
|
| 906 |
+
elif a in MODES:
|
| 907 |
+
overrides["mode"] = a
|
| 908 |
+
elif a.lower() in special:
|
| 909 |
+
special[a.lower()]()
|
| 910 |
+
return
|
| 911 |
+
elif a in DEFAULT_CFG_DICT and isinstance(DEFAULT_CFG_DICT[a], bool):
|
| 912 |
+
overrides[a] = True # auto-True for default bool args, i.e. 'yolo show' sets show=True
|
| 913 |
+
elif a in DEFAULT_CFG_DICT:
|
| 914 |
+
raise SyntaxError(
|
| 915 |
+
f"'{colorstr('red', 'bold', a)}' is a valid YOLO argument but is missing an '=' sign "
|
| 916 |
+
f"to set its value, i.e. try '{a}={DEFAULT_CFG_DICT[a]}'\n{CLI_HELP_MSG}"
|
| 917 |
+
)
|
| 918 |
+
else:
|
| 919 |
+
check_dict_alignment(full_args_dict, {a: ""})
|
| 920 |
+
|
| 921 |
+
# Check keys
|
| 922 |
+
check_dict_alignment(full_args_dict, overrides)
|
| 923 |
+
|
| 924 |
+
# Mode
|
| 925 |
+
mode = overrides.get("mode")
|
| 926 |
+
if mode is None:
|
| 927 |
+
mode = DEFAULT_CFG.mode or "predict"
|
| 928 |
+
LOGGER.warning(f"'mode' argument is missing. Valid modes are {list(MODES)}. Using default 'mode={mode}'.")
|
| 929 |
+
elif mode not in MODES:
|
| 930 |
+
raise ValueError(f"Invalid 'mode={mode}'. Valid modes are {list(MODES)}.\n{CLI_HELP_MSG}")
|
| 931 |
+
|
| 932 |
+
# Task
|
| 933 |
+
task = overrides.pop("task", None)
|
| 934 |
+
if task:
|
| 935 |
+
if task not in TASKS:
|
| 936 |
+
if task == "track":
|
| 937 |
+
LOGGER.warning(
|
| 938 |
+
f"invalid 'task=track', setting 'task=detect' and 'mode=track'. Valid tasks are {list(TASKS)}.\n{CLI_HELP_MSG}."
|
| 939 |
+
)
|
| 940 |
+
task, mode = "detect", "track"
|
| 941 |
+
else:
|
| 942 |
+
raise ValueError(f"Invalid 'task={task}'. Valid tasks are {list(TASKS)}.\n{CLI_HELP_MSG}")
|
| 943 |
+
if "model" not in overrides:
|
| 944 |
+
overrides["model"] = TASK2MODEL[task]
|
| 945 |
+
|
| 946 |
+
# Model
|
| 947 |
+
model = overrides.pop("model", DEFAULT_CFG.model)
|
| 948 |
+
if model is None:
|
| 949 |
+
model = "yolo26n.pt"
|
| 950 |
+
LOGGER.warning(f"'model' argument is missing. Using default 'model={model}'.")
|
| 951 |
+
overrides["model"] = model
|
| 952 |
+
stem = Path(model).stem.lower()
|
| 953 |
+
if "rtdetr" in stem: # guess architecture
|
| 954 |
+
from ultralytics import RTDETR
|
| 955 |
+
|
| 956 |
+
model = RTDETR(model) # no task argument
|
| 957 |
+
elif "fastsam" in stem:
|
| 958 |
+
from ultralytics import FastSAM
|
| 959 |
+
|
| 960 |
+
model = FastSAM(model)
|
| 961 |
+
elif "sam_" in stem or "sam2_" in stem or "sam2.1_" in stem:
|
| 962 |
+
from ultralytics import SAM
|
| 963 |
+
|
| 964 |
+
model = SAM(model)
|
| 965 |
+
else:
|
| 966 |
+
from ultralytics import YOLO
|
| 967 |
+
|
| 968 |
+
model = YOLO(model, task=task)
|
| 969 |
+
if "yoloe" in stem or "world" in stem:
|
| 970 |
+
cls_list = overrides.pop("classes", DEFAULT_CFG.classes)
|
| 971 |
+
if cls_list is not None and isinstance(cls_list, str):
|
| 972 |
+
model.set_classes(cls_list.split(",")) # convert "person, bus" -> ['person', ' bus'].
|
| 973 |
+
# Task Update
|
| 974 |
+
if task != model.task:
|
| 975 |
+
if task:
|
| 976 |
+
LOGGER.warning(
|
| 977 |
+
f"conflicting 'task={task}' passed with 'task={model.task}' model. "
|
| 978 |
+
f"Ignoring 'task={task}' and updating to 'task={model.task}' to match model."
|
| 979 |
+
)
|
| 980 |
+
task = model.task
|
| 981 |
+
|
| 982 |
+
# Mode
|
| 983 |
+
if mode in {"predict", "track"} and "source" not in overrides:
|
| 984 |
+
overrides["source"] = (
|
| 985 |
+
"https://ultralytics.com/images/boats.jpg" if task == "obb" else DEFAULT_CFG.source or ASSETS
|
| 986 |
+
)
|
| 987 |
+
LOGGER.warning(f"'source' argument is missing. Using default 'source={overrides['source']}'.")
|
| 988 |
+
elif mode in {"train", "val"}:
|
| 989 |
+
if "data" not in overrides and "resume" not in overrides:
|
| 990 |
+
overrides["data"] = DEFAULT_CFG.data or TASK2DATA.get(task or DEFAULT_CFG.task, DEFAULT_CFG.data)
|
| 991 |
+
LOGGER.warning(f"'data' argument is missing. Using default 'data={overrides['data']}'.")
|
| 992 |
+
elif mode == "export":
|
| 993 |
+
if "format" not in overrides:
|
| 994 |
+
overrides["format"] = DEFAULT_CFG.format or "torchscript"
|
| 995 |
+
LOGGER.warning(f"'format' argument is missing. Using default 'format={overrides['format']}'.")
|
| 996 |
+
|
| 997 |
+
# Run command in python
|
| 998 |
+
getattr(model, mode)(**overrides) # default args from model
|
| 999 |
+
|
| 1000 |
+
# Show help
|
| 1001 |
+
LOGGER.info(f"π‘ Learn more at https://docs.ultralytics.com/modes/{mode}")
|
| 1002 |
+
|
| 1003 |
+
# Recommend VS Code extension
|
| 1004 |
+
if IS_VSCODE and SETTINGS.get("vscode_msg", True):
|
| 1005 |
+
LOGGER.info(vscode_msg())
|
| 1006 |
+
|
| 1007 |
+
|
| 1008 |
+
# Special modes --------------------------------------------------------------------------------------------------------
|
| 1009 |
+
def copy_default_cfg() -> None:
|
| 1010 |
+
"""Copy the default configuration file and create a new one with '_copy' appended to its name.
|
| 1011 |
+
|
| 1012 |
+
This function duplicates the existing default configuration file (DEFAULT_CFG_PATH) and saves it with '_copy'
|
| 1013 |
+
appended to its name in the current working directory. It provides a convenient way to create a custom configuration
|
| 1014 |
+
file based on the default settings.
|
| 1015 |
+
|
| 1016 |
+
Examples:
|
| 1017 |
+
>>> copy_default_cfg()
|
| 1018 |
+
# Output: default.yaml copied to /path/to/current/directory/default_copy.yaml
|
| 1019 |
+
# Example YOLO command with this new custom cfg:
|
| 1020 |
+
# yolo cfg='/path/to/current/directory/default_copy.yaml' imgsz=320 batch=8
|
| 1021 |
+
|
| 1022 |
+
Notes:
|
| 1023 |
+
- The new configuration file is created in the current working directory.
|
| 1024 |
+
- After copying, the function prints a message with the new file's location and an example
|
| 1025 |
+
YOLO command demonstrating how to use the new configuration file.
|
| 1026 |
+
- This function is useful for users who want to modify the default configuration without
|
| 1027 |
+
altering the original file.
|
| 1028 |
+
"""
|
| 1029 |
+
new_file = Path.cwd() / DEFAULT_CFG_PATH.name.replace(".yaml", "_copy.yaml")
|
| 1030 |
+
shutil.copy2(DEFAULT_CFG_PATH, new_file)
|
| 1031 |
+
LOGGER.info(
|
| 1032 |
+
f"{DEFAULT_CFG_PATH} copied to {new_file}\n"
|
| 1033 |
+
f"Example YOLO command with this new custom cfg:\n yolo cfg='{new_file}' imgsz=320 batch=8"
|
| 1034 |
+
)
|
| 1035 |
+
|
| 1036 |
+
|
| 1037 |
+
if __name__ == "__main__":
|
| 1038 |
+
# Example: entrypoint(debug='yolo predict model=yolo26n.pt')
|
| 1039 |
+
entrypoint(debug="")
|
vendor/ultralytics/cfg/datasets/Argoverse.yaml
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Ultralytics π AGPL-3.0 License - https://ultralytics.com/license
|
| 2 |
+
|
| 3 |
+
# Argoverse-HD dataset (ring-front-center camera) by Argo AI: https://www.cs.cmu.edu/~mengtial/proj/streaming/
|
| 4 |
+
# Documentation: https://docs.ultralytics.com/datasets/detect/argoverse/
|
| 5 |
+
# Example usage: yolo train data=Argoverse.yaml
|
| 6 |
+
# parent
|
| 7 |
+
# βββ ultralytics
|
| 8 |
+
# βββ datasets
|
| 9 |
+
# βββ Argoverse β downloads here (31.5 GB)
|
| 10 |
+
|
| 11 |
+
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
| 12 |
+
path: Argoverse # dataset root dir
|
| 13 |
+
train: Argoverse-1.1/images/train/ # train images (relative to 'path') 39384 images
|
| 14 |
+
val: Argoverse-1.1/images/val/ # val images (relative to 'path') 15062 images
|
| 15 |
+
test: Argoverse-1.1/images/test/ # test images (optional) https://eval.ai/web/challenges/challenge-page/800/overview
|
| 16 |
+
|
| 17 |
+
# Classes
|
| 18 |
+
names:
|
| 19 |
+
0: person
|
| 20 |
+
1: bicycle
|
| 21 |
+
2: car
|
| 22 |
+
3: motorcycle
|
| 23 |
+
4: bus
|
| 24 |
+
5: truck
|
| 25 |
+
6: traffic_light
|
| 26 |
+
7: stop_sign
|
| 27 |
+
|
| 28 |
+
# Download script/URL (optional) ---------------------------------------------------------------------------------------
|
| 29 |
+
download: |
|
| 30 |
+
import json
|
| 31 |
+
from pathlib import Path
|
| 32 |
+
|
| 33 |
+
from ultralytics.utils import TQDM
|
| 34 |
+
from ultralytics.utils.downloads import download
|
| 35 |
+
|
| 36 |
+
def argoverse2yolo(annotation_file):
|
| 37 |
+
"""Convert Argoverse dataset annotations to YOLO format for object detection tasks."""
|
| 38 |
+
labels = {}
|
| 39 |
+
with open(annotation_file, encoding="utf-8") as f:
|
| 40 |
+
a = json.load(f)
|
| 41 |
+
for annot in TQDM(a["annotations"], desc=f"Converting {annotation_file} to YOLO format..."):
|
| 42 |
+
img_id = annot["image_id"]
|
| 43 |
+
img_name = a["images"][img_id]["name"]
|
| 44 |
+
img_label_name = f"{Path(img_name).stem}.txt"
|
| 45 |
+
|
| 46 |
+
cls = annot["category_id"] # instance class id
|
| 47 |
+
x_center, y_center, width, height = annot["bbox"]
|
| 48 |
+
x_center = (x_center + width / 2) / 1920.0 # offset and scale
|
| 49 |
+
y_center = (y_center + height / 2) / 1200.0 # offset and scale
|
| 50 |
+
width /= 1920.0 # scale
|
| 51 |
+
height /= 1200.0 # scale
|
| 52 |
+
|
| 53 |
+
img_dir = annotation_file.parents[2] / "Argoverse-1.1" / "labels" / a["seq_dirs"][a["images"][annot["image_id"]]["sid"]]
|
| 54 |
+
if not img_dir.exists():
|
| 55 |
+
img_dir.mkdir(parents=True, exist_ok=True)
|
| 56 |
+
|
| 57 |
+
k = str(img_dir / img_label_name)
|
| 58 |
+
if k not in labels:
|
| 59 |
+
labels[k] = []
|
| 60 |
+
labels[k].append(f"{cls} {x_center} {y_center} {width} {height}\n")
|
| 61 |
+
|
| 62 |
+
for k in labels:
|
| 63 |
+
with open(k, "w", encoding="utf-8") as f:
|
| 64 |
+
f.writelines(labels[k])
|
| 65 |
+
|
| 66 |
+
|
| 67 |
+
# Download 'https://argoverse-hd.s3.us-east-2.amazonaws.com/Argoverse-HD-Full.zip' (deprecated S3 link)
|
| 68 |
+
dir = Path(yaml["path"]) # dataset root dir
|
| 69 |
+
urls = ["https://drive.google.com/file/d/1st9qW3BeIwQsnR0t8mRpvbsSWIo16ACi/view?usp=drive_link"]
|
| 70 |
+
print("\n\nWARNING: Argoverse dataset MUST be downloaded manually, autodownload will NOT work.")
|
| 71 |
+
print(f"WARNING: Manually download Argoverse dataset '{urls[0]}' to '{dir}' and re-run your command.\n\n")
|
| 72 |
+
# download(urls, dir=dir)
|
| 73 |
+
|
| 74 |
+
# Convert
|
| 75 |
+
annotations_dir = "Argoverse-HD/annotations/"
|
| 76 |
+
(dir / "Argoverse-1.1" / "tracking").rename(dir / "Argoverse-1.1" / "images") # rename 'tracking' to 'images'
|
| 77 |
+
for d in "train.json", "val.json":
|
| 78 |
+
argoverse2yolo(dir / annotations_dir / d) # convert Argoverse annotations to YOLO labels
|
vendor/ultralytics/cfg/datasets/DOTAv1.5.yaml
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Ultralytics π AGPL-3.0 License - https://ultralytics.com/license
|
| 2 |
+
|
| 3 |
+
# DOTA 1.5 dataset https://captain-whu.github.io/DOTA/index.html for object detection in aerial images by Wuhan University
|
| 4 |
+
# Documentation: https://docs.ultralytics.com/datasets/obb/dota-v2/
|
| 5 |
+
# Example usage: yolo train model=yolov8n-obb.pt data=DOTAv1.5.yaml
|
| 6 |
+
# parent
|
| 7 |
+
# βββ ultralytics
|
| 8 |
+
# βββ datasets
|
| 9 |
+
# βββ dota1.5 β downloads here (2 GB)
|
| 10 |
+
|
| 11 |
+
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
| 12 |
+
path: DOTAv1.5 # dataset root dir
|
| 13 |
+
train: images/train # train images (relative to 'path') 1411 images
|
| 14 |
+
val: images/val # val images (relative to 'path') 458 images
|
| 15 |
+
test: images/test # test images (optional) 937 images
|
| 16 |
+
|
| 17 |
+
# Classes for DOTA 1.5
|
| 18 |
+
names:
|
| 19 |
+
0: plane
|
| 20 |
+
1: ship
|
| 21 |
+
2: storage tank
|
| 22 |
+
3: baseball diamond
|
| 23 |
+
4: tennis court
|
| 24 |
+
5: basketball court
|
| 25 |
+
6: ground track field
|
| 26 |
+
7: harbor
|
| 27 |
+
8: bridge
|
| 28 |
+
9: large vehicle
|
| 29 |
+
10: small vehicle
|
| 30 |
+
11: helicopter
|
| 31 |
+
12: roundabout
|
| 32 |
+
13: soccer ball field
|
| 33 |
+
14: swimming pool
|
| 34 |
+
15: container crane
|
| 35 |
+
|
| 36 |
+
# Download script/URL (optional)
|
| 37 |
+
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/DOTAv1.5.zip
|
vendor/ultralytics/cfg/datasets/DOTAv1.yaml
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Ultralytics π AGPL-3.0 License - https://ultralytics.com/license
|
| 2 |
+
|
| 3 |
+
# DOTA 1.0 dataset https://captain-whu.github.io/DOTA/index.html for object detection in aerial images by Wuhan University
|
| 4 |
+
# Documentation: https://docs.ultralytics.com/datasets/obb/dota-v2/
|
| 5 |
+
# Example usage: yolo train model=yolov8n-obb.pt data=DOTAv1.yaml
|
| 6 |
+
# parent
|
| 7 |
+
# βββ ultralytics
|
| 8 |
+
# βββ datasets
|
| 9 |
+
# βββ dota1 β downloads here (2 GB)
|
| 10 |
+
|
| 11 |
+
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
| 12 |
+
path: DOTAv1 # dataset root dir
|
| 13 |
+
train: images/train # train images (relative to 'path') 1411 images
|
| 14 |
+
val: images/val # val images (relative to 'path') 458 images
|
| 15 |
+
test: images/test # test images (optional) 937 images
|
| 16 |
+
|
| 17 |
+
# Classes for DOTA 1.0
|
| 18 |
+
names:
|
| 19 |
+
0: plane
|
| 20 |
+
1: ship
|
| 21 |
+
2: storage tank
|
| 22 |
+
3: baseball diamond
|
| 23 |
+
4: tennis court
|
| 24 |
+
5: basketball court
|
| 25 |
+
6: ground track field
|
| 26 |
+
7: harbor
|
| 27 |
+
8: bridge
|
| 28 |
+
9: large vehicle
|
| 29 |
+
10: small vehicle
|
| 30 |
+
11: helicopter
|
| 31 |
+
12: roundabout
|
| 32 |
+
13: soccer ball field
|
| 33 |
+
14: swimming pool
|
| 34 |
+
|
| 35 |
+
# Download script/URL (optional)
|
| 36 |
+
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/DOTAv1.zip
|
vendor/ultralytics/cfg/datasets/GlobalWheat2020.yaml
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Ultralytics π AGPL-3.0 License - https://ultralytics.com/license
|
| 2 |
+
|
| 3 |
+
# Global Wheat 2020 dataset https://www.global-wheat.com/ by University of Saskatchewan
|
| 4 |
+
# Documentation: https://docs.ultralytics.com/datasets/detect/globalwheat2020/
|
| 5 |
+
# Example usage: yolo train data=GlobalWheat2020.yaml
|
| 6 |
+
# parent
|
| 7 |
+
# βββ ultralytics
|
| 8 |
+
# βββ datasets
|
| 9 |
+
# βββ GlobalWheat2020 β downloads here (7.0 GB)
|
| 10 |
+
|
| 11 |
+
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
| 12 |
+
path: GlobalWheat2020 # dataset root dir
|
| 13 |
+
train: # train images (relative to 'path') 3422 images
|
| 14 |
+
- images/arvalis_1
|
| 15 |
+
- images/arvalis_2
|
| 16 |
+
- images/arvalis_3
|
| 17 |
+
- images/ethz_1
|
| 18 |
+
- images/rres_1
|
| 19 |
+
- images/inrae_1
|
| 20 |
+
- images/usask_1
|
| 21 |
+
val: # val images (relative to 'path') 748 images (WARNING: train set contains ethz_1)
|
| 22 |
+
- images/ethz_1
|
| 23 |
+
test: # test images (optional) 1276 images
|
| 24 |
+
- images/utokyo_1
|
| 25 |
+
- images/utokyo_2
|
| 26 |
+
- images/nau_1
|
| 27 |
+
- images/uq_1
|
| 28 |
+
|
| 29 |
+
# Classes
|
| 30 |
+
names:
|
| 31 |
+
0: wheat_head
|
| 32 |
+
|
| 33 |
+
# Download script/URL (optional) ---------------------------------------------------------------------------------------
|
| 34 |
+
download: |
|
| 35 |
+
from pathlib import Path
|
| 36 |
+
|
| 37 |
+
from ultralytics.utils.downloads import download
|
| 38 |
+
|
| 39 |
+
# Download
|
| 40 |
+
dir = Path(yaml["path"]) # dataset root dir
|
| 41 |
+
urls = [
|
| 42 |
+
"https://zenodo.org/record/4298502/files/global-wheat-codalab-official.zip",
|
| 43 |
+
"https://github.com/ultralytics/assets/releases/download/v0.0.0/GlobalWheat2020_labels.zip",
|
| 44 |
+
]
|
| 45 |
+
download(urls, dir=dir)
|
| 46 |
+
|
| 47 |
+
# Make Directories
|
| 48 |
+
for p in "annotations", "images", "labels":
|
| 49 |
+
(dir / p).mkdir(parents=True, exist_ok=True)
|
| 50 |
+
|
| 51 |
+
# Move
|
| 52 |
+
for p in (
|
| 53 |
+
"arvalis_1",
|
| 54 |
+
"arvalis_2",
|
| 55 |
+
"arvalis_3",
|
| 56 |
+
"ethz_1",
|
| 57 |
+
"rres_1",
|
| 58 |
+
"inrae_1",
|
| 59 |
+
"usask_1",
|
| 60 |
+
"utokyo_1",
|
| 61 |
+
"utokyo_2",
|
| 62 |
+
"nau_1",
|
| 63 |
+
"uq_1",
|
| 64 |
+
):
|
| 65 |
+
(dir / "global-wheat-codalab-official" / p).rename(dir / "images" / p) # move to /images
|
| 66 |
+
f = (dir / "global-wheat-codalab-official" / p).with_suffix(".json") # json file
|
| 67 |
+
if f.exists():
|
| 68 |
+
f.rename((dir / "annotations" / p).with_suffix(".json")) # move to /annotations
|
vendor/ultralytics/cfg/datasets/HomeObjects-3K.yaml
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Ultralytics π AGPL-3.0 License - https://ultralytics.com/license
|
| 2 |
+
|
| 3 |
+
# HomeObjects-3K dataset by Ultralytics
|
| 4 |
+
# Documentation: https://docs.ultralytics.com/datasets/detect/homeobjects-3k/
|
| 5 |
+
# Example usage: yolo train data=HomeObjects-3K.yaml
|
| 6 |
+
# parent
|
| 7 |
+
# βββ ultralytics
|
| 8 |
+
# βββ datasets
|
| 9 |
+
# βββ homeobjects-3K β downloads here (390 MB)
|
| 10 |
+
|
| 11 |
+
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
| 12 |
+
path: homeobjects-3K # dataset root dir
|
| 13 |
+
train: images/train # train images (relative to 'path') 2285 images
|
| 14 |
+
val: images/val # val images (relative to 'path') 404 images
|
| 15 |
+
|
| 16 |
+
# Classes
|
| 17 |
+
names:
|
| 18 |
+
0: bed
|
| 19 |
+
1: sofa
|
| 20 |
+
2: chair
|
| 21 |
+
3: table
|
| 22 |
+
4: lamp
|
| 23 |
+
5: tv
|
| 24 |
+
6: laptop
|
| 25 |
+
7: wardrobe
|
| 26 |
+
8: window
|
| 27 |
+
9: door
|
| 28 |
+
10: potted plant
|
| 29 |
+
11: photo frame
|
| 30 |
+
|
| 31 |
+
# Download script/URL (optional)
|
| 32 |
+
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/homeobjects-3K.zip
|
vendor/ultralytics/cfg/datasets/ImageNet.yaml
ADDED
|
@@ -0,0 +1,2025 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Ultralytics π AGPL-3.0 License - https://ultralytics.com/license
|
| 2 |
+
|
| 3 |
+
# ImageNet-1k dataset https://www.image-net.org/index.php by Stanford University
|
| 4 |
+
# Simplified class names from https://github.com/anishathalye/imagenet-simple-labels
|
| 5 |
+
# Documentation: https://docs.ultralytics.com/datasets/classify/imagenet/
|
| 6 |
+
# Example usage: yolo train task=classify data=imagenet
|
| 7 |
+
# parent
|
| 8 |
+
# βββ ultralytics
|
| 9 |
+
# βββ datasets
|
| 10 |
+
# βββ imagenet β downloads here (144 GB)
|
| 11 |
+
|
| 12 |
+
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
| 13 |
+
path: imagenet # dataset root dir
|
| 14 |
+
train: train # train images (relative to 'path') 1281167 images
|
| 15 |
+
val: val # val images (relative to 'path') 50000 images
|
| 16 |
+
test: # test images (optional)
|
| 17 |
+
|
| 18 |
+
# Classes
|
| 19 |
+
names:
|
| 20 |
+
0: tench
|
| 21 |
+
1: goldfish
|
| 22 |
+
2: great white shark
|
| 23 |
+
3: tiger shark
|
| 24 |
+
4: hammerhead shark
|
| 25 |
+
5: electric ray
|
| 26 |
+
6: stingray
|
| 27 |
+
7: cock
|
| 28 |
+
8: hen
|
| 29 |
+
9: ostrich
|
| 30 |
+
10: brambling
|
| 31 |
+
11: goldfinch
|
| 32 |
+
12: house finch
|
| 33 |
+
13: junco
|
| 34 |
+
14: indigo bunting
|
| 35 |
+
15: American robin
|
| 36 |
+
16: bulbul
|
| 37 |
+
17: jay
|
| 38 |
+
18: magpie
|
| 39 |
+
19: chickadee
|
| 40 |
+
20: American dipper
|
| 41 |
+
21: kite
|
| 42 |
+
22: bald eagle
|
| 43 |
+
23: vulture
|
| 44 |
+
24: great grey owl
|
| 45 |
+
25: fire salamander
|
| 46 |
+
26: smooth newt
|
| 47 |
+
27: newt
|
| 48 |
+
28: spotted salamander
|
| 49 |
+
29: axolotl
|
| 50 |
+
30: American bullfrog
|
| 51 |
+
31: tree frog
|
| 52 |
+
32: tailed frog
|
| 53 |
+
33: loggerhead sea turtle
|
| 54 |
+
34: leatherback sea turtle
|
| 55 |
+
35: mud turtle
|
| 56 |
+
36: terrapin
|
| 57 |
+
37: box turtle
|
| 58 |
+
38: banded gecko
|
| 59 |
+
39: green iguana
|
| 60 |
+
40: Carolina anole
|
| 61 |
+
41: desert grassland whiptail lizard
|
| 62 |
+
42: agama
|
| 63 |
+
43: frilled-necked lizard
|
| 64 |
+
44: alligator lizard
|
| 65 |
+
45: Gila monster
|
| 66 |
+
46: European green lizard
|
| 67 |
+
47: chameleon
|
| 68 |
+
48: Komodo dragon
|
| 69 |
+
49: Nile crocodile
|
| 70 |
+
50: American alligator
|
| 71 |
+
51: triceratops
|
| 72 |
+
52: worm snake
|
| 73 |
+
53: ring-necked snake
|
| 74 |
+
54: eastern hog-nosed snake
|
| 75 |
+
55: smooth green snake
|
| 76 |
+
56: kingsnake
|
| 77 |
+
57: garter snake
|
| 78 |
+
58: water snake
|
| 79 |
+
59: vine snake
|
| 80 |
+
60: night snake
|
| 81 |
+
61: boa constrictor
|
| 82 |
+
62: African rock python
|
| 83 |
+
63: Indian cobra
|
| 84 |
+
64: green mamba
|
| 85 |
+
65: sea snake
|
| 86 |
+
66: Saharan horned viper
|
| 87 |
+
67: eastern diamondback rattlesnake
|
| 88 |
+
68: sidewinder
|
| 89 |
+
69: trilobite
|
| 90 |
+
70: harvestman
|
| 91 |
+
71: scorpion
|
| 92 |
+
72: yellow garden spider
|
| 93 |
+
73: barn spider
|
| 94 |
+
74: European garden spider
|
| 95 |
+
75: southern black widow
|
| 96 |
+
76: tarantula
|
| 97 |
+
77: wolf spider
|
| 98 |
+
78: tick
|
| 99 |
+
79: centipede
|
| 100 |
+
80: black grouse
|
| 101 |
+
81: ptarmigan
|
| 102 |
+
82: ruffed grouse
|
| 103 |
+
83: prairie grouse
|
| 104 |
+
84: peacock
|
| 105 |
+
85: quail
|
| 106 |
+
86: partridge
|
| 107 |
+
87: grey parrot
|
| 108 |
+
88: macaw
|
| 109 |
+
89: sulphur-crested cockatoo
|
| 110 |
+
90: lorikeet
|
| 111 |
+
91: coucal
|
| 112 |
+
92: bee eater
|
| 113 |
+
93: hornbill
|
| 114 |
+
94: hummingbird
|
| 115 |
+
95: jacamar
|
| 116 |
+
96: toucan
|
| 117 |
+
97: duck
|
| 118 |
+
98: red-breasted merganser
|
| 119 |
+
99: goose
|
| 120 |
+
100: black swan
|
| 121 |
+
101: tusker
|
| 122 |
+
102: echidna
|
| 123 |
+
103: platypus
|
| 124 |
+
104: wallaby
|
| 125 |
+
105: koala
|
| 126 |
+
106: wombat
|
| 127 |
+
107: jellyfish
|
| 128 |
+
108: sea anemone
|
| 129 |
+
109: brain coral
|
| 130 |
+
110: flatworm
|
| 131 |
+
111: nematode
|
| 132 |
+
112: conch
|
| 133 |
+
113: snail
|
| 134 |
+
114: slug
|
| 135 |
+
115: sea slug
|
| 136 |
+
116: chiton
|
| 137 |
+
117: chambered nautilus
|
| 138 |
+
118: Dungeness crab
|
| 139 |
+
119: rock crab
|
| 140 |
+
120: fiddler crab
|
| 141 |
+
121: red king crab
|
| 142 |
+
122: American lobster
|
| 143 |
+
123: spiny lobster
|
| 144 |
+
124: crayfish
|
| 145 |
+
125: hermit crab
|
| 146 |
+
126: isopod
|
| 147 |
+
127: white stork
|
| 148 |
+
128: black stork
|
| 149 |
+
129: spoonbill
|
| 150 |
+
130: flamingo
|
| 151 |
+
131: little blue heron
|
| 152 |
+
132: great egret
|
| 153 |
+
133: bittern
|
| 154 |
+
134: crane (bird)
|
| 155 |
+
135: limpkin
|
| 156 |
+
136: common gallinule
|
| 157 |
+
137: American coot
|
| 158 |
+
138: bustard
|
| 159 |
+
139: ruddy turnstone
|
| 160 |
+
140: dunlin
|
| 161 |
+
141: common redshank
|
| 162 |
+
142: dowitcher
|
| 163 |
+
143: oystercatcher
|
| 164 |
+
144: pelican
|
| 165 |
+
145: king penguin
|
| 166 |
+
146: albatross
|
| 167 |
+
147: grey whale
|
| 168 |
+
148: killer whale
|
| 169 |
+
149: dugong
|
| 170 |
+
150: sea lion
|
| 171 |
+
151: Chihuahua
|
| 172 |
+
152: Japanese Chin
|
| 173 |
+
153: Maltese
|
| 174 |
+
154: Pekingese
|
| 175 |
+
155: Shih Tzu
|
| 176 |
+
156: King Charles Spaniel
|
| 177 |
+
157: Papillon
|
| 178 |
+
158: toy terrier
|
| 179 |
+
159: Rhodesian Ridgeback
|
| 180 |
+
160: Afghan Hound
|
| 181 |
+
161: Basset Hound
|
| 182 |
+
162: Beagle
|
| 183 |
+
163: Bloodhound
|
| 184 |
+
164: Bluetick Coonhound
|
| 185 |
+
165: Black and Tan Coonhound
|
| 186 |
+
166: Treeing Walker Coonhound
|
| 187 |
+
167: English foxhound
|
| 188 |
+
168: Redbone Coonhound
|
| 189 |
+
169: borzoi
|
| 190 |
+
170: Irish Wolfhound
|
| 191 |
+
171: Italian Greyhound
|
| 192 |
+
172: Whippet
|
| 193 |
+
173: Ibizan Hound
|
| 194 |
+
174: Norwegian Elkhound
|
| 195 |
+
175: Otterhound
|
| 196 |
+
176: Saluki
|
| 197 |
+
177: Scottish Deerhound
|
| 198 |
+
178: Weimaraner
|
| 199 |
+
179: Staffordshire Bull Terrier
|
| 200 |
+
180: American Staffordshire Terrier
|
| 201 |
+
181: Bedlington Terrier
|
| 202 |
+
182: Border Terrier
|
| 203 |
+
183: Kerry Blue Terrier
|
| 204 |
+
184: Irish Terrier
|
| 205 |
+
185: Norfolk Terrier
|
| 206 |
+
186: Norwich Terrier
|
| 207 |
+
187: Yorkshire Terrier
|
| 208 |
+
188: Wire Fox Terrier
|
| 209 |
+
189: Lakeland Terrier
|
| 210 |
+
190: Sealyham Terrier
|
| 211 |
+
191: Airedale Terrier
|
| 212 |
+
192: Cairn Terrier
|
| 213 |
+
193: Australian Terrier
|
| 214 |
+
194: Dandie Dinmont Terrier
|
| 215 |
+
195: Boston Terrier
|
| 216 |
+
196: Miniature Schnauzer
|
| 217 |
+
197: Giant Schnauzer
|
| 218 |
+
198: Standard Schnauzer
|
| 219 |
+
199: Scottish Terrier
|
| 220 |
+
200: Tibetan Terrier
|
| 221 |
+
201: Australian Silky Terrier
|
| 222 |
+
202: Soft-coated Wheaten Terrier
|
| 223 |
+
203: West Highland White Terrier
|
| 224 |
+
204: Lhasa Apso
|
| 225 |
+
205: Flat-Coated Retriever
|
| 226 |
+
206: Curly-coated Retriever
|
| 227 |
+
207: Golden Retriever
|
| 228 |
+
208: Labrador Retriever
|
| 229 |
+
209: Chesapeake Bay Retriever
|
| 230 |
+
210: German Shorthaired Pointer
|
| 231 |
+
211: Vizsla
|
| 232 |
+
212: English Setter
|
| 233 |
+
213: Irish Setter
|
| 234 |
+
214: Gordon Setter
|
| 235 |
+
215: Brittany
|
| 236 |
+
216: Clumber Spaniel
|
| 237 |
+
217: English Springer Spaniel
|
| 238 |
+
218: Welsh Springer Spaniel
|
| 239 |
+
219: Cocker Spaniels
|
| 240 |
+
220: Sussex Spaniel
|
| 241 |
+
221: Irish Water Spaniel
|
| 242 |
+
222: Kuvasz
|
| 243 |
+
223: Schipperke
|
| 244 |
+
224: Groenendael
|
| 245 |
+
225: Malinois
|
| 246 |
+
226: Briard
|
| 247 |
+
227: Australian Kelpie
|
| 248 |
+
228: Komondor
|
| 249 |
+
229: Old English Sheepdog
|
| 250 |
+
230: Shetland Sheepdog
|
| 251 |
+
231: collie
|
| 252 |
+
232: Border Collie
|
| 253 |
+
233: Bouvier des Flandres
|
| 254 |
+
234: Rottweiler
|
| 255 |
+
235: German Shepherd Dog
|
| 256 |
+
236: Dobermann
|
| 257 |
+
237: Miniature Pinscher
|
| 258 |
+
238: Greater Swiss Mountain Dog
|
| 259 |
+
239: Bernese Mountain Dog
|
| 260 |
+
240: Appenzeller Sennenhund
|
| 261 |
+
241: Entlebucher Sennenhund
|
| 262 |
+
242: Boxer
|
| 263 |
+
243: Bullmastiff
|
| 264 |
+
244: Tibetan Mastiff
|
| 265 |
+
245: French Bulldog
|
| 266 |
+
246: Great Dane
|
| 267 |
+
247: St. Bernard
|
| 268 |
+
248: husky
|
| 269 |
+
249: Alaskan Malamute
|
| 270 |
+
250: Siberian Husky
|
| 271 |
+
251: Dalmatian
|
| 272 |
+
252: Affenpinscher
|
| 273 |
+
253: Basenji
|
| 274 |
+
254: pug
|
| 275 |
+
255: Leonberger
|
| 276 |
+
256: Newfoundland
|
| 277 |
+
257: Pyrenean Mountain Dog
|
| 278 |
+
258: Samoyed
|
| 279 |
+
259: Pomeranian
|
| 280 |
+
260: Chow Chow
|
| 281 |
+
261: Keeshond
|
| 282 |
+
262: Griffon Bruxellois
|
| 283 |
+
263: Pembroke Welsh Corgi
|
| 284 |
+
264: Cardigan Welsh Corgi
|
| 285 |
+
265: Toy Poodle
|
| 286 |
+
266: Miniature Poodle
|
| 287 |
+
267: Standard Poodle
|
| 288 |
+
268: Mexican hairless dog
|
| 289 |
+
269: grey wolf
|
| 290 |
+
270: Alaskan tundra wolf
|
| 291 |
+
271: red wolf
|
| 292 |
+
272: coyote
|
| 293 |
+
273: dingo
|
| 294 |
+
274: dhole
|
| 295 |
+
275: African wild dog
|
| 296 |
+
276: hyena
|
| 297 |
+
277: red fox
|
| 298 |
+
278: kit fox
|
| 299 |
+
279: Arctic fox
|
| 300 |
+
280: grey fox
|
| 301 |
+
281: tabby cat
|
| 302 |
+
282: tiger cat
|
| 303 |
+
283: Persian cat
|
| 304 |
+
284: Siamese cat
|
| 305 |
+
285: Egyptian Mau
|
| 306 |
+
286: cougar
|
| 307 |
+
287: lynx
|
| 308 |
+
288: leopard
|
| 309 |
+
289: snow leopard
|
| 310 |
+
290: jaguar
|
| 311 |
+
291: lion
|
| 312 |
+
292: tiger
|
| 313 |
+
293: cheetah
|
| 314 |
+
294: brown bear
|
| 315 |
+
295: American black bear
|
| 316 |
+
296: polar bear
|
| 317 |
+
297: sloth bear
|
| 318 |
+
298: mongoose
|
| 319 |
+
299: meerkat
|
| 320 |
+
300: tiger beetle
|
| 321 |
+
301: ladybug
|
| 322 |
+
302: ground beetle
|
| 323 |
+
303: longhorn beetle
|
| 324 |
+
304: leaf beetle
|
| 325 |
+
305: dung beetle
|
| 326 |
+
306: rhinoceros beetle
|
| 327 |
+
307: weevil
|
| 328 |
+
308: fly
|
| 329 |
+
309: bee
|
| 330 |
+
310: ant
|
| 331 |
+
311: grasshopper
|
| 332 |
+
312: cricket
|
| 333 |
+
313: stick insect
|
| 334 |
+
314: cockroach
|
| 335 |
+
315: mantis
|
| 336 |
+
316: cicada
|
| 337 |
+
317: leafhopper
|
| 338 |
+
318: lacewing
|
| 339 |
+
319: dragonfly
|
| 340 |
+
320: damselfly
|
| 341 |
+
321: red admiral
|
| 342 |
+
322: ringlet
|
| 343 |
+
323: monarch butterfly
|
| 344 |
+
324: small white
|
| 345 |
+
325: sulfur butterfly
|
| 346 |
+
326: gossamer-winged butterfly
|
| 347 |
+
327: starfish
|
| 348 |
+
328: sea urchin
|
| 349 |
+
329: sea cucumber
|
| 350 |
+
330: cottontail rabbit
|
| 351 |
+
331: hare
|
| 352 |
+
332: Angora rabbit
|
| 353 |
+
333: hamster
|
| 354 |
+
334: porcupine
|
| 355 |
+
335: fox squirrel
|
| 356 |
+
336: marmot
|
| 357 |
+
337: beaver
|
| 358 |
+
338: guinea pig
|
| 359 |
+
339: common sorrel
|
| 360 |
+
340: zebra
|
| 361 |
+
341: pig
|
| 362 |
+
342: wild boar
|
| 363 |
+
343: warthog
|
| 364 |
+
344: hippopotamus
|
| 365 |
+
345: ox
|
| 366 |
+
346: water buffalo
|
| 367 |
+
347: bison
|
| 368 |
+
348: ram
|
| 369 |
+
349: bighorn sheep
|
| 370 |
+
350: Alpine ibex
|
| 371 |
+
351: hartebeest
|
| 372 |
+
352: impala
|
| 373 |
+
353: gazelle
|
| 374 |
+
354: dromedary
|
| 375 |
+
355: llama
|
| 376 |
+
356: weasel
|
| 377 |
+
357: mink
|
| 378 |
+
358: European polecat
|
| 379 |
+
359: black-footed ferret
|
| 380 |
+
360: otter
|
| 381 |
+
361: skunk
|
| 382 |
+
362: badger
|
| 383 |
+
363: armadillo
|
| 384 |
+
364: three-toed sloth
|
| 385 |
+
365: orangutan
|
| 386 |
+
366: gorilla
|
| 387 |
+
367: chimpanzee
|
| 388 |
+
368: gibbon
|
| 389 |
+
369: siamang
|
| 390 |
+
370: guenon
|
| 391 |
+
371: patas monkey
|
| 392 |
+
372: baboon
|
| 393 |
+
373: macaque
|
| 394 |
+
374: langur
|
| 395 |
+
375: black-and-white colobus
|
| 396 |
+
376: proboscis monkey
|
| 397 |
+
377: marmoset
|
| 398 |
+
378: white-headed capuchin
|
| 399 |
+
379: howler monkey
|
| 400 |
+
380: titi
|
| 401 |
+
381: Geoffroy's spider monkey
|
| 402 |
+
382: common squirrel monkey
|
| 403 |
+
383: ring-tailed lemur
|
| 404 |
+
384: indri
|
| 405 |
+
385: Asian elephant
|
| 406 |
+
386: African bush elephant
|
| 407 |
+
387: red panda
|
| 408 |
+
388: giant panda
|
| 409 |
+
389: snoek
|
| 410 |
+
390: eel
|
| 411 |
+
391: coho salmon
|
| 412 |
+
392: rock beauty
|
| 413 |
+
393: clownfish
|
| 414 |
+
394: sturgeon
|
| 415 |
+
395: garfish
|
| 416 |
+
396: lionfish
|
| 417 |
+
397: pufferfish
|
| 418 |
+
398: abacus
|
| 419 |
+
399: abaya
|
| 420 |
+
400: academic gown
|
| 421 |
+
401: accordion
|
| 422 |
+
402: acoustic guitar
|
| 423 |
+
403: aircraft carrier
|
| 424 |
+
404: airliner
|
| 425 |
+
405: airship
|
| 426 |
+
406: altar
|
| 427 |
+
407: ambulance
|
| 428 |
+
408: amphibious vehicle
|
| 429 |
+
409: analog clock
|
| 430 |
+
410: apiary
|
| 431 |
+
411: apron
|
| 432 |
+
412: waste container
|
| 433 |
+
413: assault rifle
|
| 434 |
+
414: backpack
|
| 435 |
+
415: bakery
|
| 436 |
+
416: balance beam
|
| 437 |
+
417: balloon
|
| 438 |
+
418: ballpoint pen
|
| 439 |
+
419: Band-Aid
|
| 440 |
+
420: banjo
|
| 441 |
+
421: baluster
|
| 442 |
+
422: barbell
|
| 443 |
+
423: barber chair
|
| 444 |
+
424: barbershop
|
| 445 |
+
425: barn
|
| 446 |
+
426: barometer
|
| 447 |
+
427: barrel
|
| 448 |
+
428: wheelbarrow
|
| 449 |
+
429: baseball
|
| 450 |
+
430: basketball
|
| 451 |
+
431: bassinet
|
| 452 |
+
432: bassoon
|
| 453 |
+
433: swimming cap
|
| 454 |
+
434: bath towel
|
| 455 |
+
435: bathtub
|
| 456 |
+
436: station wagon
|
| 457 |
+
437: lighthouse
|
| 458 |
+
438: beaker
|
| 459 |
+
439: military cap
|
| 460 |
+
440: beer bottle
|
| 461 |
+
441: beer glass
|
| 462 |
+
442: bell-cot
|
| 463 |
+
443: bib
|
| 464 |
+
444: tandem bicycle
|
| 465 |
+
445: bikini
|
| 466 |
+
446: ring binder
|
| 467 |
+
447: binoculars
|
| 468 |
+
448: birdhouse
|
| 469 |
+
449: boathouse
|
| 470 |
+
450: bobsleigh
|
| 471 |
+
451: bolo tie
|
| 472 |
+
452: poke bonnet
|
| 473 |
+
453: bookcase
|
| 474 |
+
454: bookstore
|
| 475 |
+
455: bottle cap
|
| 476 |
+
456: bow
|
| 477 |
+
457: bow tie
|
| 478 |
+
458: brass
|
| 479 |
+
459: bra
|
| 480 |
+
460: breakwater
|
| 481 |
+
461: breastplate
|
| 482 |
+
462: broom
|
| 483 |
+
463: bucket
|
| 484 |
+
464: buckle
|
| 485 |
+
465: bulletproof vest
|
| 486 |
+
466: high-speed train
|
| 487 |
+
467: butcher shop
|
| 488 |
+
468: taxicab
|
| 489 |
+
469: cauldron
|
| 490 |
+
470: candle
|
| 491 |
+
471: cannon
|
| 492 |
+
472: canoe
|
| 493 |
+
473: can opener
|
| 494 |
+
474: cardigan
|
| 495 |
+
475: car mirror
|
| 496 |
+
476: carousel
|
| 497 |
+
477: tool kit
|
| 498 |
+
478: carton
|
| 499 |
+
479: car wheel
|
| 500 |
+
480: automated teller machine
|
| 501 |
+
481: cassette
|
| 502 |
+
482: cassette player
|
| 503 |
+
483: castle
|
| 504 |
+
484: catamaran
|
| 505 |
+
485: CD player
|
| 506 |
+
486: cello
|
| 507 |
+
487: mobile phone
|
| 508 |
+
488: chain
|
| 509 |
+
489: chain-link fence
|
| 510 |
+
490: chain mail
|
| 511 |
+
491: chainsaw
|
| 512 |
+
492: chest
|
| 513 |
+
493: chiffonier
|
| 514 |
+
494: chime
|
| 515 |
+
495: china cabinet
|
| 516 |
+
496: Christmas stocking
|
| 517 |
+
497: church
|
| 518 |
+
498: movie theater
|
| 519 |
+
499: cleaver
|
| 520 |
+
500: cliff dwelling
|
| 521 |
+
501: cloak
|
| 522 |
+
502: clogs
|
| 523 |
+
503: cocktail shaker
|
| 524 |
+
504: coffee mug
|
| 525 |
+
505: coffeemaker
|
| 526 |
+
506: coil
|
| 527 |
+
507: combination lock
|
| 528 |
+
508: computer keyboard
|
| 529 |
+
509: confectionery store
|
| 530 |
+
510: container ship
|
| 531 |
+
511: convertible
|
| 532 |
+
512: corkscrew
|
| 533 |
+
513: cornet
|
| 534 |
+
514: cowboy boot
|
| 535 |
+
515: cowboy hat
|
| 536 |
+
516: cradle
|
| 537 |
+
517: crane (machine)
|
| 538 |
+
518: crash helmet
|
| 539 |
+
519: crate
|
| 540 |
+
520: infant bed
|
| 541 |
+
521: Crock Pot
|
| 542 |
+
522: croquet ball
|
| 543 |
+
523: crutch
|
| 544 |
+
524: cuirass
|
| 545 |
+
525: dam
|
| 546 |
+
526: desk
|
| 547 |
+
527: desktop computer
|
| 548 |
+
528: rotary dial telephone
|
| 549 |
+
529: diaper
|
| 550 |
+
530: digital clock
|
| 551 |
+
531: digital watch
|
| 552 |
+
532: dining table
|
| 553 |
+
533: dishcloth
|
| 554 |
+
534: dishwasher
|
| 555 |
+
535: disc brake
|
| 556 |
+
536: dock
|
| 557 |
+
537: dog sled
|
| 558 |
+
538: dome
|
| 559 |
+
539: doormat
|
| 560 |
+
540: drilling rig
|
| 561 |
+
541: drum
|
| 562 |
+
542: drumstick
|
| 563 |
+
543: dumbbell
|
| 564 |
+
544: Dutch oven
|
| 565 |
+
545: electric fan
|
| 566 |
+
546: electric guitar
|
| 567 |
+
547: electric locomotive
|
| 568 |
+
548: entertainment center
|
| 569 |
+
549: envelope
|
| 570 |
+
550: espresso machine
|
| 571 |
+
551: face powder
|
| 572 |
+
552: feather boa
|
| 573 |
+
553: filing cabinet
|
| 574 |
+
554: fireboat
|
| 575 |
+
555: fire engine
|
| 576 |
+
556: fire screen sheet
|
| 577 |
+
557: flagpole
|
| 578 |
+
558: flute
|
| 579 |
+
559: folding chair
|
| 580 |
+
560: football helmet
|
| 581 |
+
561: forklift
|
| 582 |
+
562: fountain
|
| 583 |
+
563: fountain pen
|
| 584 |
+
564: four-poster bed
|
| 585 |
+
565: freight car
|
| 586 |
+
566: French horn
|
| 587 |
+
567: frying pan
|
| 588 |
+
568: fur coat
|
| 589 |
+
569: garbage truck
|
| 590 |
+
570: gas mask
|
| 591 |
+
571: gas pump
|
| 592 |
+
572: goblet
|
| 593 |
+
573: go-kart
|
| 594 |
+
574: golf ball
|
| 595 |
+
575: golf cart
|
| 596 |
+
576: gondola
|
| 597 |
+
577: gong
|
| 598 |
+
578: gown
|
| 599 |
+
579: grand piano
|
| 600 |
+
580: greenhouse
|
| 601 |
+
581: grille
|
| 602 |
+
582: grocery store
|
| 603 |
+
583: guillotine
|
| 604 |
+
584: barrette
|
| 605 |
+
585: hair spray
|
| 606 |
+
586: half-track
|
| 607 |
+
587: hammer
|
| 608 |
+
588: hamper
|
| 609 |
+
589: hair dryer
|
| 610 |
+
590: hand-held computer
|
| 611 |
+
591: handkerchief
|
| 612 |
+
592: hard disk drive
|
| 613 |
+
593: harmonica
|
| 614 |
+
594: harp
|
| 615 |
+
595: harvester
|
| 616 |
+
596: hatchet
|
| 617 |
+
597: holster
|
| 618 |
+
598: home theater
|
| 619 |
+
599: honeycomb
|
| 620 |
+
600: hook
|
| 621 |
+
601: hoop skirt
|
| 622 |
+
602: horizontal bar
|
| 623 |
+
603: horse-drawn vehicle
|
| 624 |
+
604: hourglass
|
| 625 |
+
605: iPod
|
| 626 |
+
606: clothes iron
|
| 627 |
+
607: jack-o'-lantern
|
| 628 |
+
608: jeans
|
| 629 |
+
609: jeep
|
| 630 |
+
610: T-shirt
|
| 631 |
+
611: jigsaw puzzle
|
| 632 |
+
612: pulled rickshaw
|
| 633 |
+
613: joystick
|
| 634 |
+
614: kimono
|
| 635 |
+
615: knee pad
|
| 636 |
+
616: knot
|
| 637 |
+
617: lab coat
|
| 638 |
+
618: ladle
|
| 639 |
+
619: lampshade
|
| 640 |
+
620: laptop computer
|
| 641 |
+
621: lawn mower
|
| 642 |
+
622: lens cap
|
| 643 |
+
623: paper knife
|
| 644 |
+
624: library
|
| 645 |
+
625: lifeboat
|
| 646 |
+
626: lighter
|
| 647 |
+
627: limousine
|
| 648 |
+
628: ocean liner
|
| 649 |
+
629: lipstick
|
| 650 |
+
630: slip-on shoe
|
| 651 |
+
631: lotion
|
| 652 |
+
632: speaker
|
| 653 |
+
633: loupe
|
| 654 |
+
634: sawmill
|
| 655 |
+
635: magnetic compass
|
| 656 |
+
636: mail bag
|
| 657 |
+
637: mailbox
|
| 658 |
+
638: tights
|
| 659 |
+
639: tank suit
|
| 660 |
+
640: manhole cover
|
| 661 |
+
641: maraca
|
| 662 |
+
642: marimba
|
| 663 |
+
643: mask
|
| 664 |
+
644: match
|
| 665 |
+
645: maypole
|
| 666 |
+
646: maze
|
| 667 |
+
647: measuring cup
|
| 668 |
+
648: medicine chest
|
| 669 |
+
649: megalith
|
| 670 |
+
650: microphone
|
| 671 |
+
651: microwave oven
|
| 672 |
+
652: military uniform
|
| 673 |
+
653: milk can
|
| 674 |
+
654: minibus
|
| 675 |
+
655: miniskirt
|
| 676 |
+
656: minivan
|
| 677 |
+
657: missile
|
| 678 |
+
658: mitten
|
| 679 |
+
659: mixing bowl
|
| 680 |
+
660: mobile home
|
| 681 |
+
661: Model T
|
| 682 |
+
662: modem
|
| 683 |
+
663: monastery
|
| 684 |
+
664: monitor
|
| 685 |
+
665: moped
|
| 686 |
+
666: mortar
|
| 687 |
+
667: square academic cap
|
| 688 |
+
668: mosque
|
| 689 |
+
669: mosquito net
|
| 690 |
+
670: scooter
|
| 691 |
+
671: mountain bike
|
| 692 |
+
672: tent
|
| 693 |
+
673: computer mouse
|
| 694 |
+
674: mousetrap
|
| 695 |
+
675: moving van
|
| 696 |
+
676: muzzle
|
| 697 |
+
677: nail
|
| 698 |
+
678: neck brace
|
| 699 |
+
679: necklace
|
| 700 |
+
680: nipple
|
| 701 |
+
681: notebook computer
|
| 702 |
+
682: obelisk
|
| 703 |
+
683: oboe
|
| 704 |
+
684: ocarina
|
| 705 |
+
685: odometer
|
| 706 |
+
686: oil filter
|
| 707 |
+
687: organ
|
| 708 |
+
688: oscilloscope
|
| 709 |
+
689: overskirt
|
| 710 |
+
690: bullock cart
|
| 711 |
+
691: oxygen mask
|
| 712 |
+
692: packet
|
| 713 |
+
693: paddle
|
| 714 |
+
694: paddle wheel
|
| 715 |
+
695: padlock
|
| 716 |
+
696: paintbrush
|
| 717 |
+
697: pajamas
|
| 718 |
+
698: palace
|
| 719 |
+
699: pan flute
|
| 720 |
+
700: paper towel
|
| 721 |
+
701: parachute
|
| 722 |
+
702: parallel bars
|
| 723 |
+
703: park bench
|
| 724 |
+
704: parking meter
|
| 725 |
+
705: passenger car
|
| 726 |
+
706: patio
|
| 727 |
+
707: payphone
|
| 728 |
+
708: pedestal
|
| 729 |
+
709: pencil case
|
| 730 |
+
710: pencil sharpener
|
| 731 |
+
711: perfume
|
| 732 |
+
712: Petri dish
|
| 733 |
+
713: photocopier
|
| 734 |
+
714: plectrum
|
| 735 |
+
715: Pickelhaube
|
| 736 |
+
716: picket fence
|
| 737 |
+
717: pickup truck
|
| 738 |
+
718: pier
|
| 739 |
+
719: piggy bank
|
| 740 |
+
720: pill bottle
|
| 741 |
+
721: pillow
|
| 742 |
+
722: ping-pong ball
|
| 743 |
+
723: pinwheel
|
| 744 |
+
724: pirate ship
|
| 745 |
+
725: pitcher
|
| 746 |
+
726: hand plane
|
| 747 |
+
727: planetarium
|
| 748 |
+
728: plastic bag
|
| 749 |
+
729: plate rack
|
| 750 |
+
730: plow
|
| 751 |
+
731: plunger
|
| 752 |
+
732: Polaroid camera
|
| 753 |
+
733: pole
|
| 754 |
+
734: police van
|
| 755 |
+
735: poncho
|
| 756 |
+
736: billiard table
|
| 757 |
+
737: soda bottle
|
| 758 |
+
738: pot
|
| 759 |
+
739: potter's wheel
|
| 760 |
+
740: power drill
|
| 761 |
+
741: prayer rug
|
| 762 |
+
742: printer
|
| 763 |
+
743: prison
|
| 764 |
+
744: projectile
|
| 765 |
+
745: projector
|
| 766 |
+
746: hockey puck
|
| 767 |
+
747: punching bag
|
| 768 |
+
748: purse
|
| 769 |
+
749: quill
|
| 770 |
+
750: quilt
|
| 771 |
+
751: race car
|
| 772 |
+
752: racket
|
| 773 |
+
753: radiator
|
| 774 |
+
754: radio
|
| 775 |
+
755: radio telescope
|
| 776 |
+
756: rain barrel
|
| 777 |
+
757: recreational vehicle
|
| 778 |
+
758: reel
|
| 779 |
+
759: reflex camera
|
| 780 |
+
760: refrigerator
|
| 781 |
+
761: remote control
|
| 782 |
+
762: restaurant
|
| 783 |
+
763: revolver
|
| 784 |
+
764: rifle
|
| 785 |
+
765: rocking chair
|
| 786 |
+
766: rotisserie
|
| 787 |
+
767: eraser
|
| 788 |
+
768: rugby ball
|
| 789 |
+
769: ruler
|
| 790 |
+
770: running shoe
|
| 791 |
+
771: safe
|
| 792 |
+
772: safety pin
|
| 793 |
+
773: salt shaker
|
| 794 |
+
774: sandal
|
| 795 |
+
775: sarong
|
| 796 |
+
776: saxophone
|
| 797 |
+
777: scabbard
|
| 798 |
+
778: weighing scale
|
| 799 |
+
779: school bus
|
| 800 |
+
780: schooner
|
| 801 |
+
781: scoreboard
|
| 802 |
+
782: CRT screen
|
| 803 |
+
783: screw
|
| 804 |
+
784: screwdriver
|
| 805 |
+
785: seat belt
|
| 806 |
+
786: sewing machine
|
| 807 |
+
787: shield
|
| 808 |
+
788: shoe store
|
| 809 |
+
789: shoji
|
| 810 |
+
790: shopping basket
|
| 811 |
+
791: shopping cart
|
| 812 |
+
792: shovel
|
| 813 |
+
793: shower cap
|
| 814 |
+
794: shower curtain
|
| 815 |
+
795: ski
|
| 816 |
+
796: ski mask
|
| 817 |
+
797: sleeping bag
|
| 818 |
+
798: slide rule
|
| 819 |
+
799: sliding door
|
| 820 |
+
800: slot machine
|
| 821 |
+
801: snorkel
|
| 822 |
+
802: snowmobile
|
| 823 |
+
803: snowplow
|
| 824 |
+
804: soap dispenser
|
| 825 |
+
805: soccer ball
|
| 826 |
+
806: sock
|
| 827 |
+
807: solar thermal collector
|
| 828 |
+
808: sombrero
|
| 829 |
+
809: soup bowl
|
| 830 |
+
810: space bar
|
| 831 |
+
811: space heater
|
| 832 |
+
812: space shuttle
|
| 833 |
+
813: spatula
|
| 834 |
+
814: motorboat
|
| 835 |
+
815: spider web
|
| 836 |
+
816: spindle
|
| 837 |
+
817: sports car
|
| 838 |
+
818: spotlight
|
| 839 |
+
819: stage
|
| 840 |
+
820: steam locomotive
|
| 841 |
+
821: through arch bridge
|
| 842 |
+
822: steel drum
|
| 843 |
+
823: stethoscope
|
| 844 |
+
824: scarf
|
| 845 |
+
825: stone wall
|
| 846 |
+
826: stopwatch
|
| 847 |
+
827: stove
|
| 848 |
+
828: strainer
|
| 849 |
+
829: tram
|
| 850 |
+
830: stretcher
|
| 851 |
+
831: couch
|
| 852 |
+
832: stupa
|
| 853 |
+
833: submarine
|
| 854 |
+
834: suit
|
| 855 |
+
835: sundial
|
| 856 |
+
836: sunglass
|
| 857 |
+
837: sunglasses
|
| 858 |
+
838: sunscreen
|
| 859 |
+
839: suspension bridge
|
| 860 |
+
840: mop
|
| 861 |
+
841: sweatshirt
|
| 862 |
+
842: swimsuit
|
| 863 |
+
843: swing
|
| 864 |
+
844: switch
|
| 865 |
+
845: syringe
|
| 866 |
+
846: table lamp
|
| 867 |
+
847: tank
|
| 868 |
+
848: tape player
|
| 869 |
+
849: teapot
|
| 870 |
+
850: teddy bear
|
| 871 |
+
851: television
|
| 872 |
+
852: tennis ball
|
| 873 |
+
853: thatched roof
|
| 874 |
+
854: front curtain
|
| 875 |
+
855: thimble
|
| 876 |
+
856: threshing machine
|
| 877 |
+
857: throne
|
| 878 |
+
858: tile roof
|
| 879 |
+
859: toaster
|
| 880 |
+
860: tobacco shop
|
| 881 |
+
861: toilet seat
|
| 882 |
+
862: torch
|
| 883 |
+
863: totem pole
|
| 884 |
+
864: tow truck
|
| 885 |
+
865: toy store
|
| 886 |
+
866: tractor
|
| 887 |
+
867: semi-trailer truck
|
| 888 |
+
868: tray
|
| 889 |
+
869: trench coat
|
| 890 |
+
870: tricycle
|
| 891 |
+
871: trimaran
|
| 892 |
+
872: tripod
|
| 893 |
+
873: triumphal arch
|
| 894 |
+
874: trolleybus
|
| 895 |
+
875: trombone
|
| 896 |
+
876: tub
|
| 897 |
+
877: turnstile
|
| 898 |
+
878: typewriter keyboard
|
| 899 |
+
879: umbrella
|
| 900 |
+
880: unicycle
|
| 901 |
+
881: upright piano
|
| 902 |
+
882: vacuum cleaner
|
| 903 |
+
883: vase
|
| 904 |
+
884: vault
|
| 905 |
+
885: velvet
|
| 906 |
+
886: vending machine
|
| 907 |
+
887: vestment
|
| 908 |
+
888: viaduct
|
| 909 |
+
889: violin
|
| 910 |
+
890: volleyball
|
| 911 |
+
891: waffle iron
|
| 912 |
+
892: wall clock
|
| 913 |
+
893: wallet
|
| 914 |
+
894: wardrobe
|
| 915 |
+
895: military aircraft
|
| 916 |
+
896: sink
|
| 917 |
+
897: washing machine
|
| 918 |
+
898: water bottle
|
| 919 |
+
899: water jug
|
| 920 |
+
900: water tower
|
| 921 |
+
901: whiskey jug
|
| 922 |
+
902: whistle
|
| 923 |
+
903: wig
|
| 924 |
+
904: window screen
|
| 925 |
+
905: window shade
|
| 926 |
+
906: Windsor tie
|
| 927 |
+
907: wine bottle
|
| 928 |
+
908: wing
|
| 929 |
+
909: wok
|
| 930 |
+
910: wooden spoon
|
| 931 |
+
911: wool
|
| 932 |
+
912: split-rail fence
|
| 933 |
+
913: shipwreck
|
| 934 |
+
914: yawl
|
| 935 |
+
915: yurt
|
| 936 |
+
916: website
|
| 937 |
+
917: comic book
|
| 938 |
+
918: crossword
|
| 939 |
+
919: traffic sign
|
| 940 |
+
920: traffic light
|
| 941 |
+
921: dust jacket
|
| 942 |
+
922: menu
|
| 943 |
+
923: plate
|
| 944 |
+
924: guacamole
|
| 945 |
+
925: consomme
|
| 946 |
+
926: hot pot
|
| 947 |
+
927: trifle
|
| 948 |
+
928: ice cream
|
| 949 |
+
929: ice pop
|
| 950 |
+
930: baguette
|
| 951 |
+
931: bagel
|
| 952 |
+
932: pretzel
|
| 953 |
+
933: cheeseburger
|
| 954 |
+
934: hot dog
|
| 955 |
+
935: mashed potato
|
| 956 |
+
936: cabbage
|
| 957 |
+
937: broccoli
|
| 958 |
+
938: cauliflower
|
| 959 |
+
939: zucchini
|
| 960 |
+
940: spaghetti squash
|
| 961 |
+
941: acorn squash
|
| 962 |
+
942: butternut squash
|
| 963 |
+
943: cucumber
|
| 964 |
+
944: artichoke
|
| 965 |
+
945: bell pepper
|
| 966 |
+
946: cardoon
|
| 967 |
+
947: mushroom
|
| 968 |
+
948: Granny Smith
|
| 969 |
+
949: strawberry
|
| 970 |
+
950: orange
|
| 971 |
+
951: lemon
|
| 972 |
+
952: fig
|
| 973 |
+
953: pineapple
|
| 974 |
+
954: banana
|
| 975 |
+
955: jackfruit
|
| 976 |
+
956: custard apple
|
| 977 |
+
957: pomegranate
|
| 978 |
+
958: hay
|
| 979 |
+
959: carbonara
|
| 980 |
+
960: chocolate syrup
|
| 981 |
+
961: dough
|
| 982 |
+
962: meatloaf
|
| 983 |
+
963: pizza
|
| 984 |
+
964: pot pie
|
| 985 |
+
965: burrito
|
| 986 |
+
966: red wine
|
| 987 |
+
967: espresso
|
| 988 |
+
968: cup
|
| 989 |
+
969: eggnog
|
| 990 |
+
970: alp
|
| 991 |
+
971: bubble
|
| 992 |
+
972: cliff
|
| 993 |
+
973: coral reef
|
| 994 |
+
974: geyser
|
| 995 |
+
975: lakeshore
|
| 996 |
+
976: promontory
|
| 997 |
+
977: shoal
|
| 998 |
+
978: seashore
|
| 999 |
+
979: valley
|
| 1000 |
+
980: volcano
|
| 1001 |
+
981: baseball player
|
| 1002 |
+
982: bridegroom
|
| 1003 |
+
983: scuba diver
|
| 1004 |
+
984: rapeseed
|
| 1005 |
+
985: daisy
|
| 1006 |
+
986: yellow lady's slipper
|
| 1007 |
+
987: corn
|
| 1008 |
+
988: acorn
|
| 1009 |
+
989: rose hip
|
| 1010 |
+
990: horse chestnut seed
|
| 1011 |
+
991: coral fungus
|
| 1012 |
+
992: agaric
|
| 1013 |
+
993: gyromitra
|
| 1014 |
+
994: stinkhorn mushroom
|
| 1015 |
+
995: earth star
|
| 1016 |
+
996: hen-of-the-woods
|
| 1017 |
+
997: bolete
|
| 1018 |
+
998: ear
|
| 1019 |
+
999: toilet paper
|
| 1020 |
+
|
| 1021 |
+
# Imagenet class codes to human-readable names
|
| 1022 |
+
map:
|
| 1023 |
+
n01440764: tench
|
| 1024 |
+
n01443537: goldfish
|
| 1025 |
+
n01484850: great_white_shark
|
| 1026 |
+
n01491361: tiger_shark
|
| 1027 |
+
n01494475: hammerhead
|
| 1028 |
+
n01496331: electric_ray
|
| 1029 |
+
n01498041: stingray
|
| 1030 |
+
n01514668: cock
|
| 1031 |
+
n01514859: hen
|
| 1032 |
+
n01518878: ostrich
|
| 1033 |
+
n01530575: brambling
|
| 1034 |
+
n01531178: goldfinch
|
| 1035 |
+
n01532829: house_finch
|
| 1036 |
+
n01534433: junco
|
| 1037 |
+
n01537544: indigo_bunting
|
| 1038 |
+
n01558993: robin
|
| 1039 |
+
n01560419: bulbul
|
| 1040 |
+
n01580077: jay
|
| 1041 |
+
n01582220: magpie
|
| 1042 |
+
n01592084: chickadee
|
| 1043 |
+
n01601694: water_ouzel
|
| 1044 |
+
n01608432: kite
|
| 1045 |
+
n01614925: bald_eagle
|
| 1046 |
+
n01616318: vulture
|
| 1047 |
+
n01622779: great_grey_owl
|
| 1048 |
+
n01629819: European_fire_salamander
|
| 1049 |
+
n01630670: common_newt
|
| 1050 |
+
n01631663: eft
|
| 1051 |
+
n01632458: spotted_salamander
|
| 1052 |
+
n01632777: axolotl
|
| 1053 |
+
n01641577: bullfrog
|
| 1054 |
+
n01644373: tree_frog
|
| 1055 |
+
n01644900: tailed_frog
|
| 1056 |
+
n01664065: loggerhead
|
| 1057 |
+
n01665541: leatherback_turtle
|
| 1058 |
+
n01667114: mud_turtle
|
| 1059 |
+
n01667778: terrapin
|
| 1060 |
+
n01669191: box_turtle
|
| 1061 |
+
n01675722: banded_gecko
|
| 1062 |
+
n01677366: common_iguana
|
| 1063 |
+
n01682714: American_chameleon
|
| 1064 |
+
n01685808: whiptail
|
| 1065 |
+
n01687978: agama
|
| 1066 |
+
n01688243: frilled_lizard
|
| 1067 |
+
n01689811: alligator_lizard
|
| 1068 |
+
n01692333: Gila_monster
|
| 1069 |
+
n01693334: green_lizard
|
| 1070 |
+
n01694178: African_chameleon
|
| 1071 |
+
n01695060: Komodo_dragon
|
| 1072 |
+
n01697457: African_crocodile
|
| 1073 |
+
n01698640: American_alligator
|
| 1074 |
+
n01704323: triceratops
|
| 1075 |
+
n01728572: thunder_snake
|
| 1076 |
+
n01728920: ringneck_snake
|
| 1077 |
+
n01729322: hognose_snake
|
| 1078 |
+
n01729977: green_snake
|
| 1079 |
+
n01734418: king_snake
|
| 1080 |
+
n01735189: garter_snake
|
| 1081 |
+
n01737021: water_snake
|
| 1082 |
+
n01739381: vine_snake
|
| 1083 |
+
n01740131: night_snake
|
| 1084 |
+
n01742172: boa_constrictor
|
| 1085 |
+
n01744401: rock_python
|
| 1086 |
+
n01748264: Indian_cobra
|
| 1087 |
+
n01749939: green_mamba
|
| 1088 |
+
n01751748: sea_snake
|
| 1089 |
+
n01753488: horned_viper
|
| 1090 |
+
n01755581: diamondback
|
| 1091 |
+
n01756291: sidewinder
|
| 1092 |
+
n01768244: trilobite
|
| 1093 |
+
n01770081: harvestman
|
| 1094 |
+
n01770393: scorpion
|
| 1095 |
+
n01773157: black_and_gold_garden_spider
|
| 1096 |
+
n01773549: barn_spider
|
| 1097 |
+
n01773797: garden_spider
|
| 1098 |
+
n01774384: black_widow
|
| 1099 |
+
n01774750: tarantula
|
| 1100 |
+
n01775062: wolf_spider
|
| 1101 |
+
n01776313: tick
|
| 1102 |
+
n01784675: centipede
|
| 1103 |
+
n01795545: black_grouse
|
| 1104 |
+
n01796340: ptarmigan
|
| 1105 |
+
n01797886: ruffed_grouse
|
| 1106 |
+
n01798484: prairie_chicken
|
| 1107 |
+
n01806143: peacock
|
| 1108 |
+
n01806567: quail
|
| 1109 |
+
n01807496: partridge
|
| 1110 |
+
n01817953: African_grey
|
| 1111 |
+
n01818515: macaw
|
| 1112 |
+
n01819313: sulphur-crested_cockatoo
|
| 1113 |
+
n01820546: lorikeet
|
| 1114 |
+
n01824575: coucal
|
| 1115 |
+
n01828970: bee_eater
|
| 1116 |
+
n01829413: hornbill
|
| 1117 |
+
n01833805: hummingbird
|
| 1118 |
+
n01843065: jacamar
|
| 1119 |
+
n01843383: toucan
|
| 1120 |
+
n01847000: drake
|
| 1121 |
+
n01855032: red-breasted_merganser
|
| 1122 |
+
n01855672: goose
|
| 1123 |
+
n01860187: black_swan
|
| 1124 |
+
n01871265: tusker
|
| 1125 |
+
n01872401: echidna
|
| 1126 |
+
n01873310: platypus
|
| 1127 |
+
n01877812: wallaby
|
| 1128 |
+
n01882714: koala
|
| 1129 |
+
n01883070: wombat
|
| 1130 |
+
n01910747: jellyfish
|
| 1131 |
+
n01914609: sea_anemone
|
| 1132 |
+
n01917289: brain_coral
|
| 1133 |
+
n01924916: flatworm
|
| 1134 |
+
n01930112: nematode
|
| 1135 |
+
n01943899: conch
|
| 1136 |
+
n01944390: snail
|
| 1137 |
+
n01945685: slug
|
| 1138 |
+
n01950731: sea_slug
|
| 1139 |
+
n01955084: chiton
|
| 1140 |
+
n01968897: chambered_nautilus
|
| 1141 |
+
n01978287: Dungeness_crab
|
| 1142 |
+
n01978455: rock_crab
|
| 1143 |
+
n01980166: fiddler_crab
|
| 1144 |
+
n01981276: king_crab
|
| 1145 |
+
n01983481: American_lobster
|
| 1146 |
+
n01984695: spiny_lobster
|
| 1147 |
+
n01985128: crayfish
|
| 1148 |
+
n01986214: hermit_crab
|
| 1149 |
+
n01990800: isopod
|
| 1150 |
+
n02002556: white_stork
|
| 1151 |
+
n02002724: black_stork
|
| 1152 |
+
n02006656: spoonbill
|
| 1153 |
+
n02007558: flamingo
|
| 1154 |
+
n02009229: little_blue_heron
|
| 1155 |
+
n02009912: American_egret
|
| 1156 |
+
n02011460: bittern
|
| 1157 |
+
n02012849: crane_(bird)
|
| 1158 |
+
n02013706: limpkin
|
| 1159 |
+
n02017213: European_gallinule
|
| 1160 |
+
n02018207: American_coot
|
| 1161 |
+
n02018795: bustard
|
| 1162 |
+
n02025239: ruddy_turnstone
|
| 1163 |
+
n02027492: red-backed_sandpiper
|
| 1164 |
+
n02028035: redshank
|
| 1165 |
+
n02033041: dowitcher
|
| 1166 |
+
n02037110: oystercatcher
|
| 1167 |
+
n02051845: pelican
|
| 1168 |
+
n02056570: king_penguin
|
| 1169 |
+
n02058221: albatross
|
| 1170 |
+
n02066245: grey_whale
|
| 1171 |
+
n02071294: killer_whale
|
| 1172 |
+
n02074367: dugong
|
| 1173 |
+
n02077923: sea_lion
|
| 1174 |
+
n02085620: Chihuahua
|
| 1175 |
+
n02085782: Japanese_spaniel
|
| 1176 |
+
n02085936: Maltese_dog
|
| 1177 |
+
n02086079: Pekinese
|
| 1178 |
+
n02086240: Shih-Tzu
|
| 1179 |
+
n02086646: Blenheim_spaniel
|
| 1180 |
+
n02086910: papillon
|
| 1181 |
+
n02087046: toy_terrier
|
| 1182 |
+
n02087394: Rhodesian_ridgeback
|
| 1183 |
+
n02088094: Afghan_hound
|
| 1184 |
+
n02088238: basset
|
| 1185 |
+
n02088364: beagle
|
| 1186 |
+
n02088466: bloodhound
|
| 1187 |
+
n02088632: bluetick
|
| 1188 |
+
n02089078: black-and-tan_coonhound
|
| 1189 |
+
n02089867: Walker_hound
|
| 1190 |
+
n02089973: English_foxhound
|
| 1191 |
+
n02090379: redbone
|
| 1192 |
+
n02090622: borzoi
|
| 1193 |
+
n02090721: Irish_wolfhound
|
| 1194 |
+
n02091032: Italian_greyhound
|
| 1195 |
+
n02091134: whippet
|
| 1196 |
+
n02091244: Ibizan_hound
|
| 1197 |
+
n02091467: Norwegian_elkhound
|
| 1198 |
+
n02091635: otterhound
|
| 1199 |
+
n02091831: Saluki
|
| 1200 |
+
n02092002: Scottish_deerhound
|
| 1201 |
+
n02092339: Weimaraner
|
| 1202 |
+
n02093256: Staffordshire_bullterrier
|
| 1203 |
+
n02093428: American_Staffordshire_terrier
|
| 1204 |
+
n02093647: Bedlington_terrier
|
| 1205 |
+
n02093754: Border_terrier
|
| 1206 |
+
n02093859: Kerry_blue_terrier
|
| 1207 |
+
n02093991: Irish_terrier
|
| 1208 |
+
n02094114: Norfolk_terrier
|
| 1209 |
+
n02094258: Norwich_terrier
|
| 1210 |
+
n02094433: Yorkshire_terrier
|
| 1211 |
+
n02095314: wire-haired_fox_terrier
|
| 1212 |
+
n02095570: Lakeland_terrier
|
| 1213 |
+
n02095889: Sealyham_terrier
|
| 1214 |
+
n02096051: Airedale
|
| 1215 |
+
n02096177: cairn
|
| 1216 |
+
n02096294: Australian_terrier
|
| 1217 |
+
n02096437: Dandie_Dinmont
|
| 1218 |
+
n02096585: Boston_bull
|
| 1219 |
+
n02097047: miniature_schnauzer
|
| 1220 |
+
n02097130: giant_schnauzer
|
| 1221 |
+
n02097209: standard_schnauzer
|
| 1222 |
+
n02097298: Scotch_terrier
|
| 1223 |
+
n02097474: Tibetan_terrier
|
| 1224 |
+
n02097658: silky_terrier
|
| 1225 |
+
n02098105: soft-coated_wheaten_terrier
|
| 1226 |
+
n02098286: West_Highland_white_terrier
|
| 1227 |
+
n02098413: Lhasa
|
| 1228 |
+
n02099267: flat-coated_retriever
|
| 1229 |
+
n02099429: curly-coated_retriever
|
| 1230 |
+
n02099601: golden_retriever
|
| 1231 |
+
n02099712: Labrador_retriever
|
| 1232 |
+
n02099849: Chesapeake_Bay_retriever
|
| 1233 |
+
n02100236: German_short-haired_pointer
|
| 1234 |
+
n02100583: vizsla
|
| 1235 |
+
n02100735: English_setter
|
| 1236 |
+
n02100877: Irish_setter
|
| 1237 |
+
n02101006: Gordon_setter
|
| 1238 |
+
n02101388: Brittany_spaniel
|
| 1239 |
+
n02101556: clumber
|
| 1240 |
+
n02102040: English_springer
|
| 1241 |
+
n02102177: Welsh_springer_spaniel
|
| 1242 |
+
n02102318: cocker_spaniel
|
| 1243 |
+
n02102480: Sussex_spaniel
|
| 1244 |
+
n02102973: Irish_water_spaniel
|
| 1245 |
+
n02104029: kuvasz
|
| 1246 |
+
n02104365: schipperke
|
| 1247 |
+
n02105056: groenendael
|
| 1248 |
+
n02105162: malinois
|
| 1249 |
+
n02105251: briard
|
| 1250 |
+
n02105412: kelpie
|
| 1251 |
+
n02105505: komondor
|
| 1252 |
+
n02105641: Old_English_sheepdog
|
| 1253 |
+
n02105855: Shetland_sheepdog
|
| 1254 |
+
n02106030: collie
|
| 1255 |
+
n02106166: Border_collie
|
| 1256 |
+
n02106382: Bouvier_des_Flandres
|
| 1257 |
+
n02106550: Rottweiler
|
| 1258 |
+
n02106662: German_shepherd
|
| 1259 |
+
n02107142: Doberman
|
| 1260 |
+
n02107312: miniature_pinscher
|
| 1261 |
+
n02107574: Greater_Swiss_Mountain_dog
|
| 1262 |
+
n02107683: Bernese_mountain_dog
|
| 1263 |
+
n02107908: Appenzeller
|
| 1264 |
+
n02108000: EntleBucher
|
| 1265 |
+
n02108089: boxer
|
| 1266 |
+
n02108422: bull_mastiff
|
| 1267 |
+
n02108551: Tibetan_mastiff
|
| 1268 |
+
n02108915: French_bulldog
|
| 1269 |
+
n02109047: Great_Dane
|
| 1270 |
+
n02109525: Saint_Bernard
|
| 1271 |
+
n02109961: Eskimo_dog
|
| 1272 |
+
n02110063: malamute
|
| 1273 |
+
n02110185: Siberian_husky
|
| 1274 |
+
n02110341: dalmatian
|
| 1275 |
+
n02110627: affenpinscher
|
| 1276 |
+
n02110806: basenji
|
| 1277 |
+
n02110958: pug
|
| 1278 |
+
n02111129: Leonberg
|
| 1279 |
+
n02111277: Newfoundland
|
| 1280 |
+
n02111500: Great_Pyrenees
|
| 1281 |
+
n02111889: Samoyed
|
| 1282 |
+
n02112018: Pomeranian
|
| 1283 |
+
n02112137: chow
|
| 1284 |
+
n02112350: keeshond
|
| 1285 |
+
n02112706: Brabancon_griffon
|
| 1286 |
+
n02113023: Pembroke
|
| 1287 |
+
n02113186: Cardigan
|
| 1288 |
+
n02113624: toy_poodle
|
| 1289 |
+
n02113712: miniature_poodle
|
| 1290 |
+
n02113799: standard_poodle
|
| 1291 |
+
n02113978: Mexican_hairless
|
| 1292 |
+
n02114367: timber_wolf
|
| 1293 |
+
n02114548: white_wolf
|
| 1294 |
+
n02114712: red_wolf
|
| 1295 |
+
n02114855: coyote
|
| 1296 |
+
n02115641: dingo
|
| 1297 |
+
n02115913: dhole
|
| 1298 |
+
n02116738: African_hunting_dog
|
| 1299 |
+
n02117135: hyena
|
| 1300 |
+
n02119022: red_fox
|
| 1301 |
+
n02119789: kit_fox
|
| 1302 |
+
n02120079: Arctic_fox
|
| 1303 |
+
n02120505: grey_fox
|
| 1304 |
+
n02123045: tabby
|
| 1305 |
+
n02123159: tiger_cat
|
| 1306 |
+
n02123394: Persian_cat
|
| 1307 |
+
n02123597: Siamese_cat
|
| 1308 |
+
n02124075: Egyptian_cat
|
| 1309 |
+
n02125311: cougar
|
| 1310 |
+
n02127052: lynx
|
| 1311 |
+
n02128385: leopard
|
| 1312 |
+
n02128757: snow_leopard
|
| 1313 |
+
n02128925: jaguar
|
| 1314 |
+
n02129165: lion
|
| 1315 |
+
n02129604: tiger
|
| 1316 |
+
n02130308: cheetah
|
| 1317 |
+
n02132136: brown_bear
|
| 1318 |
+
n02133161: American_black_bear
|
| 1319 |
+
n02134084: ice_bear
|
| 1320 |
+
n02134418: sloth_bear
|
| 1321 |
+
n02137549: mongoose
|
| 1322 |
+
n02138441: meerkat
|
| 1323 |
+
n02165105: tiger_beetle
|
| 1324 |
+
n02165456: ladybug
|
| 1325 |
+
n02167151: ground_beetle
|
| 1326 |
+
n02168699: long-horned_beetle
|
| 1327 |
+
n02169497: leaf_beetle
|
| 1328 |
+
n02172182: dung_beetle
|
| 1329 |
+
n02174001: rhinoceros_beetle
|
| 1330 |
+
n02177972: weevil
|
| 1331 |
+
n02190166: fly
|
| 1332 |
+
n02206856: bee
|
| 1333 |
+
n02219486: ant
|
| 1334 |
+
n02226429: grasshopper
|
| 1335 |
+
n02229544: cricket
|
| 1336 |
+
n02231487: walking_stick
|
| 1337 |
+
n02233338: cockroach
|
| 1338 |
+
n02236044: mantis
|
| 1339 |
+
n02256656: cicada
|
| 1340 |
+
n02259212: leafhopper
|
| 1341 |
+
n02264363: lacewing
|
| 1342 |
+
n02268443: dragonfly
|
| 1343 |
+
n02268853: damselfly
|
| 1344 |
+
n02276258: admiral
|
| 1345 |
+
n02277742: ringlet
|
| 1346 |
+
n02279972: monarch
|
| 1347 |
+
n02280649: cabbage_butterfly
|
| 1348 |
+
n02281406: sulphur_butterfly
|
| 1349 |
+
n02281787: lycaenid
|
| 1350 |
+
n02317335: starfish
|
| 1351 |
+
n02319095: sea_urchin
|
| 1352 |
+
n02321529: sea_cucumber
|
| 1353 |
+
n02325366: wood_rabbit
|
| 1354 |
+
n02326432: hare
|
| 1355 |
+
n02328150: Angora
|
| 1356 |
+
n02342885: hamster
|
| 1357 |
+
n02346627: porcupine
|
| 1358 |
+
n02356798: fox_squirrel
|
| 1359 |
+
n02361337: marmot
|
| 1360 |
+
n02363005: beaver
|
| 1361 |
+
n02364673: guinea_pig
|
| 1362 |
+
n02389026: sorrel
|
| 1363 |
+
n02391049: zebra
|
| 1364 |
+
n02395406: hog
|
| 1365 |
+
n02396427: wild_boar
|
| 1366 |
+
n02397096: warthog
|
| 1367 |
+
n02398521: hippopotamus
|
| 1368 |
+
n02403003: ox
|
| 1369 |
+
n02408429: water_buffalo
|
| 1370 |
+
n02410509: bison
|
| 1371 |
+
n02412080: ram
|
| 1372 |
+
n02415577: bighorn
|
| 1373 |
+
n02417914: ibex
|
| 1374 |
+
n02422106: hartebeest
|
| 1375 |
+
n02422699: impala
|
| 1376 |
+
n02423022: gazelle
|
| 1377 |
+
n02437312: Arabian_camel
|
| 1378 |
+
n02437616: llama
|
| 1379 |
+
n02441942: weasel
|
| 1380 |
+
n02442845: mink
|
| 1381 |
+
n02443114: polecat
|
| 1382 |
+
n02443484: black-footed_ferret
|
| 1383 |
+
n02444819: otter
|
| 1384 |
+
n02445715: skunk
|
| 1385 |
+
n02447366: badger
|
| 1386 |
+
n02454379: armadillo
|
| 1387 |
+
n02457408: three-toed_sloth
|
| 1388 |
+
n02480495: orangutan
|
| 1389 |
+
n02480855: gorilla
|
| 1390 |
+
n02481823: chimpanzee
|
| 1391 |
+
n02483362: gibbon
|
| 1392 |
+
n02483708: siamang
|
| 1393 |
+
n02484975: guenon
|
| 1394 |
+
n02486261: patas
|
| 1395 |
+
n02486410: baboon
|
| 1396 |
+
n02487347: macaque
|
| 1397 |
+
n02488291: langur
|
| 1398 |
+
n02488702: colobus
|
| 1399 |
+
n02489166: proboscis_monkey
|
| 1400 |
+
n02490219: marmoset
|
| 1401 |
+
n02492035: capuchin
|
| 1402 |
+
n02492660: howler_monkey
|
| 1403 |
+
n02493509: titi
|
| 1404 |
+
n02493793: spider_monkey
|
| 1405 |
+
n02494079: squirrel_monkey
|
| 1406 |
+
n02497673: Madagascar_cat
|
| 1407 |
+
n02500267: indri
|
| 1408 |
+
n02504013: Indian_elephant
|
| 1409 |
+
n02504458: African_elephant
|
| 1410 |
+
n02509815: lesser_panda
|
| 1411 |
+
n02510455: giant_panda
|
| 1412 |
+
n02514041: barracouta
|
| 1413 |
+
n02526121: eel
|
| 1414 |
+
n02536864: coho
|
| 1415 |
+
n02606052: rock_beauty
|
| 1416 |
+
n02607072: anemone_fish
|
| 1417 |
+
n02640242: sturgeon
|
| 1418 |
+
n02641379: gar
|
| 1419 |
+
n02643566: lionfish
|
| 1420 |
+
n02655020: puffer
|
| 1421 |
+
n02666196: abacus
|
| 1422 |
+
n02667093: abaya
|
| 1423 |
+
n02669723: academic_gown
|
| 1424 |
+
n02672831: accordion
|
| 1425 |
+
n02676566: acoustic_guitar
|
| 1426 |
+
n02687172: aircraft_carrier
|
| 1427 |
+
n02690373: airliner
|
| 1428 |
+
n02692877: airship
|
| 1429 |
+
n02699494: altar
|
| 1430 |
+
n02701002: ambulance
|
| 1431 |
+
n02704792: amphibian
|
| 1432 |
+
n02708093: analog_clock
|
| 1433 |
+
n02727426: apiary
|
| 1434 |
+
n02730930: apron
|
| 1435 |
+
n02747177: ashcan
|
| 1436 |
+
n02749479: assault_rifle
|
| 1437 |
+
n02769748: backpack
|
| 1438 |
+
n02776631: bakery
|
| 1439 |
+
n02777292: balance_beam
|
| 1440 |
+
n02782093: balloon
|
| 1441 |
+
n02783161: ballpoint
|
| 1442 |
+
n02786058: Band_Aid
|
| 1443 |
+
n02787622: banjo
|
| 1444 |
+
n02788148: bannister
|
| 1445 |
+
n02790996: barbell
|
| 1446 |
+
n02791124: barber_chair
|
| 1447 |
+
n02791270: barbershop
|
| 1448 |
+
n02793495: barn
|
| 1449 |
+
n02794156: barometer
|
| 1450 |
+
n02795169: barrel
|
| 1451 |
+
n02797295: barrow
|
| 1452 |
+
n02799071: baseball
|
| 1453 |
+
n02802426: basketball
|
| 1454 |
+
n02804414: bassinet
|
| 1455 |
+
n02804610: bassoon
|
| 1456 |
+
n02807133: bathing_cap
|
| 1457 |
+
n02808304: bath_towel
|
| 1458 |
+
n02808440: bathtub
|
| 1459 |
+
n02814533: beach_wagon
|
| 1460 |
+
n02814860: beacon
|
| 1461 |
+
n02815834: beaker
|
| 1462 |
+
n02817516: bearskin
|
| 1463 |
+
n02823428: beer_bottle
|
| 1464 |
+
n02823750: beer_glass
|
| 1465 |
+
n02825657: bell_cote
|
| 1466 |
+
n02834397: bib
|
| 1467 |
+
n02835271: bicycle-built-for-two
|
| 1468 |
+
n02837789: bikini
|
| 1469 |
+
n02840245: binder
|
| 1470 |
+
n02841315: binoculars
|
| 1471 |
+
n02843684: birdhouse
|
| 1472 |
+
n02859443: boathouse
|
| 1473 |
+
n02860847: bobsled
|
| 1474 |
+
n02865351: bolo_tie
|
| 1475 |
+
n02869837: bonnet
|
| 1476 |
+
n02870880: bookcase
|
| 1477 |
+
n02871525: bookshop
|
| 1478 |
+
n02877765: bottlecap
|
| 1479 |
+
n02879718: bow
|
| 1480 |
+
n02883205: bow_tie
|
| 1481 |
+
n02892201: brass
|
| 1482 |
+
n02892767: brassiere
|
| 1483 |
+
n02894605: breakwater
|
| 1484 |
+
n02895154: breastplate
|
| 1485 |
+
n02906734: broom
|
| 1486 |
+
n02909870: bucket
|
| 1487 |
+
n02910353: buckle
|
| 1488 |
+
n02916936: bulletproof_vest
|
| 1489 |
+
n02917067: bullet_train
|
| 1490 |
+
n02927161: butcher_shop
|
| 1491 |
+
n02930766: cab
|
| 1492 |
+
n02939185: caldron
|
| 1493 |
+
n02948072: candle
|
| 1494 |
+
n02950826: cannon
|
| 1495 |
+
n02951358: canoe
|
| 1496 |
+
n02951585: can_opener
|
| 1497 |
+
n02963159: cardigan
|
| 1498 |
+
n02965783: car_mirror
|
| 1499 |
+
n02966193: carousel
|
| 1500 |
+
n02966687: carpenter's_kit
|
| 1501 |
+
n02971356: carton
|
| 1502 |
+
n02974003: car_wheel
|
| 1503 |
+
n02977058: cash_machine
|
| 1504 |
+
n02978881: cassette
|
| 1505 |
+
n02979186: cassette_player
|
| 1506 |
+
n02980441: castle
|
| 1507 |
+
n02981792: catamaran
|
| 1508 |
+
n02988304: CD_player
|
| 1509 |
+
n02992211: cello
|
| 1510 |
+
n02992529: cellular_telephone
|
| 1511 |
+
n02999410: chain
|
| 1512 |
+
n03000134: chainlink_fence
|
| 1513 |
+
n03000247: chain_mail
|
| 1514 |
+
n03000684: chain_saw
|
| 1515 |
+
n03014705: chest
|
| 1516 |
+
n03016953: chiffonier
|
| 1517 |
+
n03017168: chime
|
| 1518 |
+
n03018349: china_cabinet
|
| 1519 |
+
n03026506: Christmas_stocking
|
| 1520 |
+
n03028079: church
|
| 1521 |
+
n03032252: cinema
|
| 1522 |
+
n03041632: cleaver
|
| 1523 |
+
n03042490: cliff_dwelling
|
| 1524 |
+
n03045698: cloak
|
| 1525 |
+
n03047690: clog
|
| 1526 |
+
n03062245: cocktail_shaker
|
| 1527 |
+
n03063599: coffee_mug
|
| 1528 |
+
n03063689: coffeepot
|
| 1529 |
+
n03065424: coil
|
| 1530 |
+
n03075370: combination_lock
|
| 1531 |
+
n03085013: computer_keyboard
|
| 1532 |
+
n03089624: confectionery
|
| 1533 |
+
n03095699: container_ship
|
| 1534 |
+
n03100240: convertible
|
| 1535 |
+
n03109150: corkscrew
|
| 1536 |
+
n03110669: cornet
|
| 1537 |
+
n03124043: cowboy_boot
|
| 1538 |
+
n03124170: cowboy_hat
|
| 1539 |
+
n03125729: cradle
|
| 1540 |
+
n03126707: crane_(machine)
|
| 1541 |
+
n03127747: crash_helmet
|
| 1542 |
+
n03127925: crate
|
| 1543 |
+
n03131574: crib
|
| 1544 |
+
n03133878: Crock_Pot
|
| 1545 |
+
n03134739: croquet_ball
|
| 1546 |
+
n03141823: crutch
|
| 1547 |
+
n03146219: cuirass
|
| 1548 |
+
n03160309: dam
|
| 1549 |
+
n03179701: desk
|
| 1550 |
+
n03180011: desktop_computer
|
| 1551 |
+
n03187595: dial_telephone
|
| 1552 |
+
n03188531: diaper
|
| 1553 |
+
n03196217: digital_clock
|
| 1554 |
+
n03197337: digital_watch
|
| 1555 |
+
n03201208: dining_table
|
| 1556 |
+
n03207743: dishrag
|
| 1557 |
+
n03207941: dishwasher
|
| 1558 |
+
n03208938: disk_brake
|
| 1559 |
+
n03216828: dock
|
| 1560 |
+
n03218198: dogsled
|
| 1561 |
+
n03220513: dome
|
| 1562 |
+
n03223299: doormat
|
| 1563 |
+
n03240683: drilling_platform
|
| 1564 |
+
n03249569: drum
|
| 1565 |
+
n03250847: drumstick
|
| 1566 |
+
n03255030: dumbbell
|
| 1567 |
+
n03259280: Dutch_oven
|
| 1568 |
+
n03271574: electric_fan
|
| 1569 |
+
n03272010: electric_guitar
|
| 1570 |
+
n03272562: electric_locomotive
|
| 1571 |
+
n03290653: entertainment_center
|
| 1572 |
+
n03291819: envelope
|
| 1573 |
+
n03297495: espresso_maker
|
| 1574 |
+
n03314780: face_powder
|
| 1575 |
+
n03325584: feather_boa
|
| 1576 |
+
n03337140: file
|
| 1577 |
+
n03344393: fireboat
|
| 1578 |
+
n03345487: fire_engine
|
| 1579 |
+
n03347037: fire_screen
|
| 1580 |
+
n03355925: flagpole
|
| 1581 |
+
n03372029: flute
|
| 1582 |
+
n03376595: folding_chair
|
| 1583 |
+
n03379051: football_helmet
|
| 1584 |
+
n03384352: forklift
|
| 1585 |
+
n03388043: fountain
|
| 1586 |
+
n03388183: fountain_pen
|
| 1587 |
+
n03388549: four-poster
|
| 1588 |
+
n03393912: freight_car
|
| 1589 |
+
n03394916: French_horn
|
| 1590 |
+
n03400231: frying_pan
|
| 1591 |
+
n03404251: fur_coat
|
| 1592 |
+
n03417042: garbage_truck
|
| 1593 |
+
n03424325: gasmask
|
| 1594 |
+
n03425413: gas_pump
|
| 1595 |
+
n03443371: goblet
|
| 1596 |
+
n03444034: go-kart
|
| 1597 |
+
n03445777: golf_ball
|
| 1598 |
+
n03445924: golfcart
|
| 1599 |
+
n03447447: gondola
|
| 1600 |
+
n03447721: gong
|
| 1601 |
+
n03450230: gown
|
| 1602 |
+
n03452741: grand_piano
|
| 1603 |
+
n03457902: greenhouse
|
| 1604 |
+
n03459775: grille
|
| 1605 |
+
n03461385: grocery_store
|
| 1606 |
+
n03467068: guillotine
|
| 1607 |
+
n03476684: hair_slide
|
| 1608 |
+
n03476991: hair_spray
|
| 1609 |
+
n03478589: half_track
|
| 1610 |
+
n03481172: hammer
|
| 1611 |
+
n03482405: hamper
|
| 1612 |
+
n03483316: hand_blower
|
| 1613 |
+
n03485407: hand-held_computer
|
| 1614 |
+
n03485794: handkerchief
|
| 1615 |
+
n03492542: hard_disc
|
| 1616 |
+
n03494278: harmonica
|
| 1617 |
+
n03495258: harp
|
| 1618 |
+
n03496892: harvester
|
| 1619 |
+
n03498962: hatchet
|
| 1620 |
+
n03527444: holster
|
| 1621 |
+
n03529860: home_theater
|
| 1622 |
+
n03530642: honeycomb
|
| 1623 |
+
n03532672: hook
|
| 1624 |
+
n03534580: hoopskirt
|
| 1625 |
+
n03535780: horizontal_bar
|
| 1626 |
+
n03538406: horse_cart
|
| 1627 |
+
n03544143: hourglass
|
| 1628 |
+
n03584254: iPod
|
| 1629 |
+
n03584829: iron
|
| 1630 |
+
n03590841: jack-o'-lantern
|
| 1631 |
+
n03594734: jean
|
| 1632 |
+
n03594945: jeep
|
| 1633 |
+
n03595614: jersey
|
| 1634 |
+
n03598930: jigsaw_puzzle
|
| 1635 |
+
n03599486: jinrikisha
|
| 1636 |
+
n03602883: joystick
|
| 1637 |
+
n03617480: kimono
|
| 1638 |
+
n03623198: knee_pad
|
| 1639 |
+
n03627232: knot
|
| 1640 |
+
n03630383: lab_coat
|
| 1641 |
+
n03633091: ladle
|
| 1642 |
+
n03637318: lampshade
|
| 1643 |
+
n03642806: laptop
|
| 1644 |
+
n03649909: lawn_mower
|
| 1645 |
+
n03657121: lens_cap
|
| 1646 |
+
n03658185: letter_opener
|
| 1647 |
+
n03661043: library
|
| 1648 |
+
n03662601: lifeboat
|
| 1649 |
+
n03666591: lighter
|
| 1650 |
+
n03670208: limousine
|
| 1651 |
+
n03673027: liner
|
| 1652 |
+
n03676483: lipstick
|
| 1653 |
+
n03680355: Loafer
|
| 1654 |
+
n03690938: lotion
|
| 1655 |
+
n03691459: loudspeaker
|
| 1656 |
+
n03692522: loupe
|
| 1657 |
+
n03697007: lumbermill
|
| 1658 |
+
n03706229: magnetic_compass
|
| 1659 |
+
n03709823: mailbag
|
| 1660 |
+
n03710193: mailbox
|
| 1661 |
+
n03710637: maillot_(tights)
|
| 1662 |
+
n03710721: maillot_(tank_suit)
|
| 1663 |
+
n03717622: manhole_cover
|
| 1664 |
+
n03720891: maraca
|
| 1665 |
+
n03721384: marimba
|
| 1666 |
+
n03724870: mask
|
| 1667 |
+
n03729826: matchstick
|
| 1668 |
+
n03733131: maypole
|
| 1669 |
+
n03733281: maze
|
| 1670 |
+
n03733805: measuring_cup
|
| 1671 |
+
n03742115: medicine_chest
|
| 1672 |
+
n03743016: megalith
|
| 1673 |
+
n03759954: microphone
|
| 1674 |
+
n03761084: microwave
|
| 1675 |
+
n03763968: military_uniform
|
| 1676 |
+
n03764736: milk_can
|
| 1677 |
+
n03769881: minibus
|
| 1678 |
+
n03770439: miniskirt
|
| 1679 |
+
n03770679: minivan
|
| 1680 |
+
n03773504: missile
|
| 1681 |
+
n03775071: mitten
|
| 1682 |
+
n03775546: mixing_bowl
|
| 1683 |
+
n03776460: mobile_home
|
| 1684 |
+
n03777568: Model_T
|
| 1685 |
+
n03777754: modem
|
| 1686 |
+
n03781244: monastery
|
| 1687 |
+
n03782006: monitor
|
| 1688 |
+
n03785016: moped
|
| 1689 |
+
n03786901: mortar
|
| 1690 |
+
n03787032: mortarboard
|
| 1691 |
+
n03788195: mosque
|
| 1692 |
+
n03788365: mosquito_net
|
| 1693 |
+
n03791053: motor_scooter
|
| 1694 |
+
n03792782: mountain_bike
|
| 1695 |
+
n03792972: mountain_tent
|
| 1696 |
+
n03793489: mouse
|
| 1697 |
+
n03794056: mousetrap
|
| 1698 |
+
n03796401: moving_van
|
| 1699 |
+
n03803284: muzzle
|
| 1700 |
+
n03804744: nail
|
| 1701 |
+
n03814639: neck_brace
|
| 1702 |
+
n03814906: necklace
|
| 1703 |
+
n03825788: nipple
|
| 1704 |
+
n03832673: notebook
|
| 1705 |
+
n03837869: obelisk
|
| 1706 |
+
n03838899: oboe
|
| 1707 |
+
n03840681: ocarina
|
| 1708 |
+
n03841143: odometer
|
| 1709 |
+
n03843555: oil_filter
|
| 1710 |
+
n03854065: organ
|
| 1711 |
+
n03857828: oscilloscope
|
| 1712 |
+
n03866082: overskirt
|
| 1713 |
+
n03868242: oxcart
|
| 1714 |
+
n03868863: oxygen_mask
|
| 1715 |
+
n03871628: packet
|
| 1716 |
+
n03873416: paddle
|
| 1717 |
+
n03874293: paddlewheel
|
| 1718 |
+
n03874599: padlock
|
| 1719 |
+
n03876231: paintbrush
|
| 1720 |
+
n03877472: pajama
|
| 1721 |
+
n03877845: palace
|
| 1722 |
+
n03884397: panpipe
|
| 1723 |
+
n03887697: paper_towel
|
| 1724 |
+
n03888257: parachute
|
| 1725 |
+
n03888605: parallel_bars
|
| 1726 |
+
n03891251: park_bench
|
| 1727 |
+
n03891332: parking_meter
|
| 1728 |
+
n03895866: passenger_car
|
| 1729 |
+
n03899768: patio
|
| 1730 |
+
n03902125: pay-phone
|
| 1731 |
+
n03903868: pedestal
|
| 1732 |
+
n03908618: pencil_box
|
| 1733 |
+
n03908714: pencil_sharpener
|
| 1734 |
+
n03916031: perfume
|
| 1735 |
+
n03920288: Petri_dish
|
| 1736 |
+
n03924679: photocopier
|
| 1737 |
+
n03929660: pick
|
| 1738 |
+
n03929855: pickelhaube
|
| 1739 |
+
n03930313: picket_fence
|
| 1740 |
+
n03930630: pickup
|
| 1741 |
+
n03933933: pier
|
| 1742 |
+
n03935335: piggy_bank
|
| 1743 |
+
n03937543: pill_bottle
|
| 1744 |
+
n03938244: pillow
|
| 1745 |
+
n03942813: ping-pong_ball
|
| 1746 |
+
n03944341: pinwheel
|
| 1747 |
+
n03947888: pirate
|
| 1748 |
+
n03950228: pitcher
|
| 1749 |
+
n03954731: plane
|
| 1750 |
+
n03956157: planetarium
|
| 1751 |
+
n03958227: plastic_bag
|
| 1752 |
+
n03961711: plate_rack
|
| 1753 |
+
n03967562: plow
|
| 1754 |
+
n03970156: plunger
|
| 1755 |
+
n03976467: Polaroid_camera
|
| 1756 |
+
n03976657: pole
|
| 1757 |
+
n03977966: police_van
|
| 1758 |
+
n03980874: poncho
|
| 1759 |
+
n03982430: pool_table
|
| 1760 |
+
n03983396: pop_bottle
|
| 1761 |
+
n03991062: pot
|
| 1762 |
+
n03992509: potter's_wheel
|
| 1763 |
+
n03995372: power_drill
|
| 1764 |
+
n03998194: prayer_rug
|
| 1765 |
+
n04004767: printer
|
| 1766 |
+
n04005630: prison
|
| 1767 |
+
n04008634: projectile
|
| 1768 |
+
n04009552: projector
|
| 1769 |
+
n04019541: puck
|
| 1770 |
+
n04023962: punching_bag
|
| 1771 |
+
n04026417: purse
|
| 1772 |
+
n04033901: quill
|
| 1773 |
+
n04033995: quilt
|
| 1774 |
+
n04037443: racer
|
| 1775 |
+
n04039381: racket
|
| 1776 |
+
n04040759: radiator
|
| 1777 |
+
n04041544: radio
|
| 1778 |
+
n04044716: radio_telescope
|
| 1779 |
+
n04049303: rain_barrel
|
| 1780 |
+
n04065272: recreational_vehicle
|
| 1781 |
+
n04067472: reel
|
| 1782 |
+
n04069434: reflex_camera
|
| 1783 |
+
n04070727: refrigerator
|
| 1784 |
+
n04074963: remote_control
|
| 1785 |
+
n04081281: restaurant
|
| 1786 |
+
n04086273: revolver
|
| 1787 |
+
n04090263: rifle
|
| 1788 |
+
n04099969: rocking_chair
|
| 1789 |
+
n04111531: rotisserie
|
| 1790 |
+
n04116512: rubber_eraser
|
| 1791 |
+
n04118538: rugby_ball
|
| 1792 |
+
n04118776: rule
|
| 1793 |
+
n04120489: running_shoe
|
| 1794 |
+
n04125021: safe
|
| 1795 |
+
n04127249: safety_pin
|
| 1796 |
+
n04131690: saltshaker
|
| 1797 |
+
n04133789: sandal
|
| 1798 |
+
n04136333: sarong
|
| 1799 |
+
n04141076: sax
|
| 1800 |
+
n04141327: scabbard
|
| 1801 |
+
n04141975: scale
|
| 1802 |
+
n04146614: school_bus
|
| 1803 |
+
n04147183: schooner
|
| 1804 |
+
n04149813: scoreboard
|
| 1805 |
+
n04152593: screen
|
| 1806 |
+
n04153751: screw
|
| 1807 |
+
n04154565: screwdriver
|
| 1808 |
+
n04162706: seat_belt
|
| 1809 |
+
n04179913: sewing_machine
|
| 1810 |
+
n04192698: shield
|
| 1811 |
+
n04200800: shoe_shop
|
| 1812 |
+
n04201297: shoji
|
| 1813 |
+
n04204238: shopping_basket
|
| 1814 |
+
n04204347: shopping_cart
|
| 1815 |
+
n04208210: shovel
|
| 1816 |
+
n04209133: shower_cap
|
| 1817 |
+
n04209239: shower_curtain
|
| 1818 |
+
n04228054: ski
|
| 1819 |
+
n04229816: ski_mask
|
| 1820 |
+
n04235860: sleeping_bag
|
| 1821 |
+
n04238763: slide_rule
|
| 1822 |
+
n04239074: sliding_door
|
| 1823 |
+
n04243546: slot
|
| 1824 |
+
n04251144: snorkel
|
| 1825 |
+
n04252077: snowmobile
|
| 1826 |
+
n04252225: snowplow
|
| 1827 |
+
n04254120: soap_dispenser
|
| 1828 |
+
n04254680: soccer_ball
|
| 1829 |
+
n04254777: sock
|
| 1830 |
+
n04258138: solar_dish
|
| 1831 |
+
n04259630: sombrero
|
| 1832 |
+
n04263257: soup_bowl
|
| 1833 |
+
n04264628: space_bar
|
| 1834 |
+
n04265275: space_heater
|
| 1835 |
+
n04266014: space_shuttle
|
| 1836 |
+
n04270147: spatula
|
| 1837 |
+
n04273569: speedboat
|
| 1838 |
+
n04275548: spider_web
|
| 1839 |
+
n04277352: spindle
|
| 1840 |
+
n04285008: sports_car
|
| 1841 |
+
n04286575: spotlight
|
| 1842 |
+
n04296562: stage
|
| 1843 |
+
n04310018: steam_locomotive
|
| 1844 |
+
n04311004: steel_arch_bridge
|
| 1845 |
+
n04311174: steel_drum
|
| 1846 |
+
n04317175: stethoscope
|
| 1847 |
+
n04325704: stole
|
| 1848 |
+
n04326547: stone_wall
|
| 1849 |
+
n04328186: stopwatch
|
| 1850 |
+
n04330267: stove
|
| 1851 |
+
n04332243: strainer
|
| 1852 |
+
n04335435: streetcar
|
| 1853 |
+
n04336792: stretcher
|
| 1854 |
+
n04344873: studio_couch
|
| 1855 |
+
n04346328: stupa
|
| 1856 |
+
n04347754: submarine
|
| 1857 |
+
n04350905: suit
|
| 1858 |
+
n04355338: sundial
|
| 1859 |
+
n04355933: sunglass
|
| 1860 |
+
n04356056: sunglasses
|
| 1861 |
+
n04357314: sunscreen
|
| 1862 |
+
n04366367: suspension_bridge
|
| 1863 |
+
n04367480: swab
|
| 1864 |
+
n04370456: sweatshirt
|
| 1865 |
+
n04371430: swimming_trunks
|
| 1866 |
+
n04371774: swing
|
| 1867 |
+
n04372370: switch
|
| 1868 |
+
n04376876: syringe
|
| 1869 |
+
n04380533: table_lamp
|
| 1870 |
+
n04389033: tank
|
| 1871 |
+
n04392985: tape_player
|
| 1872 |
+
n04398044: teapot
|
| 1873 |
+
n04399382: teddy
|
| 1874 |
+
n04404412: television
|
| 1875 |
+
n04409515: tennis_ball
|
| 1876 |
+
n04417672: thatch
|
| 1877 |
+
n04418357: theater_curtain
|
| 1878 |
+
n04423845: thimble
|
| 1879 |
+
n04428191: thresher
|
| 1880 |
+
n04429376: throne
|
| 1881 |
+
n04435653: tile_roof
|
| 1882 |
+
n04442312: toaster
|
| 1883 |
+
n04443257: tobacco_shop
|
| 1884 |
+
n04447861: toilet_seat
|
| 1885 |
+
n04456115: torch
|
| 1886 |
+
n04458633: totem_pole
|
| 1887 |
+
n04461696: tow_truck
|
| 1888 |
+
n04462240: toyshop
|
| 1889 |
+
n04465501: tractor
|
| 1890 |
+
n04467665: trailer_truck
|
| 1891 |
+
n04476259: tray
|
| 1892 |
+
n04479046: trench_coat
|
| 1893 |
+
n04482393: tricycle
|
| 1894 |
+
n04483307: trimaran
|
| 1895 |
+
n04485082: tripod
|
| 1896 |
+
n04486054: triumphal_arch
|
| 1897 |
+
n04487081: trolleybus
|
| 1898 |
+
n04487394: trombone
|
| 1899 |
+
n04493381: tub
|
| 1900 |
+
n04501370: turnstile
|
| 1901 |
+
n04505470: typewriter_keyboard
|
| 1902 |
+
n04507155: umbrella
|
| 1903 |
+
n04509417: unicycle
|
| 1904 |
+
n04515003: upright
|
| 1905 |
+
n04517823: vacuum
|
| 1906 |
+
n04522168: vase
|
| 1907 |
+
n04523525: vault
|
| 1908 |
+
n04525038: velvet
|
| 1909 |
+
n04525305: vending_machine
|
| 1910 |
+
n04532106: vestment
|
| 1911 |
+
n04532670: viaduct
|
| 1912 |
+
n04536866: violin
|
| 1913 |
+
n04540053: volleyball
|
| 1914 |
+
n04542943: waffle_iron
|
| 1915 |
+
n04548280: wall_clock
|
| 1916 |
+
n04548362: wallet
|
| 1917 |
+
n04550184: wardrobe
|
| 1918 |
+
n04552348: warplane
|
| 1919 |
+
n04553703: washbasin
|
| 1920 |
+
n04554684: washer
|
| 1921 |
+
n04557648: water_bottle
|
| 1922 |
+
n04560804: water_jug
|
| 1923 |
+
n04562935: water_tower
|
| 1924 |
+
n04579145: whiskey_jug
|
| 1925 |
+
n04579432: whistle
|
| 1926 |
+
n04584207: wig
|
| 1927 |
+
n04589890: window_screen
|
| 1928 |
+
n04590129: window_shade
|
| 1929 |
+
n04591157: Windsor_tie
|
| 1930 |
+
n04591713: wine_bottle
|
| 1931 |
+
n04592741: wing
|
| 1932 |
+
n04596742: wok
|
| 1933 |
+
n04597913: wooden_spoon
|
| 1934 |
+
n04599235: wool
|
| 1935 |
+
n04604644: worm_fence
|
| 1936 |
+
n04606251: wreck
|
| 1937 |
+
n04612504: yawl
|
| 1938 |
+
n04613696: yurt
|
| 1939 |
+
n06359193: web_site
|
| 1940 |
+
n06596364: comic_book
|
| 1941 |
+
n06785654: crossword_puzzle
|
| 1942 |
+
n06794110: street_sign
|
| 1943 |
+
n06874185: traffic_light
|
| 1944 |
+
n07248320: book_jacket
|
| 1945 |
+
n07565083: menu
|
| 1946 |
+
n07579787: plate
|
| 1947 |
+
n07583066: guacamole
|
| 1948 |
+
n07584110: consomme
|
| 1949 |
+
n07590611: hot_pot
|
| 1950 |
+
n07613480: trifle
|
| 1951 |
+
n07614500: ice_cream
|
| 1952 |
+
n07615774: ice_lolly
|
| 1953 |
+
n07684084: French_loaf
|
| 1954 |
+
n07693725: bagel
|
| 1955 |
+
n07695742: pretzel
|
| 1956 |
+
n07697313: cheeseburger
|
| 1957 |
+
n07697537: hotdog
|
| 1958 |
+
n07711569: mashed_potato
|
| 1959 |
+
n07714571: head_cabbage
|
| 1960 |
+
n07714990: broccoli
|
| 1961 |
+
n07715103: cauliflower
|
| 1962 |
+
n07716358: zucchini
|
| 1963 |
+
n07716906: spaghetti_squash
|
| 1964 |
+
n07717410: acorn_squash
|
| 1965 |
+
n07717556: butternut_squash
|
| 1966 |
+
n07718472: cucumber
|
| 1967 |
+
n07718747: artichoke
|
| 1968 |
+
n07720875: bell_pepper
|
| 1969 |
+
n07730033: cardoon
|
| 1970 |
+
n07734744: mushroom
|
| 1971 |
+
n07742313: Granny_Smith
|
| 1972 |
+
n07745940: strawberry
|
| 1973 |
+
n07747607: orange
|
| 1974 |
+
n07749582: lemon
|
| 1975 |
+
n07753113: fig
|
| 1976 |
+
n07753275: pineapple
|
| 1977 |
+
n07753592: banana
|
| 1978 |
+
n07754684: jackfruit
|
| 1979 |
+
n07760859: custard_apple
|
| 1980 |
+
n07768694: pomegranate
|
| 1981 |
+
n07802026: hay
|
| 1982 |
+
n07831146: carbonara
|
| 1983 |
+
n07836838: chocolate_sauce
|
| 1984 |
+
n07860988: dough
|
| 1985 |
+
n07871810: meat_loaf
|
| 1986 |
+
n07873807: pizza
|
| 1987 |
+
n07875152: potpie
|
| 1988 |
+
n07880968: burrito
|
| 1989 |
+
n07892512: red_wine
|
| 1990 |
+
n07920052: espresso
|
| 1991 |
+
n07930864: cup
|
| 1992 |
+
n07932039: eggnog
|
| 1993 |
+
n09193705: alp
|
| 1994 |
+
n09229709: bubble
|
| 1995 |
+
n09246464: cliff
|
| 1996 |
+
n09256479: coral_reef
|
| 1997 |
+
n09288635: geyser
|
| 1998 |
+
n09332890: lakeside
|
| 1999 |
+
n09399592: promontory
|
| 2000 |
+
n09421951: sandbar
|
| 2001 |
+
n09428293: seashore
|
| 2002 |
+
n09468604: valley
|
| 2003 |
+
n09472597: volcano
|
| 2004 |
+
n09835506: ballplayer
|
| 2005 |
+
n10148035: groom
|
| 2006 |
+
n10565667: scuba_diver
|
| 2007 |
+
n11879895: rapeseed
|
| 2008 |
+
n11939491: daisy
|
| 2009 |
+
n12057211: yellow_lady's_slipper
|
| 2010 |
+
n12144580: corn
|
| 2011 |
+
n12267677: acorn
|
| 2012 |
+
n12620546: hip
|
| 2013 |
+
n12768682: buckeye
|
| 2014 |
+
n12985857: coral_fungus
|
| 2015 |
+
n12998815: agaric
|
| 2016 |
+
n13037406: gyromitra
|
| 2017 |
+
n13040303: stinkhorn
|
| 2018 |
+
n13044778: earthstar
|
| 2019 |
+
n13052670: hen-of-the-woods
|
| 2020 |
+
n13054560: bolete
|
| 2021 |
+
n13133613: ear
|
| 2022 |
+
n15075141: toilet_tissue
|
| 2023 |
+
|
| 2024 |
+
# Download script/URL (optional)
|
| 2025 |
+
download: ultralytics/data/scripts/get_imagenet.sh
|
vendor/ultralytics/cfg/datasets/Objects365.yaml
ADDED
|
@@ -0,0 +1,447 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Ultralytics π AGPL-3.0 License - https://ultralytics.com/license
|
| 2 |
+
|
| 3 |
+
# Objects365 dataset https://www.objects365.org/ by Megvii
|
| 4 |
+
# Documentation: https://docs.ultralytics.com/datasets/detect/objects365/
|
| 5 |
+
# Example usage: yolo train data=Objects365.yaml
|
| 6 |
+
# parent
|
| 7 |
+
# βββ ultralytics
|
| 8 |
+
# βββ datasets
|
| 9 |
+
# βββ Objects365 β downloads here (712 GB = 367G data + 345G zips)
|
| 10 |
+
|
| 11 |
+
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
| 12 |
+
path: Objects365 # dataset root dir
|
| 13 |
+
train: images/train # train images (relative to 'path') 1742289 images
|
| 14 |
+
val: images/val # val images (relative to 'path') 80000 images
|
| 15 |
+
test: # test images (optional)
|
| 16 |
+
|
| 17 |
+
# Classes
|
| 18 |
+
names:
|
| 19 |
+
0: Person
|
| 20 |
+
1: Sneakers
|
| 21 |
+
2: Chair
|
| 22 |
+
3: Other Shoes
|
| 23 |
+
4: Hat
|
| 24 |
+
5: Car
|
| 25 |
+
6: Lamp
|
| 26 |
+
7: Glasses
|
| 27 |
+
8: Bottle
|
| 28 |
+
9: Desk
|
| 29 |
+
10: Cup
|
| 30 |
+
11: Street Lights
|
| 31 |
+
12: Cabinet/shelf
|
| 32 |
+
13: Handbag/Satchel
|
| 33 |
+
14: Bracelet
|
| 34 |
+
15: Plate
|
| 35 |
+
16: Picture/Frame
|
| 36 |
+
17: Helmet
|
| 37 |
+
18: Book
|
| 38 |
+
19: Gloves
|
| 39 |
+
20: Storage box
|
| 40 |
+
21: Boat
|
| 41 |
+
22: Leather Shoes
|
| 42 |
+
23: Flower
|
| 43 |
+
24: Bench
|
| 44 |
+
25: Potted Plant
|
| 45 |
+
26: Bowl/Basin
|
| 46 |
+
27: Flag
|
| 47 |
+
28: Pillow
|
| 48 |
+
29: Boots
|
| 49 |
+
30: Vase
|
| 50 |
+
31: Microphone
|
| 51 |
+
32: Necklace
|
| 52 |
+
33: Ring
|
| 53 |
+
34: SUV
|
| 54 |
+
35: Wine Glass
|
| 55 |
+
36: Belt
|
| 56 |
+
37: Monitor/TV
|
| 57 |
+
38: Backpack
|
| 58 |
+
39: Umbrella
|
| 59 |
+
40: Traffic Light
|
| 60 |
+
41: Speaker
|
| 61 |
+
42: Watch
|
| 62 |
+
43: Tie
|
| 63 |
+
44: Trash bin Can
|
| 64 |
+
45: Slippers
|
| 65 |
+
46: Bicycle
|
| 66 |
+
47: Stool
|
| 67 |
+
48: Barrel/bucket
|
| 68 |
+
49: Van
|
| 69 |
+
50: Couch
|
| 70 |
+
51: Sandals
|
| 71 |
+
52: Basket
|
| 72 |
+
53: Drum
|
| 73 |
+
54: Pen/Pencil
|
| 74 |
+
55: Bus
|
| 75 |
+
56: Wild Bird
|
| 76 |
+
57: High Heels
|
| 77 |
+
58: Motorcycle
|
| 78 |
+
59: Guitar
|
| 79 |
+
60: Carpet
|
| 80 |
+
61: Cell Phone
|
| 81 |
+
62: Bread
|
| 82 |
+
63: Camera
|
| 83 |
+
64: Canned
|
| 84 |
+
65: Truck
|
| 85 |
+
66: Traffic cone
|
| 86 |
+
67: Cymbal
|
| 87 |
+
68: Lifesaver
|
| 88 |
+
69: Towel
|
| 89 |
+
70: Stuffed Toy
|
| 90 |
+
71: Candle
|
| 91 |
+
72: Sailboat
|
| 92 |
+
73: Laptop
|
| 93 |
+
74: Awning
|
| 94 |
+
75: Bed
|
| 95 |
+
76: Faucet
|
| 96 |
+
77: Tent
|
| 97 |
+
78: Horse
|
| 98 |
+
79: Mirror
|
| 99 |
+
80: Power outlet
|
| 100 |
+
81: Sink
|
| 101 |
+
82: Apple
|
| 102 |
+
83: Air Conditioner
|
| 103 |
+
84: Knife
|
| 104 |
+
85: Hockey Stick
|
| 105 |
+
86: Paddle
|
| 106 |
+
87: Pickup Truck
|
| 107 |
+
88: Fork
|
| 108 |
+
89: Traffic Sign
|
| 109 |
+
90: Balloon
|
| 110 |
+
91: Tripod
|
| 111 |
+
92: Dog
|
| 112 |
+
93: Spoon
|
| 113 |
+
94: Clock
|
| 114 |
+
95: Pot
|
| 115 |
+
96: Cow
|
| 116 |
+
97: Cake
|
| 117 |
+
98: Dining Table
|
| 118 |
+
99: Sheep
|
| 119 |
+
100: Hanger
|
| 120 |
+
101: Blackboard/Whiteboard
|
| 121 |
+
102: Napkin
|
| 122 |
+
103: Other Fish
|
| 123 |
+
104: Orange/Tangerine
|
| 124 |
+
105: Toiletry
|
| 125 |
+
106: Keyboard
|
| 126 |
+
107: Tomato
|
| 127 |
+
108: Lantern
|
| 128 |
+
109: Machinery Vehicle
|
| 129 |
+
110: Fan
|
| 130 |
+
111: Green Vegetables
|
| 131 |
+
112: Banana
|
| 132 |
+
113: Baseball Glove
|
| 133 |
+
114: Airplane
|
| 134 |
+
115: Mouse
|
| 135 |
+
116: Train
|
| 136 |
+
117: Pumpkin
|
| 137 |
+
118: Soccer
|
| 138 |
+
119: Skiboard
|
| 139 |
+
120: Luggage
|
| 140 |
+
121: Nightstand
|
| 141 |
+
122: Tea pot
|
| 142 |
+
123: Telephone
|
| 143 |
+
124: Trolley
|
| 144 |
+
125: Head Phone
|
| 145 |
+
126: Sports Car
|
| 146 |
+
127: Stop Sign
|
| 147 |
+
128: Dessert
|
| 148 |
+
129: Scooter
|
| 149 |
+
130: Stroller
|
| 150 |
+
131: Crane
|
| 151 |
+
132: Remote
|
| 152 |
+
133: Refrigerator
|
| 153 |
+
134: Oven
|
| 154 |
+
135: Lemon
|
| 155 |
+
136: Duck
|
| 156 |
+
137: Baseball Bat
|
| 157 |
+
138: Surveillance Camera
|
| 158 |
+
139: Cat
|
| 159 |
+
140: Jug
|
| 160 |
+
141: Broccoli
|
| 161 |
+
142: Piano
|
| 162 |
+
143: Pizza
|
| 163 |
+
144: Elephant
|
| 164 |
+
145: Skateboard
|
| 165 |
+
146: Surfboard
|
| 166 |
+
147: Gun
|
| 167 |
+
148: Skating and Skiing shoes
|
| 168 |
+
149: Gas stove
|
| 169 |
+
150: Donut
|
| 170 |
+
151: Bow Tie
|
| 171 |
+
152: Carrot
|
| 172 |
+
153: Toilet
|
| 173 |
+
154: Kite
|
| 174 |
+
155: Strawberry
|
| 175 |
+
156: Other Balls
|
| 176 |
+
157: Shovel
|
| 177 |
+
158: Pepper
|
| 178 |
+
159: Computer Box
|
| 179 |
+
160: Toilet Paper
|
| 180 |
+
161: Cleaning Products
|
| 181 |
+
162: Chopsticks
|
| 182 |
+
163: Microwave
|
| 183 |
+
164: Pigeon
|
| 184 |
+
165: Baseball
|
| 185 |
+
166: Cutting/chopping Board
|
| 186 |
+
167: Coffee Table
|
| 187 |
+
168: Side Table
|
| 188 |
+
169: Scissors
|
| 189 |
+
170: Marker
|
| 190 |
+
171: Pie
|
| 191 |
+
172: Ladder
|
| 192 |
+
173: Snowboard
|
| 193 |
+
174: Cookies
|
| 194 |
+
175: Radiator
|
| 195 |
+
176: Fire Hydrant
|
| 196 |
+
177: Basketball
|
| 197 |
+
178: Zebra
|
| 198 |
+
179: Grape
|
| 199 |
+
180: Giraffe
|
| 200 |
+
181: Potato
|
| 201 |
+
182: Sausage
|
| 202 |
+
183: Tricycle
|
| 203 |
+
184: Violin
|
| 204 |
+
185: Egg
|
| 205 |
+
186: Fire Extinguisher
|
| 206 |
+
187: Candy
|
| 207 |
+
188: Fire Truck
|
| 208 |
+
189: Billiards
|
| 209 |
+
190: Converter
|
| 210 |
+
191: Bathtub
|
| 211 |
+
192: Wheelchair
|
| 212 |
+
193: Golf Club
|
| 213 |
+
194: Briefcase
|
| 214 |
+
195: Cucumber
|
| 215 |
+
196: Cigar/Cigarette
|
| 216 |
+
197: Paint Brush
|
| 217 |
+
198: Pear
|
| 218 |
+
199: Heavy Truck
|
| 219 |
+
200: Hamburger
|
| 220 |
+
201: Extractor
|
| 221 |
+
202: Extension Cord
|
| 222 |
+
203: Tong
|
| 223 |
+
204: Tennis Racket
|
| 224 |
+
205: Folder
|
| 225 |
+
206: American Football
|
| 226 |
+
207: earphone
|
| 227 |
+
208: Mask
|
| 228 |
+
209: Kettle
|
| 229 |
+
210: Tennis
|
| 230 |
+
211: Ship
|
| 231 |
+
212: Swing
|
| 232 |
+
213: Coffee Machine
|
| 233 |
+
214: Slide
|
| 234 |
+
215: Carriage
|
| 235 |
+
216: Onion
|
| 236 |
+
217: Green beans
|
| 237 |
+
218: Projector
|
| 238 |
+
219: Frisbee
|
| 239 |
+
220: Washing Machine/Drying Machine
|
| 240 |
+
221: Chicken
|
| 241 |
+
222: Printer
|
| 242 |
+
223: Watermelon
|
| 243 |
+
224: Saxophone
|
| 244 |
+
225: Tissue
|
| 245 |
+
226: Toothbrush
|
| 246 |
+
227: Ice cream
|
| 247 |
+
228: Hot-air balloon
|
| 248 |
+
229: Cello
|
| 249 |
+
230: French Fries
|
| 250 |
+
231: Scale
|
| 251 |
+
232: Trophy
|
| 252 |
+
233: Cabbage
|
| 253 |
+
234: Hot dog
|
| 254 |
+
235: Blender
|
| 255 |
+
236: Peach
|
| 256 |
+
237: Rice
|
| 257 |
+
238: Wallet/Purse
|
| 258 |
+
239: Volleyball
|
| 259 |
+
240: Deer
|
| 260 |
+
241: Goose
|
| 261 |
+
242: Tape
|
| 262 |
+
243: Tablet
|
| 263 |
+
244: Cosmetics
|
| 264 |
+
245: Trumpet
|
| 265 |
+
246: Pineapple
|
| 266 |
+
247: Golf Ball
|
| 267 |
+
248: Ambulance
|
| 268 |
+
249: Parking meter
|
| 269 |
+
250: Mango
|
| 270 |
+
251: Key
|
| 271 |
+
252: Hurdle
|
| 272 |
+
253: Fishing Rod
|
| 273 |
+
254: Medal
|
| 274 |
+
255: Flute
|
| 275 |
+
256: Brush
|
| 276 |
+
257: Penguin
|
| 277 |
+
258: Megaphone
|
| 278 |
+
259: Corn
|
| 279 |
+
260: Lettuce
|
| 280 |
+
261: Garlic
|
| 281 |
+
262: Swan
|
| 282 |
+
263: Helicopter
|
| 283 |
+
264: Green Onion
|
| 284 |
+
265: Sandwich
|
| 285 |
+
266: Nuts
|
| 286 |
+
267: Speed Limit Sign
|
| 287 |
+
268: Induction Cooker
|
| 288 |
+
269: Broom
|
| 289 |
+
270: Trombone
|
| 290 |
+
271: Plum
|
| 291 |
+
272: Rickshaw
|
| 292 |
+
273: Goldfish
|
| 293 |
+
274: Kiwi fruit
|
| 294 |
+
275: Router/modem
|
| 295 |
+
276: Poker Card
|
| 296 |
+
277: Toaster
|
| 297 |
+
278: Shrimp
|
| 298 |
+
279: Sushi
|
| 299 |
+
280: Cheese
|
| 300 |
+
281: Notepaper
|
| 301 |
+
282: Cherry
|
| 302 |
+
283: Pliers
|
| 303 |
+
284: CD
|
| 304 |
+
285: Pasta
|
| 305 |
+
286: Hammer
|
| 306 |
+
287: Cue
|
| 307 |
+
288: Avocado
|
| 308 |
+
289: Hami melon
|
| 309 |
+
290: Flask
|
| 310 |
+
291: Mushroom
|
| 311 |
+
292: Screwdriver
|
| 312 |
+
293: Soap
|
| 313 |
+
294: Recorder
|
| 314 |
+
295: Bear
|
| 315 |
+
296: Eggplant
|
| 316 |
+
297: Board Eraser
|
| 317 |
+
298: Coconut
|
| 318 |
+
299: Tape Measure/Ruler
|
| 319 |
+
300: Pig
|
| 320 |
+
301: Showerhead
|
| 321 |
+
302: Globe
|
| 322 |
+
303: Chips
|
| 323 |
+
304: Steak
|
| 324 |
+
305: Crosswalk Sign
|
| 325 |
+
306: Stapler
|
| 326 |
+
307: Camel
|
| 327 |
+
308: Formula 1
|
| 328 |
+
309: Pomegranate
|
| 329 |
+
310: Dishwasher
|
| 330 |
+
311: Crab
|
| 331 |
+
312: Hoverboard
|
| 332 |
+
313: Meatball
|
| 333 |
+
314: Rice Cooker
|
| 334 |
+
315: Tuba
|
| 335 |
+
316: Calculator
|
| 336 |
+
317: Papaya
|
| 337 |
+
318: Antelope
|
| 338 |
+
319: Parrot
|
| 339 |
+
320: Seal
|
| 340 |
+
321: Butterfly
|
| 341 |
+
322: Dumbbell
|
| 342 |
+
323: Donkey
|
| 343 |
+
324: Lion
|
| 344 |
+
325: Urinal
|
| 345 |
+
326: Dolphin
|
| 346 |
+
327: Electric Drill
|
| 347 |
+
328: Hair Dryer
|
| 348 |
+
329: Egg tart
|
| 349 |
+
330: Jellyfish
|
| 350 |
+
331: Treadmill
|
| 351 |
+
332: Lighter
|
| 352 |
+
333: Grapefruit
|
| 353 |
+
334: Game board
|
| 354 |
+
335: Mop
|
| 355 |
+
336: Radish
|
| 356 |
+
337: Baozi
|
| 357 |
+
338: Target
|
| 358 |
+
339: French
|
| 359 |
+
340: Spring Rolls
|
| 360 |
+
341: Monkey
|
| 361 |
+
342: Rabbit
|
| 362 |
+
343: Pencil Case
|
| 363 |
+
344: Yak
|
| 364 |
+
345: Red Cabbage
|
| 365 |
+
346: Binoculars
|
| 366 |
+
347: Asparagus
|
| 367 |
+
348: Barbell
|
| 368 |
+
349: Scallop
|
| 369 |
+
350: Noddles
|
| 370 |
+
351: Comb
|
| 371 |
+
352: Dumpling
|
| 372 |
+
353: Oyster
|
| 373 |
+
354: Table Tennis paddle
|
| 374 |
+
355: Cosmetics Brush/Eyeliner Pencil
|
| 375 |
+
356: Chainsaw
|
| 376 |
+
357: Eraser
|
| 377 |
+
358: Lobster
|
| 378 |
+
359: Durian
|
| 379 |
+
360: Okra
|
| 380 |
+
361: Lipstick
|
| 381 |
+
362: Cosmetics Mirror
|
| 382 |
+
363: Curling
|
| 383 |
+
364: Table Tennis
|
| 384 |
+
|
| 385 |
+
# Download script/URL (optional) ---------------------------------------------------------------------------------------
|
| 386 |
+
download: |
|
| 387 |
+
from concurrent.futures import ThreadPoolExecutor
|
| 388 |
+
from pathlib import Path
|
| 389 |
+
|
| 390 |
+
import numpy as np
|
| 391 |
+
|
| 392 |
+
from ultralytics.utils import TQDM
|
| 393 |
+
from ultralytics.utils.checks import check_requirements
|
| 394 |
+
from ultralytics.utils.downloads import download
|
| 395 |
+
from ultralytics.utils.ops import xyxy2xywhn
|
| 396 |
+
|
| 397 |
+
check_requirements("faster-coco-eval")
|
| 398 |
+
from faster_coco_eval import COCO
|
| 399 |
+
|
| 400 |
+
# Train, Val Splits
|
| 401 |
+
dir = Path(yaml["path"])
|
| 402 |
+
for split, patches in [("train", 50 + 1), ("val", 43 + 1)]:
|
| 403 |
+
print(f"Processing {split} in {patches} patches ...")
|
| 404 |
+
images, labels = dir / "images" / split, dir / "labels" / split
|
| 405 |
+
images.mkdir(parents=True, exist_ok=True)
|
| 406 |
+
labels.mkdir(parents=True, exist_ok=True)
|
| 407 |
+
|
| 408 |
+
# Download
|
| 409 |
+
url = f"https://dorc.ks3-cn-beijing.ksyun.com/data-set/2020Objects365%E6%95%B0%E6%8D%AE%E9%9B%86/{split}/"
|
| 410 |
+
if split == "train":
|
| 411 |
+
download([f"{url}zhiyuan_objv2_{split}.tar.gz"], dir=dir) # annotations json
|
| 412 |
+
download([f"{url}patch{i}.tar.gz" for i in range(patches)], dir=images, threads=17) # 51 patches / 17 threads = 3
|
| 413 |
+
elif split == "val":
|
| 414 |
+
download([f"{url}zhiyuan_objv2_{split}.json"], dir=dir) # annotations json
|
| 415 |
+
download([f"{url}images/v1/patch{i}.tar.gz" for i in range(15 + 1)], dir=images, threads=16)
|
| 416 |
+
download([f"{url}images/v2/patch{i}.tar.gz" for i in range(16, patches)], dir=images, threads=16)
|
| 417 |
+
|
| 418 |
+
# Move
|
| 419 |
+
files = list(images.rglob("*.jpg"))
|
| 420 |
+
with ThreadPoolExecutor(max_workers=16) as executor:
|
| 421 |
+
list(TQDM(executor.map(lambda f: f.rename(images / f.name), files), total=len(files), desc=f"Moving {split} images"))
|
| 422 |
+
|
| 423 |
+
# Labels
|
| 424 |
+
coco = COCO(dir / f"zhiyuan_objv2_{split}.json")
|
| 425 |
+
names = [x["name"] for x in coco.loadCats(coco.getCatIds())]
|
| 426 |
+
for cid, cat in enumerate(names):
|
| 427 |
+
catIds = coco.getCatIds(catNms=[cat])
|
| 428 |
+
imgIds = coco.getImgIds(catIds=catIds)
|
| 429 |
+
|
| 430 |
+
def process_annotation(im):
|
| 431 |
+
"""Process and write annotations for a single image."""
|
| 432 |
+
try:
|
| 433 |
+
width, height = im["width"], im["height"]
|
| 434 |
+
path = Path(im["file_name"])
|
| 435 |
+
with open(labels / path.with_suffix(".txt").name, "a", encoding="utf-8") as file:
|
| 436 |
+
annIds = coco.getAnnIds(imgIds=im["id"], catIds=catIds, iscrowd=None)
|
| 437 |
+
for a in coco.loadAnns(annIds):
|
| 438 |
+
x, y, w, h = a["bbox"] # bounding box in xywh (xy top-left corner)
|
| 439 |
+
xyxy = np.array([x, y, x + w, y + h])[None] # pixels(1,4)
|
| 440 |
+
x, y, w, h = xyxy2xywhn(xyxy, w=width, h=height, clip=True)[0] # normalized and clipped
|
| 441 |
+
file.write(f"{cid} {x:.5f} {y:.5f} {w:.5f} {h:.5f}\n")
|
| 442 |
+
except Exception as e:
|
| 443 |
+
print(e)
|
| 444 |
+
|
| 445 |
+
images_list = coco.loadImgs(imgIds)
|
| 446 |
+
with ThreadPoolExecutor(max_workers=16) as executor:
|
| 447 |
+
list(TQDM(executor.map(process_annotation, images_list), total=len(images_list), desc=f"Class {cid + 1}/{len(names)} {cat}"))
|
vendor/ultralytics/cfg/datasets/SKU-110K.yaml
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Ultralytics π AGPL-3.0 License - https://ultralytics.com/license
|
| 2 |
+
|
| 3 |
+
# SKU-110K retail items dataset https://github.com/eg4000/SKU110K_CVPR19 by Trax Retail
|
| 4 |
+
# Documentation: https://docs.ultralytics.com/datasets/detect/sku-110k/
|
| 5 |
+
# Example usage: yolo train data=SKU-110K.yaml
|
| 6 |
+
# parent
|
| 7 |
+
# βββ ultralytics
|
| 8 |
+
# βββ datasets
|
| 9 |
+
# βββ SKU-110K β downloads here (13.6 GB)
|
| 10 |
+
|
| 11 |
+
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
| 12 |
+
path: SKU-110K # dataset root dir
|
| 13 |
+
train: train.txt # train images (relative to 'path') 8219 images
|
| 14 |
+
val: val.txt # val images (relative to 'path') 588 images
|
| 15 |
+
test: test.txt # test images (optional) 2936 images
|
| 16 |
+
|
| 17 |
+
# Classes
|
| 18 |
+
names:
|
| 19 |
+
0: object
|
| 20 |
+
|
| 21 |
+
# Download script/URL (optional) ---------------------------------------------------------------------------------------
|
| 22 |
+
download: |
|
| 23 |
+
import shutil
|
| 24 |
+
from pathlib import Path
|
| 25 |
+
|
| 26 |
+
import numpy as np
|
| 27 |
+
import polars as pl
|
| 28 |
+
|
| 29 |
+
from ultralytics.utils import TQDM
|
| 30 |
+
from ultralytics.utils.downloads import download
|
| 31 |
+
from ultralytics.utils.ops import xyxy2xywh
|
| 32 |
+
|
| 33 |
+
# Download
|
| 34 |
+
dir = Path(yaml["path"]) # dataset root dir
|
| 35 |
+
parent = Path(dir.parent) # download dir
|
| 36 |
+
urls = ["http://trax-geometry.s3.amazonaws.com/cvpr_challenge/SKU110K_fixed.tar.gz"]
|
| 37 |
+
download(urls, dir=parent)
|
| 38 |
+
|
| 39 |
+
# Rename directories
|
| 40 |
+
if dir.exists():
|
| 41 |
+
shutil.rmtree(dir)
|
| 42 |
+
(parent / "SKU110K_fixed").rename(dir) # rename dir
|
| 43 |
+
(dir / "labels").mkdir(parents=True, exist_ok=True) # create labels dir
|
| 44 |
+
|
| 45 |
+
# Convert labels
|
| 46 |
+
names = "image", "x1", "y1", "x2", "y2", "class", "image_width", "image_height" # column names
|
| 47 |
+
for d in "annotations_train.csv", "annotations_val.csv", "annotations_test.csv":
|
| 48 |
+
x = pl.read_csv(dir / "annotations" / d, has_header=False, new_columns=names, infer_schema_length=None).to_numpy() # annotations
|
| 49 |
+
images, unique_images = x[:, 0], np.unique(x[:, 0])
|
| 50 |
+
with open((dir / d).with_suffix(".txt").__str__().replace("annotations_", ""), "w", encoding="utf-8") as f:
|
| 51 |
+
f.writelines(f"./images/{s}\n" for s in unique_images)
|
| 52 |
+
for im in TQDM(unique_images, desc=f"Converting {dir / d}"):
|
| 53 |
+
cls = 0 # single-class dataset
|
| 54 |
+
with open((dir / "labels" / im).with_suffix(".txt"), "a", encoding="utf-8") as f:
|
| 55 |
+
for r in x[images == im]:
|
| 56 |
+
w, h = r[6], r[7] # image width, height
|
| 57 |
+
xywh = xyxy2xywh(np.array([[r[1] / w, r[2] / h, r[3] / w, r[4] / h]]))[0] # instance
|
| 58 |
+
f.write(f"{cls} {xywh[0]:.5f} {xywh[1]:.5f} {xywh[2]:.5f} {xywh[3]:.5f}\n") # write label
|
vendor/ultralytics/cfg/datasets/TT100K.yaml
ADDED
|
@@ -0,0 +1,346 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Ultralytics π AGPL-3.0 License - https://ultralytics.com/license
|
| 2 |
+
|
| 3 |
+
# Tsinghua-Tencent 100K (TT100K) dataset https://cg.cs.tsinghua.edu.cn/traffic-sign/ by Tsinghua University
|
| 4 |
+
# Documentation: https://cg.cs.tsinghua.edu.cn/traffic-sign/tutorial.html
|
| 5 |
+
# Paper: Traffic-Sign Detection and Classification in the Wild (CVPR 2016)
|
| 6 |
+
# License: CC BY-NC 2.0 license for non-commercial use only
|
| 7 |
+
# Example usage: yolo train data=TT100K.yaml
|
| 8 |
+
# parent
|
| 9 |
+
# βββ ultralytics
|
| 10 |
+
# βββ datasets
|
| 11 |
+
# βββ TT100K β downloads here (~18 GB)
|
| 12 |
+
|
| 13 |
+
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
| 14 |
+
path: TT100K # dataset root dir
|
| 15 |
+
train: images/train # train images (relative to 'path') 6105 images
|
| 16 |
+
val: images/val # val images (relative to 'path') 7641 images (original 'other' split)
|
| 17 |
+
test: images/test # test images (relative to 'path') 3071 images
|
| 18 |
+
|
| 19 |
+
# Classes (221 traffic sign categories, 45 with sufficient training instances)
|
| 20 |
+
names:
|
| 21 |
+
0: pl5
|
| 22 |
+
1: pl10
|
| 23 |
+
2: pl15
|
| 24 |
+
3: pl20
|
| 25 |
+
4: pl25
|
| 26 |
+
5: pl30
|
| 27 |
+
6: pl40
|
| 28 |
+
7: pl50
|
| 29 |
+
8: pl60
|
| 30 |
+
9: pl70
|
| 31 |
+
10: pl80
|
| 32 |
+
11: pl90
|
| 33 |
+
12: pl100
|
| 34 |
+
13: pl110
|
| 35 |
+
14: pl120
|
| 36 |
+
15: pm5
|
| 37 |
+
16: pm10
|
| 38 |
+
17: pm13
|
| 39 |
+
18: pm15
|
| 40 |
+
19: pm20
|
| 41 |
+
20: pm25
|
| 42 |
+
21: pm30
|
| 43 |
+
22: pm35
|
| 44 |
+
23: pm40
|
| 45 |
+
24: pm46
|
| 46 |
+
25: pm50
|
| 47 |
+
26: pm55
|
| 48 |
+
27: pm8
|
| 49 |
+
28: pn
|
| 50 |
+
29: pne
|
| 51 |
+
30: ph4
|
| 52 |
+
31: ph4.5
|
| 53 |
+
32: ph5
|
| 54 |
+
33: ps
|
| 55 |
+
34: pg
|
| 56 |
+
35: ph1.5
|
| 57 |
+
36: ph2
|
| 58 |
+
37: ph2.1
|
| 59 |
+
38: ph2.2
|
| 60 |
+
39: ph2.4
|
| 61 |
+
40: ph2.5
|
| 62 |
+
41: ph2.8
|
| 63 |
+
42: ph2.9
|
| 64 |
+
43: ph3
|
| 65 |
+
44: ph3.2
|
| 66 |
+
45: ph3.5
|
| 67 |
+
46: ph3.8
|
| 68 |
+
47: ph4.2
|
| 69 |
+
48: ph4.3
|
| 70 |
+
49: ph4.8
|
| 71 |
+
50: ph5.3
|
| 72 |
+
51: ph5.5
|
| 73 |
+
52: pb
|
| 74 |
+
53: pr10
|
| 75 |
+
54: pr100
|
| 76 |
+
55: pr20
|
| 77 |
+
56: pr30
|
| 78 |
+
57: pr40
|
| 79 |
+
58: pr45
|
| 80 |
+
59: pr50
|
| 81 |
+
60: pr60
|
| 82 |
+
61: pr70
|
| 83 |
+
62: pr80
|
| 84 |
+
63: pr90
|
| 85 |
+
64: p1
|
| 86 |
+
65: p2
|
| 87 |
+
66: p3
|
| 88 |
+
67: p4
|
| 89 |
+
68: p5
|
| 90 |
+
69: p6
|
| 91 |
+
70: p7
|
| 92 |
+
71: p8
|
| 93 |
+
72: p9
|
| 94 |
+
73: p10
|
| 95 |
+
74: p11
|
| 96 |
+
75: p12
|
| 97 |
+
76: p13
|
| 98 |
+
77: p14
|
| 99 |
+
78: p15
|
| 100 |
+
79: p16
|
| 101 |
+
80: p17
|
| 102 |
+
81: p18
|
| 103 |
+
82: p19
|
| 104 |
+
83: p20
|
| 105 |
+
84: p21
|
| 106 |
+
85: p22
|
| 107 |
+
86: p23
|
| 108 |
+
87: p24
|
| 109 |
+
88: p25
|
| 110 |
+
89: p26
|
| 111 |
+
90: p27
|
| 112 |
+
91: p28
|
| 113 |
+
92: pa8
|
| 114 |
+
93: pa10
|
| 115 |
+
94: pa12
|
| 116 |
+
95: pa13
|
| 117 |
+
96: pa14
|
| 118 |
+
97: pb5
|
| 119 |
+
98: pc
|
| 120 |
+
99: pg
|
| 121 |
+
100: ph1
|
| 122 |
+
101: ph1.3
|
| 123 |
+
102: ph1.5
|
| 124 |
+
103: ph2
|
| 125 |
+
104: ph3
|
| 126 |
+
105: ph4
|
| 127 |
+
106: ph5
|
| 128 |
+
107: pi
|
| 129 |
+
108: pl0
|
| 130 |
+
109: pl4
|
| 131 |
+
110: pl5
|
| 132 |
+
111: pl8
|
| 133 |
+
112: pl10
|
| 134 |
+
113: pl15
|
| 135 |
+
114: pl20
|
| 136 |
+
115: pl25
|
| 137 |
+
116: pl30
|
| 138 |
+
117: pl35
|
| 139 |
+
118: pl40
|
| 140 |
+
119: pl50
|
| 141 |
+
120: pl60
|
| 142 |
+
121: pl65
|
| 143 |
+
122: pl70
|
| 144 |
+
123: pl80
|
| 145 |
+
124: pl90
|
| 146 |
+
125: pl100
|
| 147 |
+
126: pl110
|
| 148 |
+
127: pl120
|
| 149 |
+
128: pm2
|
| 150 |
+
129: pm8
|
| 151 |
+
130: pm10
|
| 152 |
+
131: pm13
|
| 153 |
+
132: pm15
|
| 154 |
+
133: pm20
|
| 155 |
+
134: pm25
|
| 156 |
+
135: pm30
|
| 157 |
+
136: pm35
|
| 158 |
+
137: pm40
|
| 159 |
+
138: pm46
|
| 160 |
+
139: pm50
|
| 161 |
+
140: pm55
|
| 162 |
+
141: pn
|
| 163 |
+
142: pne
|
| 164 |
+
143: po
|
| 165 |
+
144: pr10
|
| 166 |
+
145: pr100
|
| 167 |
+
146: pr20
|
| 168 |
+
147: pr30
|
| 169 |
+
148: pr40
|
| 170 |
+
149: pr45
|
| 171 |
+
150: pr50
|
| 172 |
+
151: pr60
|
| 173 |
+
152: pr70
|
| 174 |
+
153: pr80
|
| 175 |
+
154: ps
|
| 176 |
+
155: w1
|
| 177 |
+
156: w2
|
| 178 |
+
157: w3
|
| 179 |
+
158: w5
|
| 180 |
+
159: w8
|
| 181 |
+
160: w10
|
| 182 |
+
161: w12
|
| 183 |
+
162: w13
|
| 184 |
+
163: w16
|
| 185 |
+
164: w18
|
| 186 |
+
165: w20
|
| 187 |
+
166: w21
|
| 188 |
+
167: w22
|
| 189 |
+
168: w24
|
| 190 |
+
169: w28
|
| 191 |
+
170: w30
|
| 192 |
+
171: w31
|
| 193 |
+
172: w32
|
| 194 |
+
173: w34
|
| 195 |
+
174: w35
|
| 196 |
+
175: w37
|
| 197 |
+
176: w38
|
| 198 |
+
177: w41
|
| 199 |
+
178: w42
|
| 200 |
+
179: w43
|
| 201 |
+
180: w44
|
| 202 |
+
181: w45
|
| 203 |
+
182: w46
|
| 204 |
+
183: w47
|
| 205 |
+
184: w48
|
| 206 |
+
185: w49
|
| 207 |
+
186: w50
|
| 208 |
+
187: w51
|
| 209 |
+
188: w52
|
| 210 |
+
189: w53
|
| 211 |
+
190: w54
|
| 212 |
+
191: w55
|
| 213 |
+
192: w56
|
| 214 |
+
193: w57
|
| 215 |
+
194: w58
|
| 216 |
+
195: w59
|
| 217 |
+
196: w60
|
| 218 |
+
197: w62
|
| 219 |
+
198: w63
|
| 220 |
+
199: w66
|
| 221 |
+
200: i1
|
| 222 |
+
201: i2
|
| 223 |
+
202: i3
|
| 224 |
+
203: i4
|
| 225 |
+
204: i5
|
| 226 |
+
205: i6
|
| 227 |
+
206: i7
|
| 228 |
+
207: i8
|
| 229 |
+
208: i9
|
| 230 |
+
209: i10
|
| 231 |
+
210: i11
|
| 232 |
+
211: i12
|
| 233 |
+
212: i13
|
| 234 |
+
213: i14
|
| 235 |
+
214: i15
|
| 236 |
+
215: il60
|
| 237 |
+
216: il80
|
| 238 |
+
217: il100
|
| 239 |
+
218: il110
|
| 240 |
+
219: io
|
| 241 |
+
220: ip
|
| 242 |
+
|
| 243 |
+
# Download script/URL (optional) ---------------------------------------------------------------------------------------
|
| 244 |
+
download: |
|
| 245 |
+
import json
|
| 246 |
+
import shutil
|
| 247 |
+
from pathlib import Path
|
| 248 |
+
|
| 249 |
+
from PIL import Image
|
| 250 |
+
|
| 251 |
+
from ultralytics.utils import TQDM
|
| 252 |
+
from ultralytics.utils.downloads import download
|
| 253 |
+
|
| 254 |
+
|
| 255 |
+
def tt100k2yolo(dir):
|
| 256 |
+
"""Convert TT100K annotations to YOLO format with images/{split} and labels/{split} structure."""
|
| 257 |
+
data_dir = dir / "data"
|
| 258 |
+
anno_file = data_dir / "annotations.json"
|
| 259 |
+
|
| 260 |
+
print("Loading annotations...")
|
| 261 |
+
with open(anno_file, encoding="utf-8") as f:
|
| 262 |
+
data = json.load(f)
|
| 263 |
+
|
| 264 |
+
# Build class name to index mapping from yaml
|
| 265 |
+
names = yaml["names"]
|
| 266 |
+
class_to_idx = {v: k for k, v in names.items()}
|
| 267 |
+
|
| 268 |
+
# Create directories
|
| 269 |
+
for split in ["train", "val", "test"]:
|
| 270 |
+
(dir / "images" / split).mkdir(parents=True, exist_ok=True)
|
| 271 |
+
(dir / "labels" / split).mkdir(parents=True, exist_ok=True)
|
| 272 |
+
|
| 273 |
+
print("Converting annotations to YOLO format...")
|
| 274 |
+
skipped = 0
|
| 275 |
+
for img_id, img_data in TQDM(data["imgs"].items(), desc="Processing"):
|
| 276 |
+
img_path_str = img_data["path"]
|
| 277 |
+
if "train" in img_path_str:
|
| 278 |
+
split = "train"
|
| 279 |
+
elif "test" in img_path_str:
|
| 280 |
+
split = "test"
|
| 281 |
+
else:
|
| 282 |
+
split = "val"
|
| 283 |
+
|
| 284 |
+
# Source and destination paths
|
| 285 |
+
src_img = data_dir / img_path_str
|
| 286 |
+
if not src_img.exists():
|
| 287 |
+
continue
|
| 288 |
+
|
| 289 |
+
dst_img = dir / "images" / split / src_img.name
|
| 290 |
+
|
| 291 |
+
# Get image dimensions
|
| 292 |
+
try:
|
| 293 |
+
with Image.open(src_img) as img:
|
| 294 |
+
img_width, img_height = img.size
|
| 295 |
+
except Exception as e:
|
| 296 |
+
print(f"Error reading {src_img}: {e}")
|
| 297 |
+
continue
|
| 298 |
+
|
| 299 |
+
# Copy image to destination
|
| 300 |
+
shutil.copy2(src_img, dst_img)
|
| 301 |
+
|
| 302 |
+
# Convert annotations
|
| 303 |
+
label_file = dir / "labels" / split / f"{src_img.stem}.txt"
|
| 304 |
+
lines = []
|
| 305 |
+
|
| 306 |
+
for obj in img_data.get("objects", []):
|
| 307 |
+
category = obj["category"]
|
| 308 |
+
if category not in class_to_idx:
|
| 309 |
+
skipped += 1
|
| 310 |
+
continue
|
| 311 |
+
|
| 312 |
+
bbox = obj["bbox"]
|
| 313 |
+
xmin, ymin = bbox["xmin"], bbox["ymin"]
|
| 314 |
+
xmax, ymax = bbox["xmax"], bbox["ymax"]
|
| 315 |
+
|
| 316 |
+
# Convert to YOLO format (normalized center coordinates and dimensions)
|
| 317 |
+
x_center = ((xmin + xmax) / 2.0) / img_width
|
| 318 |
+
y_center = ((ymin + ymax) / 2.0) / img_height
|
| 319 |
+
width = (xmax - xmin) / img_width
|
| 320 |
+
height = (ymax - ymin) / img_height
|
| 321 |
+
|
| 322 |
+
# Clip to valid range
|
| 323 |
+
x_center = max(0, min(1, x_center))
|
| 324 |
+
y_center = max(0, min(1, y_center))
|
| 325 |
+
width = max(0, min(1, width))
|
| 326 |
+
height = max(0, min(1, height))
|
| 327 |
+
|
| 328 |
+
cls_idx = class_to_idx[category]
|
| 329 |
+
lines.append(f"{cls_idx} {x_center:.6f} {y_center:.6f} {width:.6f} {height:.6f}\n")
|
| 330 |
+
|
| 331 |
+
# Write label file
|
| 332 |
+
if lines:
|
| 333 |
+
label_file.write_text("".join(lines), encoding="utf-8")
|
| 334 |
+
|
| 335 |
+
if skipped:
|
| 336 |
+
print(f"Skipped {skipped} annotations with unknown categories")
|
| 337 |
+
print("Conversion complete!")
|
| 338 |
+
|
| 339 |
+
|
| 340 |
+
# Download
|
| 341 |
+
dir = Path(yaml["path"]) # dataset root dir
|
| 342 |
+
urls = ["https://cg.cs.tsinghua.edu.cn/traffic-sign/data_model_code/data.zip"]
|
| 343 |
+
download(urls, dir=dir, curl=True, threads=1)
|
| 344 |
+
|
| 345 |
+
# Convert
|
| 346 |
+
tt100k2yolo(dir)
|
vendor/ultralytics/cfg/datasets/VOC.yaml
ADDED
|
@@ -0,0 +1,102 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Ultralytics π AGPL-3.0 License - https://ultralytics.com/license
|
| 2 |
+
|
| 3 |
+
# PASCAL VOC dataset http://host.robots.ox.ac.uk/pascal/VOC by University of Oxford
|
| 4 |
+
# Documentation: https://docs.ultralytics.com/datasets/detect/voc/
|
| 5 |
+
# Example usage: yolo train data=VOC.yaml
|
| 6 |
+
# parent
|
| 7 |
+
# βββ ultralytics
|
| 8 |
+
# βββ datasets
|
| 9 |
+
# βββ VOC β downloads here (2.8 GB)
|
| 10 |
+
|
| 11 |
+
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
| 12 |
+
path: VOC
|
| 13 |
+
train: # train images (relative to 'path') 16551 images
|
| 14 |
+
- images/train2012
|
| 15 |
+
- images/train2007
|
| 16 |
+
- images/val2012
|
| 17 |
+
- images/val2007
|
| 18 |
+
val: # val images (relative to 'path') 4952 images
|
| 19 |
+
- images/test2007
|
| 20 |
+
test: # test images (optional)
|
| 21 |
+
- images/test2007
|
| 22 |
+
|
| 23 |
+
# Classes
|
| 24 |
+
names:
|
| 25 |
+
0: aeroplane
|
| 26 |
+
1: bicycle
|
| 27 |
+
2: bird
|
| 28 |
+
3: boat
|
| 29 |
+
4: bottle
|
| 30 |
+
5: bus
|
| 31 |
+
6: car
|
| 32 |
+
7: cat
|
| 33 |
+
8: chair
|
| 34 |
+
9: cow
|
| 35 |
+
10: diningtable
|
| 36 |
+
11: dog
|
| 37 |
+
12: horse
|
| 38 |
+
13: motorbike
|
| 39 |
+
14: person
|
| 40 |
+
15: pottedplant
|
| 41 |
+
16: sheep
|
| 42 |
+
17: sofa
|
| 43 |
+
18: train
|
| 44 |
+
19: tvmonitor
|
| 45 |
+
|
| 46 |
+
# Download script/URL (optional) ---------------------------------------------------------------------------------------
|
| 47 |
+
download: |
|
| 48 |
+
import xml.etree.ElementTree as ET
|
| 49 |
+
from pathlib import Path
|
| 50 |
+
|
| 51 |
+
from ultralytics.utils.downloads import download
|
| 52 |
+
from ultralytics.utils import ASSETS_URL, TQDM
|
| 53 |
+
|
| 54 |
+
def convert_label(path, lb_path, year, image_id):
|
| 55 |
+
"""Converts XML annotations from VOC format to YOLO format by extracting bounding boxes and class IDs."""
|
| 56 |
+
|
| 57 |
+
def convert_box(size, box):
|
| 58 |
+
dw, dh = 1.0 / size[0], 1.0 / size[1]
|
| 59 |
+
x, y, w, h = (box[0] + box[1]) / 2.0 - 1, (box[2] + box[3]) / 2.0 - 1, box[1] - box[0], box[3] - box[2]
|
| 60 |
+
return x * dw, y * dh, w * dw, h * dh
|
| 61 |
+
|
| 62 |
+
with open(path / f"VOC{year}/Annotations/{image_id}.xml") as in_file, open(lb_path, "w", encoding="utf-8") as out_file:
|
| 63 |
+
tree = ET.parse(in_file)
|
| 64 |
+
root = tree.getroot()
|
| 65 |
+
size = root.find("size")
|
| 66 |
+
w = int(size.find("width").text)
|
| 67 |
+
h = int(size.find("height").text)
|
| 68 |
+
|
| 69 |
+
names = list(yaml["names"].values()) # names list
|
| 70 |
+
for obj in root.iter("object"):
|
| 71 |
+
cls = obj.find("name").text
|
| 72 |
+
if cls in names and int(obj.find("difficult").text) != 1:
|
| 73 |
+
xmlbox = obj.find("bndbox")
|
| 74 |
+
bb = convert_box((w, h), [float(xmlbox.find(x).text) for x in ("xmin", "xmax", "ymin", "ymax")])
|
| 75 |
+
cls_id = names.index(cls) # class id
|
| 76 |
+
out_file.write(" ".join(str(a) for a in (cls_id, *bb)) + "\n")
|
| 77 |
+
|
| 78 |
+
|
| 79 |
+
# Download
|
| 80 |
+
dir = Path(yaml["path"]) # dataset root dir
|
| 81 |
+
urls = [
|
| 82 |
+
f"{ASSETS_URL}/VOCtrainval_06-Nov-2007.zip", # 446MB, 5012 images
|
| 83 |
+
f"{ASSETS_URL}/VOCtest_06-Nov-2007.zip", # 438MB, 4953 images
|
| 84 |
+
f"{ASSETS_URL}/VOCtrainval_11-May-2012.zip", # 1.95GB, 17126 images
|
| 85 |
+
]
|
| 86 |
+
download(urls, dir=dir / "images", threads=3, exist_ok=True) # download and unzip over existing (required)
|
| 87 |
+
|
| 88 |
+
# Convert
|
| 89 |
+
path = dir / "images/VOCdevkit"
|
| 90 |
+
for year, image_set in ("2012", "train"), ("2012", "val"), ("2007", "train"), ("2007", "val"), ("2007", "test"):
|
| 91 |
+
imgs_path = dir / "images" / f"{image_set}{year}"
|
| 92 |
+
lbs_path = dir / "labels" / f"{image_set}{year}"
|
| 93 |
+
imgs_path.mkdir(exist_ok=True, parents=True)
|
| 94 |
+
lbs_path.mkdir(exist_ok=True, parents=True)
|
| 95 |
+
|
| 96 |
+
with open(path / f"VOC{year}/ImageSets/Main/{image_set}.txt") as f:
|
| 97 |
+
image_ids = f.read().strip().split()
|
| 98 |
+
for id in TQDM(image_ids, desc=f"{image_set}{year}"):
|
| 99 |
+
f = path / f"VOC{year}/JPEGImages/{id}.jpg" # old img path
|
| 100 |
+
lb_path = (lbs_path / f.name).with_suffix(".txt") # new label path
|
| 101 |
+
f.rename(imgs_path / f.name) # move image
|
| 102 |
+
convert_label(path, lb_path, year, id) # convert labels to YOLO format
|
vendor/ultralytics/cfg/datasets/VisDrone.yaml
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Ultralytics π AGPL-3.0 License - https://ultralytics.com/license
|
| 2 |
+
|
| 3 |
+
# VisDrone2019-DET dataset https://github.com/VisDrone/VisDrone-Dataset by Tianjin University
|
| 4 |
+
# Documentation: https://docs.ultralytics.com/datasets/detect/visdrone/
|
| 5 |
+
# Example usage: yolo train data=VisDrone.yaml
|
| 6 |
+
# parent
|
| 7 |
+
# βββ ultralytics
|
| 8 |
+
# βββ datasets
|
| 9 |
+
# βββ VisDrone β downloads here (2.3 GB)
|
| 10 |
+
|
| 11 |
+
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
| 12 |
+
path: VisDrone # dataset root dir
|
| 13 |
+
train: images/train # train images (relative to 'path') 6471 images
|
| 14 |
+
val: images/val # val images (relative to 'path') 548 images
|
| 15 |
+
test: images/test # test-dev images (optional) 1610 images
|
| 16 |
+
|
| 17 |
+
# Classes
|
| 18 |
+
names:
|
| 19 |
+
0: pedestrian
|
| 20 |
+
1: people
|
| 21 |
+
2: bicycle
|
| 22 |
+
3: car
|
| 23 |
+
4: van
|
| 24 |
+
5: truck
|
| 25 |
+
6: tricycle
|
| 26 |
+
7: awning-tricycle
|
| 27 |
+
8: bus
|
| 28 |
+
9: motor
|
| 29 |
+
|
| 30 |
+
# Download script/URL (optional) ---------------------------------------------------------------------------------------
|
| 31 |
+
download: |
|
| 32 |
+
import os
|
| 33 |
+
from pathlib import Path
|
| 34 |
+
import shutil
|
| 35 |
+
|
| 36 |
+
from ultralytics.utils.downloads import download
|
| 37 |
+
from ultralytics.utils import ASSETS_URL, TQDM
|
| 38 |
+
|
| 39 |
+
|
| 40 |
+
def visdrone2yolo(dir, split, source_name=None):
|
| 41 |
+
"""Convert VisDrone annotations to YOLO format with images/{split} and labels/{split} structure."""
|
| 42 |
+
from PIL import Image
|
| 43 |
+
|
| 44 |
+
source_dir = dir / (source_name or f"VisDrone2019-DET-{split}")
|
| 45 |
+
images_dir = dir / "images" / split
|
| 46 |
+
labels_dir = dir / "labels" / split
|
| 47 |
+
labels_dir.mkdir(parents=True, exist_ok=True)
|
| 48 |
+
|
| 49 |
+
# Move images to new structure
|
| 50 |
+
if (source_images_dir := source_dir / "images").exists():
|
| 51 |
+
images_dir.mkdir(parents=True, exist_ok=True)
|
| 52 |
+
for img in source_images_dir.glob("*.jpg"):
|
| 53 |
+
img.rename(images_dir / img.name)
|
| 54 |
+
|
| 55 |
+
for f in TQDM((source_dir / "annotations").glob("*.txt"), desc=f"Converting {split}"):
|
| 56 |
+
img_size = Image.open(images_dir / f.with_suffix(".jpg").name).size
|
| 57 |
+
dw, dh = 1.0 / img_size[0], 1.0 / img_size[1]
|
| 58 |
+
lines = []
|
| 59 |
+
|
| 60 |
+
with open(f, encoding="utf-8") as file:
|
| 61 |
+
for row in [x.split(",") for x in file.read().strip().splitlines()]:
|
| 62 |
+
if row[4] != "0": # Skip ignored regions
|
| 63 |
+
x, y, w, h = map(int, row[:4])
|
| 64 |
+
cls = int(row[5]) - 1
|
| 65 |
+
# Convert to YOLO format
|
| 66 |
+
x_center, y_center = (x + w / 2) * dw, (y + h / 2) * dh
|
| 67 |
+
w_norm, h_norm = w * dw, h * dh
|
| 68 |
+
lines.append(f"{cls} {x_center:.6f} {y_center:.6f} {w_norm:.6f} {h_norm:.6f}\n")
|
| 69 |
+
|
| 70 |
+
(labels_dir / f.name).write_text("".join(lines), encoding="utf-8")
|
| 71 |
+
|
| 72 |
+
|
| 73 |
+
# Download (ignores test-challenge split)
|
| 74 |
+
dir = Path(yaml["path"]) # dataset root dir
|
| 75 |
+
urls = [
|
| 76 |
+
f"{ASSETS_URL}/VisDrone2019-DET-train.zip",
|
| 77 |
+
f"{ASSETS_URL}/VisDrone2019-DET-val.zip",
|
| 78 |
+
f"{ASSETS_URL}/VisDrone2019-DET-test-dev.zip",
|
| 79 |
+
# f"{ASSETS_URL}/VisDrone2019-DET-test-challenge.zip",
|
| 80 |
+
]
|
| 81 |
+
download(urls, dir=dir, threads=4)
|
| 82 |
+
|
| 83 |
+
# Convert
|
| 84 |
+
splits = {"VisDrone2019-DET-train": "train", "VisDrone2019-DET-val": "val", "VisDrone2019-DET-test-dev": "test"}
|
| 85 |
+
for folder, split in splits.items():
|
| 86 |
+
visdrone2yolo(dir, split, folder) # convert VisDrone annotations to YOLO labels
|
| 87 |
+
shutil.rmtree(dir / folder) # cleanup original directory
|
vendor/ultralytics/cfg/datasets/african-wildlife.yaml
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Ultralytics π AGPL-3.0 License - https://ultralytics.com/license
|
| 2 |
+
|
| 3 |
+
# African Wildlife dataset by Ultralytics
|
| 4 |
+
# Documentation: https://docs.ultralytics.com/datasets/detect/african-wildlife/
|
| 5 |
+
# Example usage: yolo train data=african-wildlife.yaml
|
| 6 |
+
# parent
|
| 7 |
+
# βββ ultralytics
|
| 8 |
+
# βββ datasets
|
| 9 |
+
# βββ african-wildlife β downloads here (100 MB)
|
| 10 |
+
|
| 11 |
+
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
| 12 |
+
path: african-wildlife # dataset root dir
|
| 13 |
+
train: images/train # train images (relative to 'path') 1052 images
|
| 14 |
+
val: images/val # val images (relative to 'path') 225 images
|
| 15 |
+
test: images/test # test images (relative to 'path') 227 images
|
| 16 |
+
|
| 17 |
+
# Classes
|
| 18 |
+
names:
|
| 19 |
+
0: buffalo
|
| 20 |
+
1: elephant
|
| 21 |
+
2: rhino
|
| 22 |
+
3: zebra
|
| 23 |
+
|
| 24 |
+
# Download script/URL (optional)
|
| 25 |
+
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/african-wildlife.zip
|
vendor/ultralytics/cfg/datasets/brain-tumor.yaml
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Ultralytics π AGPL-3.0 License - https://ultralytics.com/license
|
| 2 |
+
|
| 3 |
+
# Brain-tumor dataset by Ultralytics
|
| 4 |
+
# Documentation: https://docs.ultralytics.com/datasets/detect/brain-tumor/
|
| 5 |
+
# Example usage: yolo train data=brain-tumor.yaml
|
| 6 |
+
# parent
|
| 7 |
+
# βββ ultralytics
|
| 8 |
+
# βββ datasets
|
| 9 |
+
# βββ brain-tumor β downloads here (4.21 MB)
|
| 10 |
+
|
| 11 |
+
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
| 12 |
+
path: brain-tumor # dataset root dir
|
| 13 |
+
train: images/train # train images (relative to 'path') 893 images
|
| 14 |
+
val: images/val # val images (relative to 'path') 223 images
|
| 15 |
+
|
| 16 |
+
# Classes
|
| 17 |
+
names:
|
| 18 |
+
0: negative
|
| 19 |
+
1: positive
|
| 20 |
+
|
| 21 |
+
# Download script/URL (optional)
|
| 22 |
+
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/brain-tumor.zip
|
vendor/ultralytics/cfg/datasets/carparts-seg.yaml
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Ultralytics π AGPL-3.0 License - https://ultralytics.com/license
|
| 2 |
+
|
| 3 |
+
# Carparts-seg dataset by Ultralytics
|
| 4 |
+
# Documentation: https://docs.ultralytics.com/datasets/segment/carparts-seg/
|
| 5 |
+
# Example usage: yolo train data=carparts-seg.yaml
|
| 6 |
+
# parent
|
| 7 |
+
# βββ ultralytics
|
| 8 |
+
# βββ datasets
|
| 9 |
+
# βββ carparts-seg β downloads here (133 MB)
|
| 10 |
+
|
| 11 |
+
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
| 12 |
+
path: carparts-seg # dataset root dir
|
| 13 |
+
train: images/train # train images (relative to 'path') 3516 images
|
| 14 |
+
val: images/val # val images (relative to 'path') 276 images
|
| 15 |
+
test: images/test # test images (relative to 'path') 401 images
|
| 16 |
+
|
| 17 |
+
# Classes
|
| 18 |
+
names:
|
| 19 |
+
0: back_bumper
|
| 20 |
+
1: back_door
|
| 21 |
+
2: back_glass
|
| 22 |
+
3: back_left_door
|
| 23 |
+
4: back_left_light
|
| 24 |
+
5: back_light
|
| 25 |
+
6: back_right_door
|
| 26 |
+
7: back_right_light
|
| 27 |
+
8: front_bumper
|
| 28 |
+
9: front_door
|
| 29 |
+
10: front_glass
|
| 30 |
+
11: front_left_door
|
| 31 |
+
12: front_left_light
|
| 32 |
+
13: front_light
|
| 33 |
+
14: front_right_door
|
| 34 |
+
15: front_right_light
|
| 35 |
+
16: hood
|
| 36 |
+
17: left_mirror
|
| 37 |
+
18: object
|
| 38 |
+
19: right_mirror
|
| 39 |
+
20: tailgate
|
| 40 |
+
21: trunk
|
| 41 |
+
22: wheel
|
| 42 |
+
|
| 43 |
+
# Download script/URL (optional)
|
| 44 |
+
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/carparts-seg.zip
|
vendor/ultralytics/cfg/datasets/coco-pose.yaml
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Ultralytics π AGPL-3.0 License - https://ultralytics.com/license
|
| 2 |
+
|
| 3 |
+
# COCO 2017 Keypoints dataset https://cocodataset.org by Microsoft
|
| 4 |
+
# Documentation: https://docs.ultralytics.com/datasets/pose/coco/
|
| 5 |
+
# Example usage: yolo train data=coco-pose.yaml
|
| 6 |
+
# parent
|
| 7 |
+
# βββ ultralytics
|
| 8 |
+
# βββ datasets
|
| 9 |
+
# βββ coco-pose β downloads here (20.1 GB)
|
| 10 |
+
|
| 11 |
+
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
| 12 |
+
path: coco-pose # dataset root dir
|
| 13 |
+
train: train2017.txt # train images (relative to 'path') 56599 images
|
| 14 |
+
val: val2017.txt # val images (relative to 'path') 2346 images
|
| 15 |
+
test: test-dev2017.txt # 20288 of 40670 images, submit to https://codalab.lisn.upsaclay.fr/competitions/7403
|
| 16 |
+
|
| 17 |
+
# Keypoints
|
| 18 |
+
kpt_shape: [17, 3] # number of keypoints, number of dims (2 for x,y or 3 for x,y,visible)
|
| 19 |
+
flip_idx: [0, 2, 1, 4, 3, 6, 5, 8, 7, 10, 9, 12, 11, 14, 13, 16, 15]
|
| 20 |
+
|
| 21 |
+
# Classes
|
| 22 |
+
names:
|
| 23 |
+
0: person
|
| 24 |
+
|
| 25 |
+
# Keypoint names per class
|
| 26 |
+
kpt_names:
|
| 27 |
+
0:
|
| 28 |
+
- nose
|
| 29 |
+
- left_eye
|
| 30 |
+
- right_eye
|
| 31 |
+
- left_ear
|
| 32 |
+
- right_ear
|
| 33 |
+
- left_shoulder
|
| 34 |
+
- right_shoulder
|
| 35 |
+
- left_elbow
|
| 36 |
+
- right_elbow
|
| 37 |
+
- left_wrist
|
| 38 |
+
- right_wrist
|
| 39 |
+
- left_hip
|
| 40 |
+
- right_hip
|
| 41 |
+
- left_knee
|
| 42 |
+
- right_knee
|
| 43 |
+
- left_ankle
|
| 44 |
+
- right_ankle
|
| 45 |
+
|
| 46 |
+
# Download script/URL (optional)
|
| 47 |
+
download: |
|
| 48 |
+
from pathlib import Path
|
| 49 |
+
|
| 50 |
+
from ultralytics.utils import ASSETS_URL
|
| 51 |
+
from ultralytics.utils.downloads import download
|
| 52 |
+
|
| 53 |
+
# Download labels
|
| 54 |
+
dir = Path(yaml["path"]) # dataset root dir
|
| 55 |
+
|
| 56 |
+
urls = [f"{ASSETS_URL}/coco2017labels-pose.zip"]
|
| 57 |
+
download(urls, dir=dir.parent)
|
| 58 |
+
# Download data
|
| 59 |
+
urls = [
|
| 60 |
+
"http://images.cocodataset.org/zips/train2017.zip", # 19G, 118k images
|
| 61 |
+
"http://images.cocodataset.org/zips/val2017.zip", # 1G, 5k images
|
| 62 |
+
"http://images.cocodataset.org/zips/test2017.zip", # 7G, 41k images (optional)
|
| 63 |
+
]
|
| 64 |
+
download(urls, dir=dir / "images", threads=3)
|
vendor/ultralytics/cfg/datasets/coco.yaml
ADDED
|
@@ -0,0 +1,118 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Ultralytics π AGPL-3.0 License - https://ultralytics.com/license
|
| 2 |
+
|
| 3 |
+
# COCO 2017 dataset https://cocodataset.org by Microsoft
|
| 4 |
+
# Documentation: https://docs.ultralytics.com/datasets/detect/coco/
|
| 5 |
+
# Example usage: yolo train data=coco.yaml
|
| 6 |
+
# parent
|
| 7 |
+
# βββ ultralytics
|
| 8 |
+
# βββ datasets
|
| 9 |
+
# βββ coco β downloads here (20.1 GB)
|
| 10 |
+
|
| 11 |
+
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
| 12 |
+
path: coco # dataset root dir
|
| 13 |
+
train: train2017.txt # train images (relative to 'path') 118287 images
|
| 14 |
+
val: val2017.txt # val images (relative to 'path') 5000 images
|
| 15 |
+
test: test-dev2017.txt # 20288 of 40670 images, submit to https://competitions.codalab.org/competitions/20794
|
| 16 |
+
|
| 17 |
+
# Classes
|
| 18 |
+
names:
|
| 19 |
+
0: person
|
| 20 |
+
1: bicycle
|
| 21 |
+
2: car
|
| 22 |
+
3: motorcycle
|
| 23 |
+
4: airplane
|
| 24 |
+
5: bus
|
| 25 |
+
6: train
|
| 26 |
+
7: truck
|
| 27 |
+
8: boat
|
| 28 |
+
9: traffic light
|
| 29 |
+
10: fire hydrant
|
| 30 |
+
11: stop sign
|
| 31 |
+
12: parking meter
|
| 32 |
+
13: bench
|
| 33 |
+
14: bird
|
| 34 |
+
15: cat
|
| 35 |
+
16: dog
|
| 36 |
+
17: horse
|
| 37 |
+
18: sheep
|
| 38 |
+
19: cow
|
| 39 |
+
20: elephant
|
| 40 |
+
21: bear
|
| 41 |
+
22: zebra
|
| 42 |
+
23: giraffe
|
| 43 |
+
24: backpack
|
| 44 |
+
25: umbrella
|
| 45 |
+
26: handbag
|
| 46 |
+
27: tie
|
| 47 |
+
28: suitcase
|
| 48 |
+
29: frisbee
|
| 49 |
+
30: skis
|
| 50 |
+
31: snowboard
|
| 51 |
+
32: sports ball
|
| 52 |
+
33: kite
|
| 53 |
+
34: baseball bat
|
| 54 |
+
35: baseball glove
|
| 55 |
+
36: skateboard
|
| 56 |
+
37: surfboard
|
| 57 |
+
38: tennis racket
|
| 58 |
+
39: bottle
|
| 59 |
+
40: wine glass
|
| 60 |
+
41: cup
|
| 61 |
+
42: fork
|
| 62 |
+
43: knife
|
| 63 |
+
44: spoon
|
| 64 |
+
45: bowl
|
| 65 |
+
46: banana
|
| 66 |
+
47: apple
|
| 67 |
+
48: sandwich
|
| 68 |
+
49: orange
|
| 69 |
+
50: broccoli
|
| 70 |
+
51: carrot
|
| 71 |
+
52: hot dog
|
| 72 |
+
53: pizza
|
| 73 |
+
54: donut
|
| 74 |
+
55: cake
|
| 75 |
+
56: chair
|
| 76 |
+
57: couch
|
| 77 |
+
58: potted plant
|
| 78 |
+
59: bed
|
| 79 |
+
60: dining table
|
| 80 |
+
61: toilet
|
| 81 |
+
62: tv
|
| 82 |
+
63: laptop
|
| 83 |
+
64: mouse
|
| 84 |
+
65: remote
|
| 85 |
+
66: keyboard
|
| 86 |
+
67: cell phone
|
| 87 |
+
68: microwave
|
| 88 |
+
69: oven
|
| 89 |
+
70: toaster
|
| 90 |
+
71: sink
|
| 91 |
+
72: refrigerator
|
| 92 |
+
73: book
|
| 93 |
+
74: clock
|
| 94 |
+
75: vase
|
| 95 |
+
76: scissors
|
| 96 |
+
77: teddy bear
|
| 97 |
+
78: hair drier
|
| 98 |
+
79: toothbrush
|
| 99 |
+
|
| 100 |
+
# Download script/URL (optional)
|
| 101 |
+
download: |
|
| 102 |
+
from pathlib import Path
|
| 103 |
+
|
| 104 |
+
from ultralytics.utils import ASSETS_URL
|
| 105 |
+
from ultralytics.utils.downloads import download
|
| 106 |
+
|
| 107 |
+
# Download labels
|
| 108 |
+
segments = True # segment or box labels
|
| 109 |
+
dir = Path(yaml["path"]) # dataset root dir
|
| 110 |
+
urls = [ASSETS_URL + ("/coco2017labels-segments.zip" if segments else "/coco2017labels.zip")] # labels
|
| 111 |
+
download(urls, dir=dir.parent)
|
| 112 |
+
# Download data
|
| 113 |
+
urls = [
|
| 114 |
+
"http://images.cocodataset.org/zips/train2017.zip", # 19G, 118k images
|
| 115 |
+
"http://images.cocodataset.org/zips/val2017.zip", # 1G, 5k images
|
| 116 |
+
"http://images.cocodataset.org/zips/test2017.zip", # 7G, 41k images (optional)
|
| 117 |
+
]
|
| 118 |
+
download(urls, dir=dir / "images", threads=3)
|
vendor/ultralytics/cfg/datasets/coco12-formats.yaml
ADDED
|
@@ -0,0 +1,101 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Ultralytics π AGPL-3.0 License - https://ultralytics.com/license
|
| 2 |
+
|
| 3 |
+
# COCO12-Formats dataset (12 images testing all supported image formats) by Ultralytics
|
| 4 |
+
# Documentation: https://docs.ultralytics.com/datasets/detect/coco12-formats/
|
| 5 |
+
# Example usage: yolo train data=coco12-formats.yaml
|
| 6 |
+
# parent
|
| 7 |
+
# βββ ultralytics
|
| 8 |
+
# βββ datasets
|
| 9 |
+
# βββ coco12-formats β downloads here (1 MB)
|
| 10 |
+
|
| 11 |
+
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
| 12 |
+
path: coco12-formats # dataset root dir
|
| 13 |
+
train: images/train # train images (relative to 'path') 6 images
|
| 14 |
+
val: images/val # val images (relative to 'path') 6 images
|
| 15 |
+
test: # test images (optional)
|
| 16 |
+
|
| 17 |
+
# Classes
|
| 18 |
+
names:
|
| 19 |
+
0: person
|
| 20 |
+
1: bicycle
|
| 21 |
+
2: car
|
| 22 |
+
3: motorcycle
|
| 23 |
+
4: airplane
|
| 24 |
+
5: bus
|
| 25 |
+
6: train
|
| 26 |
+
7: truck
|
| 27 |
+
8: boat
|
| 28 |
+
9: traffic light
|
| 29 |
+
10: fire hydrant
|
| 30 |
+
11: stop sign
|
| 31 |
+
12: parking meter
|
| 32 |
+
13: bench
|
| 33 |
+
14: bird
|
| 34 |
+
15: cat
|
| 35 |
+
16: dog
|
| 36 |
+
17: horse
|
| 37 |
+
18: sheep
|
| 38 |
+
19: cow
|
| 39 |
+
20: elephant
|
| 40 |
+
21: bear
|
| 41 |
+
22: zebra
|
| 42 |
+
23: giraffe
|
| 43 |
+
24: backpack
|
| 44 |
+
25: umbrella
|
| 45 |
+
26: handbag
|
| 46 |
+
27: tie
|
| 47 |
+
28: suitcase
|
| 48 |
+
29: frisbee
|
| 49 |
+
30: skis
|
| 50 |
+
31: snowboard
|
| 51 |
+
32: sports ball
|
| 52 |
+
33: kite
|
| 53 |
+
34: baseball bat
|
| 54 |
+
35: baseball glove
|
| 55 |
+
36: skateboard
|
| 56 |
+
37: surfboard
|
| 57 |
+
38: tennis racket
|
| 58 |
+
39: bottle
|
| 59 |
+
40: wine glass
|
| 60 |
+
41: cup
|
| 61 |
+
42: fork
|
| 62 |
+
43: knife
|
| 63 |
+
44: spoon
|
| 64 |
+
45: bowl
|
| 65 |
+
46: banana
|
| 66 |
+
47: apple
|
| 67 |
+
48: sandwich
|
| 68 |
+
49: orange
|
| 69 |
+
50: broccoli
|
| 70 |
+
51: carrot
|
| 71 |
+
52: hot dog
|
| 72 |
+
53: pizza
|
| 73 |
+
54: donut
|
| 74 |
+
55: cake
|
| 75 |
+
56: chair
|
| 76 |
+
57: couch
|
| 77 |
+
58: potted plant
|
| 78 |
+
59: bed
|
| 79 |
+
60: dining table
|
| 80 |
+
61: toilet
|
| 81 |
+
62: tv
|
| 82 |
+
63: laptop
|
| 83 |
+
64: mouse
|
| 84 |
+
65: remote
|
| 85 |
+
66: keyboard
|
| 86 |
+
67: cell phone
|
| 87 |
+
68: microwave
|
| 88 |
+
69: oven
|
| 89 |
+
70: toaster
|
| 90 |
+
71: sink
|
| 91 |
+
72: refrigerator
|
| 92 |
+
73: book
|
| 93 |
+
74: clock
|
| 94 |
+
75: vase
|
| 95 |
+
76: scissors
|
| 96 |
+
77: teddy bear
|
| 97 |
+
78: hair drier
|
| 98 |
+
79: toothbrush
|
| 99 |
+
|
| 100 |
+
# Download script/URL (optional)
|
| 101 |
+
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco12-formats.zip
|
vendor/ultralytics/cfg/datasets/coco128-seg.yaml
ADDED
|
@@ -0,0 +1,101 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Ultralytics π AGPL-3.0 License - https://ultralytics.com/license
|
| 2 |
+
|
| 3 |
+
# COCO128-seg dataset https://www.kaggle.com/datasets/ultralytics/coco128 (first 128 images from COCO train2017) by Ultralytics
|
| 4 |
+
# Documentation: https://docs.ultralytics.com/datasets/segment/coco/
|
| 5 |
+
# Example usage: yolo train data=coco128-seg.yaml
|
| 6 |
+
# parent
|
| 7 |
+
# βββ ultralytics
|
| 8 |
+
# βββ datasets
|
| 9 |
+
# βββ coco128-seg β downloads here (7 MB)
|
| 10 |
+
|
| 11 |
+
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
| 12 |
+
path: coco128-seg # dataset root dir
|
| 13 |
+
train: images/train2017 # train images (relative to 'path') 128 images
|
| 14 |
+
val: images/train2017 # val images (relative to 'path') 128 images
|
| 15 |
+
test: # test images (optional)
|
| 16 |
+
|
| 17 |
+
# Classes
|
| 18 |
+
names:
|
| 19 |
+
0: person
|
| 20 |
+
1: bicycle
|
| 21 |
+
2: car
|
| 22 |
+
3: motorcycle
|
| 23 |
+
4: airplane
|
| 24 |
+
5: bus
|
| 25 |
+
6: train
|
| 26 |
+
7: truck
|
| 27 |
+
8: boat
|
| 28 |
+
9: traffic light
|
| 29 |
+
10: fire hydrant
|
| 30 |
+
11: stop sign
|
| 31 |
+
12: parking meter
|
| 32 |
+
13: bench
|
| 33 |
+
14: bird
|
| 34 |
+
15: cat
|
| 35 |
+
16: dog
|
| 36 |
+
17: horse
|
| 37 |
+
18: sheep
|
| 38 |
+
19: cow
|
| 39 |
+
20: elephant
|
| 40 |
+
21: bear
|
| 41 |
+
22: zebra
|
| 42 |
+
23: giraffe
|
| 43 |
+
24: backpack
|
| 44 |
+
25: umbrella
|
| 45 |
+
26: handbag
|
| 46 |
+
27: tie
|
| 47 |
+
28: suitcase
|
| 48 |
+
29: frisbee
|
| 49 |
+
30: skis
|
| 50 |
+
31: snowboard
|
| 51 |
+
32: sports ball
|
| 52 |
+
33: kite
|
| 53 |
+
34: baseball bat
|
| 54 |
+
35: baseball glove
|
| 55 |
+
36: skateboard
|
| 56 |
+
37: surfboard
|
| 57 |
+
38: tennis racket
|
| 58 |
+
39: bottle
|
| 59 |
+
40: wine glass
|
| 60 |
+
41: cup
|
| 61 |
+
42: fork
|
| 62 |
+
43: knife
|
| 63 |
+
44: spoon
|
| 64 |
+
45: bowl
|
| 65 |
+
46: banana
|
| 66 |
+
47: apple
|
| 67 |
+
48: sandwich
|
| 68 |
+
49: orange
|
| 69 |
+
50: broccoli
|
| 70 |
+
51: carrot
|
| 71 |
+
52: hot dog
|
| 72 |
+
53: pizza
|
| 73 |
+
54: donut
|
| 74 |
+
55: cake
|
| 75 |
+
56: chair
|
| 76 |
+
57: couch
|
| 77 |
+
58: potted plant
|
| 78 |
+
59: bed
|
| 79 |
+
60: dining table
|
| 80 |
+
61: toilet
|
| 81 |
+
62: tv
|
| 82 |
+
63: laptop
|
| 83 |
+
64: mouse
|
| 84 |
+
65: remote
|
| 85 |
+
66: keyboard
|
| 86 |
+
67: cell phone
|
| 87 |
+
68: microwave
|
| 88 |
+
69: oven
|
| 89 |
+
70: toaster
|
| 90 |
+
71: sink
|
| 91 |
+
72: refrigerator
|
| 92 |
+
73: book
|
| 93 |
+
74: clock
|
| 94 |
+
75: vase
|
| 95 |
+
76: scissors
|
| 96 |
+
77: teddy bear
|
| 97 |
+
78: hair drier
|
| 98 |
+
79: toothbrush
|
| 99 |
+
|
| 100 |
+
# Download script/URL (optional)
|
| 101 |
+
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco128-seg.zip
|
vendor/ultralytics/cfg/datasets/coco128.yaml
ADDED
|
@@ -0,0 +1,101 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Ultralytics π AGPL-3.0 License - https://ultralytics.com/license
|
| 2 |
+
|
| 3 |
+
# COCO128 dataset https://www.kaggle.com/datasets/ultralytics/coco128 (first 128 images from COCO train2017) by Ultralytics
|
| 4 |
+
# Documentation: https://docs.ultralytics.com/datasets/detect/coco/
|
| 5 |
+
# Example usage: yolo train data=coco128.yaml
|
| 6 |
+
# parent
|
| 7 |
+
# βββ ultralytics
|
| 8 |
+
# βββ datasets
|
| 9 |
+
# βββ coco128 β downloads here (7 MB)
|
| 10 |
+
|
| 11 |
+
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
| 12 |
+
path: coco128 # dataset root dir
|
| 13 |
+
train: images/train2017 # train images (relative to 'path') 128 images
|
| 14 |
+
val: images/train2017 # val images (relative to 'path') 128 images
|
| 15 |
+
test: # test images (optional)
|
| 16 |
+
|
| 17 |
+
# Classes
|
| 18 |
+
names:
|
| 19 |
+
0: person
|
| 20 |
+
1: bicycle
|
| 21 |
+
2: car
|
| 22 |
+
3: motorcycle
|
| 23 |
+
4: airplane
|
| 24 |
+
5: bus
|
| 25 |
+
6: train
|
| 26 |
+
7: truck
|
| 27 |
+
8: boat
|
| 28 |
+
9: traffic light
|
| 29 |
+
10: fire hydrant
|
| 30 |
+
11: stop sign
|
| 31 |
+
12: parking meter
|
| 32 |
+
13: bench
|
| 33 |
+
14: bird
|
| 34 |
+
15: cat
|
| 35 |
+
16: dog
|
| 36 |
+
17: horse
|
| 37 |
+
18: sheep
|
| 38 |
+
19: cow
|
| 39 |
+
20: elephant
|
| 40 |
+
21: bear
|
| 41 |
+
22: zebra
|
| 42 |
+
23: giraffe
|
| 43 |
+
24: backpack
|
| 44 |
+
25: umbrella
|
| 45 |
+
26: handbag
|
| 46 |
+
27: tie
|
| 47 |
+
28: suitcase
|
| 48 |
+
29: frisbee
|
| 49 |
+
30: skis
|
| 50 |
+
31: snowboard
|
| 51 |
+
32: sports ball
|
| 52 |
+
33: kite
|
| 53 |
+
34: baseball bat
|
| 54 |
+
35: baseball glove
|
| 55 |
+
36: skateboard
|
| 56 |
+
37: surfboard
|
| 57 |
+
38: tennis racket
|
| 58 |
+
39: bottle
|
| 59 |
+
40: wine glass
|
| 60 |
+
41: cup
|
| 61 |
+
42: fork
|
| 62 |
+
43: knife
|
| 63 |
+
44: spoon
|
| 64 |
+
45: bowl
|
| 65 |
+
46: banana
|
| 66 |
+
47: apple
|
| 67 |
+
48: sandwich
|
| 68 |
+
49: orange
|
| 69 |
+
50: broccoli
|
| 70 |
+
51: carrot
|
| 71 |
+
52: hot dog
|
| 72 |
+
53: pizza
|
| 73 |
+
54: donut
|
| 74 |
+
55: cake
|
| 75 |
+
56: chair
|
| 76 |
+
57: couch
|
| 77 |
+
58: potted plant
|
| 78 |
+
59: bed
|
| 79 |
+
60: dining table
|
| 80 |
+
61: toilet
|
| 81 |
+
62: tv
|
| 82 |
+
63: laptop
|
| 83 |
+
64: mouse
|
| 84 |
+
65: remote
|
| 85 |
+
66: keyboard
|
| 86 |
+
67: cell phone
|
| 87 |
+
68: microwave
|
| 88 |
+
69: oven
|
| 89 |
+
70: toaster
|
| 90 |
+
71: sink
|
| 91 |
+
72: refrigerator
|
| 92 |
+
73: book
|
| 93 |
+
74: clock
|
| 94 |
+
75: vase
|
| 95 |
+
76: scissors
|
| 96 |
+
77: teddy bear
|
| 97 |
+
78: hair drier
|
| 98 |
+
79: toothbrush
|
| 99 |
+
|
| 100 |
+
# Download script/URL (optional)
|
| 101 |
+
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco128.zip
|
vendor/ultralytics/cfg/datasets/coco8-grayscale.yaml
ADDED
|
@@ -0,0 +1,103 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Ultralytics π AGPL-3.0 License - https://ultralytics.com/license
|
| 2 |
+
|
| 3 |
+
# COCO8-Grayscale dataset (first 8 images from COCO train2017) by Ultralytics
|
| 4 |
+
# Documentation: https://docs.ultralytics.com/datasets/detect/coco8-grayscale/
|
| 5 |
+
# Example usage: yolo train data=coco8-grayscale.yaml
|
| 6 |
+
# parent
|
| 7 |
+
# βββ ultralytics
|
| 8 |
+
# βββ datasets
|
| 9 |
+
# βββ coco8-grayscale β downloads here (1 MB)
|
| 10 |
+
|
| 11 |
+
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
| 12 |
+
path: coco8-grayscale # dataset root dir
|
| 13 |
+
train: images/train # train images (relative to 'path') 4 images
|
| 14 |
+
val: images/val # val images (relative to 'path') 4 images
|
| 15 |
+
test: # test images (optional)
|
| 16 |
+
|
| 17 |
+
channels: 1
|
| 18 |
+
|
| 19 |
+
# Classes
|
| 20 |
+
names:
|
| 21 |
+
0: person
|
| 22 |
+
1: bicycle
|
| 23 |
+
2: car
|
| 24 |
+
3: motorcycle
|
| 25 |
+
4: airplane
|
| 26 |
+
5: bus
|
| 27 |
+
6: train
|
| 28 |
+
7: truck
|
| 29 |
+
8: boat
|
| 30 |
+
9: traffic light
|
| 31 |
+
10: fire hydrant
|
| 32 |
+
11: stop sign
|
| 33 |
+
12: parking meter
|
| 34 |
+
13: bench
|
| 35 |
+
14: bird
|
| 36 |
+
15: cat
|
| 37 |
+
16: dog
|
| 38 |
+
17: horse
|
| 39 |
+
18: sheep
|
| 40 |
+
19: cow
|
| 41 |
+
20: elephant
|
| 42 |
+
21: bear
|
| 43 |
+
22: zebra
|
| 44 |
+
23: giraffe
|
| 45 |
+
24: backpack
|
| 46 |
+
25: umbrella
|
| 47 |
+
26: handbag
|
| 48 |
+
27: tie
|
| 49 |
+
28: suitcase
|
| 50 |
+
29: frisbee
|
| 51 |
+
30: skis
|
| 52 |
+
31: snowboard
|
| 53 |
+
32: sports ball
|
| 54 |
+
33: kite
|
| 55 |
+
34: baseball bat
|
| 56 |
+
35: baseball glove
|
| 57 |
+
36: skateboard
|
| 58 |
+
37: surfboard
|
| 59 |
+
38: tennis racket
|
| 60 |
+
39: bottle
|
| 61 |
+
40: wine glass
|
| 62 |
+
41: cup
|
| 63 |
+
42: fork
|
| 64 |
+
43: knife
|
| 65 |
+
44: spoon
|
| 66 |
+
45: bowl
|
| 67 |
+
46: banana
|
| 68 |
+
47: apple
|
| 69 |
+
48: sandwich
|
| 70 |
+
49: orange
|
| 71 |
+
50: broccoli
|
| 72 |
+
51: carrot
|
| 73 |
+
52: hot dog
|
| 74 |
+
53: pizza
|
| 75 |
+
54: donut
|
| 76 |
+
55: cake
|
| 77 |
+
56: chair
|
| 78 |
+
57: couch
|
| 79 |
+
58: potted plant
|
| 80 |
+
59: bed
|
| 81 |
+
60: dining table
|
| 82 |
+
61: toilet
|
| 83 |
+
62: tv
|
| 84 |
+
63: laptop
|
| 85 |
+
64: mouse
|
| 86 |
+
65: remote
|
| 87 |
+
66: keyboard
|
| 88 |
+
67: cell phone
|
| 89 |
+
68: microwave
|
| 90 |
+
69: oven
|
| 91 |
+
70: toaster
|
| 92 |
+
71: sink
|
| 93 |
+
72: refrigerator
|
| 94 |
+
73: book
|
| 95 |
+
74: clock
|
| 96 |
+
75: vase
|
| 97 |
+
76: scissors
|
| 98 |
+
77: teddy bear
|
| 99 |
+
78: hair drier
|
| 100 |
+
79: toothbrush
|
| 101 |
+
|
| 102 |
+
# Download script/URL (optional)
|
| 103 |
+
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8-grayscale.zip
|
vendor/ultralytics/cfg/datasets/coco8-multispectral.yaml
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Ultralytics π AGPL-3.0 License - https://ultralytics.com/license
|
| 2 |
+
|
| 3 |
+
# COCO8-Multispectral dataset (COCO8 images interpolated across 10 channels in the visual spectrum) by Ultralytics
|
| 4 |
+
# Documentation: https://docs.ultralytics.com/datasets/detect/coco8-multispectral/
|
| 5 |
+
# Example usage: yolo train data=coco8-multispectral.yaml
|
| 6 |
+
# parent
|
| 7 |
+
# βββ ultralytics
|
| 8 |
+
# βββ datasets
|
| 9 |
+
# βββ coco8-multispectral β downloads here (20.2 MB)
|
| 10 |
+
|
| 11 |
+
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
| 12 |
+
path: coco8-multispectral # dataset root dir
|
| 13 |
+
train: images/train # train images (relative to 'path') 4 images
|
| 14 |
+
val: images/val # val images (relative to 'path') 4 images
|
| 15 |
+
test: # test images (optional)
|
| 16 |
+
|
| 17 |
+
# Number of multispectral image channels
|
| 18 |
+
channels: 10
|
| 19 |
+
|
| 20 |
+
# Classes
|
| 21 |
+
names:
|
| 22 |
+
0: person
|
| 23 |
+
1: bicycle
|
| 24 |
+
2: car
|
| 25 |
+
3: motorcycle
|
| 26 |
+
4: airplane
|
| 27 |
+
5: bus
|
| 28 |
+
6: train
|
| 29 |
+
7: truck
|
| 30 |
+
8: boat
|
| 31 |
+
9: traffic light
|
| 32 |
+
10: fire hydrant
|
| 33 |
+
11: stop sign
|
| 34 |
+
12: parking meter
|
| 35 |
+
13: bench
|
| 36 |
+
14: bird
|
| 37 |
+
15: cat
|
| 38 |
+
16: dog
|
| 39 |
+
17: horse
|
| 40 |
+
18: sheep
|
| 41 |
+
19: cow
|
| 42 |
+
20: elephant
|
| 43 |
+
21: bear
|
| 44 |
+
22: zebra
|
| 45 |
+
23: giraffe
|
| 46 |
+
24: backpack
|
| 47 |
+
25: umbrella
|
| 48 |
+
26: handbag
|
| 49 |
+
27: tie
|
| 50 |
+
28: suitcase
|
| 51 |
+
29: frisbee
|
| 52 |
+
30: skis
|
| 53 |
+
31: snowboard
|
| 54 |
+
32: sports ball
|
| 55 |
+
33: kite
|
| 56 |
+
34: baseball bat
|
| 57 |
+
35: baseball glove
|
| 58 |
+
36: skateboard
|
| 59 |
+
37: surfboard
|
| 60 |
+
38: tennis racket
|
| 61 |
+
39: bottle
|
| 62 |
+
40: wine glass
|
| 63 |
+
41: cup
|
| 64 |
+
42: fork
|
| 65 |
+
43: knife
|
| 66 |
+
44: spoon
|
| 67 |
+
45: bowl
|
| 68 |
+
46: banana
|
| 69 |
+
47: apple
|
| 70 |
+
48: sandwich
|
| 71 |
+
49: orange
|
| 72 |
+
50: broccoli
|
| 73 |
+
51: carrot
|
| 74 |
+
52: hot dog
|
| 75 |
+
53: pizza
|
| 76 |
+
54: donut
|
| 77 |
+
55: cake
|
| 78 |
+
56: chair
|
| 79 |
+
57: couch
|
| 80 |
+
58: potted plant
|
| 81 |
+
59: bed
|
| 82 |
+
60: dining table
|
| 83 |
+
61: toilet
|
| 84 |
+
62: tv
|
| 85 |
+
63: laptop
|
| 86 |
+
64: mouse
|
| 87 |
+
65: remote
|
| 88 |
+
66: keyboard
|
| 89 |
+
67: cell phone
|
| 90 |
+
68: microwave
|
| 91 |
+
69: oven
|
| 92 |
+
70: toaster
|
| 93 |
+
71: sink
|
| 94 |
+
72: refrigerator
|
| 95 |
+
73: book
|
| 96 |
+
74: clock
|
| 97 |
+
75: vase
|
| 98 |
+
76: scissors
|
| 99 |
+
77: teddy bear
|
| 100 |
+
78: hair drier
|
| 101 |
+
79: toothbrush
|
| 102 |
+
|
| 103 |
+
# Download script/URL (optional)
|
| 104 |
+
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8-multispectral.zip
|
vendor/ultralytics/cfg/datasets/coco8-pose.yaml
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Ultralytics π AGPL-3.0 License - https://ultralytics.com/license
|
| 2 |
+
|
| 3 |
+
# COCO8-pose dataset (first 8 images from COCO train2017) by Ultralytics
|
| 4 |
+
# Documentation: https://docs.ultralytics.com/datasets/pose/coco8-pose/
|
| 5 |
+
# Example usage: yolo train data=coco8-pose.yaml
|
| 6 |
+
# parent
|
| 7 |
+
# βββ ultralytics
|
| 8 |
+
# βββ datasets
|
| 9 |
+
# βββ coco8-pose β downloads here (1 MB)
|
| 10 |
+
|
| 11 |
+
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
| 12 |
+
path: coco8-pose # dataset root dir
|
| 13 |
+
train: images/train # train images (relative to 'path') 4 images
|
| 14 |
+
val: images/val # val images (relative to 'path') 4 images
|
| 15 |
+
test: # test images (optional)
|
| 16 |
+
|
| 17 |
+
# Keypoints
|
| 18 |
+
kpt_shape: [17, 3] # number of keypoints, number of dims (2 for x,y or 3 for x,y,visible)
|
| 19 |
+
flip_idx: [0, 2, 1, 4, 3, 6, 5, 8, 7, 10, 9, 12, 11, 14, 13, 16, 15]
|
| 20 |
+
|
| 21 |
+
# Classes
|
| 22 |
+
names:
|
| 23 |
+
0: person
|
| 24 |
+
|
| 25 |
+
# Keypoint names per class
|
| 26 |
+
kpt_names:
|
| 27 |
+
0:
|
| 28 |
+
- nose
|
| 29 |
+
- left_eye
|
| 30 |
+
- right_eye
|
| 31 |
+
- left_ear
|
| 32 |
+
- right_ear
|
| 33 |
+
- left_shoulder
|
| 34 |
+
- right_shoulder
|
| 35 |
+
- left_elbow
|
| 36 |
+
- right_elbow
|
| 37 |
+
- left_wrist
|
| 38 |
+
- right_wrist
|
| 39 |
+
- left_hip
|
| 40 |
+
- right_hip
|
| 41 |
+
- left_knee
|
| 42 |
+
- right_knee
|
| 43 |
+
- left_ankle
|
| 44 |
+
- right_ankle
|
| 45 |
+
|
| 46 |
+
# Download script/URL (optional)
|
| 47 |
+
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8-pose.zip
|
vendor/ultralytics/cfg/datasets/coco8-seg.yaml
ADDED
|
@@ -0,0 +1,101 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Ultralytics π AGPL-3.0 License - https://ultralytics.com/license
|
| 2 |
+
|
| 3 |
+
# COCO8-seg dataset (first 8 images from COCO train2017) by Ultralytics
|
| 4 |
+
# Documentation: https://docs.ultralytics.com/datasets/segment/coco8-seg/
|
| 5 |
+
# Example usage: yolo train data=coco8-seg.yaml
|
| 6 |
+
# parent
|
| 7 |
+
# βββ ultralytics
|
| 8 |
+
# βββ datasets
|
| 9 |
+
# βββ coco8-seg β downloads here (1 MB)
|
| 10 |
+
|
| 11 |
+
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
| 12 |
+
path: coco8-seg # dataset root dir
|
| 13 |
+
train: images/train # train images (relative to 'path') 4 images
|
| 14 |
+
val: images/val # val images (relative to 'path') 4 images
|
| 15 |
+
test: # test images (optional)
|
| 16 |
+
|
| 17 |
+
# Classes
|
| 18 |
+
names:
|
| 19 |
+
0: person
|
| 20 |
+
1: bicycle
|
| 21 |
+
2: car
|
| 22 |
+
3: motorcycle
|
| 23 |
+
4: airplane
|
| 24 |
+
5: bus
|
| 25 |
+
6: train
|
| 26 |
+
7: truck
|
| 27 |
+
8: boat
|
| 28 |
+
9: traffic light
|
| 29 |
+
10: fire hydrant
|
| 30 |
+
11: stop sign
|
| 31 |
+
12: parking meter
|
| 32 |
+
13: bench
|
| 33 |
+
14: bird
|
| 34 |
+
15: cat
|
| 35 |
+
16: dog
|
| 36 |
+
17: horse
|
| 37 |
+
18: sheep
|
| 38 |
+
19: cow
|
| 39 |
+
20: elephant
|
| 40 |
+
21: bear
|
| 41 |
+
22: zebra
|
| 42 |
+
23: giraffe
|
| 43 |
+
24: backpack
|
| 44 |
+
25: umbrella
|
| 45 |
+
26: handbag
|
| 46 |
+
27: tie
|
| 47 |
+
28: suitcase
|
| 48 |
+
29: frisbee
|
| 49 |
+
30: skis
|
| 50 |
+
31: snowboard
|
| 51 |
+
32: sports ball
|
| 52 |
+
33: kite
|
| 53 |
+
34: baseball bat
|
| 54 |
+
35: baseball glove
|
| 55 |
+
36: skateboard
|
| 56 |
+
37: surfboard
|
| 57 |
+
38: tennis racket
|
| 58 |
+
39: bottle
|
| 59 |
+
40: wine glass
|
| 60 |
+
41: cup
|
| 61 |
+
42: fork
|
| 62 |
+
43: knife
|
| 63 |
+
44: spoon
|
| 64 |
+
45: bowl
|
| 65 |
+
46: banana
|
| 66 |
+
47: apple
|
| 67 |
+
48: sandwich
|
| 68 |
+
49: orange
|
| 69 |
+
50: broccoli
|
| 70 |
+
51: carrot
|
| 71 |
+
52: hot dog
|
| 72 |
+
53: pizza
|
| 73 |
+
54: donut
|
| 74 |
+
55: cake
|
| 75 |
+
56: chair
|
| 76 |
+
57: couch
|
| 77 |
+
58: potted plant
|
| 78 |
+
59: bed
|
| 79 |
+
60: dining table
|
| 80 |
+
61: toilet
|
| 81 |
+
62: tv
|
| 82 |
+
63: laptop
|
| 83 |
+
64: mouse
|
| 84 |
+
65: remote
|
| 85 |
+
66: keyboard
|
| 86 |
+
67: cell phone
|
| 87 |
+
68: microwave
|
| 88 |
+
69: oven
|
| 89 |
+
70: toaster
|
| 90 |
+
71: sink
|
| 91 |
+
72: refrigerator
|
| 92 |
+
73: book
|
| 93 |
+
74: clock
|
| 94 |
+
75: vase
|
| 95 |
+
76: scissors
|
| 96 |
+
77: teddy bear
|
| 97 |
+
78: hair drier
|
| 98 |
+
79: toothbrush
|
| 99 |
+
|
| 100 |
+
# Download script/URL (optional)
|
| 101 |
+
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8-seg.zip
|
vendor/ultralytics/cfg/datasets/coco8.yaml
ADDED
|
@@ -0,0 +1,101 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Ultralytics π AGPL-3.0 License - https://ultralytics.com/license
|
| 2 |
+
|
| 3 |
+
# COCO8 dataset (first 8 images from COCO train2017) by Ultralytics
|
| 4 |
+
# Documentation: https://docs.ultralytics.com/datasets/detect/coco8/
|
| 5 |
+
# Example usage: yolo train data=coco8.yaml
|
| 6 |
+
# parent
|
| 7 |
+
# βββ ultralytics
|
| 8 |
+
# βββ datasets
|
| 9 |
+
# βββ coco8 β downloads here (1 MB)
|
| 10 |
+
|
| 11 |
+
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
| 12 |
+
path: coco8 # dataset root dir
|
| 13 |
+
train: images/train # train images (relative to 'path') 4 images
|
| 14 |
+
val: images/val # val images (relative to 'path') 4 images
|
| 15 |
+
test: # test images (optional)
|
| 16 |
+
|
| 17 |
+
# Classes
|
| 18 |
+
names:
|
| 19 |
+
0: person
|
| 20 |
+
1: bicycle
|
| 21 |
+
2: car
|
| 22 |
+
3: motorcycle
|
| 23 |
+
4: airplane
|
| 24 |
+
5: bus
|
| 25 |
+
6: train
|
| 26 |
+
7: truck
|
| 27 |
+
8: boat
|
| 28 |
+
9: traffic light
|
| 29 |
+
10: fire hydrant
|
| 30 |
+
11: stop sign
|
| 31 |
+
12: parking meter
|
| 32 |
+
13: bench
|
| 33 |
+
14: bird
|
| 34 |
+
15: cat
|
| 35 |
+
16: dog
|
| 36 |
+
17: horse
|
| 37 |
+
18: sheep
|
| 38 |
+
19: cow
|
| 39 |
+
20: elephant
|
| 40 |
+
21: bear
|
| 41 |
+
22: zebra
|
| 42 |
+
23: giraffe
|
| 43 |
+
24: backpack
|
| 44 |
+
25: umbrella
|
| 45 |
+
26: handbag
|
| 46 |
+
27: tie
|
| 47 |
+
28: suitcase
|
| 48 |
+
29: frisbee
|
| 49 |
+
30: skis
|
| 50 |
+
31: snowboard
|
| 51 |
+
32: sports ball
|
| 52 |
+
33: kite
|
| 53 |
+
34: baseball bat
|
| 54 |
+
35: baseball glove
|
| 55 |
+
36: skateboard
|
| 56 |
+
37: surfboard
|
| 57 |
+
38: tennis racket
|
| 58 |
+
39: bottle
|
| 59 |
+
40: wine glass
|
| 60 |
+
41: cup
|
| 61 |
+
42: fork
|
| 62 |
+
43: knife
|
| 63 |
+
44: spoon
|
| 64 |
+
45: bowl
|
| 65 |
+
46: banana
|
| 66 |
+
47: apple
|
| 67 |
+
48: sandwich
|
| 68 |
+
49: orange
|
| 69 |
+
50: broccoli
|
| 70 |
+
51: carrot
|
| 71 |
+
52: hot dog
|
| 72 |
+
53: pizza
|
| 73 |
+
54: donut
|
| 74 |
+
55: cake
|
| 75 |
+
56: chair
|
| 76 |
+
57: couch
|
| 77 |
+
58: potted plant
|
| 78 |
+
59: bed
|
| 79 |
+
60: dining table
|
| 80 |
+
61: toilet
|
| 81 |
+
62: tv
|
| 82 |
+
63: laptop
|
| 83 |
+
64: mouse
|
| 84 |
+
65: remote
|
| 85 |
+
66: keyboard
|
| 86 |
+
67: cell phone
|
| 87 |
+
68: microwave
|
| 88 |
+
69: oven
|
| 89 |
+
70: toaster
|
| 90 |
+
71: sink
|
| 91 |
+
72: refrigerator
|
| 92 |
+
73: book
|
| 93 |
+
74: clock
|
| 94 |
+
75: vase
|
| 95 |
+
76: scissors
|
| 96 |
+
77: teddy bear
|
| 97 |
+
78: hair drier
|
| 98 |
+
79: toothbrush
|
| 99 |
+
|
| 100 |
+
# Download script/URL (optional)
|
| 101 |
+
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8.zip
|
vendor/ultralytics/cfg/datasets/construction-ppe.yaml
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Ultralytics π AGPL-3.0 License - https://ultralytics.com/license
|
| 2 |
+
|
| 3 |
+
# Construction-PPE dataset by Ultralytics
|
| 4 |
+
# Documentation: https://docs.ultralytics.com/datasets/detect/construction-ppe/
|
| 5 |
+
# Example usage: yolo train data=construction-ppe.yaml
|
| 6 |
+
# parent
|
| 7 |
+
# βββ ultralytics
|
| 8 |
+
# βββ datasets
|
| 9 |
+
# βββ construction-ppe β downloads here (178.4 MB)
|
| 10 |
+
|
| 11 |
+
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
| 12 |
+
path: construction-ppe # dataset root dir
|
| 13 |
+
train: images/train # train images (relative to 'path') 1132 images
|
| 14 |
+
val: images/val # val images (relative to 'path') 143 images
|
| 15 |
+
test: images/test # test images (relative to 'path') 141 images
|
| 16 |
+
|
| 17 |
+
# Classes
|
| 18 |
+
names:
|
| 19 |
+
0: helmet
|
| 20 |
+
1: gloves
|
| 21 |
+
2: vest
|
| 22 |
+
3: boots
|
| 23 |
+
4: goggles
|
| 24 |
+
5: none
|
| 25 |
+
6: Person
|
| 26 |
+
7: no_helmet
|
| 27 |
+
8: no_goggle
|
| 28 |
+
9: no_gloves
|
| 29 |
+
10: no_boots
|
| 30 |
+
|
| 31 |
+
# Download script/URL (optional)
|
| 32 |
+
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/construction-ppe.zip
|
vendor/ultralytics/cfg/datasets/crack-seg.yaml
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Ultralytics π AGPL-3.0 License - https://ultralytics.com/license
|
| 2 |
+
|
| 3 |
+
# Crack-seg dataset by Ultralytics
|
| 4 |
+
# Documentation: https://docs.ultralytics.com/datasets/segment/crack-seg/
|
| 5 |
+
# Example usage: yolo train data=crack-seg.yaml
|
| 6 |
+
# parent
|
| 7 |
+
# βββ ultralytics
|
| 8 |
+
# βββ datasets
|
| 9 |
+
# βββ crack-seg β downloads here (91.6 MB)
|
| 10 |
+
|
| 11 |
+
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
| 12 |
+
path: crack-seg # dataset root dir
|
| 13 |
+
train: images/train # train images (relative to 'path') 3717 images
|
| 14 |
+
val: images/val # val images (relative to 'path') 112 images
|
| 15 |
+
test: images/test # test images (relative to 'path') 200 images
|
| 16 |
+
|
| 17 |
+
# Classes
|
| 18 |
+
names:
|
| 19 |
+
0: crack
|
| 20 |
+
|
| 21 |
+
# Download script/URL (optional)
|
| 22 |
+
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/crack-seg.zip
|
vendor/ultralytics/cfg/datasets/dog-pose.yaml
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Ultralytics π AGPL-3.0 License - https://ultralytics.com/license
|
| 2 |
+
|
| 3 |
+
# Dogs dataset http://vision.stanford.edu/aditya86/ImageNetDogs/ by Stanford
|
| 4 |
+
# Documentation: https://docs.ultralytics.com/datasets/pose/dog-pose/
|
| 5 |
+
# Example usage: yolo train data=dog-pose.yaml
|
| 6 |
+
# parent
|
| 7 |
+
# βββ ultralytics
|
| 8 |
+
# βββ datasets
|
| 9 |
+
# βββ dog-pose β downloads here (337 MB)
|
| 10 |
+
|
| 11 |
+
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
| 12 |
+
path: dog-pose # dataset root dir
|
| 13 |
+
train: images/train # train images (relative to 'path') 6773 images
|
| 14 |
+
val: images/val # val images (relative to 'path') 1703 images
|
| 15 |
+
|
| 16 |
+
# Keypoints
|
| 17 |
+
kpt_shape: [24, 3] # number of keypoints, number of dims (2 for x,y or 3 for x,y,visible)
|
| 18 |
+
|
| 19 |
+
# Classes
|
| 20 |
+
names:
|
| 21 |
+
0: dog
|
| 22 |
+
|
| 23 |
+
# Keypoint names per class
|
| 24 |
+
kpt_names:
|
| 25 |
+
0:
|
| 26 |
+
- front_left_paw
|
| 27 |
+
- front_left_knee
|
| 28 |
+
- front_left_elbow
|
| 29 |
+
- rear_left_paw
|
| 30 |
+
- rear_left_knee
|
| 31 |
+
- rear_left_elbow
|
| 32 |
+
- front_right_paw
|
| 33 |
+
- front_right_knee
|
| 34 |
+
- front_right_elbow
|
| 35 |
+
- rear_right_paw
|
| 36 |
+
- rear_right_knee
|
| 37 |
+
- rear_right_elbow
|
| 38 |
+
- tail_start
|
| 39 |
+
- tail_end
|
| 40 |
+
- left_ear_base
|
| 41 |
+
- right_ear_base
|
| 42 |
+
- nose
|
| 43 |
+
- chin
|
| 44 |
+
- left_ear_tip
|
| 45 |
+
- right_ear_tip
|
| 46 |
+
- left_eye
|
| 47 |
+
- right_eye
|
| 48 |
+
- withers
|
| 49 |
+
- throat
|
| 50 |
+
|
| 51 |
+
# Download script/URL (optional)
|
| 52 |
+
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/dog-pose.zip
|
vendor/ultralytics/cfg/datasets/dota8-multispectral.yaml
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Ultralytics π AGPL-3.0 License - https://ultralytics.com/license
|
| 2 |
+
|
| 3 |
+
# DOTA8-Multispectral dataset (DOTA8 interpolated across 10 channels in the visual spectrum) by Ultralytics
|
| 4 |
+
# Documentation: https://docs.ultralytics.com/datasets/obb/dota8/
|
| 5 |
+
# Example usage: yolo train model=yolov8n-obb.pt data=dota8-multispectral.yaml
|
| 6 |
+
# parent
|
| 7 |
+
# βββ ultralytics
|
| 8 |
+
# βββ datasets
|
| 9 |
+
# βββ dota8-multispectral β downloads here (37.3 MB)
|
| 10 |
+
|
| 11 |
+
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
| 12 |
+
path: dota8-multispectral # dataset root dir
|
| 13 |
+
train: images/train # train images (relative to 'path') 4 images
|
| 14 |
+
val: images/val # val images (relative to 'path') 4 images
|
| 15 |
+
|
| 16 |
+
# Number of multispectral image channels
|
| 17 |
+
channels: 10
|
| 18 |
+
|
| 19 |
+
# Classes for DOTA 1.0
|
| 20 |
+
names:
|
| 21 |
+
0: plane
|
| 22 |
+
1: ship
|
| 23 |
+
2: storage tank
|
| 24 |
+
3: baseball diamond
|
| 25 |
+
4: tennis court
|
| 26 |
+
5: basketball court
|
| 27 |
+
6: ground track field
|
| 28 |
+
7: harbor
|
| 29 |
+
8: bridge
|
| 30 |
+
9: large vehicle
|
| 31 |
+
10: small vehicle
|
| 32 |
+
11: helicopter
|
| 33 |
+
12: roundabout
|
| 34 |
+
13: soccer ball field
|
| 35 |
+
14: swimming pool
|
| 36 |
+
|
| 37 |
+
# Download script/URL (optional)
|
| 38 |
+
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/dota8-multispectral.zip
|
vendor/ultralytics/cfg/datasets/dota8.yaml
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# Ultralytics π AGPL-3.0 License - https://ultralytics.com/license
|
| 2 |
+
|
| 3 |
+
# DOTA8 dataset (8 images from the DOTAv1 split) by Ultralytics
|
| 4 |
+
# Documentation: https://docs.ultralytics.com/datasets/obb/dota8/
|
| 5 |
+
# Example usage: yolo train model=yolov8n-obb.pt data=dota8.yaml
|
| 6 |
+
# parent
|
| 7 |
+
# βββ ultralytics
|
| 8 |
+
# βββ datasets
|
| 9 |
+
# βββ dota8 β downloads here (1 MB)
|
| 10 |
+
|
| 11 |
+
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
|
| 12 |
+
path: dota8 # dataset root dir
|
| 13 |
+
train: images/train # train images (relative to 'path') 4 images
|
| 14 |
+
val: images/val # val images (relative to 'path') 4 images
|
| 15 |
+
|
| 16 |
+
# Classes for DOTA 1.0
|
| 17 |
+
names:
|
| 18 |
+
0: plane
|
| 19 |
+
1: ship
|
| 20 |
+
2: storage tank
|
| 21 |
+
3: baseball diamond
|
| 22 |
+
4: tennis court
|
| 23 |
+
5: basketball court
|
| 24 |
+
6: ground track field
|
| 25 |
+
7: harbor
|
| 26 |
+
8: bridge
|
| 27 |
+
9: large vehicle
|
| 28 |
+
10: small vehicle
|
| 29 |
+
11: helicopter
|
| 30 |
+
12: roundabout
|
| 31 |
+
13: soccer ball field
|
| 32 |
+
14: swimming pool
|
| 33 |
+
|
| 34 |
+
# Download script/URL (optional)
|
| 35 |
+
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/dota8.zip
|