* Update links * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
40 KiB
Vendored
40 KiB
Vendored
In [1]:
!git clone https://github.com/ultralytics/yolov5 # clone
%cd yolov5
%pip install -qr requirements.txt # install
import torch
import utils
display = utils.notebook_init() # checksYOLOv5 🚀 v7.0-136-g71244ae Python-3.9.16 torch-2.0.0+cu118 CUDA:0 (Tesla T4, 15102MiB)
Setup complete ✅ (2 CPUs, 12.7 GB RAM, 23.3/166.8 GB disk)
In [13]:
!python detect.py --weights yolov5s.pt --img 640 --conf 0.25 --source data/images
# display.Image(filename='runs/detect/exp/zidane.jpg', width=600)[34m[1mdetect: [0mweights=['yolov5s.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/detect, name=exp, exist_ok=False, line_thickness=3, hide_labels=False, hide_conf=False, half=False, dnn=False, vid_stride=1 YOLOv5 🚀 v7.0-136-g71244ae Python-3.9.16 torch-2.0.0+cu118 CUDA:0 (Tesla T4, 15102MiB) Downloading https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5s.pt to yolov5s.pt... 100% 14.1M/14.1M [00:00<00:00, 24.5MB/s] Fusing layers... YOLOv5s summary: 213 layers, 7225885 parameters, 0 gradients image 1/2 /content/yolov5/data/images/bus.jpg: 640x480 4 persons, 1 bus, 41.5ms image 2/2 /content/yolov5/data/images/zidane.jpg: 384x640 2 persons, 2 ties, 60.0ms Speed: 0.5ms pre-process, 50.8ms inference, 37.7ms NMS per image at shape (1, 3, 640, 640) Results saved to [1mruns/detect/exp[0m
In [3]:
# Download COCO val
torch.hub.download_url_to_file('https://ultralytics.com/assets/coco2017val.zip', 'tmp.zip') # download (780M - 5000 images)
!unzip -q tmp.zip -d ../datasets && rm tmp.zip # unzip100%|██████████| 780M/780M [00:12<00:00, 66.6MB/s]
In [4]:
# Validate YOLOv5s on COCO val
!python val.py --weights yolov5s.pt --data coco.yaml --img 640 --half[34m[1mval: [0mdata=/content/yolov5/data/coco.yaml, weights=['yolov5s.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=True, project=runs/val, name=exp, exist_ok=False, half=True, dnn=False
YOLOv5 🚀 v7.0-136-g71244ae Python-3.9.16 torch-2.0.0+cu118 CUDA:0 (Tesla T4, 15102MiB)
Fusing layers...
YOLOv5s summary: 213 layers, 7225885 parameters, 0 gradients
[34m[1mval: [0mScanning /content/datasets/coco/val2017... 4952 images, 48 backgrounds, 0 corrupt: 100% 5000/5000 [00:02<00:00, 2024.59it/s]
[34m[1mval: [0mNew cache created: /content/datasets/coco/val2017.cache
Class Images Instances P R mAP50 mAP50-95: 100% 157/157 [01:25<00:00, 1.84it/s]
all 5000 36335 0.671 0.519 0.566 0.371
Speed: 0.1ms pre-process, 3.1ms inference, 2.3ms NMS per image at shape (32, 3, 640, 640)
Evaluating pycocotools mAP... saving runs/val/exp/yolov5s_predictions.json...
loading annotations into memory...
Done (t=0.43s)
creating index...
index created!
Loading and preparing results...
DONE (t=5.32s)
creating index...
index created!
Running per image evaluation...
Evaluate annotation type *bbox*
DONE (t=78.89s).
Accumulating evaluation results...
DONE (t=14.51s).
Average Precision (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.374
Average Precision (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.572
Average Precision (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.402
Average Precision (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.211
Average Precision (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.423
Average Precision (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.489
Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.311
Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.516
Average Recall (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.566
Average Recall (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.378
Average Recall (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.625
Average Recall (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.722
Results saved to [1mruns/val/exp[0m
In [ ]:
#@title Select YOLOv5 🚀 logger {run: 'auto'}
logger = 'Comet' #@param ['Comet', 'ClearML', 'TensorBoard']
if logger == 'Comet':
%pip install -q comet_ml
import comet_ml; comet_ml.init()
elif logger == 'ClearML':
%pip install -q clearml
import clearml; clearml.browser_login()
elif logger == 'TensorBoard':
%load_ext tensorboard
%tensorboard --logdir runs/trainIn [5]:
# Train YOLOv5s on COCO128 for 3 epochs
!python train.py --img 640 --batch 16 --epochs 3 --data coco128.yaml --weights yolov5s.pt --cache2023-04-09 14:11:38.063605: I tensorflow/core/platform/cpu_feature_guard.cc:182] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations.
To enable the following instructions: AVX2 AVX512F FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags.
2023-04-09 14:11:39.026661: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Could not find TensorRT
[34m[1mtrain: [0mweights=yolov5s.pt, cfg=, data=coco128.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, 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, entity=None, upload_dataset=False, bbox_interval=-1, artifact_alias=latest
[34m[1mgithub: [0mup to date with https://github.com/ultralytics/yolov5 ✅
YOLOv5 🚀 v7.0-136-g71244ae Python-3.9.16 torch-2.0.0+cu118 CUDA:0 (Tesla T4, 15102MiB)
[34m[1mhyperparameters: [0mlr0=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
[34m[1mClearML: [0mrun 'pip install clearml' to automatically track, visualize and remotely train YOLOv5 🚀 in ClearML
[34m[1mComet: [0mrun 'pip install comet_ml' to automatically track and visualize YOLOv5 🚀 runs in Comet
[34m[1mTensorBoard: [0mStart with 'tensorboard --logdir runs/train', view at http://localhost:6006/
Dataset not found ⚠️, missing paths ['/content/datasets/coco128/images/train2017']
Downloading https://ultralytics.com/assets/coco128.zip to coco128.zip...
100% 6.66M/6.66M [00:00<00:00, 75.6MB/s]
Dataset download success ✅ (0.6s), saved to [1m/content/datasets[0m
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 229245 models.yolo.Detect [80, [[10, 13, 16, 30, 33, 23], [30, 61, 62, 45, 59, 119], [116, 90, 156, 198, 373, 326]], [128, 256, 512]]
Model summary: 214 layers, 7235389 parameters, 7235389 gradients, 16.6 GFLOPs
Transferred 349/349 items from yolov5s.pt
[34m[1mAMP: [0mchecks passed ✅
[34m[1moptimizer:[0m SGD(lr=0.01) with parameter groups 57 weight(decay=0.0), 60 weight(decay=0.0005), 60 bias
[34m[1malbumentations: [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))
[34m[1mtrain: [0mScanning /content/datasets/coco128/labels/train2017... 126 images, 2 backgrounds, 0 corrupt: 100% 128/128 [00:00<00:00, 1709.36it/s]
[34m[1mtrain: [0mNew cache created: /content/datasets/coco128/labels/train2017.cache
[34m[1mtrain: [0mCaching images (0.1GB ram): 100% 128/128 [00:00<00:00, 264.35it/s]
[34m[1mval: [0mScanning /content/datasets/coco128/labels/train2017.cache... 126 images, 2 backgrounds, 0 corrupt: 100% 128/128 [00:00<?, ?it/s]
[34m[1mval: [0mCaching images (0.1GB ram): 100% 128/128 [00:01<00:00, 107.05it/s]
[34m[1mAutoAnchor: [0m4.27 anchors/target, 0.994 Best Possible Recall (BPR). Current anchors are a good fit to dataset ✅
Plotting labels to runs/train/exp/labels.jpg...
Image sizes 640 train, 640 val
Using 2 dataloader workers
Logging results to [1mruns/train/exp[0m
Starting training for 3 epochs...
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
0/2 3.91G 0.04618 0.07209 0.01703 232 640: 100% 8/8 [00:09<00:00, 1.17s/it]
Class Images Instances P R mAP50 mAP50-95: 100% 4/4 [00:01<00:00, 2.01it/s]
all 128 929 0.667 0.602 0.68 0.45
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
1/2 4.76G 0.04622 0.06891 0.01817 201 640: 100% 8/8 [00:02<00:00, 3.78it/s]
Class Images Instances P R mAP50 mAP50-95: 100% 4/4 [00:01<00:00, 2.16it/s]
all 128 929 0.709 0.645 0.722 0.478
Epoch GPU_mem box_loss obj_loss cls_loss Instances Size
2/2 4.76G 0.0436 0.0647 0.01698 227 640: 100% 8/8 [00:01<00:00, 4.19it/s]
Class Images Instances P R mAP50 mAP50-95: 100% 4/4 [00:01<00:00, 2.95it/s]
all 128 929 0.761 0.647 0.735 0.49
3 epochs completed in 0.006 hours.
Optimizer stripped from runs/train/exp/weights/last.pt, 14.8MB
Optimizer stripped from runs/train/exp/weights/best.pt, 14.8MB
Validating runs/train/exp/weights/best.pt...
Fusing layers...
Model summary: 157 layers, 7225885 parameters, 0 gradients, 16.4 GFLOPs
Class Images Instances P R mAP50 mAP50-95: 100% 4/4 [00:06<00:00, 1.56s/it]
all 128 929 0.759 0.646 0.734 0.49
person 128 254 0.857 0.706 0.805 0.525
bicycle 128 6 0.773 0.577 0.725 0.414
car 128 46 0.664 0.435 0.551 0.24
motorcycle 128 5 0.587 0.8 0.837 0.635
airplane 128 6 1 0.989 0.995 0.715
bus 128 7 0.635 0.714 0.753 0.651
train 128 3 0.686 0.333 0.72 0.504
truck 128 12 0.604 0.333 0.472 0.259
boat 128 6 0.938 0.333 0.449 0.177
traffic light 128 14 0.778 0.255 0.401 0.217
stop sign 128 2 0.826 1 0.995 0.895
bench 128 9 0.711 0.556 0.661 0.313
bird 128 16 0.962 1 0.995 0.642
cat 128 4 0.868 1 0.995 0.754
dog 128 9 1 0.652 0.899 0.651
horse 128 2 0.853 1 0.995 0.622
elephant 128 17 0.909 0.882 0.934 0.698
bear 128 1 0.696 1 0.995 0.995
zebra 128 4 0.855 1 0.995 0.905
giraffe 128 9 0.788 0.828 0.912 0.701
backpack 128 6 0.835 0.5 0.738 0.311
umbrella 128 18 0.785 0.814 0.859 0.48
handbag 128 19 0.759 0.263 0.366 0.205
tie 128 7 0.983 0.714 0.77 0.492
suitcase 128 4 0.656 1 0.945 0.631
frisbee 128 5 0.721 0.8 0.759 0.724
skis 128 1 0.737 1 0.995 0.3
snowboard 128 7 0.829 0.696 0.83 0.537
sports ball 128 6 0.637 0.667 0.602 0.311
kite 128 10 0.636 0.6 0.599 0.226
baseball bat 128 4 0.501 0.25 0.468 0.205
baseball glove 128 7 0.483 0.429 0.465 0.292
skateboard 128 5 0.932 0.6 0.687 0.493
tennis racket 128 7 0.77 0.429 0.547 0.332
bottle 128 18 0.577 0.379 0.554 0.276
wine glass 128 16 0.704 0.875 0.89 0.51
cup 128 36 0.841 0.667 0.837 0.533
fork 128 6 0.992 0.333 0.45 0.315
knife 128 16 0.768 0.688 0.695 0.403
spoon 128 22 0.838 0.47 0.639 0.384
bowl 128 28 0.764 0.58 0.716 0.513
banana 128 1 0.902 1 0.995 0.301
sandwich 128 2 1 0 0.359 0.326
orange 128 4 0.722 0.75 0.912 0.581
broccoli 128 11 0.547 0.364 0.432 0.317
carrot 128 24 0.619 0.625 0.724 0.495
hot dog 128 2 0.409 1 0.828 0.762
pizza 128 5 0.833 0.995 0.962 0.727
donut 128 14 0.631 1 0.96 0.839
cake 128 4 0.87 1 0.995 0.83
chair 128 35 0.583 0.6 0.608 0.317
couch 128 6 0.907 0.667 0.815 0.544
potted plant 128 14 0.739 0.786 0.823 0.48
bed 128 3 0.985 0.333 0.83 0.441
dining table 128 13 0.821 0.357 0.578 0.342
toilet 128 2 1 0.988 0.995 0.846
tv 128 2 0.57 1 0.995 0.796
laptop 128 3 1 0 0.593 0.312
mouse 128 2 1 0 0.089 0.0445
remote 128 8 1 0.624 0.634 0.538
cell phone 128 8 0.622 0.417 0.421 0.187
microwave 128 3 0.711 1 0.995 0.766
oven 128 5 0.329 0.4 0.43 0.282
sink 128 6 0.437 0.333 0.338 0.265
refrigerator 128 5 0.567 0.8 0.799 0.536
book 128 29 0.597 0.257 0.349 0.154
clock 128 9 0.765 0.889 0.932 0.736
vase 128 2 0.33 1 0.995 0.895
scissors 128 1 1 0 0.497 0.0498
teddy bear 128 21 0.856 0.569 0.841 0.547
toothbrush 128 5 0.8 1 0.928 0.574
Results saved to [1mruns/train/exp[0m
In [ ]:
# YOLOv5 PyTorch HUB Inference (DetectionModels only)
import torch
model = torch.hub.load('ultralytics/yolov5', 'yolov5s', force_reload=True) # 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.




