Files
yolov5_ZWgra/segment/tutorial.ipynb
T
Glenn Jocherandpre-commit-ci[bot] 55e9516846 Add Ultralytics HUB to README (#10070)
* Add Ultralytics HUB section to README

@pderrenger @kalenmike @AlanDimmer @AyushExel new Ultralytics HUB section in YOLOv5 README.

Signed-off-by: Glenn Jocher <glenn.jocher@ultralytics.com>

* Update README.md

Signed-off-by: Glenn Jocher <glenn.jocher@ultralytics.com>

* Update README.md

Signed-off-by: Glenn Jocher <glenn.jocher@ultralytics.com>

* Update README.md

@AlanDimmer @kalenmike new integrations image

Signed-off-by: Glenn Jocher <glenn.jocher@ultralytics.com>

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* Update README.md

Signed-off-by: Glenn Jocher <glenn.jocher@ultralytics.com>

* Update tutorial.ipynb

Signed-off-by: Glenn Jocher <glenn.jocher@ultralytics.com>

* Update tutorial.ipynb

Signed-off-by: Glenn Jocher <glenn.jocher@ultralytics.com>

* Update README.md

Signed-off-by: Glenn Jocher <glenn.jocher@ultralytics.com>

* Update tutorial.ipynb

Signed-off-by: Glenn Jocher <glenn.jocher@ultralytics.com>

* Update README_cn.md

Signed-off-by: Glenn Jocher <glenn.jocher@ultralytics.com>

Signed-off-by: Glenn Jocher <glenn.jocher@ultralytics.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2022-11-11 00:21:29 +01:00

49 KiB
Vendored


Run on Gradient Open In Colab Open In Kaggle

This YOLOv5 🚀 notebook by Ultralytics presents simple train, validate and predict examples to help start your AI adventure.
See GitHub for community support or contact us for professional support.

Setup

Clone GitHub repository, install dependencies and check PyTorch and GPU.

In [2]:
!git clone https://github.com/ultralytics/yolov5  # clone
%cd yolov5
%pip install -qr requirements.txt  # install

import torch
import utils
display = utils.notebook_init()  # checks
YOLOv5 🚀 v6.2-225-gf223cb2 Python-3.7.12 torch-1.12.1+cu102 CUDA:0 (Tesla V100-SXM2-16GB, 16161MiB)
Setup complete ✅ (4 CPUs, 14.7 GB RAM, 107.3/196.6 GB disk)

1. Predict

segment/predict.py runs YOLOv5 instance segmentation inference on a variety of sources, downloading models automatically from the latest YOLOv5 release, and saving results to runs/predict. Example inference sources are:

python segment/predict.py --source 0  # webcam
                             img.jpg  # image 
                             vid.mp4  # video
                             screen  # screenshot
                             path/  # directory
                             'path/*.jpg'  # glob
                             'https://youtu.be/Zgi9g1ksQHc'  # YouTube
                             'rtsp://example.com/media.mp4'  # RTSP, RTMP, HTTP stream
In [3]:
!python segment/predict.py --weights yolov5s-seg.pt --img 640 --conf 0.25 --source data/images
#display.Image(filename='runs/predict-seg/exp/zidane.jpg', width=600)
segment/predict: weights=['yolov5s-seg.pt'], source=data/images, data=data/coco128.yaml, imgsz=[640, 640], conf_thres=0.25, iou_thres=0.45, max_det=1000, device=, view_img=False, save_txt=False, save_conf=False, save_crop=False, nosave=False, classes=None, agnostic_nms=False, augment=False, visualize=False, update=False, project=runs/predict-seg, name=exp, exist_ok=False, line_thickness=3, hide_labels=False, hide_conf=False, half=False, dnn=False, vid_stride=1, retina_masks=False
YOLOv5 🚀 v6.2-225-gf223cb2 Python-3.7.12 torch-1.12.1+cu102 CUDA:0 (Tesla V100-SXM2-16GB, 16161MiB)

Fusing layers... 
YOLOv5s-seg summary: 224 layers, 7611485 parameters, 0 gradients, 26.4 GFLOPs
image 1/2 /home/paguerrie/yolov5/data/images/bus.jpg: 640x480 4 persons, 1 bus, 5.6ms
image 2/2 /home/paguerrie/yolov5/data/images/zidane.jpg: 384x640 2 persons, 1 tie, 5.5ms
Speed: 0.4ms pre-process, 5.6ms inference, 1.1ms NMS per image at shape (1, 3, 640, 640)
Results saved to runs/predict-seg/exp

        

2. Validate

Validate a model's accuracy on the COCO dataset's val or test splits. Models are downloaded automatically from the latest YOLOv5 release. To show results by class use the --verbose flag.

In [4]:
# Download COCO val
torch.hub.download_url_to_file('https://ultralytics.com/assets/coco128-seg.zip', 'tmp.zip')  # download (780M - 5000 images)
!unzip -q tmp.zip -d ../datasets && rm tmp.zip  # unzip
  0%|          | 0.00/6.79M [00:00<?, ?B/s]
In [5]:
# Validate YOLOv5s-seg on COCO val
!python segment/val.py --weights yolov5s-seg.pt --data coco128-seg.yaml --img 640 --half
segment/val: data=/home/paguerrie/yolov5/data/coco128-seg.yaml, weights=['yolov5s-seg.pt'], batch_size=32, imgsz=640, conf_thres=0.001, iou_thres=0.6, max_det=300, task=val, device=, workers=8, single_cls=False, augment=False, verbose=False, save_txt=False, save_hybrid=False, save_conf=False, save_json=False, project=runs/val-seg, name=exp, exist_ok=False, half=True, dnn=False
YOLOv5 🚀 v6.2-225-gf223cb2 Python-3.7.12 torch-1.12.1+cu102 CUDA:0 (Tesla V100-SXM2-16GB, 16161MiB)

Fusing layers... 
YOLOv5s-seg summary: 224 layers, 7611485 parameters, 0 gradients, 26.4 GFLOPs
val: Scanning '/home/paguerrie/datasets/coco128-seg/labels/train2017' images and
val: New cache created: /home/paguerrie/datasets/coco128-seg/labels/train2017.cache
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all        128        929      0.711      0.651      0.711      0.488      0.678      0.628       0.66      0.403
Speed: 3.2ms pre-process, 2.7ms inference, 6.5ms NMS per image at shape (32, 3, 640, 640)
Results saved to runs/val-seg/exp

3. Train

Close the active learning loop by sampling images from your inference conditions with the `roboflow` pip package

Train a YOLOv5s-seg model on the COCO128 dataset with --data coco128-seg.yaml, starting from pretrained --weights yolov5s-seg.pt, or from randomly initialized --weights '' --cfg yolov5s-seg.yaml.

A Mosaic Dataloader is used for training which combines 4 images into 1 mosaic.

Train on Custom Data with Roboflow 🌟 NEW

Roboflow enables you to easily organize, label, and prepare a high quality dataset with your own custom data. Roboflow also makes it easy to establish an active learning pipeline, collaborate with your team on dataset improvement, and integrate directly into your model building workflow with the roboflow pip package.

Label images lightning fast (including with model-assisted labeling)
In [ ]:
#@title Select YOLOv5 🚀 logger {run: 'auto'}
logger = 'TensorBoard' #@param ['TensorBoard', 'Comet', 'ClearML']

if logger == 'TensorBoard':
  %load_ext tensorboard
  %tensorboard --logdir runs/train-seg
elif logger == 'Comet':
  %pip install -q comet_ml
  import comet_ml; comet_ml.init()
elif logger == 'ClearML':
  %pip install -q clearml && clearml-init
In [7]:
# Train YOLOv5s on COCO128 for 3 epochs
!python segment/train.py --img 640 --batch 16 --epochs 3 --data coco128-seg.yaml --weights yolov5s-seg.pt --cache
segment/train: weights=yolov5s-seg.pt, cfg=, data=coco128-seg.yaml, hyp=data/hyps/hyp.scratch-low.yaml, epochs=3, batch_size=16, imgsz=640, rect=False, resume=False, nosave=False, noval=False, noautoanchor=False, noplots=False, evolve=None, bucket=, cache=ram, image_weights=False, device=, multi_scale=False, single_cls=False, optimizer=SGD, sync_bn=False, workers=8, project=runs/train-seg, name=exp, exist_ok=False, quad=False, cos_lr=False, label_smoothing=0.0, patience=100, freeze=[0], save_period=-1, seed=0, local_rank=-1, mask_ratio=4, no_overlap=False
github: up to date with https://github.com/ultralytics/yolov5 ✅
YOLOv5 🚀 v6.2-225-gf223cb2 Python-3.7.12 torch-1.12.1+cu102 CUDA:0 (Tesla V100-SXM2-16GB, 16161MiB)

hyperparameters: 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=0.05, cls=0.5, cls_pw=1.0, obj=1.0, obj_pw=1.0, iou_t=0.2, anchor_t=4.0, fl_gamma=0.0, 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
TensorBoard: Start with 'tensorboard --logdir runs/train-seg', view at http://localhost:6006/

                 from  n    params  module                                  arguments                     
  0                -1  1      3520  models.common.Conv                      [3, 32, 6, 2, 2]              
  1                -1  1     18560  models.common.Conv                      [32, 64, 3, 2]                
  2                -1  1     18816  models.common.C3                        [64, 64, 1]                   
  3                -1  1     73984  models.common.Conv                      [64, 128, 3, 2]               
  4                -1  2    115712  models.common.C3                        [128, 128, 2]                 
  5                -1  1    295424  models.common.Conv                      [128, 256, 3, 2]              
  6                -1  3    625152  models.common.C3                        [256, 256, 3]                 
  7                -1  1   1180672  models.common.Conv                      [256, 512, 3, 2]              
  8                -1  1   1182720  models.common.C3                        [512, 512, 1]                 
  9                -1  1    656896  models.common.SPPF                      [512, 512, 5]                 
 10                -1  1    131584  models.common.Conv                      [512, 256, 1, 1]              
 11                -1  1         0  torch.nn.modules.upsampling.Upsample    [None, 2, 'nearest']          
 12           [-1, 6]  1         0  models.common.Concat                    [1]                           
 13                -1  1    361984  models.common.C3                        [512, 256, 1, False]          
 14                -1  1     33024  models.common.Conv                      [256, 128, 1, 1]              
 15                -1  1         0  torch.nn.modules.upsampling.Upsample    [None, 2, 'nearest']          
 16           [-1, 4]  1         0  models.common.Concat                    [1]                           
 17                -1  1     90880  models.common.C3                        [256, 128, 1, False]          
 18                -1  1    147712  models.common.Conv                      [128, 128, 3, 2]              
 19          [-1, 14]  1         0  models.common.Concat                    [1]                           
 20                -1  1    296448  models.common.C3                        [256, 256, 1, False]          
 21                -1  1    590336  models.common.Conv                      [256, 256, 3, 2]              
 22          [-1, 10]  1         0  models.common.Concat                    [1]                           
 23                -1  1   1182720  models.common.C3                        [512, 512, 1, False]          
 24      [17, 20, 23]  1    615133  models.yolo.Segment                     [80, [[10, 13, 16, 30, 33, 23], [30, 61, 62, 45, 59, 119], [116, 90, 156, 198, 373, 326]], 32, 128, [128, 256, 512]]
Model summary: 225 layers, 7621277 parameters, 7621277 gradients, 26.6 GFLOPs

Transferred 367/367 items from yolov5s-seg.pt
AMP: checks passed ✅
optimizer: SGD(lr=0.01) with parameter groups 60 weight(decay=0.0), 63 weight(decay=0.0005), 63 bias
train: Scanning '/home/paguerrie/datasets/coco128-seg/labels/train2017.cache' im
train: Caching images (0.1GB ram): 100%|██████████| 128/128 [00:00<00:00, 544.41
val: Scanning '/home/paguerrie/datasets/coco128-seg/labels/train2017.cache' imag
val: Caching images (0.1GB ram): 100%|██████████| 128/128 [00:00<00:00, 138.66it

AutoAnchor: 4.27 anchors/target, 0.994 Best Possible Recall (BPR). Current anchors are a good fit to dataset ✅
Plotting labels to runs/train-seg/exp/labels.jpg... 
Image sizes 640 train, 640 val
Using 4 dataloader workers
Logging results to runs/train-seg/exp
Starting training for 3 epochs...

      Epoch    GPU_mem   box_loss   seg_loss   obj_loss   cls_loss  Instances       Size
        0/2      4.67G    0.04464    0.05134    0.06548    0.01895        219   
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all        128        929      0.727      0.661      0.725      0.496      0.688      0.629      0.673      0.413

      Epoch    GPU_mem   box_loss   seg_loss   obj_loss   cls_loss  Instances       Size
        1/2      6.36G    0.04102    0.04702    0.06873    0.01734        263   
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all        128        929      0.752      0.676      0.743       0.51      0.704       0.64      0.682      0.425

      Epoch    GPU_mem   box_loss   seg_loss   obj_loss   cls_loss  Instances       Size
        2/2      6.36G     0.0421    0.04463    0.05951    0.01746        245   
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all        128        929      0.776      0.674      0.757      0.514       0.72      0.632      0.684      0.429

3 epochs completed in 0.006 hours.
Optimizer stripped from runs/train-seg/exp/weights/last.pt, 15.6MB
Optimizer stripped from runs/train-seg/exp/weights/best.pt, 15.6MB

Validating runs/train-seg/exp/weights/best.pt...
Fusing layers... 
Model summary: 165 layers, 7611485 parameters, 0 gradients, 26.4 GFLOPs
                 Class     Images  Instances      Box(P          R      mAP50  m
                   all        128        929      0.775      0.673      0.758      0.515       0.72      0.632      0.684      0.427
                person        128        254      0.829      0.745      0.833      0.545      0.776      0.697      0.764      0.406
               bicycle        128          6      0.614      0.333      0.539      0.331      0.614      0.333      0.531      0.308
                   car        128         46      0.774      0.413      0.571      0.266      0.693       0.37      0.493      0.204
            motorcycle        128          5      0.817      0.901      0.895      0.678      0.817      0.901      0.895       0.47
              airplane        128          6          1      0.951      0.995       0.71      0.882      0.833      0.839      0.515
                   bus        128          7      0.695      0.714      0.757      0.661      0.695      0.714      0.757      0.627
                 train        128          3          1      0.935      0.995      0.566          1      0.935      0.995      0.731
                 truck        128         12      0.741      0.417      0.463      0.283      0.741      0.417        0.4       0.27
                  boat        128          6      0.653       0.32      0.452       0.17      0.653       0.32      0.328      0.149
         traffic light        128         14      0.627       0.36      0.527      0.234      0.503      0.289      0.409      0.293
             stop sign        128          2      0.829          1      0.995      0.747      0.829          1      0.995      0.821
                 bench        128          9      0.822      0.667       0.76      0.414      0.685      0.556      0.678      0.228
                  bird        128         16      0.967          1      0.995      0.675      0.906      0.938      0.909      0.516
                   cat        128          4      0.778       0.89      0.945      0.728      0.778       0.89      0.945       0.69
                   dog        128          9          1       0.65      0.973      0.697          1       0.65      0.939      0.615
                 horse        128          2      0.727          1      0.995      0.672      0.727          1      0.995        0.2
              elephant        128         17          1      0.912      0.946      0.704      0.871      0.794      0.822      0.565
                  bear        128          1      0.626          1      0.995      0.895      0.626          1      0.995      0.895
                 zebra        128          4      0.865          1      0.995      0.934      0.865          1      0.995      0.822
               giraffe        128          9      0.975          1      0.995      0.672      0.866      0.889      0.876      0.473
              backpack        128          6          1      0.573      0.707       0.38      0.891        0.5      0.524      0.249
              umbrella        128         18      0.744      0.889      0.926      0.552      0.465      0.556      0.483      0.262
               handbag        128         19      0.799      0.209      0.432      0.225      0.799      0.209      0.403      0.201
                   tie        128          7      0.968      0.857      0.857       0.53      0.968      0.857      0.857      0.519
              suitcase        128          4      0.821          1      0.995      0.696      0.821          1      0.995      0.665
               frisbee        128          5      0.777        0.8      0.761      0.613      0.777        0.8      0.761      0.558
                  skis        128          1      0.721          1      0.995      0.497      0.721          1      0.995      0.398
             snowboard        128          7      0.851      0.857      0.887      0.599      0.284      0.286      0.253      0.151
           sports ball        128          6      0.961      0.667      0.687      0.429      0.721        0.5      0.481      0.476
                  kite        128         10      0.508      0.312       0.48      0.238      0.508      0.312      0.406      0.122
          baseball bat        128          4      0.331        0.5      0.526      0.249      0.331        0.5      0.376      0.102
        baseball glove        128          7      0.876      0.571      0.579      0.282      0.657      0.429      0.429      0.343
            skateboard        128          5          1      0.697      0.824      0.471      0.707      0.497      0.552      0.299
         tennis racket        128          7      0.524      0.714      0.646      0.426      0.524      0.714      0.646      0.452
                bottle        128         18      0.657      0.389      0.531      0.359      0.657      0.389      0.569      0.362
            wine glass        128         16      0.752      0.938      0.924      0.435      0.451      0.562      0.568      0.341
                   cup        128         36      0.859      0.676      0.848      0.503      0.823      0.648      0.793      0.496
                  fork        128          6      0.904      0.333      0.462      0.309      0.452      0.167      0.195      0.107
                 knife        128         16      0.749        0.5      0.665      0.413      0.655      0.438      0.523      0.314
                 spoon        128         22      0.787      0.409      0.577      0.275      0.787      0.409      0.528      0.236
                  bowl        128         28      0.793      0.679      0.744      0.577      0.751      0.643      0.688      0.366
                banana        128          1      0.931          1      0.995      0.398      0.931          1      0.995      0.497
              sandwich        128          2          1          0      0.828      0.713          1          0      0.498      0.449
                orange        128          4      0.588          1      0.995      0.666      0.588          1      0.995      0.672
              broccoli        128         11      0.563      0.455      0.356      0.258      0.563      0.455      0.362      0.259
                carrot        128         24      0.683       0.75      0.753      0.489      0.758      0.833      0.835      0.451
               hot dog        128          2      0.583          1      0.995      0.995      0.583          1      0.995      0.796
                 pizza        128          5      0.801        0.8      0.962      0.644      0.801        0.8      0.962      0.583
                 donut        128         14      0.704          1      0.889      0.759      0.704          1      0.889      0.683
                  cake        128          4      0.904          1      0.995      0.896      0.904          1      0.995      0.838
                 chair        128         35      0.672      0.543      0.629      0.333      0.708      0.571      0.583      0.284
                 couch        128          6      0.827        0.5      0.821      0.583      0.827        0.5      0.681      0.352
          potted plant        128         14      0.809      0.908      0.884      0.584      0.809      0.908      0.884      0.474
                   bed        128          3          1      0.654      0.913       0.36          1      0.654      0.913      0.418
          dining table        128         13      0.803      0.385      0.557      0.361      0.321      0.154      0.126     0.0487
                toilet        128          2      0.802          1      0.995      0.921      0.802          1      0.995      0.698
                    tv        128          2       0.59          1      0.995      0.846       0.59          1      0.995      0.846
                laptop        128          3          1          0      0.451      0.324          1          0      0.372      0.157
                 mouse        128          2          1          0          0          0          1          0          0          0
                remote        128          8      0.831        0.5      0.625      0.495      0.831        0.5      0.629      0.436
            cell phone        128          8      0.867      0.375      0.482       0.26      0.578       0.25      0.302      0.127
             microwave        128          3      0.782          1      0.995      0.695      0.782          1      0.995      0.585
                  oven        128          5      0.389        0.4      0.432      0.299      0.584        0.6      0.642      0.411
                  sink        128          6      0.657        0.5      0.491      0.373      0.657        0.5      0.436      0.303
          refrigerator        128          5      0.729        0.8      0.778      0.547      0.729        0.8      0.778      0.496
                  book        128         29       0.77      0.231      0.451      0.186       0.77      0.231      0.399      0.136
                 clock        128          9      0.798      0.889      0.956      0.747      0.798      0.889      0.926       0.68
                  vase        128          2      0.437          1      0.995      0.895      0.437          1      0.995      0.796
              scissors        128          1          0          0     0.0226     0.0113          0          0          0          0
            teddy bear        128         21      0.815      0.629      0.877      0.521      0.753      0.582      0.793      0.435
            toothbrush        128          5          1      0.719      0.995      0.737          1      0.719      0.995      0.606
Results saved to runs/train-seg/exp

4. Visualize

Comet Logging and Visualization 🌟 NEW

Comet is now fully integrated with YOLOv5. Track and visualize model metrics in real time, save your hyperparameters, datasets, and model checkpoints, and visualize your model predictions with Comet Custom Panels! Comet makes sure you never lose track of your work and makes it easy to share results and collaborate across teams of all sizes!

Getting started is easy:

pip install comet_ml  # 1. install
export COMET_API_KEY=<Your API Key>  # 2. paste API key
python train.py --img 640 --epochs 3 --data coco128.yaml --weights yolov5s.pt  # 3. train

To learn more about all of the supported Comet features for this integration, check out the Comet Tutorial. If you'd like to learn more about Comet, head over to our documentation. Get started by trying out the Comet Colab Notebook: Open In Colab

yolo-ui

ClearML Logging and Automation 🌟 NEW

ClearML is completely integrated into YOLOv5 to track your experimentation, manage dataset versions and even remotely execute training runs. To enable ClearML (check cells above):

You'll get all the great expected features from an experiment manager: live updates, model upload, experiment comparison etc. but ClearML also tracks uncommitted changes and installed packages for example. Thanks to that ClearML Tasks (which is what we call experiments) are also reproducible on different machines! With only 1 extra line, we can schedule a YOLOv5 training task on a queue to be executed by any number of ClearML Agents (workers).

You can use ClearML Data to version your dataset and then pass it to YOLOv5 simply using its unique ID. This will help you keep track of your data without adding extra hassle. Explore the ClearML Tutorial for details!

ClearML Experiment Management UI

Local Logging

Training results are automatically logged with Tensorboard and CSV loggers to runs/train, with a new experiment directory created for each new training as runs/train/exp2, runs/train/exp3, etc.

This directory contains train and val statistics, mosaics, labels, predictions and augmentated mosaics, as well as metrics and charts including precision-recall (PR) curves and confusion matrices.

Local logging results

Environments

YOLOv5 may be run in any of the following up-to-date verified environments (with all dependencies including CUDA/CUDNN, Python and PyTorch preinstalled):

Status

YOLOv5 CI

If this badge is green, all YOLOv5 GitHub Actions Continuous Integration (CI) tests are currently passing. CI tests verify correct operation of YOLOv5 training (train.py), testing (val.py), inference (detect.py) and export (export.py) on macOS, Windows, and Ubuntu every 24 hours and on every commit.

Appendix

Additional content below.

In [ ]:
# YOLOv5 PyTorch HUB Inference (DetectionModels only)
import torch

model = torch.hub.load('ultralytics/yolov5', 'yolov5s-seg')  # yolov5n - yolov5x6 or custom
im = 'https://ultralytics.com/images/zidane.jpg'  # file, Path, PIL.Image, OpenCV, nparray, list
results = model(im)  # inference
results.print()  # or .show(), .save(), .crop(), .pandas(), etc.