From 422c49d43900c0b84bcb8e5f45383455b086566e Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Mon, 9 Jan 2023 23:22:33 +0100 Subject: [PATCH] Cleanup (#168) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Kalen Michael --- .github/translate-readme.yml | 26 + .github/workflows/ci.yaml | 2 +- .github/workflows/docker.yaml | 2 +- README.md | 33 +- docker/Dockerfile | 2 +- docker/Dockerfile-arm64 | 2 +- docker/Dockerfile-cpu | 2 +- requirements.txt | 1 - setup.py | 2 + tests/test_cli.py | 2 + tests/test_engine.py | 2 + tests/test_python.py | 2 + tutorial.ipynb | 675 ------------------ ultralytics/__init__.py | 7 +- ultralytics/hub/__init__.py | 2 + ultralytics/hub/auth.py | 5 +- ultralytics/hub/config.py | 12 - ultralytics/hub/session.py | 5 +- ultralytics/hub/utils.py | 22 +- ultralytics/nn/autobackend.py | 3 + ultralytics/nn/modules.py | 2 +- ultralytics/nn/tasks.py | 2 + ultralytics/yolo/__init__.py | 2 + ultralytics/yolo/cli.py | 2 + ultralytics/yolo/configs/__init__.py | 2 + ultralytics/yolo/configs/default.yaml | 2 +- ultralytics/yolo/configs/hydra_patch.py | 2 + ultralytics/yolo/data/__init__.py | 2 + ultralytics/yolo/data/augment.py | 2 + ultralytics/yolo/data/base.py | 2 + ultralytics/yolo/data/build.py | 2 + .../yolo/data/dataloaders/stream_loaders.py | 2 + .../yolo/data/dataloaders/v5augmentations.py | 2 +- ultralytics/yolo/data/dataloaders/v5loader.py | 2 +- ultralytics/yolo/data/dataset.py | 2 + ultralytics/yolo/data/dataset_wrappers.py | 2 + ultralytics/yolo/data/datasets/coco.yaml | 2 +- .../yolo/data/datasets/coco128-seg.yaml | 2 +- ultralytics/yolo/data/datasets/coco128.yaml | 2 +- .../yolo/data/scripts/download_weights.sh | 2 +- ultralytics/yolo/data/scripts/get_coco.sh | 2 +- ultralytics/yolo/data/scripts/get_coco128.sh | 2 +- ultralytics/yolo/data/scripts/get_imagenet.sh | 2 +- ultralytics/yolo/data/utils.py | 2 + ultralytics/yolo/engine/exporter.py | 2 +- ultralytics/yolo/engine/model.py | 2 + ultralytics/yolo/engine/predictor.py | 2 +- ultralytics/yolo/engine/trainer.py | 1 + ultralytics/yolo/engine/validator.py | 13 +- ultralytics/yolo/utils/__init__.py | 2 + ultralytics/yolo/utils/autobatch.py | 2 +- ultralytics/yolo/utils/callbacks/base.py | 5 +- ultralytics/yolo/utils/callbacks/clearml.py | 2 + ultralytics/yolo/utils/callbacks/comet.py | 2 + ultralytics/yolo/utils/callbacks/hub.py | 2 + .../yolo/utils/callbacks/tensorboard.py | 2 + ultralytics/yolo/utils/callbacks/wb.py | 2 + ultralytics/yolo/utils/checks.py | 5 +- ultralytics/yolo/utils/dist.py | 2 + ultralytics/yolo/utils/downloads.py | 2 + ultralytics/yolo/utils/files.py | 2 + ultralytics/yolo/utils/instance.py | 2 + ultralytics/yolo/utils/loss.py | 2 + ultralytics/yolo/utils/metrics.py | 2 +- ultralytics/yolo/utils/ops.py | 2 + ultralytics/yolo/utils/plotting.py | 2 + ultralytics/yolo/utils/tal.py | 2 + ultralytics/yolo/utils/torch_utils.py | 4 +- ultralytics/yolo/v8/__init__.py | 2 + ultralytics/yolo/v8/classify/__init__.py | 2 + ultralytics/yolo/v8/classify/predict.py | 2 + ultralytics/yolo/v8/classify/train.py | 2 + ultralytics/yolo/v8/classify/val.py | 2 + ultralytics/yolo/v8/detect/__init__.py | 2 + ultralytics/yolo/v8/detect/predict.py | 2 + ultralytics/yolo/v8/detect/train.py | 2 + ultralytics/yolo/v8/detect/val.py | 2 + .../yolo/v8/models/cls/yolov8l-cls.yaml | 2 +- .../yolo/v8/models/cls/yolov8m-cls.yaml | 2 +- .../yolo/v8/models/cls/yolov8n-cls.yaml | 2 +- .../yolo/v8/models/cls/yolov8s-cls.yaml | 2 +- .../yolo/v8/models/cls/yolov8x-cls.yaml | 2 +- .../yolo/v8/models/seg/yolov8l-seg.yaml | 2 +- .../yolo/v8/models/seg/yolov8m-seg.yaml | 2 +- .../yolo/v8/models/seg/yolov8n-seg.yaml | 2 +- .../yolo/v8/models/seg/yolov8s-seg.yaml | 2 +- .../yolo/v8/models/seg/yolov8x-seg.yaml | 2 +- ultralytics/yolo/v8/models/yolov8l.yaml | 2 +- ultralytics/yolo/v8/models/yolov8m.yaml | 2 +- ultralytics/yolo/v8/models/yolov8n.yaml | 2 +- ultralytics/yolo/v8/models/yolov8s.yaml | 2 +- ultralytics/yolo/v8/models/yolov8x.yaml | 2 +- ultralytics/yolo/v8/models/yolov8x6.yaml | 2 +- ultralytics/yolo/v8/segment/__init__.py | 2 + ultralytics/yolo/v8/segment/predict.py | 2 + ultralytics/yolo/v8/segment/train.py | 2 + ultralytics/yolo/v8/segment/val.py | 2 + 97 files changed, 224 insertions(+), 757 deletions(-) create mode 100644 .github/translate-readme.yml delete mode 100644 tutorial.ipynb delete mode 100644 ultralytics/hub/config.py diff --git a/.github/translate-readme.yml b/.github/translate-readme.yml new file mode 100644 index 0000000..e3dbace --- /dev/null +++ b/.github/translate-readme.yml @@ -0,0 +1,26 @@ +# Ultralytics YOLO 🚀, GPL-3.0 license +# README translation action to translate README.md to Chinese as README.zh-CN.md on any change to README.md + +name: Translate README + +on: + push: + branches: + - translate_readme # replace with 'main' to enable action + paths: + - README.md + +jobs: + Translate: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Setup Node.js + uses: actions/setup-node@v3 + with: + node-version: 16 + # ISO Language Codes: https://cloud.google.com/translate/docs/languages + - name: Adding README - Chinese Simplified + uses: dephraiim/translate-readme@main + with: + LANG: zh-CN diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index e1f89cf..1b4e3c7 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -1,4 +1,4 @@ -# YOLO 🚀 by Ultralytics, GPL-3.0 license +# Ultralytics YOLO 🚀, GPL-3.0 license # YOLO Continuous Integration (CI) GitHub Actions tests name: Ultralytics CI diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index ca3cc85..bcade98 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -1,4 +1,4 @@ -# YOLOv5 🚀 by Ultralytics, GPL-3.0 license +# Ultralytics YOLO 🚀, GPL-3.0 license # Builds ultralytics/ultralytics:latest images on DockerHub https://hub.docker.com/r/ultralytics name: Publish Docker Images diff --git a/README.md b/README.md index a88a537..0cd9c9d 100644 --- a/README.md +++ b/README.md @@ -68,7 +68,22 @@ pip install ultralytics
Usage -YOLOv8 may be used in a python environment: +YOLOv8 may be used directly in the Command Line Interface (CLI) with a `yolo` command: + +```bash +yolo task=detect mode=predict model=yolov8n.pt source="https://ultralytics.com/images/bus.jpg" +``` + +`yolo` can be used for a variety of tasks and modes and accepts additional arguments, i.e. `imgsz=640`. See a full list of available `yolo` [arguments](https://docs.ultralytics.com/config/) in the YOLOv8 [Docs](https://docs.ultralytics.com). + +```bash +yolo task=detect mode=train model=yolov8n.pt args... + classify predict yolov8n-cls.yaml args... + segment val yolov8n-seg.yaml args... + export yolov8n.pt format=onnx args... +``` + +YOLOv8 may also be used directly in a Python environment, and accepts the same [arguments](https://docs.ultralytics.com/config/) as in the CLI example above: ```python from ultralytics import YOLO @@ -81,18 +96,16 @@ model.predict(source="https://ultralytics.com/images/bus.jpg") # predict on an model.export(format="onnx") # export the model to ONNX format ``` -Or with CLI `yolo` commands: - -```bash -yolo task=detect mode=train model=yolov8n.pt args... - classify predict yolov8n-cls.yaml args... - segment val yolov8n-seg.yaml args... - export yolov8n.pt format=onnx args... -``` - [Models](https://github.com/ultralytics/ultralytics/tree/main/ultralytics/yolo/v8/models) download automatically from the latest Ultralytics [release](https://github.com/ultralytics/ultralytics/releases). +### Known Issues / TODOs + +- [ ] TensorFlow exports +- [ ] GPU exports +- [ ] DDP resume +- [ ] [arxiv.org](https://arxiv.org) paper +
##
Checkpoints
diff --git a/docker/Dockerfile b/docker/Dockerfile index 41d71e6..146293f 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,4 +1,4 @@ -# YOLOv5 🚀 by Ultralytics, GPL-3.0 license +# Ultralytics YOLO 🚀, GPL-3.0 license # Builds ultralytics/ultralytics:latest image on DockerHub https://hub.docker.com/r/ultralytics/ultralytics # Image is CUDA-optimized for YOLOv5 single/multi-GPU training and inference diff --git a/docker/Dockerfile-arm64 b/docker/Dockerfile-arm64 index d44e6f3..93f6017 100644 --- a/docker/Dockerfile-arm64 +++ b/docker/Dockerfile-arm64 @@ -1,4 +1,4 @@ -# YOLOv5 🚀 by Ultralytics, GPL-3.0 license +# Ultralytics YOLO 🚀, GPL-3.0 license # Builds ultralytics/ultralytics:latest-arm64 image on DockerHub https://hub.docker.com/r/ultralytics/ultralytics # Image is aarch64-compatible for Apple M1 and other ARM architectures i.e. Jetson Nano and Raspberry Pi diff --git a/docker/Dockerfile-cpu b/docker/Dockerfile-cpu index ba9441e..dcd7b2d 100644 --- a/docker/Dockerfile-cpu +++ b/docker/Dockerfile-cpu @@ -1,4 +1,4 @@ -# YOLOv5 🚀 by Ultralytics, GPL-3.0 license +# Ultralytics YOLO 🚀, GPL-3.0 license # Builds ultralytics/ultralytics:latest-cpu image on DockerHub https://hub.docker.com/r/ultralytics/ultralytics # Image is CPU-optimized for ONNX, OpenVINO and PyTorch YOLOv5 deployments diff --git a/requirements.txt b/requirements.txt index 9ea67f2..df2a999 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,7 +2,6 @@ # Usage: pip install -r requirements.txt # Base ---------------------------------------- -fire>=0.4.0 hydra-core>=1.2.0 matplotlib>=3.2.2 numpy>=1.18.5 diff --git a/setup.py b/setup.py index 1eb06a3..a5d13d9 100644 --- a/setup.py +++ b/setup.py @@ -1,3 +1,5 @@ +# Ultralytics YOLO 🚀, GPL-3.0 license + import re from pathlib import Path diff --git a/tests/test_cli.py b/tests/test_cli.py index f8b8b25..41f3ac4 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -1,3 +1,5 @@ +# Ultralytics YOLO 🚀, GPL-3.0 license + import os from pathlib import Path diff --git a/tests/test_engine.py b/tests/test_engine.py index d0bd83f..d40632f 100644 --- a/tests/test_engine.py +++ b/tests/test_engine.py @@ -1,3 +1,5 @@ +# Ultralytics YOLO 🚀, GPL-3.0 license + from ultralytics import YOLO from ultralytics.yolo.configs import get_config from ultralytics.yolo.utils import DEFAULT_CONFIG, ROOT diff --git a/tests/test_python.py b/tests/test_python.py index 833455a..e7963be 100644 --- a/tests/test_python.py +++ b/tests/test_python.py @@ -1,3 +1,5 @@ +# Ultralytics YOLO 🚀, GPL-3.0 license + from pathlib import Path from ultralytics import YOLO diff --git a/tutorial.ipynb b/tutorial.ipynb deleted file mode 100644 index 9f21d90..0000000 --- a/tutorial.ipynb +++ /dev/null @@ -1,675 +0,0 @@ -{ - "nbformat": 4, - "nbformat_minor": 0, - "metadata": { - "colab": { - "name": "YOLOv8 Tutorial", - "provenance": [], - "toc_visible": true - }, - "kernelspec": { - "name": "python3", - "display_name": "Python 3" - }, - "accelerator": "GPU" - }, - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "id": "t6MPjfT5NrKQ" - }, - "source": [ - "
\n", - "\n", - " \n", - " \n", - "\n", - "\n", - "
\n", - " \"Run\n", - " \"Open\n", - " \"Open\n", - "
\n", - "\n", - "Welcome to the Ultralytics YOLOv8 🚀 notebook! YOLOv8 is the latest version of the YOLO (You Only Look Once) object detection and image segmentation model developed by Ultralytics. This notebook serves as the starting point for exploring the various resources available to help you get started with YOLOv8 and understand its features and capabilities.\n", - "\n", - "The YOLOv8 models are designed to be fast, accurate, and easy to use, making them an excellent choice for a wide range of object detection and image segmentation tasks. They can be trained on large datasets and are capable of running on a variety of hardware platforms, from CPUs to GPUs.\n", - "\n", - "Whether you are a seasoned machine learning practitioner or new to the field, we hope that the resources on this page will help you get the most out of YOLOv8. Please feel free to browse the YOLOv8 Docs and reach out to us with any questions or feedback.\n", - "\n", - "
" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "7mGmQbAO5pQb" - }, - "source": [ - "# Setup\n", - "\n", - "Clone GitHub [repository](https://github.com/ultralytics/ultralytics), install [dependencies](https://github.com/ultralytics/ultralytics/blob/master/requirements.txt) and check PyTorch and GPU." - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "wbvMlHd_QwMG", - "colab": { - "base_uri": "https://localhost:8080/" - }, - "outputId": "276a3983-eedd-4eeb-9701-2ae78e1b4c44" - }, - "source": [ - "# Pip install (recommended)\n", - "!pip install ultralytics\n", - "\n", - "from IPython import display\n", - "display.clear_output()\n", - "!yolo mode=checks" - ], - "execution_count": null, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "\u001b[2K\r\u001b[2K\rUltralytics YOLO 🚀 0.0.59 Python-3.8.16 torch-1.13.0+cu116 CUDA:0 (Tesla T4, 15110MiB)\n", - "Setup complete ✅ (2 CPUs, 12.7 GB RAM, 23.1/166.8 GB disk)\n" - ] - } - ] - }, - { - "cell_type": "code", - "source": [ - "# Git clone (requires GitHub token)\n", - "!git clone https://github.com/ultralytics/ultralytics\n", - "!pip install -e ultralytics\n", - "\n", - "from IPython import display\n", - "display.clear_output()\n", - "!yolo mode=checks" - ], - "metadata": { - "id": "TUFPge7f_1ms" - }, - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "4JnkELT0cIJg" - }, - "source": [ - "# 1. Predict\n", - "\n", - "`yolo mode=predict` runs YOLOv8 inference on a variety of sources, downloading models automatically from the [latest YOLOv8 release](https://github.com/ultralytics/ultralytics/releases), and saving results to `runs/predict`.\n" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "zR9ZbuQCH7FX", - "colab": { - "base_uri": "https://localhost:8080/" - }, - "outputId": "b4d62712-a064-4f5b-856f-8a1a58e900ec" - }, - "source": [ - "!yolo task=detect mode=predict model=yolov8n.pt conf=0.25 source='https://ultralytics.com/images/zidane.jpg'\n", - "# display.Image(filename='runs/detect/predict/zidane.jpg', width=600)" - ], - "execution_count": null, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Downloading https://ultralytics.com/images/zidane.jpg to zidane.jpg...\n", - "100% 165k/165k [00:00<00:00, 72.6MB/s]\n", - "Ultralytics YOLO 🚀 0.0.59 Python-3.8.16 torch-1.13.0+cu116 CUDA:0 (Tesla T4, 15110MiB)\n", - "Downloading https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov8n.pt to yolov8n.pt...\n", - "100% 6.24M/6.24M [00:03<00:00, 2.14MB/s]\n", - "\n", - "Fusing layers... \n", - "YOLOv8n summary: 168 layers, 3151904 parameters, 0 gradients, 8.7 GFLOPs\n", - "image 1/1 /content/zidane.jpg: 384x640 2 persons, 1 tie, 78.0ms\n", - "Speed: 0.6ms pre-process, 78.0ms inference, 29.2ms postprocess per image at shape (1, 3, 640, 640)\n", - "Results saved to \u001b[1mruns/detect/predict\u001b[0m\n" - ] - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "hkAzDWJ7cWTr" - }, - "source": [ - "        \n", - "" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "0eq1SMWl6Sfn" - }, - "source": [ - "# 2. Val\n", - "Validate a model's accuracy on the [COCO](https://cocodataset.org/#home) dataset's `val` or `test` splits. Models are downloaded automatically from the [latest YOLOv8 release](https://github.com/ultralytics/ultralytics/releases). To show results by class use the `--verbose` flag." - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "WQPtK1QYVaD_" - }, - "source": [ - "# Download COCO val\n", - "import torch\n", - "torch.hub.download_url_to_file('https://ultralytics.com/assets/coco2017val.zip', 'tmp.zip') # download (780M - 5000 images)\n", - "!unzip -q tmp.zip -d ../datasets && rm tmp.zip # unzip" - ], - "execution_count": null, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "X58w8JLpMnjH", - "colab": { - "base_uri": "https://localhost:8080/" - }, - "outputId": "a3853c39-e2d3-40ca-bdab-32880af1751b" - }, - "source": [ - "# Validate YOLOv8n on COCO128 val\n", - "!yolo task=detect mode=val model=yolov8n.pt data=coco128.yaml" - ], - "execution_count": null, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Ultralytics YOLO 🚀 0.0.59 Python-3.8.16 torch-1.13.0+cu116 CUDA:0 (Tesla T4, 15110MiB)\n", - "Fusing layers... \n", - "YOLOv8n summary: 168 layers, 3151904 parameters, 0 gradients, 8.7 GFLOPs\n", - "\n", - "Dataset not found ⚠️, missing paths ['/datasets/coco128/images/train2017']\n", - "Downloading https://ultralytics.com/assets/coco128.zip to coco128.zip...\n", - "100% 6.66M/6.66M [00:03<00:00, 2.27MB/s]\n", - "Dataset download success ✅ (4.8s), saved to \u001b[1m/datasets\u001b[0m\n", - "Downloading https://ultralytics.com/assets/Arial.ttf to /root/.config/Ultralytics/Arial.ttf...\n", - "100% 755k/755k [00:00<00:00, 115MB/s]\n", - "\u001b[34m\u001b[1mval: \u001b[0mScanning /datasets/coco128/labels/train2017... 126 images, 2 backgrounds, 0 corrupt: 100% 128/128 [00:00<00:00, 948.62it/s] \n", - "\u001b[34m\u001b[1mval: \u001b[0mNew cache created: /datasets/coco128/labels/train2017.cache\n", - " Class Images Instances Box(P R mAP50 mAP50-95): 100% 8/8 [00:07<00:00, 1.08it/s]\n", - " all 128 929 0.639 0.523 0.608 0.447\n", - " person 128 254 0.82 0.679 0.767 0.54\n", - " bicycle 128 6 0.369 0.167 0.294 0.203\n", - " car 128 46 0.746 0.196 0.24 0.147\n", - " motorcycle 128 5 0.687 0.8 0.898 0.707\n", - " airplane 128 6 0.645 0.667 0.851 0.689\n", - " bus 128 7 0.743 0.714 0.727 0.633\n", - " train 128 3 0.532 0.667 0.741 0.554\n", - " truck 128 12 0.667 0.333 0.448 0.263\n", - " boat 128 6 0.226 0.167 0.332 0.184\n", - " traffic light 128 14 0.535 0.143 0.193 0.146\n", - " stop sign 128 2 0.601 0.5 0.828 0.68\n", - " bench 128 9 0.716 0.444 0.518 0.292\n", - " bird 128 16 0.815 0.75 0.859 0.499\n", - " cat 128 4 0.782 0.909 0.945 0.749\n", - " dog 128 9 0.603 0.889 0.764 0.58\n", - " horse 128 2 0.73 1 0.995 0.572\n", - " elephant 128 17 0.794 0.882 0.934 0.74\n", - " bear 128 1 0.615 1 0.995 0.995\n", - " zebra 128 4 0.837 1 0.995 0.964\n", - " giraffe 128 9 0.717 1 0.975 0.676\n", - " backpack 128 6 0.584 0.333 0.432 0.276\n", - " umbrella 128 18 0.83 0.556 0.674 0.409\n", - " handbag 128 19 1 0.11 0.255 0.111\n", - " tie 128 7 0.669 0.714 0.711 0.519\n", - " suitcase 128 4 0.773 0.867 0.945 0.644\n", - " frisbee 128 5 0.586 0.8 0.732 0.686\n", - " skis 128 1 0.733 1 0.995 0.497\n", - " snowboard 128 7 1 0.546 0.753 0.516\n", - " sports ball 128 6 0.574 0.5 0.464 0.263\n", - " kite 128 10 0.597 0.5 0.548 0.22\n", - " baseball bat 128 4 0.496 0.5 0.269 0.12\n", - " baseball glove 128 7 0.598 0.429 0.429 0.293\n", - " skateboard 128 5 0.806 0.6 0.635 0.411\n", - " tennis racket 128 7 0.955 0.429 0.564 0.373\n", - " bottle 128 18 0.601 0.444 0.444 0.281\n", - " wine glass 128 16 0.815 0.562 0.604 0.377\n", - " cup 128 36 0.606 0.25 0.425 0.308\n", - " fork 128 6 0.518 0.167 0.17 0.169\n", - " knife 128 16 0.646 0.438 0.581 0.365\n", - " spoon 128 22 0.491 0.227 0.334 0.186\n", - " bowl 128 28 0.643 0.536 0.632 0.498\n", - " banana 128 1 0 0 0.142 0.0529\n", - " sandwich 128 2 0.226 0.5 0.414 0.414\n", - " orange 128 4 1 0 0.87 0.562\n", - " broccoli 128 11 0.416 0.182 0.239 0.197\n", - " carrot 128 24 0.719 0.458 0.583 0.377\n", - " hot dog 128 2 0.269 0.5 0.695 0.695\n", - " pizza 128 5 0.673 1 0.995 0.859\n", - " donut 128 14 0.673 1 0.976 0.886\n", - " cake 128 4 0.627 1 0.945 0.824\n", - " chair 128 35 0.428 0.543 0.498 0.251\n", - " couch 128 6 0.47 0.5 0.673 0.537\n", - " potted plant 128 14 0.808 0.643 0.714 0.501\n", - " bed 128 3 0.842 0.667 0.741 0.559\n", - " dining table 128 13 0.413 0.538 0.47 0.378\n", - " toilet 128 2 0.618 0.5 0.62 0.596\n", - " tv 128 2 0.517 0.5 0.828 0.712\n", - " laptop 128 3 1 0 0.592 0.422\n", - " mouse 128 2 1 0 0.0768 0.023\n", - " remote 128 8 0.843 0.5 0.512 0.439\n", - " cell phone 128 8 0.254 0.0636 0.109 0.0757\n", - " microwave 128 3 0.459 1 0.995 0.798\n", - " oven 128 5 0.436 0.4 0.391 0.31\n", - " sink 128 6 0.265 0.167 0.198 0.124\n", - " refrigerator 128 5 0.654 0.4 0.61 0.468\n", - " book 128 29 0.466 0.0619 0.394 0.178\n", - " clock 128 9 0.653 0.778 0.778 0.595\n", - " vase 128 2 0.18 1 0.695 0.695\n", - " scissors 128 1 1 0 0.124 0.0224\n", - " teddy bear 128 21 0.756 0.429 0.573 0.341\n", - " toothbrush 128 5 1 0.37 0.803 0.533\n", - "Speed: 2.6ms pre-process, 5.2ms inference, 0.0ms loss, 3.9ms post-process per image\n" - ] - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "ZY2VXXXu74w5" - }, - "source": [ - "# 3. Train\n", - "\n", - "

\n", - "\n", - "Train YOLOv8 on detection, segmentation and classification datasets." - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "1NcFxRcFdJ_O", - "colab": { - "base_uri": "https://localhost:8080/" - }, - "outputId": "a264b615-5f73-4b84-c708-61f15a7e5c03" - }, - "source": [ - "# Train YOLOv8n on COCO128 for 3 epochs\n", - "!yolo task=detect mode=train model=yolov8n.pt data=coco128.yaml epochs=3 imgsz=640" - ], - "execution_count": null, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "\u001b[34m\u001b[1myolo/engine/trainer: \u001b[0mtask=detect, mode=train, model=yolov8n.pt, data=coco128.yaml, epochs=3, patience=50, batch=16, imgsz=640, save=True, cache=False, device=, workers=8, project=None, name=None, exist_ok=False, pretrained=False, optimizer=SGD, verbose=False, seed=0, deterministic=True, single_cls=False, image_weights=False, rect=False, cos_lr=False, close_mosaic=10, resume=False, overlap_mask=True, mask_ratio=4, dropout=False, val=True, save_json=False, save_hybrid=False, conf=0.001, iou=0.7, max_det=300, half=False, dnn=False, plots=True, source=ultralytics/assets, show=False, save_txt=False, save_conf=False, save_crop=False, hide_labels=False, hide_conf=False, vid_stride=1, line_thickness=3, visualize=False, augment=False, agnostic_nms=False, retina_masks=False, format=torchscript, keras=False, optimize=False, int8=False, dynamic=False, simplify=False, opset=17, workspace=4, nms=False, lr0=0.01, lrf=0.01, momentum=0.937, weight_decay=0.0005, warmup_epochs=3.0, warmup_momentum=0.8, warmup_bias_lr=0.1, box=7.5, cls=0.5, dfl=1.5, fl_gamma=0.0, label_smoothing=0.0, nbs=64, hsv_h=0.015, hsv_s=0.7, hsv_v=0.4, degrees=0.0, translate=0.1, scale=0.5, shear=0.0, perspective=0.0, flipud=0.0, fliplr=0.5, mosaic=1.0, mixup=0.0, copy_paste=0.0, hydra={'output_subdir': None, 'run': {'dir': '.'}}, v5loader=False, save_dir=runs/detect/train\n", - "Ultralytics YOLO 🚀 0.0.59 Python-3.8.16 torch-1.13.0+cu116 CUDA:0 (Tesla T4, 15110MiB)\n", - "\n", - " from n params module arguments \n", - " 0 -1 1 464 ultralytics.nn.modules.Conv [3, 16, 3, 2] \n", - " 1 -1 1 4672 ultralytics.nn.modules.Conv [16, 32, 3, 2] \n", - " 2 -1 1 7360 ultralytics.nn.modules.C2f [32, 32, 1, True] \n", - " 3 -1 1 18560 ultralytics.nn.modules.Conv [32, 64, 3, 2] \n", - " 4 -1 2 49664 ultralytics.nn.modules.C2f [64, 64, 2, True] \n", - " 5 -1 1 73984 ultralytics.nn.modules.Conv [64, 128, 3, 2] \n", - " 6 -1 2 197632 ultralytics.nn.modules.C2f [128, 128, 2, True] \n", - " 7 -1 1 295424 ultralytics.nn.modules.Conv [128, 256, 3, 2] \n", - " 8 -1 1 460288 ultralytics.nn.modules.C2f [256, 256, 1, True] \n", - " 9 -1 1 164608 ultralytics.nn.modules.SPPF [256, 256, 5] \n", - " 10 -1 1 0 torch.nn.modules.upsampling.Upsample [None, 2, 'nearest'] \n", - " 11 [-1, 6] 1 0 ultralytics.nn.modules.Concat [1] \n", - " 12 -1 1 148224 ultralytics.nn.modules.C2f [384, 128, 1] \n", - " 13 -1 1 0 torch.nn.modules.upsampling.Upsample [None, 2, 'nearest'] \n", - " 14 [-1, 4] 1 0 ultralytics.nn.modules.Concat [1] \n", - " 15 -1 1 37248 ultralytics.nn.modules.C2f [192, 64, 1] \n", - " 16 -1 1 36992 ultralytics.nn.modules.Conv [64, 64, 3, 2] \n", - " 17 [-1, 12] 1 0 ultralytics.nn.modules.Concat [1] \n", - " 18 -1 1 123648 ultralytics.nn.modules.C2f [192, 128, 1] \n", - " 19 -1 1 147712 ultralytics.nn.modules.Conv [128, 128, 3, 2] \n", - " 20 [-1, 9] 1 0 ultralytics.nn.modules.Concat [1] \n", - " 21 -1 1 493056 ultralytics.nn.modules.C2f [384, 256, 1] \n", - " 22 [15, 18, 21] 1 897664 ultralytics.nn.modules.Detect [80, [64, 128, 256]] \n", - "Model summary: 225 layers, 3157200 parameters, 3157184 gradients, 8.9 GFLOPs\n", - "\n", - "Transferred 355/355 items from pretrained weights\n", - "\u001b[34m\u001b[1moptimizer:\u001b[0m SGD(lr=0.01) with parameter groups 57 weight(decay=0.0), 64 weight(decay=0.0005), 63 bias\n", - "\u001b[34m\u001b[1mtrain: \u001b[0mScanning /datasets/coco128/labels/train2017.cache... 126 images, 2 backgrounds, 0 corrupt: 100% 128/128 [00:00 timeout: break - r = methods[method](*func_args, **func_kwargs) # i.e. post(url, data, json, files) + if method == 'post': + r = requests.post(*func_args, **func_kwargs) # i.e. post(url, data, json, files) + elif method == 'get': + r = requests.get(*func_args, **func_kwargs) # i.e. get(url, data, json, files) if r.status_code == 200: break try: @@ -125,7 +130,8 @@ def smart_request(*args, retry=3, timeout=30, thread=True, code=-1, method="post return func(*args, **kwargs) -def sync_analytics(cfg, all_keys=False, enabled=False): +@TryExcept() +def sync_analytics(cfg, all_keys=False, enabled=True): """ Sync analytics data if enabled in the global settings @@ -137,8 +143,8 @@ def sync_analytics(cfg, all_keys=False, enabled=False): if SETTINGS['sync'] and RANK in {-1, 0} and enabled: cfg = dict(cfg) # convert type from DictConfig to dict if not all_keys: - cfg = {k: v for k, v in cfg.items() if v != DEFAULT_CONFIG_DICT[k]} # retain only non-default values + cfg = {k: v for k, v in cfg.items() if v != DEFAULT_CONFIG_DICT.get(k, None)} # retain non-default values cfg['uuid'] = SETTINGS['uuid'] # add the device UUID to the configuration data - # Send a request to the HUB API to sync the analytics data - smart_request(f'{HUB_API_ROOT}/v1/usage/anonymous', data=cfg, headers=None, code=3, retry=0, verbose=False) + # Send a request to the HUB API to sync analytics + smart_request(f'{HUB_API_ROOT}/v1/usage/anonymous', json=cfg, headers=None, code=3, retry=0, verbose=False) diff --git a/ultralytics/nn/autobackend.py b/ultralytics/nn/autobackend.py index 0b50e52..937c035 100644 --- a/ultralytics/nn/autobackend.py +++ b/ultralytics/nn/autobackend.py @@ -1,3 +1,5 @@ +# Ultralytics YOLO 🚀, GPL-3.0 license + import json import platform from collections import OrderedDict, namedtuple @@ -65,6 +67,7 @@ class AutoBackend(nn.Module): names = model.module.names if hasattr(model, 'module') else model.names # get class names model.half() if fp16 else model.float() self.model = model # explicitly assign for to(), cpu(), cuda(), half() + pt = True elif pt: # PyTorch from ultralytics.nn.tasks import attempt_load_weights model = attempt_load_weights(weights if isinstance(weights, list) else w, diff --git a/ultralytics/nn/modules.py b/ultralytics/nn/modules.py index ec75304..51ca310 100644 --- a/ultralytics/nn/modules.py +++ b/ultralytics/nn/modules.py @@ -1,4 +1,4 @@ -# YOLOv5 🚀 by Ultralytics, GPL-3.0 license +# Ultralytics YOLO 🚀, GPL-3.0 license """ Common modules """ diff --git a/ultralytics/nn/tasks.py b/ultralytics/nn/tasks.py index d24512a..f143c14 100644 --- a/ultralytics/nn/tasks.py +++ b/ultralytics/nn/tasks.py @@ -1,3 +1,5 @@ +# Ultralytics YOLO 🚀, GPL-3.0 license + import contextlib from copy import deepcopy diff --git a/ultralytics/yolo/__init__.py b/ultralytics/yolo/__init__.py index 86ddd1b..7dd9e46 100644 --- a/ultralytics/yolo/__init__.py +++ b/ultralytics/yolo/__init__.py @@ -1 +1,3 @@ +# Ultralytics YOLO 🚀, GPL-3.0 license + from . import v8 diff --git a/ultralytics/yolo/cli.py b/ultralytics/yolo/cli.py index 996d4cc..ddcf7c9 100644 --- a/ultralytics/yolo/cli.py +++ b/ultralytics/yolo/cli.py @@ -1,3 +1,5 @@ +# Ultralytics YOLO 🚀, GPL-3.0 license + import shutil from pathlib import Path diff --git a/ultralytics/yolo/configs/__init__.py b/ultralytics/yolo/configs/__init__.py index f0bb8ec..2809303 100644 --- a/ultralytics/yolo/configs/__init__.py +++ b/ultralytics/yolo/configs/__init__.py @@ -1,3 +1,5 @@ +# Ultralytics YOLO 🚀, GPL-3.0 license + from pathlib import Path from typing import Dict, Union diff --git a/ultralytics/yolo/configs/default.yaml b/ultralytics/yolo/configs/default.yaml index 154e18d..a6c8ed1 100644 --- a/ultralytics/yolo/configs/default.yaml +++ b/ultralytics/yolo/configs/default.yaml @@ -1,4 +1,4 @@ -# YOLO 🚀 by Ultralytics, GPL-3.0 license +# Ultralytics YOLO 🚀, GPL-3.0 license # Default training settings and hyperparameters for medium-augmentation COCO training task: "detect" # choices=['detect', 'segment', 'classify', 'init'] # init is a special case. Specify task to run. diff --git a/ultralytics/yolo/configs/hydra_patch.py b/ultralytics/yolo/configs/hydra_patch.py index 18075a0..d68d725 100644 --- a/ultralytics/yolo/configs/hydra_patch.py +++ b/ultralytics/yolo/configs/hydra_patch.py @@ -1,3 +1,5 @@ +# Ultralytics YOLO 🚀, GPL-3.0 license + import sys from difflib import get_close_matches from textwrap import dedent diff --git a/ultralytics/yolo/data/__init__.py b/ultralytics/yolo/data/__init__.py index 7508102..ebf4293 100644 --- a/ultralytics/yolo/data/__init__.py +++ b/ultralytics/yolo/data/__init__.py @@ -1,3 +1,5 @@ +# Ultralytics YOLO 🚀, GPL-3.0 license + from .base import BaseDataset from .build import build_classification_dataloader, build_dataloader from .dataset import ClassificationDataset, SemanticDataset, YOLODataset diff --git a/ultralytics/yolo/data/augment.py b/ultralytics/yolo/data/augment.py index bd8d7e9..d5414da 100644 --- a/ultralytics/yolo/data/augment.py +++ b/ultralytics/yolo/data/augment.py @@ -1,3 +1,5 @@ +# Ultralytics YOLO 🚀, GPL-3.0 license + import math import random from copy import deepcopy diff --git a/ultralytics/yolo/data/base.py b/ultralytics/yolo/data/base.py index 0474053..1745f8f 100644 --- a/ultralytics/yolo/data/base.py +++ b/ultralytics/yolo/data/base.py @@ -1,3 +1,5 @@ +# Ultralytics YOLO 🚀, GPL-3.0 license + import glob import math import os diff --git a/ultralytics/yolo/data/build.py b/ultralytics/yolo/data/build.py index 807d8ff..144d01e 100644 --- a/ultralytics/yolo/data/build.py +++ b/ultralytics/yolo/data/build.py @@ -1,3 +1,5 @@ +# Ultralytics YOLO 🚀, GPL-3.0 license + import os import random diff --git a/ultralytics/yolo/data/dataloaders/stream_loaders.py b/ultralytics/yolo/data/dataloaders/stream_loaders.py index 72b9ab4..6365cb0 100644 --- a/ultralytics/yolo/data/dataloaders/stream_loaders.py +++ b/ultralytics/yolo/data/dataloaders/stream_loaders.py @@ -1,3 +1,5 @@ +# Ultralytics YOLO 🚀, GPL-3.0 license + import glob import math import os diff --git a/ultralytics/yolo/data/dataloaders/v5augmentations.py b/ultralytics/yolo/data/dataloaders/v5augmentations.py index a85db1e..0595d7a 100644 --- a/ultralytics/yolo/data/dataloaders/v5augmentations.py +++ b/ultralytics/yolo/data/dataloaders/v5augmentations.py @@ -1,4 +1,4 @@ -# YOLOv5 🚀 by Ultralytics, GPL-3.0 license +# Ultralytics YOLO 🚀, GPL-3.0 license """ Image augmentation functions """ diff --git a/ultralytics/yolo/data/dataloaders/v5loader.py b/ultralytics/yolo/data/dataloaders/v5loader.py index 1015eaf..54aa5e4 100644 --- a/ultralytics/yolo/data/dataloaders/v5loader.py +++ b/ultralytics/yolo/data/dataloaders/v5loader.py @@ -1,4 +1,4 @@ -# YOLOv5 🚀 by Ultralytics, GPL-3.0 license +# Ultralytics YOLO 🚀, GPL-3.0 license """ Dataloaders and dataset utils """ diff --git a/ultralytics/yolo/data/dataset.py b/ultralytics/yolo/data/dataset.py index 72ed3b4..387271e 100644 --- a/ultralytics/yolo/data/dataset.py +++ b/ultralytics/yolo/data/dataset.py @@ -1,3 +1,5 @@ +# Ultralytics YOLO 🚀, GPL-3.0 license + from itertools import repeat from multiprocessing.pool import Pool from pathlib import Path diff --git a/ultralytics/yolo/data/dataset_wrappers.py b/ultralytics/yolo/data/dataset_wrappers.py index 2cd4e0b..46a8eee 100644 --- a/ultralytics/yolo/data/dataset_wrappers.py +++ b/ultralytics/yolo/data/dataset_wrappers.py @@ -1,3 +1,5 @@ +# Ultralytics YOLO 🚀, GPL-3.0 license + import collections from copy import deepcopy diff --git a/ultralytics/yolo/data/datasets/coco.yaml b/ultralytics/yolo/data/datasets/coco.yaml index 57aa9b9..1498eac 100644 --- a/ultralytics/yolo/data/datasets/coco.yaml +++ b/ultralytics/yolo/data/datasets/coco.yaml @@ -1,4 +1,4 @@ -# YOLOv5 🚀 by Ultralytics, GPL-3.0 license +# Ultralytics YOLO 🚀, GPL-3.0 license # COCO 2017 dataset http://cocodataset.org by Microsoft # Example usage: python train.py --data coco.yaml # parent diff --git a/ultralytics/yolo/data/datasets/coco128-seg.yaml b/ultralytics/yolo/data/datasets/coco128-seg.yaml index acde4c1..6f9ddba 100644 --- a/ultralytics/yolo/data/datasets/coco128-seg.yaml +++ b/ultralytics/yolo/data/datasets/coco128-seg.yaml @@ -1,4 +1,4 @@ -# YOLOv5 🚀 by Ultralytics, GPL-3.0 license +# Ultralytics YOLO 🚀, GPL-3.0 license # COCO128-seg dataset https://www.kaggle.com/ultralytics/coco128 (first 128 images from COCO train2017) by Ultralytics # Example usage: python train.py --data coco128.yaml # parent diff --git a/ultralytics/yolo/data/datasets/coco128.yaml b/ultralytics/yolo/data/datasets/coco128.yaml index 6ab5425..3ef3b8b 100644 --- a/ultralytics/yolo/data/datasets/coco128.yaml +++ b/ultralytics/yolo/data/datasets/coco128.yaml @@ -1,4 +1,4 @@ -# YOLOv5 🚀 by Ultralytics, GPL-3.0 license +# Ultralytics YOLO 🚀, GPL-3.0 license # COCO128 dataset https://www.kaggle.com/ultralytics/coco128 (first 128 images from COCO train2017) by Ultralytics # Example usage: python train.py --data coco128.yaml # parent diff --git a/ultralytics/yolo/data/scripts/download_weights.sh b/ultralytics/yolo/data/scripts/download_weights.sh index 31e0a15..59d37fa 100755 --- a/ultralytics/yolo/data/scripts/download_weights.sh +++ b/ultralytics/yolo/data/scripts/download_weights.sh @@ -1,5 +1,5 @@ #!/bin/bash -# YOLOv5 🚀 by Ultralytics, GPL-3.0 license +# Ultralytics YOLO 🚀, GPL-3.0 license # Download latest models from https://github.com/ultralytics/yolov5/releases # Example usage: bash data/scripts/download_weights.sh # parent diff --git a/ultralytics/yolo/data/scripts/get_coco.sh b/ultralytics/yolo/data/scripts/get_coco.sh index a772e90..8648f7f 100755 --- a/ultralytics/yolo/data/scripts/get_coco.sh +++ b/ultralytics/yolo/data/scripts/get_coco.sh @@ -1,5 +1,5 @@ #!/bin/bash -# YOLOv5 🚀 by Ultralytics, GPL-3.0 license +# Ultralytics YOLO 🚀, GPL-3.0 license # Download COCO 2017 dataset http://cocodataset.org # Example usage: bash data/scripts/get_coco.sh # parent diff --git a/ultralytics/yolo/data/scripts/get_coco128.sh b/ultralytics/yolo/data/scripts/get_coco128.sh index e7ddce8..be3ccaf 100755 --- a/ultralytics/yolo/data/scripts/get_coco128.sh +++ b/ultralytics/yolo/data/scripts/get_coco128.sh @@ -1,5 +1,5 @@ #!/bin/bash -# YOLOv5 🚀 by Ultralytics, GPL-3.0 license +# Ultralytics YOLO 🚀, GPL-3.0 license # Download COCO128 dataset https://www.kaggle.com/ultralytics/coco128 (first 128 images from COCO train2017) # Example usage: bash data/scripts/get_coco128.sh # parent diff --git a/ultralytics/yolo/data/scripts/get_imagenet.sh b/ultralytics/yolo/data/scripts/get_imagenet.sh index 6026d50..b0e4a6d 100755 --- a/ultralytics/yolo/data/scripts/get_imagenet.sh +++ b/ultralytics/yolo/data/scripts/get_imagenet.sh @@ -1,5 +1,5 @@ #!/bin/bash -# YOLOv5 🚀 by Ultralytics, GPL-3.0 license +# Ultralytics YOLO 🚀, GPL-3.0 license # Download ILSVRC2012 ImageNet dataset https://image-net.org # Example usage: bash data/scripts/get_imagenet.sh # parent diff --git a/ultralytics/yolo/data/utils.py b/ultralytics/yolo/data/utils.py index bc9e84e..311fdf8 100644 --- a/ultralytics/yolo/data/utils.py +++ b/ultralytics/yolo/data/utils.py @@ -1,3 +1,5 @@ +# Ultralytics YOLO 🚀, GPL-3.0 license + import contextlib import hashlib import os diff --git a/ultralytics/yolo/engine/exporter.py b/ultralytics/yolo/engine/exporter.py index ababe0c..be225e6 100644 --- a/ultralytics/yolo/engine/exporter.py +++ b/ultralytics/yolo/engine/exporter.py @@ -1,4 +1,4 @@ -# YOLOv5 🚀 by Ultralytics, GPL-3.0 license +# Ultralytics YOLO 🚀, GPL-3.0 license """ Export a YOLOv5 PyTorch model to other formats. TensorFlow exports authored by https://github.com/zldrobit diff --git a/ultralytics/yolo/engine/model.py b/ultralytics/yolo/engine/model.py index cc727ad..72df1a7 100644 --- a/ultralytics/yolo/engine/model.py +++ b/ultralytics/yolo/engine/model.py @@ -1,3 +1,5 @@ +# Ultralytics YOLO 🚀, GPL-3.0 license + from pathlib import Path from ultralytics import yolo # noqa diff --git a/ultralytics/yolo/engine/predictor.py b/ultralytics/yolo/engine/predictor.py index 868a493..15e683c 100644 --- a/ultralytics/yolo/engine/predictor.py +++ b/ultralytics/yolo/engine/predictor.py @@ -1,4 +1,4 @@ -# predictor engine by Ultralytics +# Ultralytics YOLO 🚀, GPL-3.0 license """ Run prediction on images, videos, directories, globs, YouTube, webcam, streams, etc. Usage - sources: diff --git a/ultralytics/yolo/engine/trainer.py b/ultralytics/yolo/engine/trainer.py index 9f89804..f6be047 100644 --- a/ultralytics/yolo/engine/trainer.py +++ b/ultralytics/yolo/engine/trainer.py @@ -1,3 +1,4 @@ +# Ultralytics YOLO 🚀, GPL-3.0 license """ Simple training loop; Boilerplate that could apply to any arbitrary neural network, """ diff --git a/ultralytics/yolo/engine/validator.py b/ultralytics/yolo/engine/validator.py index 8e5210b..91ba009 100644 --- a/ultralytics/yolo/engine/validator.py +++ b/ultralytics/yolo/engine/validator.py @@ -1,3 +1,5 @@ +# Ultralytics YOLO 🚀, GPL-3.0 license + import json from collections import defaultdict from pathlib import Path @@ -86,6 +88,7 @@ class BaseValidator: self.model = model self.loss = torch.zeros_like(trainer.loss_items, device=trainer.device) self.args.plots = trainer.epoch == trainer.epochs - 1 # always plot final epoch + model.eval() else: callbacks.add_integration_callbacks(self) self.run_callbacks('on_val_start') @@ -106,17 +109,17 @@ class BaseValidator: f'Forcing --batch-size 1 square inference (1,3,{imgsz},{imgsz}) for non-PyTorch models') if isinstance(self.args.data, str) and self.args.data.endswith(".yaml"): - data = check_dataset_yaml(self.args.data) + self.data = check_dataset_yaml(self.args.data) else: - data = check_dataset(self.args.data) + self.data = check_dataset(self.args.data) if self.device.type == 'cpu': self.args.workers = 0 # faster CPU val as time dominated by inference, not dataloading self.dataloader = self.dataloader or \ - self.get_dataloader(data.get("val") or data.set("test"), self.args.batch) - self.data = data + self.get_dataloader(self.data.get("val") or self.data.set("test"), self.args.batch) - model.eval() + model.eval() + model.warmup(imgsz=(1 if pt else self.args.batch, 3, imgsz, imgsz)) # warmup dt = Profile(), Profile(), Profile(), Profile() n_batches = len(self.dataloader) diff --git a/ultralytics/yolo/utils/__init__.py b/ultralytics/yolo/utils/__init__.py index 2661764..3366222 100644 --- a/ultralytics/yolo/utils/__init__.py +++ b/ultralytics/yolo/utils/__init__.py @@ -1,3 +1,5 @@ +# Ultralytics YOLO 🚀, GPL-3.0 license + import contextlib import inspect import logging.config diff --git a/ultralytics/yolo/utils/autobatch.py b/ultralytics/yolo/utils/autobatch.py index 7181cdb..cac167d 100644 --- a/ultralytics/yolo/utils/autobatch.py +++ b/ultralytics/yolo/utils/autobatch.py @@ -1,4 +1,4 @@ -# YOLOv5 🚀 by Ultralytics, GPL-3.0 license +# Ultralytics YOLO 🚀, GPL-3.0 license """ Auto-batch utils """ diff --git a/ultralytics/yolo/utils/callbacks/base.py b/ultralytics/yolo/utils/callbacks/base.py index f0389bf..fedf0ea 100644 --- a/ultralytics/yolo/utils/callbacks/base.py +++ b/ultralytics/yolo/utils/callbacks/base.py @@ -1,4 +1,7 @@ -# Ultralytics YOLO base callbacks +# Ultralytics YOLO 🚀, GPL-3.0 license +""" +Base callbacks +""" # Trainer callbacks ---------------------------------------------------------------------------------------------------- diff --git a/ultralytics/yolo/utils/callbacks/clearml.py b/ultralytics/yolo/utils/callbacks/clearml.py index defd320..7a02979 100644 --- a/ultralytics/yolo/utils/callbacks/clearml.py +++ b/ultralytics/yolo/utils/callbacks/clearml.py @@ -1,3 +1,5 @@ +# Ultralytics YOLO 🚀, GPL-3.0 license + from ultralytics.yolo.utils.torch_utils import get_flops, get_num_params try: diff --git a/ultralytics/yolo/utils/callbacks/comet.py b/ultralytics/yolo/utils/callbacks/comet.py index 7cb5ce1..7133cbb 100644 --- a/ultralytics/yolo/utils/callbacks/comet.py +++ b/ultralytics/yolo/utils/callbacks/comet.py @@ -1,3 +1,5 @@ +# Ultralytics YOLO 🚀, GPL-3.0 license + from ultralytics.yolo.utils.torch_utils import get_flops, get_num_params try: diff --git a/ultralytics/yolo/utils/callbacks/hub.py b/ultralytics/yolo/utils/callbacks/hub.py index 1fadcbc..47a7e54 100644 --- a/ultralytics/yolo/utils/callbacks/hub.py +++ b/ultralytics/yolo/utils/callbacks/hub.py @@ -1,3 +1,5 @@ +# Ultralytics YOLO 🚀, GPL-3.0 license + import json from time import time diff --git a/ultralytics/yolo/utils/callbacks/tensorboard.py b/ultralytics/yolo/utils/callbacks/tensorboard.py index 1093c92..86a230e 100644 --- a/ultralytics/yolo/utils/callbacks/tensorboard.py +++ b/ultralytics/yolo/utils/callbacks/tensorboard.py @@ -1,3 +1,5 @@ +# Ultralytics YOLO 🚀, GPL-3.0 license + from torch.utils.tensorboard import SummaryWriter writer = None # TensorBoard SummaryWriter instance diff --git a/ultralytics/yolo/utils/callbacks/wb.py b/ultralytics/yolo/utils/callbacks/wb.py index 5ebea51..ce4db81 100644 --- a/ultralytics/yolo/utils/callbacks/wb.py +++ b/ultralytics/yolo/utils/callbacks/wb.py @@ -1,3 +1,5 @@ +# Ultralytics YOLO 🚀, GPL-3.0 license + from ultralytics.yolo.utils.torch_utils import get_flops, get_num_params try: diff --git a/ultralytics/yolo/utils/checks.py b/ultralytics/yolo/utils/checks.py index 2d97d56..fc1da26 100644 --- a/ultralytics/yolo/utils/checks.py +++ b/ultralytics/yolo/utils/checks.py @@ -1,3 +1,5 @@ +# Ultralytics YOLO 🚀, GPL-3.0 license + import glob import inspect import math @@ -62,8 +64,7 @@ def check_imgsz(imgsz, stride=32, min_dim=1, floor=0): LOGGER.warning(f'WARNING ⚠️ --img-size {imgsz} must be multiple of max stride {stride}, updating to {sz}') # Add missing dimensions if necessary - if min_dim == 2 and len(sz) == 1: - sz = [sz[0], sz[0]] + sz = [sz[0], sz[0]] if min_dim == 2 and len(sz) == 1 else sz[0] if min_dim == 1 and len(sz) == 1 else sz return sz diff --git a/ultralytics/yolo/utils/dist.py b/ultralytics/yolo/utils/dist.py index e99a7a5..c3b3bbb 100644 --- a/ultralytics/yolo/utils/dist.py +++ b/ultralytics/yolo/utils/dist.py @@ -1,3 +1,5 @@ +# Ultralytics YOLO 🚀, GPL-3.0 license + import os import shutil import socket diff --git a/ultralytics/yolo/utils/downloads.py b/ultralytics/yolo/utils/downloads.py index 61f273b..f2bfc53 100644 --- a/ultralytics/yolo/utils/downloads.py +++ b/ultralytics/yolo/utils/downloads.py @@ -1,3 +1,5 @@ +# Ultralytics YOLO 🚀, GPL-3.0 license + import logging import os import subprocess diff --git a/ultralytics/yolo/utils/files.py b/ultralytics/yolo/utils/files.py index 96c6367..7360ca7 100644 --- a/ultralytics/yolo/utils/files.py +++ b/ultralytics/yolo/utils/files.py @@ -1,3 +1,5 @@ +# Ultralytics YOLO 🚀, GPL-3.0 license + import contextlib import glob import os diff --git a/ultralytics/yolo/utils/instance.py b/ultralytics/yolo/utils/instance.py index d2873fd..965a616 100644 --- a/ultralytics/yolo/utils/instance.py +++ b/ultralytics/yolo/utils/instance.py @@ -1,3 +1,5 @@ +# Ultralytics YOLO 🚀, GPL-3.0 license + from collections import abc from itertools import repeat from numbers import Number diff --git a/ultralytics/yolo/utils/loss.py b/ultralytics/yolo/utils/loss.py index bb8505c..60dd6b2 100644 --- a/ultralytics/yolo/utils/loss.py +++ b/ultralytics/yolo/utils/loss.py @@ -1,3 +1,5 @@ +# Ultralytics YOLO 🚀, GPL-3.0 license + import torch import torch.nn as nn import torch.nn.functional as F diff --git a/ultralytics/yolo/utils/metrics.py b/ultralytics/yolo/utils/metrics.py index e3a6d9a..35a973a 100644 --- a/ultralytics/yolo/utils/metrics.py +++ b/ultralytics/yolo/utils/metrics.py @@ -1,4 +1,4 @@ -# YOLOv5 🚀 by Ultralytics, GPL-3.0 license +# Ultralytics YOLO 🚀, GPL-3.0 license """ Model validation metrics """ diff --git a/ultralytics/yolo/utils/ops.py b/ultralytics/yolo/utils/ops.py index edb32b0..67e5d52 100644 --- a/ultralytics/yolo/utils/ops.py +++ b/ultralytics/yolo/utils/ops.py @@ -1,3 +1,5 @@ +# Ultralytics YOLO 🚀, GPL-3.0 license + import contextlib import math import re diff --git a/ultralytics/yolo/utils/plotting.py b/ultralytics/yolo/utils/plotting.py index e978806..f03a22a 100644 --- a/ultralytics/yolo/utils/plotting.py +++ b/ultralytics/yolo/utils/plotting.py @@ -1,3 +1,5 @@ +# Ultralytics YOLO 🚀, GPL-3.0 license + import contextlib import math from pathlib import Path diff --git a/ultralytics/yolo/utils/tal.py b/ultralytics/yolo/utils/tal.py index 32c621d..98481ad 100644 --- a/ultralytics/yolo/utils/tal.py +++ b/ultralytics/yolo/utils/tal.py @@ -1,3 +1,5 @@ +# Ultralytics YOLO 🚀, GPL-3.0 license + import torch import torch.nn as nn import torch.nn.functional as F diff --git a/ultralytics/yolo/utils/torch_utils.py b/ultralytics/yolo/utils/torch_utils.py index 9c82b71..0e06224 100644 --- a/ultralytics/yolo/utils/torch_utils.py +++ b/ultralytics/yolo/utils/torch_utils.py @@ -1,3 +1,5 @@ +# Ultralytics YOLO 🚀, GPL-3.0 license + import math import os import platform @@ -59,7 +61,7 @@ def DDP_model(model): def select_device(device='', batch_size=0, newline=False): # device = None or 'cpu' or 0 or '0' or '0,1,2,3' ver = git_describe() or ultralytics.__version__ # git commit or pip package version - s = f'Ultralytics YOLO 🚀 {ver} Python-{platform.python_version()} torch-{torch.__version__} ' + s = f'Ultralytics YOLOv{ver} 🚀 Python-{platform.python_version()} torch-{torch.__version__} ' device = str(device).strip().lower().replace('cuda:', '').replace('none', '') # to string, 'cuda:0' to '0' cpu = device == 'cpu' mps = device == 'mps' # Apple Metal Performance Shaders (MPS) diff --git a/ultralytics/yolo/v8/__init__.py b/ultralytics/yolo/v8/__init__.py index e43e165..17700b3 100644 --- a/ultralytics/yolo/v8/__init__.py +++ b/ultralytics/yolo/v8/__init__.py @@ -1,3 +1,5 @@ +# Ultralytics YOLO 🚀, GPL-3.0 license + from pathlib import Path from ultralytics.yolo.v8 import classify, detect, segment diff --git a/ultralytics/yolo/v8/classify/__init__.py b/ultralytics/yolo/v8/classify/__init__.py index 1c67016..89b0023 100644 --- a/ultralytics/yolo/v8/classify/__init__.py +++ b/ultralytics/yolo/v8/classify/__init__.py @@ -1,3 +1,5 @@ +# Ultralytics YOLO 🚀, GPL-3.0 license + from ultralytics.yolo.v8.classify.predict import ClassificationPredictor, predict from ultralytics.yolo.v8.classify.train import ClassificationTrainer, train from ultralytics.yolo.v8.classify.val import ClassificationValidator, val diff --git a/ultralytics/yolo/v8/classify/predict.py b/ultralytics/yolo/v8/classify/predict.py index 04d617b..d229390 100644 --- a/ultralytics/yolo/v8/classify/predict.py +++ b/ultralytics/yolo/v8/classify/predict.py @@ -1,3 +1,5 @@ +# Ultralytics YOLO 🚀, GPL-3.0 license + import hydra import torch diff --git a/ultralytics/yolo/v8/classify/train.py b/ultralytics/yolo/v8/classify/train.py index 3cd9438..bb03ba1 100644 --- a/ultralytics/yolo/v8/classify/train.py +++ b/ultralytics/yolo/v8/classify/train.py @@ -1,3 +1,5 @@ +# Ultralytics YOLO 🚀, GPL-3.0 license + import hydra import torch import torchvision diff --git a/ultralytics/yolo/v8/classify/val.py b/ultralytics/yolo/v8/classify/val.py index 1b9e481..9ccd710 100644 --- a/ultralytics/yolo/v8/classify/val.py +++ b/ultralytics/yolo/v8/classify/val.py @@ -1,3 +1,5 @@ +# Ultralytics YOLO 🚀, GPL-3.0 license + import hydra from ultralytics.yolo.data import build_classification_dataloader diff --git a/ultralytics/yolo/v8/detect/__init__.py b/ultralytics/yolo/v8/detect/__init__.py index a683006..2aaa30d 100644 --- a/ultralytics/yolo/v8/detect/__init__.py +++ b/ultralytics/yolo/v8/detect/__init__.py @@ -1,3 +1,5 @@ +# Ultralytics YOLO 🚀, GPL-3.0 license + from .predict import DetectionPredictor, predict from .train import DetectionTrainer, train from .val import DetectionValidator, val diff --git a/ultralytics/yolo/v8/detect/predict.py b/ultralytics/yolo/v8/detect/predict.py index f7544b8..8b9ed3a 100644 --- a/ultralytics/yolo/v8/detect/predict.py +++ b/ultralytics/yolo/v8/detect/predict.py @@ -1,3 +1,5 @@ +# Ultralytics YOLO 🚀, GPL-3.0 license + import hydra import torch diff --git a/ultralytics/yolo/v8/detect/train.py b/ultralytics/yolo/v8/detect/train.py index acf2b5a..3d0a115 100644 --- a/ultralytics/yolo/v8/detect/train.py +++ b/ultralytics/yolo/v8/detect/train.py @@ -1,3 +1,5 @@ +# Ultralytics YOLO 🚀, GPL-3.0 license + from copy import copy import hydra diff --git a/ultralytics/yolo/v8/detect/val.py b/ultralytics/yolo/v8/detect/val.py index ff65318..de62002 100644 --- a/ultralytics/yolo/v8/detect/val.py +++ b/ultralytics/yolo/v8/detect/val.py @@ -1,3 +1,5 @@ +# Ultralytics YOLO 🚀, GPL-3.0 license + import os from pathlib import Path diff --git a/ultralytics/yolo/v8/models/cls/yolov8l-cls.yaml b/ultralytics/yolo/v8/models/cls/yolov8l-cls.yaml index f035123..bf981a8 100644 --- a/ultralytics/yolo/v8/models/cls/yolov8l-cls.yaml +++ b/ultralytics/yolo/v8/models/cls/yolov8l-cls.yaml @@ -1,4 +1,4 @@ -# YOLOv5 🚀 by Ultralytics, GPL-3.0 license +# Ultralytics YOLO 🚀, GPL-3.0 license # Parameters nc: 1000 # number of classes diff --git a/ultralytics/yolo/v8/models/cls/yolov8m-cls.yaml b/ultralytics/yolo/v8/models/cls/yolov8m-cls.yaml index d14d1ce..7e91894 100644 --- a/ultralytics/yolo/v8/models/cls/yolov8m-cls.yaml +++ b/ultralytics/yolo/v8/models/cls/yolov8m-cls.yaml @@ -1,4 +1,4 @@ -# YOLOv5 🚀 by Ultralytics, GPL-3.0 license +# Ultralytics YOLO 🚀, GPL-3.0 license # Parameters nc: 1000 # number of classes diff --git a/ultralytics/yolo/v8/models/cls/yolov8n-cls.yaml b/ultralytics/yolo/v8/models/cls/yolov8n-cls.yaml index a3969ed..29be226 100644 --- a/ultralytics/yolo/v8/models/cls/yolov8n-cls.yaml +++ b/ultralytics/yolo/v8/models/cls/yolov8n-cls.yaml @@ -1,4 +1,4 @@ -# YOLOv5 🚀 by Ultralytics, GPL-3.0 license +# Ultralytics YOLO 🚀, GPL-3.0 license # Parameters nc: 1000 # number of classes diff --git a/ultralytics/yolo/v8/models/cls/yolov8s-cls.yaml b/ultralytics/yolo/v8/models/cls/yolov8s-cls.yaml index 040bc1f..00ddc55 100644 --- a/ultralytics/yolo/v8/models/cls/yolov8s-cls.yaml +++ b/ultralytics/yolo/v8/models/cls/yolov8s-cls.yaml @@ -1,4 +1,4 @@ -# YOLOv5 🚀 by Ultralytics, GPL-3.0 license +# Ultralytics YOLO 🚀, GPL-3.0 license # Parameters nc: 1000 # number of classes diff --git a/ultralytics/yolo/v8/models/cls/yolov8x-cls.yaml b/ultralytics/yolo/v8/models/cls/yolov8x-cls.yaml index 10a0325..46c75d5 100644 --- a/ultralytics/yolo/v8/models/cls/yolov8x-cls.yaml +++ b/ultralytics/yolo/v8/models/cls/yolov8x-cls.yaml @@ -1,4 +1,4 @@ -# YOLOv5 🚀 by Ultralytics, GPL-3.0 license +# Ultralytics YOLO 🚀, GPL-3.0 license # Parameters nc: 1000 # number of classes diff --git a/ultralytics/yolo/v8/models/seg/yolov8l-seg.yaml b/ultralytics/yolo/v8/models/seg/yolov8l-seg.yaml index e3bb777..235dc76 100644 --- a/ultralytics/yolo/v8/models/seg/yolov8l-seg.yaml +++ b/ultralytics/yolo/v8/models/seg/yolov8l-seg.yaml @@ -1,4 +1,4 @@ -# YOLOv5 🚀 by Ultralytics, GPL-3.0 license +# Ultralytics YOLO 🚀, GPL-3.0 license # Parameters nc: 80 # number of classes diff --git a/ultralytics/yolo/v8/models/seg/yolov8m-seg.yaml b/ultralytics/yolo/v8/models/seg/yolov8m-seg.yaml index d91ca5b..17c07f6 100644 --- a/ultralytics/yolo/v8/models/seg/yolov8m-seg.yaml +++ b/ultralytics/yolo/v8/models/seg/yolov8m-seg.yaml @@ -1,4 +1,4 @@ -# YOLOv5 🚀 by Ultralytics, GPL-3.0 license +# Ultralytics YOLO 🚀, GPL-3.0 license # Parameters nc: 80 # number of classes diff --git a/ultralytics/yolo/v8/models/seg/yolov8n-seg.yaml b/ultralytics/yolo/v8/models/seg/yolov8n-seg.yaml index 3ac78db..ffecc9d 100644 --- a/ultralytics/yolo/v8/models/seg/yolov8n-seg.yaml +++ b/ultralytics/yolo/v8/models/seg/yolov8n-seg.yaml @@ -1,4 +1,4 @@ -# YOLOv5 🚀 by Ultralytics, GPL-3.0 license +# Ultralytics YOLO 🚀, GPL-3.0 license # Parameters nc: 80 # number of classes diff --git a/ultralytics/yolo/v8/models/seg/yolov8s-seg.yaml b/ultralytics/yolo/v8/models/seg/yolov8s-seg.yaml index 3b2ebe4..dc828a1 100644 --- a/ultralytics/yolo/v8/models/seg/yolov8s-seg.yaml +++ b/ultralytics/yolo/v8/models/seg/yolov8s-seg.yaml @@ -1,4 +1,4 @@ -# YOLOv5 🚀 by Ultralytics, GPL-3.0 license +# Ultralytics YOLO 🚀, GPL-3.0 license # Parameters nc: 80 # number of classes diff --git a/ultralytics/yolo/v8/models/seg/yolov8x-seg.yaml b/ultralytics/yolo/v8/models/seg/yolov8x-seg.yaml index 646e187..0572283 100644 --- a/ultralytics/yolo/v8/models/seg/yolov8x-seg.yaml +++ b/ultralytics/yolo/v8/models/seg/yolov8x-seg.yaml @@ -1,4 +1,4 @@ -# YOLOv5 🚀 by Ultralytics, GPL-3.0 license +# Ultralytics YOLO 🚀, GPL-3.0 license # Parameters nc: 80 # number of classes diff --git a/ultralytics/yolo/v8/models/yolov8l.yaml b/ultralytics/yolo/v8/models/yolov8l.yaml index e8525f6..9ec170c 100644 --- a/ultralytics/yolo/v8/models/yolov8l.yaml +++ b/ultralytics/yolo/v8/models/yolov8l.yaml @@ -1,4 +1,4 @@ -# YOLOv5 🚀 by Ultralytics, GPL-3.0 license +# Ultralytics YOLO 🚀, GPL-3.0 license # Parameters nc: 80 # number of classes diff --git a/ultralytics/yolo/v8/models/yolov8m.yaml b/ultralytics/yolo/v8/models/yolov8m.yaml index 2f7d3bb..f97cf05 100644 --- a/ultralytics/yolo/v8/models/yolov8m.yaml +++ b/ultralytics/yolo/v8/models/yolov8m.yaml @@ -1,4 +1,4 @@ -# YOLOv5 🚀 by Ultralytics, GPL-3.0 license +# Ultralytics YOLO 🚀, GPL-3.0 license # Parameters nc: 80 # number of classes diff --git a/ultralytics/yolo/v8/models/yolov8n.yaml b/ultralytics/yolo/v8/models/yolov8n.yaml index f0f9481..83cf080 100644 --- a/ultralytics/yolo/v8/models/yolov8n.yaml +++ b/ultralytics/yolo/v8/models/yolov8n.yaml @@ -1,4 +1,4 @@ -# YOLOv5 🚀 by Ultralytics, GPL-3.0 license +# Ultralytics YOLO 🚀, GPL-3.0 license # Parameters nc: 80 # number of classes diff --git a/ultralytics/yolo/v8/models/yolov8s.yaml b/ultralytics/yolo/v8/models/yolov8s.yaml index be621c9..0c96d94 100644 --- a/ultralytics/yolo/v8/models/yolov8s.yaml +++ b/ultralytics/yolo/v8/models/yolov8s.yaml @@ -1,4 +1,4 @@ -# YOLOv5 🚀 by Ultralytics, GPL-3.0 license +# Ultralytics YOLO 🚀, GPL-3.0 license # Parameters nc: 80 # number of classes diff --git a/ultralytics/yolo/v8/models/yolov8x.yaml b/ultralytics/yolo/v8/models/yolov8x.yaml index 3732e2e..20e4070 100644 --- a/ultralytics/yolo/v8/models/yolov8x.yaml +++ b/ultralytics/yolo/v8/models/yolov8x.yaml @@ -1,4 +1,4 @@ -# YOLOv5 🚀 by Ultralytics, GPL-3.0 license +# Ultralytics YOLO 🚀, GPL-3.0 license # Parameters nc: 80 # number of classes diff --git a/ultralytics/yolo/v8/models/yolov8x6.yaml b/ultralytics/yolo/v8/models/yolov8x6.yaml index b2e72ed..8ffcdea 100644 --- a/ultralytics/yolo/v8/models/yolov8x6.yaml +++ b/ultralytics/yolo/v8/models/yolov8x6.yaml @@ -1,4 +1,4 @@ -# YOLOv5 🚀 by Ultralytics, GPL-3.0 license +# Ultralytics YOLO 🚀, GPL-3.0 license # Parameters nc: 80 # number of classes diff --git a/ultralytics/yolo/v8/segment/__init__.py b/ultralytics/yolo/v8/segment/__init__.py index f299f27..e74ca22 100644 --- a/ultralytics/yolo/v8/segment/__init__.py +++ b/ultralytics/yolo/v8/segment/__init__.py @@ -1,3 +1,5 @@ +# Ultralytics YOLO 🚀, GPL-3.0 license + from .predict import SegmentationPredictor, predict from .train import SegmentationTrainer, train from .val import SegmentationValidator, val diff --git a/ultralytics/yolo/v8/segment/predict.py b/ultralytics/yolo/v8/segment/predict.py index 810cd07..3d89d7f 100644 --- a/ultralytics/yolo/v8/segment/predict.py +++ b/ultralytics/yolo/v8/segment/predict.py @@ -1,3 +1,5 @@ +# Ultralytics YOLO 🚀, GPL-3.0 license + import hydra import torch diff --git a/ultralytics/yolo/v8/segment/train.py b/ultralytics/yolo/v8/segment/train.py index 3242154..acfe8b1 100644 --- a/ultralytics/yolo/v8/segment/train.py +++ b/ultralytics/yolo/v8/segment/train.py @@ -1,3 +1,5 @@ +# Ultralytics YOLO 🚀, GPL-3.0 license + from copy import copy import hydra diff --git a/ultralytics/yolo/v8/segment/val.py b/ultralytics/yolo/v8/segment/val.py index 019da2f..03c1b1e 100644 --- a/ultralytics/yolo/v8/segment/val.py +++ b/ultralytics/yolo/v8/segment/val.py @@ -1,3 +1,5 @@ +# Ultralytics YOLO 🚀, GPL-3.0 license + import os from multiprocessing.pool import ThreadPool from pathlib import Path