Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Kalen Michael <kalenmike@gmail.com>
single_channel
Glenn Jocher 2 years ago committed by GitHub
parent 6feba17760
commit 422c49d439
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -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

@ -1,4 +1,4 @@
# YOLO 🚀 by Ultralytics, GPL-3.0 license # Ultralytics YOLO 🚀, GPL-3.0 license
# YOLO Continuous Integration (CI) GitHub Actions tests # YOLO Continuous Integration (CI) GitHub Actions tests
name: Ultralytics CI name: Ultralytics CI

@ -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 # Builds ultralytics/ultralytics:latest images on DockerHub https://hub.docker.com/r/ultralytics
name: Publish Docker Images name: Publish Docker Images

@ -68,7 +68,22 @@ pip install ultralytics
<details open> <details open>
<summary>Usage</summary> <summary>Usage</summary>
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 ```python
from ultralytics import YOLO 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 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 [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). Ultralytics [release](https://github.com/ultralytics/ultralytics/releases).
### Known Issues / TODOs
- [ ] TensorFlow exports
- [ ] GPU exports
- [ ] DDP resume
- [ ] [arxiv.org](https://arxiv.org) paper
</details> </details>
## <div align="center">Checkpoints</div> ## <div align="center">Checkpoints</div>

@ -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 # 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 # Image is CUDA-optimized for YOLOv5 single/multi-GPU training and inference

@ -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 # 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 # Image is aarch64-compatible for Apple M1 and other ARM architectures i.e. Jetson Nano and Raspberry Pi

@ -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 # 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 # Image is CPU-optimized for ONNX, OpenVINO and PyTorch YOLOv5 deployments

@ -2,7 +2,6 @@
# Usage: pip install -r requirements.txt # Usage: pip install -r requirements.txt
# Base ---------------------------------------- # Base ----------------------------------------
fire>=0.4.0
hydra-core>=1.2.0 hydra-core>=1.2.0
matplotlib>=3.2.2 matplotlib>=3.2.2
numpy>=1.18.5 numpy>=1.18.5

@ -1,3 +1,5 @@
# Ultralytics YOLO 🚀, GPL-3.0 license
import re import re
from pathlib import Path from pathlib import Path

@ -1,3 +1,5 @@
# Ultralytics YOLO 🚀, GPL-3.0 license
import os import os
from pathlib import Path from pathlib import Path

@ -1,3 +1,5 @@
# Ultralytics YOLO 🚀, GPL-3.0 license
from ultralytics import YOLO from ultralytics import YOLO
from ultralytics.yolo.configs import get_config from ultralytics.yolo.configs import get_config
from ultralytics.yolo.utils import DEFAULT_CONFIG, ROOT from ultralytics.yolo.utils import DEFAULT_CONFIG, ROOT

@ -1,3 +1,5 @@
# Ultralytics YOLO 🚀, GPL-3.0 license
from pathlib import Path from pathlib import Path
from ultralytics import YOLO from ultralytics import YOLO

@ -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": [
"<div align=\"center\">\n",
"\n",
" <a href=\"https://ultralytics.com/yolov5\" target=\"_blank\">\n",
" <img width=\"1024\", src=\"https://raw.githubusercontent.com/ultralytics/assets/main/yolov8/banner-yolov8.png\"></a>\n",
"\n",
"\n",
"<br>\n",
" <a href=\"https://bit.ly/yolov5-paperspace-notebook\"><img src=\"https://assets.paperspace.io/img/gradient-badge.svg\" alt=\"Run on Gradient\"></a>\n",
" <a href=\"https://colab.research.google.com/github/ultralytics/ultralytics/blob/main/examples/tutorial.ipynb\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"></a>\n",
" <a href=\"https://www.kaggle.com/ultralytics/yolov5\"><img src=\"https://kaggle.com/static/images/open-in-kaggle.svg\" alt=\"Open In Kaggle\"></a>\n",
"<br>\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 <a href=\"https://ultralytics.com\">Ultralytics</a>. 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 <a href=\"https://docs.ultralytics.com/\">YOLOv8 Docs</a> and reach out to us with any questions or feedback.\n",
"\n",
"</div>"
]
},
{
"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": [
"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n",
"<img align=\"left\" src=\"https://user-images.githubusercontent.com/26833433/127574988-6a558aa1-d268-44b9-bf6b-62d4c605cc72.jpg\" width=\"600\">"
]
},
{
"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",
"<p align=\"\"><a href=\"https://roboflow.com/?ref=ultralytics\"><img width=\"1000\" src=\"https://github.com/ultralytics/assets/raw/main/im/integrations-loop.png\"/></a></p>\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<?, ?it/s]\n",
"\u001b[34m\u001b[1malbumentations: \u001b[0mBlur(p=0.01, blur_limit=(3, 7)), MedianBlur(p=0.01, blur_limit=(3, 7)), ToGray(p=0.01), CLAHE(p=0.01, clip_limit=(1, 4.0), tile_grid_size=(8, 8))\n",
"\u001b[34m\u001b[1mval: \u001b[0mScanning /datasets/coco128/labels/train2017.cache... 126 images, 2 backgrounds, 0 corrupt: 100% 128/128 [00:00<?, ?it/s]\n",
"Image sizes 640 train, 640 val\n",
"Using 2 dataloader workers\n",
"Logging results to \u001b[1mruns/detect/train\u001b[0m\n",
"Starting training for 3 epochs...\n",
"\n",
" Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size\n",
" 1/3 4.31G 1.221 1.429 1.241 196 640: 100% 8/8 [00:08<00:00, 1.04s/it]\n",
" Class Images Instances Box(P R mAP50 mAP50-95): 100% 4/4 [00:02<00:00, 1.48it/s]\n",
" all 128 929 0.645 0.539 0.617 0.454\n",
"\n",
" Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size\n",
" 2/3 5.31G 1.186 1.306 1.255 287 640: 100% 8/8 [00:06<00:00, 1.17it/s]\n",
" Class Images Instances Box(P R mAP50 mAP50-95): 100% 4/4 [00:02<00:00, 1.37it/s]\n",
" all 128 929 0.654 0.601 0.643 0.474\n",
"\n",
" Epoch GPU_mem box_loss cls_loss dfl_loss Instances Size\n",
" 3/3 5.31G 1.17 1.408 1.267 189 640: 100% 8/8 [00:06<00:00, 1.18it/s]\n",
" Class Images Instances Box(P R mAP50 mAP50-95): 100% 4/4 [00:04<00:00, 1.17s/it]\n",
" all 128 929 0.636 0.619 0.648 0.479\n",
"\n",
"3 epochs completed in 0.013 hours.\n",
"Optimizer stripped from runs/detect/train/weights/last.pt, 6.5MB\n",
"Optimizer stripped from runs/detect/train/weights/best.pt, 6.5MB\n",
"\n",
"Validating runs/detect/train/weights/best.pt...\n",
"Ultralytics YOLO 🚀 0.0.59 Python-3.8.16 torch-1.13.0+cu116 CUDA:0 (Tesla T4, 15110MiB)\n",
"Fusing layers... \n",
"Model summary: 168 layers, 3151904 parameters, 0 gradients, 8.7 GFLOPs\n",
" Class Images Instances Box(P R mAP50 mAP50-95): 100% 4/4 [00:05<00:00, 1.42s/it]\n",
" all 128 929 0.658 0.605 0.65 0.481\n",
" person 128 254 0.764 0.717 0.777 0.547\n",
" bicycle 128 6 0.4 0.167 0.333 0.192\n",
" car 128 46 0.76 0.196 0.263 0.153\n",
" motorcycle 128 5 0.711 0.987 0.938 0.786\n",
" airplane 128 6 0.756 0.833 0.927 0.666\n",
" bus 128 7 1 0.705 0.723 0.632\n",
" train 128 3 0.708 1 0.913 0.742\n",
" truck 128 12 0.733 0.417 0.452 0.308\n",
" boat 128 6 0.453 0.421 0.502 0.317\n",
" traffic light 128 14 0.528 0.143 0.164 0.137\n",
" stop sign 128 2 0.597 0.5 0.828 0.663\n",
" bench 128 9 0.953 0.556 0.627 0.371\n",
" bird 128 16 0.697 0.875 0.948 0.622\n",
" cat 128 4 0.856 1 0.995 0.834\n",
" dog 128 9 0.641 0.889 0.855 0.624\n",
" horse 128 2 0.732 1 0.995 0.597\n",
" elephant 128 17 0.829 0.941 0.946 0.74\n",
" bear 128 1 0.618 1 0.995 0.995\n",
" zebra 128 4 0.843 1 0.995 0.972\n",
" giraffe 128 9 0.879 1 0.995 0.642\n",
" backpack 128 6 0.554 0.333 0.426 0.271\n",
" umbrella 128 18 0.707 0.67 0.719 0.469\n",
" handbag 128 19 0.892 0.158 0.262 0.101\n",
" tie 128 7 0.682 0.714 0.665 0.447\n",
" suitcase 128 4 0.505 1 0.995 0.594\n",
" frisbee 128 5 0.629 0.8 0.732 0.672\n",
" skis 128 1 0.876 1 0.995 0.497\n",
" snowboard 128 7 0.504 0.571 0.68 0.511\n",
" sports ball 128 6 0.576 0.5 0.514 0.263\n",
" kite 128 10 0.657 0.5 0.603 0.24\n",
" baseball bat 128 4 0.452 0.427 0.267 0.103\n",
" baseball glove 128 7 0.531 0.429 0.43 0.327\n",
" skateboard 128 5 0.869 0.6 0.6 0.415\n",
" tennis racket 128 7 0.851 0.429 0.504 0.342\n",
" bottle 128 18 0.574 0.389 0.395 0.236\n",
" wine glass 128 16 0.892 0.517 0.664 0.402\n",
" cup 128 36 0.719 0.361 0.446 0.326\n",
" fork 128 6 0.542 0.167 0.183 0.179\n",
" knife 128 16 0.837 0.562 0.698 0.386\n",
" spoon 128 22 0.522 0.348 0.386 0.219\n",
" bowl 128 28 0.681 0.685 0.676 0.55\n",
" banana 128 1 0.0197 0.0985 0.199 0.039\n",
" sandwich 128 2 0.457 1 0.995 0.995\n",
" orange 128 4 0.75 0.752 0.845 0.627\n",
" broccoli 128 11 0.274 0.182 0.262 0.209\n",
" carrot 128 24 0.625 0.667 0.667 0.443\n",
" hot dog 128 2 0.494 1 0.828 0.796\n",
" pizza 128 5 0.737 1 0.995 0.866\n",
" donut 128 14 0.599 1 0.95 0.891\n",
" cake 128 4 0.781 1 0.995 0.877\n",
" chair 128 35 0.385 0.571 0.488 0.264\n",
" couch 128 6 0.661 0.652 0.798 0.624\n",
" potted plant 128 14 0.819 0.571 0.682 0.506\n",
" bed 128 3 0.866 1 0.995 0.611\n",
" dining table 128 13 0.454 0.615 0.591 0.451\n",
" toilet 128 2 0.524 0.5 0.62 0.608\n",
" tv 128 2 0.545 0.634 0.828 0.762\n",
" laptop 128 3 1 0 0.708 0.562\n",
" mouse 128 2 1 0 0.0681 0.0272\n",
" remote 128 8 0.849 0.5 0.525 0.432\n",
" cell phone 128 8 0.491 0.125 0.118 0.0949\n",
" microwave 128 3 0.379 1 0.913 0.729\n",
" oven 128 5 0.5 0.6 0.462 0.361\n",
" sink 128 6 0.285 0.167 0.226 0.14\n",
" refrigerator 128 5 0.552 0.505 0.724 0.544\n",
" book 128 29 0.651 0.258 0.436 0.212\n",
" clock 128 9 0.666 0.778 0.886 0.72\n",
" vase 128 2 0.241 1 0.695 0.695\n",
" scissors 128 1 1 0 0.0995 0.00995\n",
" teddy bear 128 21 0.631 0.619 0.629 0.379\n",
" toothbrush 128 5 1 0.687 0.92 0.614\n",
"Speed: 3.4ms pre-process, 4.6ms inference, 0.0ms loss, 3.6ms post-process per image\n",
"Saving runs/detect/train/predictions.json...\n",
"Results saved to \u001b[1mruns/detect/train\u001b[0m\n"
]
}
]
},
{
"cell_type": "markdown",
"source": [
"# 4. Export\n",
"\n",
"Export a YOLOv8 model to any format.\n",
"\n",
"Format | `format=...**bold text**` | Model\n",
"--- | --- | ---\n",
"PyTorch | - | yolov8n.pt\n",
"TorchScript | `torchscript` | yolov8n.torchscript\n",
"ONNX | `onnx` | yolov8n.onnx\n",
"OpenVINO | `openvino` | yolov8n_openvino_model/\n",
"TensorRT | `engine` | yolov8n.engine\n",
"CoreML | `coreml` | yolov8n.mlmodel\n",
"TensorFlow SavedModel | `saved_model` | yolov8n_saved_model/\n",
"TensorFlow GraphDef | `pb` | yolov8n.pb\n",
"TensorFlow Lite | `tflite` | yolov8n.tflite\n",
"TensorFlow Edge TPU | `edgetpu` | yolov8n_edgetpu.tflite\n",
"TensorFlow.js | `tfjs` | yolov8n_web_model/\n",
"PaddlePaddle | `paddle` | yolov8n_paddle_model/"
],
"metadata": {
"id": "nPZZeNrLCQG6"
}
},
{
"cell_type": "code",
"source": [
"!yolo mode=export model=yolov8n.pt format=torchscript"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "CYIjW4igCjqD",
"outputId": "dd9e5aa6-8538-4403-c9d7-1548e8c4c39e"
},
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Fusing layers... \n",
"YOLOv8n summary: 168 layers, 3151904 parameters, 0 gradients, 8.7 GFLOPs\n",
"Ultralytics YOLO 🚀 0.0.59 Python-3.8.16 torch-1.13.0+cu116 CPU\n",
"Fusing layers... \n",
"YOLOv8n summary: 168 layers, 3151904 parameters, 0 gradients, 8.7 GFLOPs\n",
"\n",
"\u001b[34m\u001b[1mPyTorch:\u001b[0m starting from yolov8n.pt with output shape (1, 84, 8400) (6.2 MB)\n",
"\n",
"\u001b[34m\u001b[1mTorchScript:\u001b[0m starting export with torch 1.13.0+cu116...\n",
"\u001b[34m\u001b[1mTorchScript:\u001b[0m export success ✅ 1.9s, saved as yolov8n.torchscript (12.4 MB)\n",
"\n",
"Export complete (3.2s)\n",
"Results saved to \u001b[1m/content\u001b[0m\n",
"Predict: yolo task=detect mode=predict model=yolov8n.torchscript -WARNING ⚠️ not yet supported for YOLOv8 exported models\n",
"Validate: yolo task=detect mode=val model=yolov8n.torchscript -WARNING ⚠️ not yet supported for YOLOv8 exported models\n",
"Visualize: https://netron.app\n"
]
}
]
},
{
"cell_type": "markdown",
"source": [
"# 5. Python Usage\n",
"\n",
"YOLOv8 was reimagined using python-first principles for the most seamless python YOLO experience ever."
],
"metadata": {
"id": "kUMOQ0OeDBJG"
}
},
{
"cell_type": "code",
"source": [
"from ultralytics import YOLO\n",
"\n",
"# Load a model\n",
"model = YOLO('yolov8n.yaml') # build a new model from scratch\n",
"model = YOLO('yolov8n.pt') # load a pretrained model (recommended for training)\n",
"\n",
"# Model usage\n",
"results = model.train(data='coco128.yaml', epochs=3) # train the model\n",
"results = model.val(data='coco128.yaml') # evaluate model performance on the validation set\n",
"results = model.predict(source='https://ultralytics.com/images/bus.jpg') # predict on an image\n",
"success = model.export(format='onnx') # export the model to ONNX format"
],
"metadata": {
"id": "bpF9-vS_DAaf"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"# 6. Tasks\n",
"\n",
"YOLOv8 can train, val, predict and export models for the 3 primary tasks in vision AI: detection, segmentation and classification."
],
"metadata": {
"id": "Phm9ccmOKye5"
}
},
{
"cell_type": "markdown",
"source": [
"## 1. Detection\n",
"\n",
"Detection models have no suffix and are the default YOLOv8 models, i.e. `yolov8n.pt`"
],
"metadata": {
"id": "yq26lwpYK1lq"
}
},
{
"cell_type": "code",
"source": [
"# Load a pretraind YOLOv8n detection model, train it on COCO128 for 3 epochs and predict an image with it\n",
"from ultralytics import YOLO\n",
"\n",
"model = YOLO('yolov8n.pt') # load a pretrained YOLOv8n detection model\n",
"model.train(data='coco128.yaml', epochs=3) # train the model\n",
"model.predict(source='https://ultralytics.com/images/bus.jpg') # predict on an image"
],
"metadata": {
"id": "8Go5qqS9LbC5"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"## 2. Segmentation\n",
"\n",
"Segmentation models use the `-seg` suffix, i.e. `yolov8n-seg.pt`"
],
"metadata": {
"id": "7ZW58jUzK66B"
}
},
{
"cell_type": "code",
"source": [
"# Load a pretraind YOLOv8n segmentation model, train it on COCO128-seg for 3 epochs and predict an image with it\n",
"from ultralytics import YOLO\n",
"\n",
"model = YOLO('yolov8n-seg.pt') # load a pretrained YOLOv8n segmentation model\n",
"model.train(data='coco128-seg.yaml', epochs=3) # train the model\n",
"model.predict(source='https://ultralytics.com/images/bus.jpg') # predict on an image"
],
"metadata": {
"id": "WFPJIQl_L5HT"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"## 3. Classification\n",
"\n",
"Classification models use the `-cls` suffix, i.e. `yolov8n-cls.pt`"
],
"metadata": {
"id": "ax3p94VNK9zR"
}
},
{
"cell_type": "code",
"source": [
"# Load a pretraind YOLOv8n classification model, train it on imagenette160 for 3 epochs and predict an image with it\n",
"from ultralytics import YOLO\n",
"\n",
"model = YOLO('yolov8n-cls.pt') # load a pretrained YOLOv8n classification model\n",
"model.train(data='imagenette160', epochs=3) # train the model\n",
"model.predict(source='https://ultralytics.com/images/bus.jpg') # predict on an image"
],
"metadata": {
"id": "5q9Zu6zlL5rS"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "IEijrePND_2I"
},
"source": [
"# Appendix\n",
"\n",
"Additional content below."
]
},
{
"cell_type": "code",
"metadata": {
"id": "GMusP4OAxFu6"
},
"source": [
"# Run YOLOv8 tests (git clone install only)\n",
"!pytest ultralytics/tests"
],
"execution_count": null,
"outputs": []
}
]
}

@ -1,6 +1,9 @@
__version__ = "8.0.0.dev0" # Ultralytics YOLO 🚀, GPL-3.0 license
__version__ = "8.0.0"
from ultralytics.hub import checks
from ultralytics.yolo.engine.model import YOLO from ultralytics.yolo.engine.model import YOLO
from ultralytics.yolo.utils import ops from ultralytics.yolo.utils import ops
__all__ = ["__version__", "YOLO", "hub"] # allow simpler import __all__ = ["__version__", "YOLO", "hub", "checks"] # allow simpler import

@ -1,3 +1,5 @@
# Ultralytics YOLO 🚀, GPL-3.0 license
import os import os
import shutil import shutil

@ -1,7 +1,8 @@
# Ultralytics YOLO 🚀, GPL-3.0 license
import requests import requests
from ultralytics.hub.config import HUB_API_ROOT from ultralytics.hub.utils import HUB_API_ROOT, request_with_credentials
from ultralytics.hub.utils import request_with_credentials
from ultralytics.yolo.utils import is_colab from ultralytics.yolo.utils import is_colab
API_KEY_PATH = "https://hub.ultralytics.com/settings?tab=api+keys" API_KEY_PATH = "https://hub.ultralytics.com/settings?tab=api+keys"

@ -1,12 +0,0 @@
import os
# Global variables
REPO_URL = "https://github.com/ultralytics/yolov5.git"
REPO_BRANCH = "ultralytics/HUB" # "master"
ENVIRONMENT = os.environ.get("ULTRALYTICS_ENV", "production")
if ENVIRONMENT == 'production':
HUB_API_ROOT = "https://api.ultralytics.com"
else:
HUB_API_ROOT = "http://127.0.0.1:8000"
print(f'Connected to development server on {HUB_API_ROOT}')

@ -1,3 +1,5 @@
# Ultralytics YOLO 🚀, GPL-3.0 license
import signal import signal
import sys import sys
from pathlib import Path from pathlib import Path
@ -6,8 +8,7 @@ from time import sleep
import requests import requests
from ultralytics import __version__ from ultralytics import __version__
from ultralytics.hub.config import HUB_API_ROOT from ultralytics.hub.utils import HUB_API_ROOT, check_dataset_disk_space, smart_request
from ultralytics.hub.utils import check_dataset_disk_space, smart_request
from ultralytics.yolo.utils import LOGGER, is_colab, threaded from ultralytics.yolo.utils import LOGGER, is_colab, threaded
AGENT_NAME = f'python-{__version__}-colab' if is_colab() else f'python-{__version__}-local' AGENT_NAME = f'python-{__version__}-colab' if is_colab() else f'python-{__version__}-local'

@ -1,14 +1,17 @@
# Ultralytics YOLO 🚀, GPL-3.0 license
import os
import shutil import shutil
import threading import threading
import time import time
import requests import requests
from ultralytics.hub.config import HUB_API_ROOT from ultralytics.yolo.utils import DEFAULT_CONFIG_DICT, LOGGER, RANK, SETTINGS, TryExcept, colorstr, emojis
from ultralytics.yolo.utils import DEFAULT_CONFIG_DICT, LOGGER, RANK, SETTINGS, colorstr, emojis
PREFIX = colorstr('Ultralytics: ') PREFIX = colorstr('Ultralytics: ')
HELP_MSG = 'If this issue persists please visit https://github.com/ultralytics/hub/issues for assistance.' HELP_MSG = 'If this issue persists please visit https://github.com/ultralytics/hub/issues for assistance.'
HUB_API_ROOT = os.environ.get("ULTRALYTICS_HUB_API", "https://api.ultralytics.com")
def check_dataset_disk_space(url='https://github.com/ultralytics/yolov5/releases/download/v1.0/coco128.zip', sf=2.0): def check_dataset_disk_space(url='https://github.com/ultralytics/yolov5/releases/download/v1.0/coco128.zip', sf=2.0):
@ -90,7 +93,6 @@ def smart_request(*args, retry=3, timeout=30, thread=True, code=-1, method="post
requests.Response: The HTTP response object. If the request is executed in a separate thread, returns None. requests.Response: The HTTP response object. If the request is executed in a separate thread, returns None.
""" """
retry_codes = (408, 500) # retry only these codes retry_codes = (408, 500) # retry only these codes
methods = {'post': requests.post, 'get': requests.get} # request methods
def func(*func_args, **func_kwargs): def func(*func_args, **func_kwargs):
r = None # response r = None # response
@ -98,7 +100,10 @@ def smart_request(*args, retry=3, timeout=30, thread=True, code=-1, method="post
for i in range(retry + 1): for i in range(retry + 1):
if (time.time() - t0) > timeout: if (time.time() - t0) > timeout:
break 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: if r.status_code == 200:
break break
try: try:
@ -125,7 +130,8 @@ def smart_request(*args, retry=3, timeout=30, thread=True, code=-1, method="post
return func(*args, **kwargs) 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 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: if SETTINGS['sync'] and RANK in {-1, 0} and enabled:
cfg = dict(cfg) # convert type from DictConfig to dict cfg = dict(cfg) # convert type from DictConfig to dict
if not all_keys: 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 cfg['uuid'] = SETTINGS['uuid'] # add the device UUID to the configuration data
# Send a request to the HUB API to sync the analytics data # Send a request to the HUB API to sync analytics
smart_request(f'{HUB_API_ROOT}/v1/usage/anonymous', data=cfg, headers=None, code=3, retry=0, verbose=False) smart_request(f'{HUB_API_ROOT}/v1/usage/anonymous', json=cfg, headers=None, code=3, retry=0, verbose=False)

@ -1,3 +1,5 @@
# Ultralytics YOLO 🚀, GPL-3.0 license
import json import json
import platform import platform
from collections import OrderedDict, namedtuple 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 names = model.module.names if hasattr(model, 'module') else model.names # get class names
model.half() if fp16 else model.float() model.half() if fp16 else model.float()
self.model = model # explicitly assign for to(), cpu(), cuda(), half() self.model = model # explicitly assign for to(), cpu(), cuda(), half()
pt = True
elif pt: # PyTorch elif pt: # PyTorch
from ultralytics.nn.tasks import attempt_load_weights from ultralytics.nn.tasks import attempt_load_weights
model = attempt_load_weights(weights if isinstance(weights, list) else w, model = attempt_load_weights(weights if isinstance(weights, list) else w,

@ -1,4 +1,4 @@
# YOLOv5 🚀 by Ultralytics, GPL-3.0 license # Ultralytics YOLO 🚀, GPL-3.0 license
""" """
Common modules Common modules
""" """

@ -1,3 +1,5 @@
# Ultralytics YOLO 🚀, GPL-3.0 license
import contextlib import contextlib
from copy import deepcopy from copy import deepcopy

@ -1 +1,3 @@
# Ultralytics YOLO 🚀, GPL-3.0 license
from . import v8 from . import v8

@ -1,3 +1,5 @@
# Ultralytics YOLO 🚀, GPL-3.0 license
import shutil import shutil
from pathlib import Path from pathlib import Path

@ -1,3 +1,5 @@
# Ultralytics YOLO 🚀, GPL-3.0 license
from pathlib import Path from pathlib import Path
from typing import Dict, Union from typing import Dict, Union

@ -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 # 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. task: "detect" # choices=['detect', 'segment', 'classify', 'init'] # init is a special case. Specify task to run.

@ -1,3 +1,5 @@
# Ultralytics YOLO 🚀, GPL-3.0 license
import sys import sys
from difflib import get_close_matches from difflib import get_close_matches
from textwrap import dedent from textwrap import dedent

@ -1,3 +1,5 @@
# Ultralytics YOLO 🚀, GPL-3.0 license
from .base import BaseDataset from .base import BaseDataset
from .build import build_classification_dataloader, build_dataloader from .build import build_classification_dataloader, build_dataloader
from .dataset import ClassificationDataset, SemanticDataset, YOLODataset from .dataset import ClassificationDataset, SemanticDataset, YOLODataset

@ -1,3 +1,5 @@
# Ultralytics YOLO 🚀, GPL-3.0 license
import math import math
import random import random
from copy import deepcopy from copy import deepcopy

@ -1,3 +1,5 @@
# Ultralytics YOLO 🚀, GPL-3.0 license
import glob import glob
import math import math
import os import os

@ -1,3 +1,5 @@
# Ultralytics YOLO 🚀, GPL-3.0 license
import os import os
import random import random

@ -1,3 +1,5 @@
# Ultralytics YOLO 🚀, GPL-3.0 license
import glob import glob
import math import math
import os import os

@ -1,4 +1,4 @@
# YOLOv5 🚀 by Ultralytics, GPL-3.0 license # Ultralytics YOLO 🚀, GPL-3.0 license
""" """
Image augmentation functions Image augmentation functions
""" """

@ -1,4 +1,4 @@
# YOLOv5 🚀 by Ultralytics, GPL-3.0 license # Ultralytics YOLO 🚀, GPL-3.0 license
""" """
Dataloaders and dataset utils Dataloaders and dataset utils
""" """

@ -1,3 +1,5 @@
# Ultralytics YOLO 🚀, GPL-3.0 license
from itertools import repeat from itertools import repeat
from multiprocessing.pool import Pool from multiprocessing.pool import Pool
from pathlib import Path from pathlib import Path

@ -1,3 +1,5 @@
# Ultralytics YOLO 🚀, GPL-3.0 license
import collections import collections
from copy import deepcopy from copy import deepcopy

@ -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 # COCO 2017 dataset http://cocodataset.org by Microsoft
# Example usage: python train.py --data coco.yaml # Example usage: python train.py --data coco.yaml
# parent # parent

@ -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 # 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 # Example usage: python train.py --data coco128.yaml
# parent # parent

@ -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 # COCO128 dataset https://www.kaggle.com/ultralytics/coco128 (first 128 images from COCO train2017) by Ultralytics
# Example usage: python train.py --data coco128.yaml # Example usage: python train.py --data coco128.yaml
# parent # parent

@ -1,5 +1,5 @@
#!/bin/bash #!/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 # Download latest models from https://github.com/ultralytics/yolov5/releases
# Example usage: bash data/scripts/download_weights.sh # Example usage: bash data/scripts/download_weights.sh
# parent # parent

@ -1,5 +1,5 @@
#!/bin/bash #!/bin/bash
# YOLOv5 🚀 by Ultralytics, GPL-3.0 license # Ultralytics YOLO 🚀, GPL-3.0 license
# Download COCO 2017 dataset http://cocodataset.org # Download COCO 2017 dataset http://cocodataset.org
# Example usage: bash data/scripts/get_coco.sh # Example usage: bash data/scripts/get_coco.sh
# parent # parent

@ -1,5 +1,5 @@
#!/bin/bash #!/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) # Download COCO128 dataset https://www.kaggle.com/ultralytics/coco128 (first 128 images from COCO train2017)
# Example usage: bash data/scripts/get_coco128.sh # Example usage: bash data/scripts/get_coco128.sh
# parent # parent

@ -1,5 +1,5 @@
#!/bin/bash #!/bin/bash
# YOLOv5 🚀 by Ultralytics, GPL-3.0 license # Ultralytics YOLO 🚀, GPL-3.0 license
# Download ILSVRC2012 ImageNet dataset https://image-net.org # Download ILSVRC2012 ImageNet dataset https://image-net.org
# Example usage: bash data/scripts/get_imagenet.sh # Example usage: bash data/scripts/get_imagenet.sh
# parent # parent

@ -1,3 +1,5 @@
# Ultralytics YOLO 🚀, GPL-3.0 license
import contextlib import contextlib
import hashlib import hashlib
import os import os

@ -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 Export a YOLOv5 PyTorch model to other formats. TensorFlow exports authored by https://github.com/zldrobit

@ -1,3 +1,5 @@
# Ultralytics YOLO 🚀, GPL-3.0 license
from pathlib import Path from pathlib import Path
from ultralytics import yolo # noqa from ultralytics import yolo # noqa

@ -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. Run prediction on images, videos, directories, globs, YouTube, webcam, streams, etc.
Usage - sources: Usage - sources:

@ -1,3 +1,4 @@
# Ultralytics YOLO 🚀, GPL-3.0 license
""" """
Simple training loop; Boilerplate that could apply to any arbitrary neural network, Simple training loop; Boilerplate that could apply to any arbitrary neural network,
""" """

@ -1,3 +1,5 @@
# Ultralytics YOLO 🚀, GPL-3.0 license
import json import json
from collections import defaultdict from collections import defaultdict
from pathlib import Path from pathlib import Path
@ -86,6 +88,7 @@ class BaseValidator:
self.model = model self.model = model
self.loss = torch.zeros_like(trainer.loss_items, device=trainer.device) self.loss = torch.zeros_like(trainer.loss_items, device=trainer.device)
self.args.plots = trainer.epoch == trainer.epochs - 1 # always plot final epoch self.args.plots = trainer.epoch == trainer.epochs - 1 # always plot final epoch
model.eval()
else: else:
callbacks.add_integration_callbacks(self) callbacks.add_integration_callbacks(self)
self.run_callbacks('on_val_start') 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') 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"): 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: else:
data = check_dataset(self.args.data) self.data = check_dataset(self.args.data)
if self.device.type == 'cpu': if self.device.type == 'cpu':
self.args.workers = 0 # faster CPU val as time dominated by inference, not dataloading self.args.workers = 0 # faster CPU val as time dominated by inference, not dataloading
self.dataloader = self.dataloader or \ self.dataloader = self.dataloader or \
self.get_dataloader(data.get("val") or data.set("test"), self.args.batch) self.get_dataloader(self.data.get("val") or self.data.set("test"), self.args.batch)
self.data = data
model.eval() model.eval()
model.warmup(imgsz=(1 if pt else self.args.batch, 3, imgsz, imgsz)) # warmup
dt = Profile(), Profile(), Profile(), Profile() dt = Profile(), Profile(), Profile(), Profile()
n_batches = len(self.dataloader) n_batches = len(self.dataloader)

@ -1,3 +1,5 @@
# Ultralytics YOLO 🚀, GPL-3.0 license
import contextlib import contextlib
import inspect import inspect
import logging.config import logging.config

@ -1,4 +1,4 @@
# YOLOv5 🚀 by Ultralytics, GPL-3.0 license # Ultralytics YOLO 🚀, GPL-3.0 license
""" """
Auto-batch utils Auto-batch utils
""" """

@ -1,4 +1,7 @@
# Ultralytics YOLO base callbacks # Ultralytics YOLO 🚀, GPL-3.0 license
"""
Base callbacks
"""
# Trainer callbacks ---------------------------------------------------------------------------------------------------- # Trainer callbacks ----------------------------------------------------------------------------------------------------

@ -1,3 +1,5 @@
# Ultralytics YOLO 🚀, GPL-3.0 license
from ultralytics.yolo.utils.torch_utils import get_flops, get_num_params from ultralytics.yolo.utils.torch_utils import get_flops, get_num_params
try: try:

@ -1,3 +1,5 @@
# Ultralytics YOLO 🚀, GPL-3.0 license
from ultralytics.yolo.utils.torch_utils import get_flops, get_num_params from ultralytics.yolo.utils.torch_utils import get_flops, get_num_params
try: try:

@ -1,3 +1,5 @@
# Ultralytics YOLO 🚀, GPL-3.0 license
import json import json
from time import time from time import time

@ -1,3 +1,5 @@
# Ultralytics YOLO 🚀, GPL-3.0 license
from torch.utils.tensorboard import SummaryWriter from torch.utils.tensorboard import SummaryWriter
writer = None # TensorBoard SummaryWriter instance writer = None # TensorBoard SummaryWriter instance

@ -1,3 +1,5 @@
# Ultralytics YOLO 🚀, GPL-3.0 license
from ultralytics.yolo.utils.torch_utils import get_flops, get_num_params from ultralytics.yolo.utils.torch_utils import get_flops, get_num_params
try: try:

@ -1,3 +1,5 @@
# Ultralytics YOLO 🚀, GPL-3.0 license
import glob import glob
import inspect import inspect
import math 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}') LOGGER.warning(f'WARNING ⚠️ --img-size {imgsz} must be multiple of max stride {stride}, updating to {sz}')
# Add missing dimensions if necessary # Add missing dimensions if necessary
if min_dim == 2 and len(sz) == 1: 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
sz = [sz[0], sz[0]]
return sz return sz

@ -1,3 +1,5 @@
# Ultralytics YOLO 🚀, GPL-3.0 license
import os import os
import shutil import shutil
import socket import socket

@ -1,3 +1,5 @@
# Ultralytics YOLO 🚀, GPL-3.0 license
import logging import logging
import os import os
import subprocess import subprocess

@ -1,3 +1,5 @@
# Ultralytics YOLO 🚀, GPL-3.0 license
import contextlib import contextlib
import glob import glob
import os import os

@ -1,3 +1,5 @@
# Ultralytics YOLO 🚀, GPL-3.0 license
from collections import abc from collections import abc
from itertools import repeat from itertools import repeat
from numbers import Number from numbers import Number

@ -1,3 +1,5 @@
# Ultralytics YOLO 🚀, GPL-3.0 license
import torch import torch
import torch.nn as nn import torch.nn as nn
import torch.nn.functional as F import torch.nn.functional as F

@ -1,4 +1,4 @@
# YOLOv5 🚀 by Ultralytics, GPL-3.0 license # Ultralytics YOLO 🚀, GPL-3.0 license
""" """
Model validation metrics Model validation metrics
""" """

@ -1,3 +1,5 @@
# Ultralytics YOLO 🚀, GPL-3.0 license
import contextlib import contextlib
import math import math
import re import re

@ -1,3 +1,5 @@
# Ultralytics YOLO 🚀, GPL-3.0 license
import contextlib import contextlib
import math import math
from pathlib import Path from pathlib import Path

@ -1,3 +1,5 @@
# Ultralytics YOLO 🚀, GPL-3.0 license
import torch import torch
import torch.nn as nn import torch.nn as nn
import torch.nn.functional as F import torch.nn.functional as F

@ -1,3 +1,5 @@
# Ultralytics YOLO 🚀, GPL-3.0 license
import math import math
import os import os
import platform import platform
@ -59,7 +61,7 @@ def DDP_model(model):
def select_device(device='', batch_size=0, newline=False): def select_device(device='', batch_size=0, newline=False):
# device = None or 'cpu' or 0 or '0' or '0,1,2,3' # 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 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' device = str(device).strip().lower().replace('cuda:', '').replace('none', '') # to string, 'cuda:0' to '0'
cpu = device == 'cpu' cpu = device == 'cpu'
mps = device == 'mps' # Apple Metal Performance Shaders (MPS) mps = device == 'mps' # Apple Metal Performance Shaders (MPS)

@ -1,3 +1,5 @@
# Ultralytics YOLO 🚀, GPL-3.0 license
from pathlib import Path from pathlib import Path
from ultralytics.yolo.v8 import classify, detect, segment from ultralytics.yolo.v8 import classify, detect, segment

@ -1,3 +1,5 @@
# Ultralytics YOLO 🚀, GPL-3.0 license
from ultralytics.yolo.v8.classify.predict import ClassificationPredictor, predict from ultralytics.yolo.v8.classify.predict import ClassificationPredictor, predict
from ultralytics.yolo.v8.classify.train import ClassificationTrainer, train from ultralytics.yolo.v8.classify.train import ClassificationTrainer, train
from ultralytics.yolo.v8.classify.val import ClassificationValidator, val from ultralytics.yolo.v8.classify.val import ClassificationValidator, val

@ -1,3 +1,5 @@
# Ultralytics YOLO 🚀, GPL-3.0 license
import hydra import hydra
import torch import torch

@ -1,3 +1,5 @@
# Ultralytics YOLO 🚀, GPL-3.0 license
import hydra import hydra
import torch import torch
import torchvision import torchvision

@ -1,3 +1,5 @@
# Ultralytics YOLO 🚀, GPL-3.0 license
import hydra import hydra
from ultralytics.yolo.data import build_classification_dataloader from ultralytics.yolo.data import build_classification_dataloader

@ -1,3 +1,5 @@
# Ultralytics YOLO 🚀, GPL-3.0 license
from .predict import DetectionPredictor, predict from .predict import DetectionPredictor, predict
from .train import DetectionTrainer, train from .train import DetectionTrainer, train
from .val import DetectionValidator, val from .val import DetectionValidator, val

@ -1,3 +1,5 @@
# Ultralytics YOLO 🚀, GPL-3.0 license
import hydra import hydra
import torch import torch

@ -1,3 +1,5 @@
# Ultralytics YOLO 🚀, GPL-3.0 license
from copy import copy from copy import copy
import hydra import hydra

@ -1,3 +1,5 @@
# Ultralytics YOLO 🚀, GPL-3.0 license
import os import os
from pathlib import Path from pathlib import Path

@ -1,4 +1,4 @@
# YOLOv5 🚀 by Ultralytics, GPL-3.0 license # Ultralytics YOLO 🚀, GPL-3.0 license
# Parameters # Parameters
nc: 1000 # number of classes nc: 1000 # number of classes

@ -1,4 +1,4 @@
# YOLOv5 🚀 by Ultralytics, GPL-3.0 license # Ultralytics YOLO 🚀, GPL-3.0 license
# Parameters # Parameters
nc: 1000 # number of classes nc: 1000 # number of classes

@ -1,4 +1,4 @@
# YOLOv5 🚀 by Ultralytics, GPL-3.0 license # Ultralytics YOLO 🚀, GPL-3.0 license
# Parameters # Parameters
nc: 1000 # number of classes nc: 1000 # number of classes

@ -1,4 +1,4 @@
# YOLOv5 🚀 by Ultralytics, GPL-3.0 license # Ultralytics YOLO 🚀, GPL-3.0 license
# Parameters # Parameters
nc: 1000 # number of classes nc: 1000 # number of classes

@ -1,4 +1,4 @@
# YOLOv5 🚀 by Ultralytics, GPL-3.0 license # Ultralytics YOLO 🚀, GPL-3.0 license
# Parameters # Parameters
nc: 1000 # number of classes nc: 1000 # number of classes

@ -1,4 +1,4 @@
# YOLOv5 🚀 by Ultralytics, GPL-3.0 license # Ultralytics YOLO 🚀, GPL-3.0 license
# Parameters # Parameters
nc: 80 # number of classes nc: 80 # number of classes

@ -1,4 +1,4 @@
# YOLOv5 🚀 by Ultralytics, GPL-3.0 license # Ultralytics YOLO 🚀, GPL-3.0 license
# Parameters # Parameters
nc: 80 # number of classes nc: 80 # number of classes

@ -1,4 +1,4 @@
# YOLOv5 🚀 by Ultralytics, GPL-3.0 license # Ultralytics YOLO 🚀, GPL-3.0 license
# Parameters # Parameters
nc: 80 # number of classes nc: 80 # number of classes

@ -1,4 +1,4 @@
# YOLOv5 🚀 by Ultralytics, GPL-3.0 license # Ultralytics YOLO 🚀, GPL-3.0 license
# Parameters # Parameters
nc: 80 # number of classes nc: 80 # number of classes

@ -1,4 +1,4 @@
# YOLOv5 🚀 by Ultralytics, GPL-3.0 license # Ultralytics YOLO 🚀, GPL-3.0 license
# Parameters # Parameters
nc: 80 # number of classes nc: 80 # number of classes

@ -1,4 +1,4 @@
# YOLOv5 🚀 by Ultralytics, GPL-3.0 license # Ultralytics YOLO 🚀, GPL-3.0 license
# Parameters # Parameters
nc: 80 # number of classes nc: 80 # number of classes

@ -1,4 +1,4 @@
# YOLOv5 🚀 by Ultralytics, GPL-3.0 license # Ultralytics YOLO 🚀, GPL-3.0 license
# Parameters # Parameters
nc: 80 # number of classes nc: 80 # number of classes

@ -1,4 +1,4 @@
# YOLOv5 🚀 by Ultralytics, GPL-3.0 license # Ultralytics YOLO 🚀, GPL-3.0 license
# Parameters # Parameters
nc: 80 # number of classes nc: 80 # number of classes

@ -1,4 +1,4 @@
# YOLOv5 🚀 by Ultralytics, GPL-3.0 license # Ultralytics YOLO 🚀, GPL-3.0 license
# Parameters # Parameters
nc: 80 # number of classes nc: 80 # number of classes

@ -1,4 +1,4 @@
# YOLOv5 🚀 by Ultralytics, GPL-3.0 license # Ultralytics YOLO 🚀, GPL-3.0 license
# Parameters # Parameters
nc: 80 # number of classes nc: 80 # number of classes

@ -1,4 +1,4 @@
# YOLOv5 🚀 by Ultralytics, GPL-3.0 license # Ultralytics YOLO 🚀, GPL-3.0 license
# Parameters # Parameters
nc: 80 # number of classes nc: 80 # number of classes

@ -1,3 +1,5 @@
# Ultralytics YOLO 🚀, GPL-3.0 license
from .predict import SegmentationPredictor, predict from .predict import SegmentationPredictor, predict
from .train import SegmentationTrainer, train from .train import SegmentationTrainer, train
from .val import SegmentationValidator, val from .val import SegmentationValidator, val

@ -1,3 +1,5 @@
# Ultralytics YOLO 🚀, GPL-3.0 license
import hydra import hydra
import torch import torch

@ -1,3 +1,5 @@
# Ultralytics YOLO 🚀, GPL-3.0 license
from copy import copy from copy import copy
import hydra import hydra

@ -1,3 +1,5 @@
# Ultralytics YOLO 🚀, GPL-3.0 license
import os import os
from multiprocessing.pool import ThreadPool from multiprocessing.pool import ThreadPool
from pathlib import Path from pathlib import Path

Loading…
Cancel
Save