YOLOv5 in PyTorch > ONNX > CoreML > TFLite

Overview
 

CI CPU testing

This repository represents Ultralytics open-source research into future object detection methods, and incorporates lessons learned and best practices evolved over thousands of hours of training and evolution on anonymized client datasets. All code and models are under active development, and are subject to modification or deletion without notice. Use at your own risk.

YOLOv5-P5 640 Figure (click to expand)

Figure Notes (click to expand)
  • GPU Speed measures end-to-end time per image averaged over 5000 COCO val2017 images using a V100 GPU with batch size 32, and includes image preprocessing, PyTorch FP16 inference, postprocessing and NMS.
  • EfficientDet data from google/automl at batch size 8.
  • Reproduce by python test.py --task study --data coco.yaml --iou 0.7 --weights yolov5s6.pt yolov5m6.pt yolov5l6.pt yolov5x6.pt

Pretrained Checkpoints

Model size
(pixels)
mAPval
0.5:0.95
mAPtest
0.5:0.95
mAPval
0.5
Speed
V100 (ms)
params
(M)
FLOPS
640 (B)
YOLOv5s 640 36.7 36.7 55.4 2.0 7.3 17.0
YOLOv5m 640 44.5 44.5 63.1 2.7 21.4 51.3
YOLOv5l 640 48.2 48.2 66.9 3.8 47.0 115.4
YOLOv5x 640 50.4 50.4 68.8 6.1 87.7 218.8
YOLOv5s6 1280 43.3 43.3 61.9 4.3 12.7 17.4
YOLOv5m6 1280 50.5 50.5 68.7 8.4 35.9 52.4
YOLOv5l6 1280 53.4 53.4 71.1 12.3 77.2 117.7
YOLOv5x6 1280 54.4 54.4 72.0 22.4 141.8 222.9
YOLOv5x6 TTA 1280 55.0 55.0 72.0 70.8 - -
Table Notes (click to expand)
  • APtest denotes COCO test-dev2017 server results, all other AP results denote val2017 accuracy.
  • AP values are for single-model single-scale unless otherwise noted. Reproduce mAP by python test.py --data coco.yaml --img 640 --conf 0.001 --iou 0.65
  • SpeedGPU averaged over 5000 COCO val2017 images using a GCP n1-standard-16 V100 instance, and includes FP16 inference, postprocessing and NMS. Reproduce speed by python test.py --data coco.yaml --img 640 --conf 0.25 --iou 0.45
  • All checkpoints are trained to 300 epochs with default settings and hyperparameters (no autoaugmentation).
  • Test Time Augmentation (TTA) includes reflection and scale augmentation. Reproduce TTA by python test.py --data coco.yaml --img 1536 --iou 0.7 --augment

Requirements

Python 3.8 or later with all requirements.txt dependencies installed, including torch>=1.7. To install run:

$ pip install -r requirements.txt

Tutorials

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):

Inference

detect.py runs inference on a variety of sources, downloading models automatically from the latest YOLOv5 release and saving results to runs/detect.

$ python detect.py --source 0  # webcam
                            file.jpg  # image 
                            file.mp4  # video
                            path/  # directory
                            path/*.jpg  # glob
                            'https://youtu.be/NUsoVlDFqZg'  # YouTube video
                            'rtsp://example.com/media.mp4'  # RTSP, RTMP, HTTP stream

To run inference on example images in data/images:

$ python detect.py --source data/images --weights yolov5s.pt --conf 0.25

Namespace(agnostic_nms=False, augment=False, classes=None, conf_thres=0.25, device='', exist_ok=False, img_size=640, iou_thres=0.45, name='exp', project='runs/detect', save_conf=False, save_txt=False, source='data/images/', update=False, view_img=False, weights=['yolov5s.pt'])
YOLOv5 v4.0-96-g83dc1b4 torch 1.7.0+cu101 CUDA:0 (Tesla V100-SXM2-16GB, 16160.5MB)

Fusing layers... 
Model Summary: 224 layers, 7266973 parameters, 0 gradients, 17.0 GFLOPS
image 1/2 /content/yolov5/data/images/bus.jpg: 640x480 4 persons, 1 bus, Done. (0.010s)
image 2/2 /content/yolov5/data/images/zidane.jpg: 384x640 2 persons, 1 tie, Done. (0.011s)
Results saved to runs/detect/exp2
Done. (0.103s)

PyTorch Hub

Inference with YOLOv5 and PyTorch Hub:

import torch

# Model
model = torch.hub.load('ultralytics/yolov5', 'yolov5s')

# Image
img = 'https://github.com/ultralytics/yolov5/raw/master/data/images/zidane.jpg'

# Inference
results = model(img)
results.print()  # or .show(), .save()

Training

Run commands below to reproduce results on COCO dataset (dataset auto-downloads on first use). Training times for YOLOv5s/m/l/x are 2/4/6/8 days on a single V100 (multi-GPU times faster). Use the largest --batch-size your GPU allows (batch sizes shown for 16 GB devices).

$ python train.py --data coco.yaml --cfg yolov5s.yaml --weights '' --batch-size 64
                                         yolov5m                                40
                                         yolov5l                                24
                                         yolov5x                                16

Citation

DOI

About Us

Ultralytics is a U.S.-based particle physics and AI startup with over 6 years of expertise supporting government, academic and business clients. We offer a wide range of vision AI services, spanning from simple expert advice up to delivery of fully customized, end-to-end production solutions, including:

  • Cloud-based AI systems operating on hundreds of HD video streams in realtime.
  • Edge AI integrated into custom iOS and Android apps for realtime 30 FPS video inference.
  • Custom data training, hyperparameter evolution, and model exportation to any destination.

For business inquiries and professional support requests please visit us at https://www.ultralytics.com.

Contact

Issues should be raised directly in the repository. For business inquiries or professional support requests please visit https://www.ultralytics.com or email Glenn Jocher at [email protected].

Comments
  • Add TensorFlow and TFLite export

    Add TensorFlow and TFLite export

    Since this PR has been merged into the master branch (and some code changes), TensorFlow/TFLite models can be exported using

    python export.py --weights yolov5s.pt --include saved_model pb tflite [--int8] --img 640
    python export.py --weights yolov5s.pt --include tfjs --img 640
    

    and validated using

    python detect.py --weights yolov5s_saved_model --img 640
                               yolov5s.pb
                               yolov5s-fp16.tflite
                               yolov5s-int8.tflite
    

    After exporting TFLite models, https://github.com/zldrobit/yolov5/tree/tf-android can be used as an Android demo.

    For Edge TPU model export, plz refer to https://github.com/ultralytics/yolov5/pull/3630.

    Original export method (obsoleted) This PR is a simplified version of (https://github.com/ultralytics/yolov5/pull/959), which only adds TensorFlow and TFLite export functionality.

    Export TensorFlow models (GraphDef and saved model) and fp16 TFLite models using:

    python models/tf.py --weights weights/yolov5s.pt --cfg models/yolov5s.yaml --img 320
    

    Export int8 quantized TFLite models using:

    python3 models/tf.py --weights weights/yolov5s.pt --cfg models/yolov5s.yaml --tfl-int8 --source /data/dataset/coco/coco2017/train2017 --ncalib 100
    

    Run TensorFlow/TFLite model inference using:

    python3 detect.py --weights weights/yolov5s.pb          --img 320
                                weights/yolov5s_saved_model
                                weights/yolov5s-fp16.tflite
                                weights/yolov5s-int8.tflite           --tfl-int8
    
    For TensorFlow.js

    Export *.pb* model with class-agnostic NMS (tf.image.non_max_suppression)

    python3 models/tf.py --weights weights/yolov5s.pt --cfg models/yolov5s.yaml --img 320 --tf-nms --agnostic-nms
    

    Convert *.pb to a tfjs model with:

    # install tfjs converter: pip install tensorflowjs
    tensorflowjs_converter \
        --input_format=tf_frozen_model \
        --output_node_names='Identity,Identity_1,Identity_2,Identity_3' \
        weights/yolov5s.pb \
        weights/web_model
    

    Edit weights/web_model/model.json to shuffle output node order (see https://github.com/tensorflow/tfjs/issues/3942): "signature": {"outputs": {"Identity": {"name": "Identity"}, "Identity_3": {"name": "Identity_3"}, "Identity_1": {"name": "Identity_1"}, "Identity_2": {"name": "Identity_2"}}}-> "signature": {"outputs": {"Identity": {"name": "Identity"}, "Identity_1": {"name": "Identity_1"}, "Identity_2": {"name": "Identity_2"}, "Identity_3": {"name": "Identity_3"}}}. using:

    sed -i 's/{"outputs": {"Identity.\?.\?": {"name": "Identity.\?.\?"}, "Identity.\?.\?": {"name": "Identity.\?.\?"}, "Identity.\?.\?": {"name": "Identity.\?.\?"}, "Identity.\?.\?": {"name": "Identity.\?.\?"}}}/'\
    '{"outputs": {"Identity": {"name": "Identity"}, "Identity_1": {"name": "Identity_1"}, "Identity_2": {"name": "Identity_2"}, "Identity_3": {"name": "Identity_3"}}}/' \
    ./weights/web_model/model.json
    

    Deploy the model with tfjs-yolov5-example.

    This PR is tested successfully with PyTorch 1.8 and TensorFlow 2.4.0/2.4.1.

    EDIT:

    • Change --img from 640 to 320.
    • Remove --no-tfl-detect. It is now only used in tf-android-tfl-detect tf-edgetpu branch for Edge TPU model export.
    • Deprecate TensorFlow 1.x support. If you still want to use TF 1.x, plz refer to the archived tf-export branch. Note this branch does not support TFLite model export.
    • For EdgeTPU support, tf-android-tfl-detect branch is obsoleted by tf-edgetpu branch.
    • Add --tf-raw-resize option to map resize ops to EdgeTPU, which accelerates inference (not necessary with Edge TPU compiler v16).
    • Add instruction for model inference.
    • Add TensorFlow.js model export and detection example tfjs-yolov5-example. Demo page on https://zldrobit.github.io/tfjs-yolov5-example/
    • Remove --cfg since the config yaml is stored in the model weights now.

    FAQ:

    • Is TFLite NMS supported? NMS is not supported on TFLite GPU delegate by now (https://github.com/ultralytics/yolov5/discussions/2095). If you are interested in usage on CPU, another issue is working on this.
    • Inconsistent model output shape with Java code (java.lang.IllegalArgumentException: Cannot copy to a TensorFlowLite tensor (serving_default_input_1:0) with 1769472 bytes from a Java Buffer with 1228800 bytes.): see https://github.com/ultralytics/yolov5/pull/1127#issuecomment-1062729008
    • OpenCL not found with GPU delegate (Can not open OpenCL library on this device - dlopen failed: library "libOpenCL.so" not found): see https://github.com/ultralytics/yolov5/pull/1127#issuecomment-1056038455
    • If you're interested in detecting objects in an image with Android, plz refer to https://github.com/ultralytics/yolov5/pull/1127#issuecomment-1057576360 and modify the project accordingly.
    • TFLite backend is optimized for ARM processors by defualt. Running a YOLOv5 TFLite model on a X86 CPU is very slow as expected and inference with python detect.py is only for validation purposes. If you're interested in running YOLOv5 TFLite models on Android, plz refer to https://github.com/zldrobit/yolov5/tree/tf-android.
    enhancement 
    opened by zldrobit 613
  • YOLOv5 segmentation model support

    YOLOv5 segmentation model support

    Usage:

    # train
    python segment/train.py --cfg yolov5(m/s/l)-seg 
    # detect
    python segment/predict.py --source
    

    TODO:

    • [x] Resolve conflict
    • [x] Resolve pre-commit
    • [x] Enable overlap-mask by default
    • [x] Clean callback related residue code
    • [ ] Write segmentation related readme
    • [x] torch.deterministic solution for segment?
    • [x] merge non_max_suppression_masks() with non_max_suppression()?
    • [x] remove edict dependency?
    • [x] DetectMultiBackend compatibility - PyTorch only
    • [x] export.py compatability all non-TF
    • [x] TensorBoard and W&B logging
    • [x] CI - Test segmentation: Requires YOLOv5n-seg.pt and COCO128-seg dataset
    • [x] export.py TF with TFDetectSegment()
    • [x] Fix csv logging
    • [x] cpu support
    • [x] implement SegmentationModel class (requires retraining all models) to help identify seg models easily on load.
    • [x] Fix Logging
    documentation enhancement 
    opened by AyushExel 221
  • Changing to Multi-process DistributedDataParallel

    Changing to Multi-process DistributedDataParallel

    Hello, @glenn-jocher

    From your advice, Multi-process DistributedDataParallel should be better than the Single process we have now.

    I have been trying to change it here at my fork on my ddp branch. (Apologize that it's messy). However, I've reached into many issues.

    Since it's in testing, I didn't account for the device being cpu as of now.

    What I did so far

    • Added setup method to init_process_group and set torch.cuda device

    • Called torch.multiprocessing.spawn on the modified train function

    • ~~Created a new argument called world_size to be called when running script (we can change this to counting # of device later)~~

    • Added condition checks for only 1 process to download weights file, remove the batch.jpg, saving checkpoints

    • ~Added dist.barrier() while waiting for first process to do its job~

    • ~Replaced all .to(device) to .to(rank) for each process.~

    • ~Changed map_location for loading weights.~

    • ~~Added more parameters to train function because the processes cannot see the global variables~~

    • Added DistributedSampler for multiple gpu on dataset so they each get a different sample

    • ~Turned off tensorboard as I needed to pass tb_writer to train as argument to be able to use it.~

    Things to fix

    • ~~Do not divide dataset for validation set in create_dataloader~~

    • ~~Reduce the need to call world_size as argument to say that we want multiprocess~~

    • ~Cleaning up~

    • ~~Fixing the inconsistent output prints (All process printing at once makes it hard to track)~~

    • ~Enable tensorboard again~

    • ~~Splitting batch_size/learning rate/epoch for multiple GPU~~

    • ~~Figure out why global variables are always recalled (I disabled print(hyp) because of this)~~

    Problems

    Since I am still learning, it is very likely I messed up the training. The learnt information from each epoch for each process may not be distributed among themselves because I tested training at it's 0 mAP. I read somewhere that a SyncBatch layer may be needed, but I am not sure how to add it.

    Saving checkpoints is done by only the first process as multiprocess saving concurrently causes problem for strip_optimizer later on. I am not sure if this is the correct way.

    I am testing it, and it is much slower than using just one GPU, but I figured that if the training is fixed, it can be a good boost for multi-gpu.

    I also understand that this isn't as high in your priority list but maybe some guidance would be nice. Thank you.

    enhancement 
    opened by NanoCode012 104
  • Add EdgeTPU support

    Add EdgeTPU support

    tf-edgetpu branch is created from tf-android-tfl-detect branch by deleting the android directory. tf-android-tfl-detect is deprecated since tf-android branch could be used for deploying YOLOv5 models on Android devices.

    deprecated EdgeTPU compiler could not convert the detection box reconstruction part, so `--no-tfl-detect` is mandatory while using `tf.py`. With `--tf-raw-resize`, resize ops can be mapped to EdgeTPU and the inference time reduces from ~60ms to ~50ms (with an Intel i9 3.3G CPU and a USB-connected EdgeTPU). By substituting `Focus` layers with `Conv` layers, the inference time decreases to ~30ms with v6.0 models.

    Before export, install edgetpu-compiler (https://coral.ai/software/#debian-packages), and install pycoral (https://coral.ai/software/#pycoral-api).

    Export EdgeTPU models using:

    python export.py --weights yolov5s.pt --include edgetpu --img 320 --data data/coco128.yaml
    

    --data is used for calibration in int8 quantization.

    Detect objects using:

    python detect.py --weights yolov5s-int8_edgetpu.tflite --img 320 --data data/coco128.yaml
    

    --data is used to show real class names.

    A colab note book for exporting Edge TPU models provided by @phodgers
    # Install the Compiler
    ! curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
    ! echo "deb https://packages.cloud.google.com/apt coral-edgetpu-stable main" | sudo tee /etc/apt/sources.list.d/coral-edgetpu.list
    ! sudo apt-get update
    ! sudo apt-get install edgetpu-compiler	
    
    # Install Branch https://github.com/zldrobit/yolov5/tree/tf-edgetpu 
    !git clone https://github.com/zldrobit/yolov5.git
    %cd yolov5
    !git checkout tf-edgetpu
    %pip install -qr requirements.txt
    from yolov5 import utils
    display = utils.notebook_init()  # checks
    
    # Export file Compiled for Coral Edge TPU
    %pip install --upgrade flatbuffers==1.12 # downgrade from v2 to v1.12
    !python export.py --weights yolov5s.pt --include edgetpu --img 320 --data data/coco128.yaml
    
    On an Intel i9 3.3G CPU and a USB-connected EdgeTPU, the inference speeds of different input resolutions are as follows:

    |input resolution| infercence time (batch 1)| |-|-| |320 | 31.7 ms| |448 | 74.3 ms| |576 | 155 ms| |640 | 271.6 ms|

    EDIT:

    • Merge master, so Edge TPU models can be exported with export.py and validated with detect.py
    • Add --data option to show real class names in detection.
    • 640x640 input resolution is supported.
    • Edge TPU models contain bbox reconstruction, and this feature is not backward-compatible. Edge TPU models have to be re-exported!

    TODO:

    • [ ] Add TensorFlow Raw Resize back Edge TPU compiler v16 supports native Resize ops.
    enhancement 
    opened by zldrobit 88
  • About reproduced results

    About reproduced results

    Hello,

    I download the provided ckpt files and use python test.py --img-size 736 --conf_thres 0.001 for reproducing results, but I got different AP and AP50 when compare with the table in readme.

    yolov3-spp: 44.1% AP, 64.4% AP50 (Table 45.5% AP, 65.2% AP50) Speed: 10.4/2.1/12.6 ms inference/NMS/total per 736x736 image at batch-size 16

    yolov5s: 31.4% AP, 52.3% AP50 (Table 33.1% AP, 53.3% AP50) Speed: 2.2/2.1/4.4 ms inference/NMS/total per 736x736 image at batch-size 16

    yolov5m: 39.9% AP, 60.7% AP50 (Table 41.5% AP, 61.5% AP50) Speed: 5.4/1.8/7.2 ms inference/NMS/total per 736x736 image at batch-size 16

    yolov5l: 42.7% AP, 63.5% AP50 (Table 44.2% AP, 64.3% AP50) Speed: 11.3/2.2/13.5 ms inference/NMS/total per 736x736 image at batch-size 16

    yolov5x: 45.7% AP, 65.9% AP50 (Table 47.1% AP, 66.7% AP50) Speed: 20.3/2.2/22.5 ms inference/NMS/total per 736x736 image at batch-size 16

    Do the reported results are from the test.py or they are calculated by evaluation server?

    Stale 
    opened by WongKinYiu 83
  • Grad-Cam for yolov5-5.0

    Grad-Cam for yolov5-5.0

    Search before asking

    • [X] I have searched the YOLOv5 issues and found no similar feature requests.

    Description

    I visualize where the model concerns using grad-cam. detection results: zidane layer 17 17 layer 20 20 layer 23 23

    detection results: bus layer 17 17 layer 20 20 layer 23 23

    my code: in detect.py 1.add a function

    def cam_show_img(img, feature_map, grads, out_name):
        H, W, _ = img.shape
        cam = np.zeros(feature_map.shape[1:], dtype=np.float32)		
        grads = grads.reshape([grads.shape[0],-1])					
        weights = np.mean(grads, axis=1)							
        for i, w in enumerate(weights):
            cam += w * feature_map[i, :, :]							
        cam = np.maximum(cam, 0)
        cam = cam / cam.max()
        cam = cv2.resize(cam, (W, H))
    
        heatmap = cv2.applyColorMap(np.uint8(255 * cam), cv2.COLORMAP_JET)
        cam_img = 0.3 * heatmap + 0.7 * img
    
        cv2.imwrite(out_name, cam_img)
    

    change: https://github.com/ultralytics/yolov5/blob/f5b8f7d54c9fa69210da0177fec7ac2d9e4a627c/detect.py#L59-L61 to:

    if visualize:
        # require grad
        for k, v in model.named_parameters():
            v.requires_grad = True  # train all layers
        compute_loss = ComputeLoss(model)
    
    # Run inference
    if pt and device.type != 'cpu':
        model(torch.zeros(1, 3, *imgsz).to(device).type_as(next(model.parameters())))  # run once
    

    change: https://github.com/ultralytics/yolov5/blob/f5b8f7d54c9fa69210da0177fec7ac2d9e4a627c/detect.py#L71-L72 to

    visualize = increment_path(save_dir / Path(path).stem, mkdir=True) if visualize else False
    # pred = model(img, augment=augment, visualize=visualize)[0]
    
    if visualize:
        # grad-cam
        pred = model(img, augment=augment, visualize=visualize)
        
        model.zero_grad()
        targets = torch.zeros(2, 6)
        loss, loss_items = compute_loss(pred[1], targets.to(device))
        loss.requires_grad_(True)
        loss.backward()
    
        _grads = model.grads_list
        _grads.reverse()
        _features = model.features_list
    
        # for g, f in zip(_grads, _features):
        #     print('grad', type(g), g.shape)
        #     print('feature', type(f), f.shape)
        
        for i in [17, 20, 23]:
            out_name = str(save_dir / f"{i}.jpg")
            cam_show_img(im0s, _features[i].cpu().detach().numpy()[0], _grads[i].cpu().detach().numpy()[0], out_name)
    
        pred = pred[0]
    else:
        pred = model(img, augment=augment, visualize=visualize)[0]
    

    in yolo.py 1.add grad_list and feature_list to store grad and feature https://github.com/ultralytics/yolov5/blob/f5b8f7d54c9fa69210da0177fec7ac2d9e4a627c/models/yolo.py#L66-L67

    class Model(nn.Module):
    
        grads_list = []
        features_list = []
    
        def __init__(self, cfg='yolov5s.yaml', ch=3, nc=None, anchors=None):  # model, input channels, number of classes
    

    2.add hook function in class Model

        def save_gradient(self, grad):
            # print('grad shape:', grad.shape)
            self.grads_list.append(grad)
    

    3.store grad and feature in Model.forward_once()

                y.append(x if m.i in self.save else None)  # save output
                
                # save grad
                if visualize:
                    if 'Detect' not in m.type:
                        x.register_hook(self.save_gradient)
                        self.features_list.append(x)
                    else:
                        if isinstance(x, list):
                            for _x in x:
                                _x.register_hook(self.save_gradient)
                                self.features_list.append(_x)
                        elif isinstance(x, tuple):
                            for _x in x[1]:
                                _x.register_hook(self.save_gradient)
                                self.features_list.append(_x)
    
                if visualize:
                    feature_visualization(x, m.type, m.i, save_dir=visualize)
    

    Use case

    a piece of code about Grad-Cam, which can visualize where the model concerns.

    Additional

    No response

    Are you willing to submit a PR?

    • [X] Yes I'd like to help by submitting a PR!
    enhancement Stale 
    opened by xiaowk5516 78
  • Use export.py to generate yolov5s.onnx will get a negative number.

    Use export.py to generate yolov5s.onnx will get a negative number.

    ❔Question

    Use export.py to generate yolov5s.onnx will get a negative number. image image

    This is the code that executes the onnx part

    session = onnxruntime.InferenceSession('./weights/yolov5s.onnx')
    
    batch_size = session.get_inputs()[0].shape[0]
    img_size_h = session.get_inputs()[0].shape[2]
    img_size_w = session.get_inputs()[0].shape[3]
    
    image_src = Image.open(image_path)
    resized = letterbox_image(image_src, (img_size_w, img_size_h))
    img_in = np.transpose(resized, (2, 0, 1)).astype(np.float32)  # HWC -> CHW
    img_in = np.expand_dims(img_in, axis=0)
    img_in /= 255.0
    
    input_name = session.get_inputs()[0].name
    # output, output_exist = session.run(['decoder.output_conv', 'lane_exist.linear2'], {"input.1": image_np})
    outputs = session.run(None, {input_name: img_in})
    

    There are already negative numbers in the outputs. Then after the result is processed, it will appear that part of it is correct, such as car in the figure. However, the top/bottom of the bicycle is right, the left/right is wrong, the left/right of the dog is right, and the top/bottom is wrong. What might cause this problem? Thanks.

    Additional context

    torch:1.5.1 torchvision:0.6.1 onnxruntime:1.3.0

    question 
    opened by cmdbug 74
  • Add export and detection for TensorFlow saved_model, graph_def and TFLite

    Add export and detection for TensorFlow saved_model, graph_def and TFLite

    This PR add models/tf.py to export TensorFlow saved_model, graph_def and TFLite models. This script support both yolov5 v2 (LeakyReLU activations) and v3 (Hardswish activations) models.

    Export TensorFlow and TFLite models using:

    PYTHONPATH=. python models/tf.py --weights weights/yolov5s.pt --cfg models/yolov5s.yaml --img 640
    

    and use one of the following command to detect objects:

    python detect.py --weights weights/yolov5s_saved_model --img 640
    python detect.py --weights weights/yolov5s.pb --img 640
    python detect.py --weights weights/yolov5s.tflite --img 640
    

    This PR is tested sucessfully with PyTorchc 1.6, TensorFlow 1.15.3/2.3.0. However, TFLite export is only supported under TensorFlow 2.3.0.

    enhancement 
    opened by zldrobit 71
  • Apply Transformer in the backbone

    Apply Transformer in the backbone

    🚀 Feature

    Transformer is popular in NLP, and now is also applied on CV. I added C3TR just by replacing the sequential self.m in C3 with a Transformer block, which could reduce GFlOPs and make Yolo achieve a better result.

    Motivation

    • Dosovitskiy et al. proposed ViT
    • Facebook applied Transformer on object detection as an encoder
    • So I thought Transformer could make yolo better

    Pitch

    I add 3 classes in https://github.com/dingyiwei/yolov5/blob/Transformer/models/common.py :

    class TransformerLayer(nn.Module):
        def __init__(self, c, num_heads):
            super().__init__()
    
            self.ln1 = nn.LayerNorm(c)
            self.q = nn.Linear(c, c, bias=False)
            self.k = nn.Linear(c, c, bias=False)
            self.v = nn.Linear(c, c, bias=False)
            self.ma = nn.MultiheadAttention(embed_dim=c, num_heads=num_heads)
            self.ln2 = nn.LayerNorm(c)
            self.fc1 = nn.Linear(c, c, bias=False)
            self.fc2 = nn.Linear(c, c, bias=False)
    
        def forward(self, x):
            x_ = self.ln1(x)
            x = self.ma(self.q(x_), self.k(x_), self.v(x_))[0] + x
            x = self.ln2(x)
            x = self.fc2(self.fc1(x)) + x
            return x
    
    
    class TransformerBlock(nn.Module):
        def __init__(self, c1, c2, num_heads, num_layers):
            super().__init__()
    
            self.conv = None
            if c1 != c2:
                self.conv = Conv(c1, c2)
            self.linear = nn.Linear(c2, c2)
            self.tr = nn.Sequential(*[TransformerLayer(c2, num_heads) for _ in range(num_layers)])
            self.c2 = c2
    
        def forward(self, x):
            if self.conv is not None:
                x = self.conv(x)
            b, _, w, h = x.shape
            p = x.flatten(2)
            p = p.unsqueeze(0)
            p = p.transpose(0, 3)
            p = p.squeeze(3)
            e = self.linear(p)
            x = p + e
    
            x = self.tr(x)
            x = x.unsqueeze(3)
            x = x.transpose(0, 3)
            x = x.reshape(b, self.c2, w, h)
            return x
    
    
    class C3TR(C3):
        def __init__(self, c1, c2, n=1, shortcut=True, g=1, e=0.5):
            super().__init__(c1, c2, n, shortcut, g, e)
            c_ = int(c2 * e)
            self.m = TransformerBlock(c_, c_, 4, n)
    

    And I just put it as the last part of the backbone instead of a C3 block.

    backbone:
      # [from, number, module, args]
      [[-1, 1, Focus, [64, 3]],  # 0-P1/2
       [-1, 1, Conv, [128, 3, 2]],  # 1-P2/4
       [-1, 3, C3, [128]],
       [-1, 1, Conv, [256, 3, 2]],  # 3-P3/8
       [-1, 9, C3, [256]],
       [-1, 1, Conv, [512, 3, 2]],  # 5-P4/16
       [-1, 9, C3, [512]],
       [-1, 1, Conv, [1024, 3, 2]],  # 7-P5/32
       [-1, 1, SPP, [1024, [5, 9, 13]]],
       [-1, 3, C3TR, [1024, False]],  # 9    <---- here is my modifcation
      ]
    

    I conducted experiments on 2 Nvidia GTX 1080Ti cards, where depth_multiple and width_multiple are the same as Yolov5s. Here are my experimental results with img-size 640. For convenience I named the method in this issue as Yolov5TRs.

    |Model|Params|GFLOPs| |---|---|---| |Yolov5s|7266973|17.0| |Yolov5TRs|7268765|16.8|

    |Model|Dataset|TTA|[email protected]|[email protected]:.95|Speed (ms)| |---|---|---|---|---|---| |Yolov5s|coco (val)|N|0.558|0.365|4.4| |Yolov5TRs|coco (val)|N|0.568|0.363|4.4| |Yolov5s|coco (test-dev)|N|0.559|0.365|4.6| |Yolov5TRs|coco (test-dev)|N|0.567|0.365|4.5| |Yolov5s|coco (test-dev)|Y|0.568|0.378|12.0| |Yolov5TRs|coco (test-dev)|Y|0.571|0.375|11.0|

    We can see that Yolov5TRs get higher scores in [email protected] with a faster speed. (I'm not sure why my results of Yolov5s are different from which shown in README. The model was downloaded from release v4.0) When depth_multiple and width_multiple are set to larger numbers, C3TR should be more lightweight than C3. Since I do not have so much time on it and my machine is not very strong, I did not run experiments on M, L and X. Maybe someone could conduct the future experiments:smile:

    documentation enhancement 
    opened by dingyiwei 65
  • How to modify Detect layer to allow for converting yolov5 to Qualcomm's SNPE format?

    How to modify Detect layer to allow for converting yolov5 to Qualcomm's SNPE format?

    ❔Question

    I am trying to convert a trained yolov5s model to an SNPE format in order to be able to run it on a Snapdragon chip. Unfortunately, Qualcomm's ONNX to SNPE converter fails on the Detect level with the following error message

    ValueError: Unable to permute shape [1, 3, 64, 64, 2] to NSC ordering
    2021-09-14 15:15:37,327 - 183 - ERROR - Node Mul_268: Unable to permute shape [1, 3, 64, 64, 2] to NSC ordering
    

    I can imagine, it may have something to do with the fact that SNPE currently supports 4D input data, where the first dimension is batch SNPE doc and yolov5 Detect layer has 5D reshape.

    Would it be possible to modify Detect layer so that no 5D reshape is performed?

    question Stale 
    opened by evdoks 63
  • Feature/ddp fixed

    Feature/ddp fixed

    Fixing DDP mode. #177 Work in Progress, But most of the hard things have already been done! There are lots of commits. If every thing is settled down, I will merge them into two commits!

    opened by MagicFrogSJTU 61
  • Model not uploading: unhandled server error

    Model not uploading: unhandled server error

    Search before asking

    • [X] I have searched the YOLOv5 issues and found no similar bug report.

    YOLOv5 Component

    No response

    Bug

    I trained a model, but UL crashed when uploading it:

    
          Epoch    GPU_mem   box_loss   obj_loss   cls_loss  Instances       Size
          99/99      73.7G   0.009337   0.004801          0        621        640: 100%|██████████| 37/37 00:31
                     Class     Images  Instances          P          R      mAP50   mAP50-95: 100%|██████████| 3/3 00:06
                       all       1556       1860      0.867       0.76       0.82      0.387
    Ultralytics: Uploading checkpoint Xr7RjMjjuMXh2Vto2x9q
    
    24 epochs completed in 0.251 hours.
    Optimizer stripped from yolov5/runs/train/exp/weights/last.pt, 14.4MB
    Ultralytics: Training completed successfully ✅
    Ultralytics: Uploading final Xr7RjMjjuMXh2Vto2x9q
    Ultralytics: View model at https://hub.ultralytics.com/models/Xr7RjMjjuMXh2Vto2x9q 🚀
    Ultralytics: Unhandled server error. Retrying 10x for 3600s. If this issue persists please visit https://github.com/ultralytics/hub/issues for assistance. (500 #4)
    Results saved to yolov5/runs/train/exp
    
    

    The contents of yolov5/runs/train/exp:

    image

    Please advise how can I upload the model?

    Environment

    No response

    Minimal Reproducible Example

    No response

    Additional

    No response

    Are you willing to submit a PR?

    • [ ] Yes I'd like to help by submitting a PR!
    bug 
    opened by y-arrow 1
  • mAP increase on COCO after training 300 epochs

    mAP increase on COCO after training 300 epochs

    Search before asking

    • [X] I have searched the YOLOv5 issues and discussions and found no similar questions.

    Question

    I am training YOLOv5l on COCO taking the weights which were shared. I noticed that the mAP_0.5 increases to 65% on COCO after training for 300 epochs. Can someone explain why this is happening? If that is the case, what should be ideal number of Epoch to get best result in COCO

    I don't suspect Overfitting as both train and val loss are decreasing. image

    Additional

    Loss

    question 
    opened by abhiksark 0
  • why can't i gain the segmentation by use python val.py --save-json(the results val_batch{batch_i}_pred.jpg has segmentation label)

    why can't i gain the segmentation by use python val.py --save-json(the results val_batch{batch_i}_pred.jpg has segmentation label)

    Search before asking

    • [X] I have searched the YOLOv5 issues and discussions and found no similar questions.

    Question

    why can't i gain the segmentation by use python val.py --save-json(the results val_batch{batch_i}_pred.jpg has segmentation label)

    Additional

    No response

    question 
    opened by 1246886181 1
  • How to set the path to allow for Azure Machine Learning integration?

    How to set the path to allow for Azure Machine Learning integration?

    Search before asking

    • [X] I have searched the YOLOv5 issues and discussions and found no similar questions.

    Question

    I am running Yolov5 in Azure Machine Learning instead of Google Colab. Microsoft has a full featured integrated capability of creating docker containers, and run it on GPU's in the cloud straight from Visual Studio Code. 0.23 USD/ hr for a T80 Tesla on low priority infrastructure. It even has full github ML Ops integrated. See image below where I show it is working...but with some hacks in your code. It is much easier to use than Google CoLab, but getting it to work with this repository is a bit hard. I particular as I do not know how to avoid mixing up our code with this repository, but that is maybe because Python is not that OO as C# to have it perfectly separated.

    I modified this in the requirements.txt: opencv-python-headless>=4.1.1 #opencv-python>=4.1.1

    image

    My script is a py file in the Yolo folder. Basically this is all needed to fully create a container and sent it to the Azure ML cloud: `from pathlib import Path

    from azureml.core import ( Environment, Experiment, Run, ScriptRunConfig, Workspace, Dataset, Datastore, ) from azureml.data import OutputFileDatasetConfig

    from azureml.core.compute import AmlCompute, ComputeTarget from azureml.core.authentication import AzureCliAuthentication

    def find_or_create_compute_target( workspace, name, vm_size="Standard_NC6", #"Standard_D8_v3", min_nodes=0, max_nodes=1, idle_seconds_before_scaledown=900, vm_priority="lowpriority", ):

    if name in workspace.compute_targets:
        return ComputeTarget(workspace=workspace, name=name)
    else:
        config = AmlCompute.provisioning_configuration(
            vm_size=vm_size,
            min_nodes=min_nodes,
            max_nodes=max_nodes,
            vm_priority=vm_priority,
            idle_seconds_before_scaledown=idle_seconds_before_scaledown,
        )
        target = ComputeTarget.create(workspace, name, config)
        target.wait_for_completion(show_output=True)
    
    return target
    

    workspace_config = 'config.json' requirements_file = 'requirements.txt' compute_target_name = 'LowPrioStdNC6' experiment_name = 'train-yolo-7' script_path = 'segment/train.py' blobstorage = 'workspaceblobstore' blobcontainerpath = 'UI/2023-01-05_###_UTC'

    cli_auth = AzureCliAuthentication()

    Authenticate with your AzureML Resource via its config.json file

    ws = Workspace.from_config(path=workspace_config, auth=cli_auth)

    ws = Workspace.from_config(path="v4a/config.json", auth=cli_auth)

    The experiment in this workspace under which our runs will be grouped

    If an experiment with the given name doesn't exist, it will be created

    exp = Experiment(ws, experiment_name)

    The compute cluster you want to run on and its settings.

    If it doesn't exist, it'll be created.

    compute_target = find_or_create_compute_target(ws, compute_target_name)

    The Environment lets us define any dependencies needed to make our script run

    env = Environment.from_pip_requirements("my-pip-env", requirements_file)

    datastore = Datastore.get(ws, blobstorage) dataset = Dataset.File.from_files(path=(datastore, blobcontainerpath))

    output = OutputFileDatasetConfig(name='outputs', destination=(datastore, 'outputdataset'))

    script_args = ['--device', '0', '--img', '640', '--cfg', 'v4a/data/yolov5s-seg.yaml', '--hyp', 'data/hyps/hyp.scratch-high.yaml', '--batch', '16', '--epochs', '100', '--data', 'v4a/data/###.yaml', '--weights', 'v4a/data/yolov5s-seg.pt', '--workers', '24', '--name', '#####', '--project', output.as_mount(), '--inputs', dataset.as_named_input('inputs').as_mount()] #'--outputs', output.as_mount()]

    A run configuration is how you define what youd like to run

    We give it the directory where our code is, the script we want to run, the environment, and the compute info

    run_config = ScriptRunConfig( source_directory=".",#Path(script_path).parent, script="./segment/train.py", #Path(script_path).name, arguments=script_args, compute_target=compute_target, environment=env, )

    Submit our configured run under our experiment

    run = exp.submit(run_config)

    Wait for the run to finish

    run.wait_for_completion(show_output=True)

    Delete our compute target so it doesn't cost us money

    #compute_target.delete()`

    The input and outputs are explained in this Jupyter notebook: https://github.com/Azure/MachineLearningNotebooks/blob/master/how-to-use-azureml/work-with-data/datasets-tutorial/scriptrun-with-data-input-output/how-to-use-scriptrun.ipynb

    As our dataset is too large we need to mount the dataset from an azure blob storage. I can however not see how to change the path. I see in the yaml file a path can be set, but that is not working.

    Is it possible to support this natively ? I am a C# programmer and do not get the idea of OO in Python. So I did some modifications which are not so nice: image

    Another not so nice: image

    It is currently processing, question is if I can see the outputs of the training somewhere:

    image

    The output is also saved to a azure blob: image

    Additional

    Would be nice to support Microsoft Azure Machine Learning natively including azure blob storage for large files. It will save the environment by not having to pump data around.

    question 
    opened by V4A001 0
  • Tflite GPU compatibility

    Tflite GPU compatibility

    Search before asking

    • [X] I have searched the YOLOv5 issues and found no similar bug report.

    YOLOv5 Component

    Export

    Bug

    Hello,

    it's compatibility with Android environment problem. The capture below shows the warning I received from trying to run the exported tflite model on my Android mobile using the GPU delegate. Not only this, but the model is quite slow ~700ms. I tested on different android phones.

    if I use the mobilenetv2 tflite for example I dont get this warning and the model is much faster.

    My thoughts is maybe we should rethink tf.py implementation to get more ops supported by tflite on GPU following mobileNet implementation.

    Even inference on my computer (M1 Mac Pro) using tflite exported model is slow ~140ms compared to pytorch model and onnx.

    If you run into the same problem please share your thoughts/solutions

    Thank you

    gpu

    Environment

    No response

    Minimal Reproducible Example

    No response

    Additional

    No response

    Are you willing to submit a PR?

    • [ ] Yes I'd like to help by submitting a PR!
    bug 
    opened by ily-R 0
  • How to save the result of each era when training classification

    How to save the result of each era when training classification

    Search before asking

    • [X] I have searched the YOLOv5 issues and discussions and found no similar questions.

    Question

    In file \yolov5-master\yolov5-master\classify\train.py

    no parameter --save-period

    parser.add_argument('--model', type=str, default='yolov5s-cls.pt', help='initial weights path')
    parser.add_argument('--data', type=str, default='imagenette160', help='cifar10, cifar100, mnist, imagenet, ...')
    parser.add_argument('--epochs', type=int, default=10, help='total training epochs')
    parser.add_argument('--batch-size', type=int, default=64, help='total batch size for all GPUs')
    parser.add_argument('--imgsz', '--img', '--img-size', type=int, default=224, help='train, val image size (pixels)')
    parser.add_argument('--nosave', action='store_true', help='only save final checkpoint')
    parser.add_argument('--cache', type=str, nargs='?', const='ram', help='--cache images in "ram" (default) or "disk"')
    parser.add_argument('--device', default='', help='cuda device, i.e. 0 or 0,1,2,3 or cpu')
    parser.add_argument('--workers', type=int, default=8, help='max dataloader workers (per RANK in DDP mode)')
    parser.add_argument('--project', default=ROOT / 'runs/train-cls', help='save to project/name')
    parser.add_argument('--name', default='exp', help='save to project/name')
    parser.add_argument('--exist-ok', action='store_true', help='existing project/name ok, do not increment')
    parser.add_argument('--pretrained', nargs='?', const=True, default=True, help='start from i.e. --pretrained False')
    parser.add_argument('--optimizer', choices=['SGD', 'Adam', 'AdamW', 'RMSProp'], default='Adam', help='optimizer')
    parser.add_argument('--lr0', type=float, default=0.001, help='initial learning rate')
    parser.add_argument('--decay', type=float, default=5e-5, help='weight decay')
    parser.add_argument('--label-smoothing', type=float, default=0.1, help='Label smoothing epsilon')
    parser.add_argument('--cutoff', type=int, default=None, help='Model layer cutoff index for Classify() head')
    parser.add_argument('--dropout', type=float, default=None, help='Dropout (fraction)')
    parser.add_argument('--verbose', action='store_true', help='Verbose mode')
    parser.add_argument('--seed', type=int, default=0, help='Global training seed')
    parser.add_argument('--local_rank', type=int, default=-1, help='Automatic DDP Multi-GPU argument, do not modify')
    return parser.parse_known_args()[0] if known else parser.parse_args()
    

    Additional

    No response

    question 
    opened by binn77 1
Releases(v7.0)
  • v7.0(Nov 22, 2022)


    Our new YOLOv5 v7.0 instance segmentation models are the fastest and most accurate in the world, beating all current SOTA benchmarks. We've made them super simple to train, validate and deploy. See full details in our Release Notes and visit our YOLOv5 Segmentation Colab Notebook for quickstart tutorials.


    Our primary goal with this release is to introduce super simple YOLOv5 segmentation workflows just like our existing object detection models. The new v7.0 YOLOv5-seg models below are just a start, we will continue to improve these going forward together with our existing detection and classification models. We'd love your feedback and contributions on this effort!

    This release incorporates 280 PRs from 41 contributors since our last release in August 2022.

    Important Updates

    • Segmentation Models ⭐ NEW: SOTA YOLOv5-seg COCO-pretrained segmentation models are now available for the first time (https://github.com/ultralytics/yolov5/pull/9052 by @glenn-jocher, @AyushExel and @Laughing-q)
    • Paddle Paddle Export: Export any YOLOv5 model (cls, seg, det) to Paddle format with python export.py --include paddle (https://github.com/ultralytics/yolov5/pull/9459 by @glenn-jocher)
    • YOLOv5 AutoCache: Use python train.py --cache ram will now scan available memory and compare against predicted dataset RAM usage. This reduces risk in caching and should help improve adoption of the dataset caching feature, which can significantly speed up training. (https://github.com/ultralytics/yolov5/pull/10027 by @glenn-jocher)
    • Comet Logging and Visualization Integration: Free forever, Comet lets you save YOLOv5 models, resume training, and interactively visualise and debug predictions. (https://github.com/ultralytics/yolov5/pull/9232 by @DN6)

    New Segmentation Checkpoints

    We trained YOLOv5 segmentations models on COCO for 300 epochs at image size 640 using A100 GPUs. We exported all models to ONNX FP32 for CPU speed tests and to TensorRT FP16 for GPU speed tests. We ran all speed tests on Google Colab Pro notebooks for easy reproducibility.

    | Model | size
    (pixels) | mAPbox
    50-95 | mAPmask
    50-95 | Train time
    300 epochs
    A100 (hours) | Speed
    ONNX CPU
    (ms) | Speed
    TRT A100
    (ms) | params
    (M) | FLOPs
    @640 (B) | |----------------------------------------------------------------------------------------------------|-----------------------|----------------------|-----------------------|-----------------------------------------------|--------------------------------|--------------------------------|--------------------|------------------------| | YOLOv5n-seg | 640 | 27.6 | 23.4 | 80:17 | 62.7 | 1.2 | 2.0 | 7.1 | | YOLOv5s-seg | 640 | 37.6 | 31.7 | 88:16 | 173.3 | 1.4 | 7.6 | 26.4 | | YOLOv5m-seg | 640 | 45.0 | 37.1 | 108:36 | 427.0 | 2.2 | 22.0 | 70.8 | | YOLOv5l-seg | 640 | 49.0 | 39.9 | 66:43 (2x) | 857.4 | 2.9 | 47.9 | 147.7 | | YOLOv5x-seg | 640 | 50.7 | 41.4 | 62:56 (3x) | 1579.2 | 4.5 | 88.8 | 265.7 |

    • All checkpoints are trained to 300 epochs with SGD optimizer with lr0=0.01 and weight_decay=5e-5 at image size 640 and all default settings.
      Runs logged to https://wandb.ai/glenn-jocher/YOLOv5_v70_official
    • Accuracy values are for single-model single-scale on COCO dataset.
      Reproduce by python segment/val.py --data coco.yaml --weights yolov5s-seg.pt
    • Speed averaged over 100 inference images using a Colab Pro A100 High-RAM instance. Values indicate inference speed only (NMS adds about 1ms per image).
      Reproduce by python segment/val.py --data coco.yaml --weights yolov5s-seg.pt --batch 1
    • Export to ONNX at FP32 and TensorRT at FP16 done with export.py.
      Reproduce by python export.py --weights yolov5s-seg.pt --include engine --device 0 --half

    New Segmentation Usage Examples

    Train

    YOLOv5 segmentation training supports auto-download COCO128-seg segmentation dataset with --data coco128-seg.yaml argument and manual download of COCO-segments dataset with bash data/scripts/get_coco.sh --train --val --segments and then python train.py --data coco.yaml.

    # Single-GPU
    python segment/train.py --model yolov5s-seg.pt --data coco128-seg.yaml --epochs 5 --img 640
    
    # Multi-GPU DDP
    python -m torch.distributed.run --nproc_per_node 4 --master_port 1 segment/train.py --model yolov5s-seg.pt --data coco128-seg.yaml --epochs 5 --img 640 --device 0,1,2,3
    

    Val

    Validate YOLOv5m-seg accuracy on ImageNet-1k dataset:

    bash data/scripts/get_coco.sh --val --segments  # download COCO val segments split (780MB, 5000 images)
    python segment/val.py --weights yolov5s-seg.pt --data coco.yaml --img 640  # validate
    

    Predict

    Use pretrained YOLOv5m-seg to predict bus.jpg:

    python segment/predict.py --weights yolov5m-seg.pt --data data/images/bus.jpg
    
    model = torch.hub.load('ultralytics/yolov5', 'custom', 'yolov5m-seg.pt')  # load from PyTorch Hub (WARNING: inference not yet supported)
    

    zidane | bus --- |---

    Export

    Export YOLOv5s-seg model to ONNX and TensorRT:

    python export.py --weights yolov5s-seg.pt --include onnx engine --img 640 --device 0
    

    Changelog

    • Changes between previous release and this release: https://github.com/ultralytics/yolov5/compare/v6.2...v7.0
    • Changes since this release: https://github.com/ultralytics/yolov5/compare/v7.0...HEAD
    🛠️ New Features and Bug Fixes (280) * Improve classification comments by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8997 * Update `attempt_download(release='v6.2')` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8998 * Update README_cn.md by @KieraMengru0907 in https://github.com/ultralytics/yolov5/pull/9001 * Update dataset `names` from array to dictionary by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9000 * [segment]: Allow inference on dirs and videos by @AyushExel in https://github.com/ultralytics/yolov5/pull/9003 * DockerHub tag update Usage example by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9005 * Add weight `decay` to argparser by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9006 * Add glob quotes to detect.py usage example by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9007 * Fix TorchScript JSON string key bug by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9015 * EMA FP32 assert classification bug fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9016 * Faster pre-processing for gray image input by @cher-liang in https://github.com/ultralytics/yolov5/pull/9009 * Improved `Profile()` inference timing by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9024 * `torch.empty()` for speed improvements by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9025 * Remove unused `time_sync` import by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9026 * Add PyTorch Hub classification CI checks by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9027 * Attach transforms to model by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9028 * Default --data `imagenette160` training (fastest) by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9033 * VOC `names` dictionary fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9034 * Update train.py `import val as validate` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9037 * AutoBatch protect from negative batch sizes by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9048 * Temporarily remove `macos-latest` from CI by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9049 * Add `--save-hybrid` mAP warning by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9050 * Refactor for simplification by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9054 * Refactor for simplification 2 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9055 * zero-mAP fix return `.detach()` to EMA by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9056 * zero-mAP fix 3 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9058 * Daemon `plot_labels()` for faster start by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9057 * TensorBoard fix in tutorial.ipynb by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9064 * zero-mAP fix remove `torch.empty()` forward pass in `.train()` mode by @0zppd in https://github.com/ultralytics/yolov5/pull/9068 * Rename 'labels' to 'instances' by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9066 * Threaded TensorBoard graph logging by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9070 * De-thread TensorBoard graph logging by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9071 * Two dimensional `size=(h,w)` AutoShape support by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9072 * Remove unused Timeout import by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9073 * Improved Usage example docstrings by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9075 * Install `torch` latest stable by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9092 * New `@try_export` decorator by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9096 * Add optional `transforms` argument to LoadStreams() by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9105 * Streaming Classification support by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9106 * Fix numpy to torch cls streaming bug by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9112 * Infer Loggers project name by @AyushExel in https://github.com/ultralytics/yolov5/pull/9117 * Add CSV logging to GenericLogger by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9128 * New TryExcept decorator by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9154 * Fixed segment offsets by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9155 * New YOLOv5 v6.2 splash images by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9142 * Rename onnx_dynamic -> dynamic by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9168 * Inline `_make_grid()` meshgrid by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9170 * Comment EMA assert by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9173 * Fix confidence threshold for ClearML debug images by @HighMans in https://github.com/ultralytics/yolov5/pull/9174 * Update Dockerfile-cpu by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9184 * Update Dockerfile-cpu to libpython3-dev by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9185 * Update Dockerfile-arm64 to libpython3-dev by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9187 * Fix AutoAnchor MPS bug by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9188 * Skip AMP check on MPS by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9189 * ClearML's set_report_period's time is defined in minutes not seconds. by @HighMans in https://github.com/ultralytics/yolov5/pull/9186 * Add `check_git_status(..., branch='master')` argument by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9199 * `check_font()` on notebook init by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9200 * Comment `protobuf` in requirements.txt by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9207 * `check_font()` fstring update by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9208 * AutoBatch protect from extreme batch sizes by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9209 * Default AutoBatch 0.8 fraction by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9212 * Delete rebase.yml by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9202 * Duplicate segment verification fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9225 * New `LetterBox(size)` `CenterCrop(size)`, `ToTensor()` transforms (#9213) by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9213 * Add ClassificationModel TF export assert by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9226 * Remove usage of `pathlib.Path.unlink(missing_ok=...)` by @ymerkli in https://github.com/ultralytics/yolov5/pull/9227 * Add support for `*.pfm` images by @spacewalk01 in https://github.com/ultralytics/yolov5/pull/9230 * Python check warning emoji by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9238 * Add `url_getsize()` function by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9247 * Update dataloaders.py by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9250 * Refactor Loggers : Move code outside train.py by @AyushExel in https://github.com/ultralytics/yolov5/pull/9241 * Update general.py by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9252 * Add LoadImages._cv2_rotate() by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9249 * Move `cudnn.benchmarks(True)` to LoadStreams by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9258 * `cudnn.benchmark = True` on Seed 0 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9259 * Update `TryExcept(msg='...')`` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9261 * Make sure best.pt model file is preserved ClearML by @thepycoder in https://github.com/ultralytics/yolov5/pull/9265 * DetectMultiBackend improvements by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9269 * Update DetectMultiBackend for tuple outputs by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9274 * Update DetectMultiBackend for tuple outputs 2 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9275 * Update benchmarks CI with `--hard-fail` min metric floor by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9276 * Add new `--vid-stride` inference parameter for videos by @VELCpro in https://github.com/ultralytics/yolov5/pull/9256 * [pre-commit.ci] pre-commit suggestions by @pre-commit-ci in https://github.com/ultralytics/yolov5/pull/9295 * Replace deprecated `np.int` with `int` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9307 * Comet Logging and Visualization Integration by @DN6 in https://github.com/ultralytics/yolov5/pull/9232 * Comet changes by @DN6 in https://github.com/ultralytics/yolov5/pull/9328 * Train.py line 486 typo fix by @robinned in https://github.com/ultralytics/yolov5/pull/9330 * Add dilated conv support by @YellowAndGreen in https://github.com/ultralytics/yolov5/pull/9347 * Update `check_requirements()` single install by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9353 * Update `check_requirements(args, cmds='')` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9355 * Update `check_requirements()` multiple string by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9356 * Add PaddlePaddle export and inference by @kisaragychihaya in https://github.com/ultralytics/yolov5/pull/9240 * PaddlePaddle Usage examples by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9358 * labels.jpg names fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9361 * Exclude `ipython` from hubconf.py `check_requirements()` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9362 * `torch.jit.trace()` fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9363 * AMP Check fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9367 * Remove duplicate line in setup.cfg by @zldrobit in https://github.com/ultralytics/yolov5/pull/9380 * Remove `.train()` mode exports by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9429 * Continue on Docker arm64 failure by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9430 * Continue on Docker failure (all backends) by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9432 * Continue on Docker fail (all backends) fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9433 * YOLOv5 segmentation model support by @AyushExel in https://github.com/ultralytics/yolov5/pull/9052 * Fix val.py zero-TP bug by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9431 * New model.yaml `activation:` field by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9371 * Fix tick labels for background FN/FP by @hotohoto in https://github.com/ultralytics/yolov5/pull/9414 * Fix TensorRT exports to ONNX opset 12 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9441 * AutoShape explicit arguments fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9443 * Update Detections() instance printing by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9445 * AutoUpdate TensorFlow in export.py by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9447 * AutoBatch `cudnn.benchmark=True` fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9448 * Do not move downloaded zips by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9455 * Update general.py by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9454 * `Detect()` and `Segment()` fixes for CoreML and Paddle by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9458 * Add Paddle exports to benchmarks by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9459 * Add `macos-latest` runner for CoreML benchmarks by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9453 * Fix cutout bug by @Oswells in https://github.com/ultralytics/yolov5/pull/9452 * Optimize imports by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9464 * TensorRT SegmentationModel fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9465 * `Conv()` dilation argument fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9466 * Update ClassificationModel default training `imgsz=224` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9469 * Standardize warnings with `WARNING ⚠️ ...` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9467 * TensorFlow macOS AutoUpdate by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9471 * `segment/predict --save-txt` fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9478 * TensorFlow SegmentationModel support by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9472 * AutoBatch report include reserved+allocated by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9491 * Update Detect() grid init `for` loop by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9494 * Accelerate video inference by @mucunwuxian in https://github.com/ultralytics/yolov5/pull/9487 * Comet Image Logging Fix by @DN6 in https://github.com/ultralytics/yolov5/pull/9498 * Fix visualization title bug by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9500 * Add paddle tips by @Zengyf-CVer in https://github.com/ultralytics/yolov5/pull/9502 * Segmentation `polygons2masks_overlap()` in `np.int32` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9493 * Fix `random_perspective` param bug in segment by @FeiGeChuanShu in https://github.com/ultralytics/yolov5/pull/9512 * Remove `check_requirements('flatbuffers==1.12')` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9514 * Fix TF Lite exports by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9517 * TFLite fix 2 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9518 * FROM nvcr.io/nvidia/pytorch:22.08-py3 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9520 * Remove scikit-learn constraint on coremltools 6.0 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9530 * Update scikit-learn constraint per coremltools 6.0 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9531 * Update `coremltools>=6.0` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9532 * Update albumentations by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9503 * import re by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9535 * TF.js fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9536 * Refactor dataset batch-size by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9551 * Add `--source screen` for screenshot inference by @zombob in https://github.com/ultralytics/yolov5/pull/9542 * Update `is_url()` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9566 * Detect.py supports running against a Triton container by @gaziqbal in https://github.com/ultralytics/yolov5/pull/9228 * New `scale_segments()` function by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9570 * generator seed fix for DDP mAP drop by @Forever518 in https://github.com/ultralytics/yolov5/pull/9545 * Update default GitHub assets by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9573 * Update requirements.txt comment https://pytorch.org/get-started/locally/ by @davidamacey in https://github.com/ultralytics/yolov5/pull/9576 * Add segment line predictions by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9571 * TensorRT detect.py inference fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9581 * Update Comet links by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9587 * Add global YOLOv5_DATASETS_DIR by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9586 * Add Paperspace Gradient badges by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9588 * #YOLOVISION22 announcement by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9590 * Bump actions/stale from 5 to 6 by @dependabot in https://github.com/ultralytics/yolov5/pull/9595 * #YOLOVISION22 update by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9598 * Apple MPS -> CPU NMS fallback strategy by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9600 * Updated Segmentation and Classification usage by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9607 * Update export.py Usage examples by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9609 * Fix `is_url('https://ultralytics.com')` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9610 * Add `results.save(save_dir='path', exist_ok=False)` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9617 * NMS MPS device wrapper by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9620 * Add SegmentationModel unsupported warning by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9632 * Disabled upload_dataset flag temporarily due to an artifact related bug by @soumik12345 in https://github.com/ultralytics/yolov5/pull/9652 * Add NVIDIA Jetson Nano Deployment tutorial by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9656 * Added cutout import from utils/augmentations.py to use Cutout Aug in … by @senhorinfinito in https://github.com/ultralytics/yolov5/pull/9668 * Simplify val.py benchmark mode with speed mode by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9674 * Allow list for Comet artifact class 'names' field by @KristenKehrer in https://github.com/ultralytics/yolov5/pull/9654 * [pre-commit.ci] pre-commit suggestions by @pre-commit-ci in https://github.com/ultralytics/yolov5/pull/9685 * TensorRT `--dynamic` fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9691 * FROM nvcr.io/nvidia/pytorch:22.09-py3 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9711 * Error in utils/segment/general `masks2segments()` by @paulguerrie in https://github.com/ultralytics/yolov5/pull/9724 * Fix segment evolution keys by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9742 * Remove #YOLOVISION22 notice by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9751 * Update Loggers by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9760 * update mask2segments and saving results by @vladoossss in https://github.com/ultralytics/yolov5/pull/9785 * HUB VOC fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9792 * Update hubconf.py local repo Usage example by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9803 * Fix xView dataloaders import by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9807 * Argoverse HUB fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9809 * `smart_optimizer()` revert to weight with decay by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9817 * Allow PyTorch Hub results to display in notebooks by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9825 * Logger Cleanup by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9828 * Remove ipython from `check_requirements` exclude list by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9841 * Update HUBDatasetStats() usage examples by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9842 * Update ZipFile to context manager by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9843 * Update README.md by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9846 * Webcam show fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9847 * Fix OpenVINO Usage example by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9874 * ClearML Dockerfile fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9876 * Windows Python 3.7 .isfile() fix by @SSTato in https://github.com/ultralytics/yolov5/pull/9879 * Add TFLite Metadata to TFLite and Edge TPU models by @paradigmn in https://github.com/ultralytics/yolov5/pull/9903 * Add `gnupg` to Dockerfile-cpu by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9932 * Add ClearML minimum version requirement by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9933 * Update Comet Integrations table text by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9937 * Update README.md by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9957 * Update README.md by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9958 * Update README.md by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9961 * Switch from suffix checks to archive checks by @kalenmike in https://github.com/ultralytics/yolov5/pull/9963 * FROM nvcr.io/nvidia/pytorch:22.10-py3 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9966 * Full-size proto code (optional) by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9980 * Update README.md by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9970 * Segmentation Tutorial by @paulguerrie in https://github.com/ultralytics/yolov5/pull/9521 * Fix `is_colab()` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9994 * Check online twice on AutoUpdate by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9999 * Add `min_items` filter option by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9997 * Improved `check_online()` robustness by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/10000 * Fix `min_items` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/10001 * Update default `--epochs 100` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/10024 * YOLOv5 AutoCache Update by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/10027 * IoU `eps` adjustment by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/10051 * Update get_coco.sh by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/10057 * [pre-commit.ci] pre-commit suggestions by @pre-commit-ci in https://github.com/ultralytics/yolov5/pull/10068 * Use MNIST160 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/10069 * Update Dockerfile keep default torch installation by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/10071 * Add `ultralytics` pip package by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/10103 * AutoShape integer image-size fix by @janus-zheng in https://github.com/ultralytics/yolov5/pull/10090 * YouTube Usage example comments by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/10106 * Mapped project and name to ClearML by @thepycoder in https://github.com/ultralytics/yolov5/pull/10100 * Update IoU functions by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/10123 * Add Ultralytics HUB to README by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/10070 * Fix benchmark.py usage comment by @rusamentiaga in https://github.com/ultralytics/yolov5/pull/10131 * Update HUB banner image by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/10134 * Copy-Paste zero value fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/10152 * Add Copy-Paste to `mosaic9()` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/10165 * Add `join_threads()` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/10086 * Fix dataloader filepath modification to perform replace only once and not for all occurences of string by @adumrewal in https://github.com/ultralytics/yolov5/pull/10163 * fix: prevent logging config clobbering by @rkechols in https://github.com/ultralytics/yolov5/pull/10133 * Filter PyTorch 1.13 UserWarnings by @triple-Mu in https://github.com/ultralytics/yolov5/pull/10166 * Revert "fix: prevent logging config clobbering" by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/10177 * Apply make_divisible for ONNX models in Autoshape by @janus-zheng in https://github.com/ultralytics/yolov5/pull/10172 * data.yaml `names.keys()` integer assert by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/10190 * fix: try 2 - prevent logging config clobbering by @rkechols in https://github.com/ultralytics/yolov5/pull/10192 * Segment prediction labels normalization fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/10205 * Simplify dataloader tqdm descriptions by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/10210 * New global `TQDM_BAR_FORMAT` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/10211 * Feature/classification tutorial refactor by @paulguerrie in https://github.com/ultralytics/yolov5/pull/10039 * Remove Colab notebook High-Memory notices by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/10212 * Revert `--save-txt` to default False by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/10213 * Add `--source screen` Usage example by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/10215 * Add `git` info to training checkpoints by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/9655 * Add git info to cls, seg checkpoints by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/10217 * Update Comet preview image by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/10220 * Scope gitpyhon import in `check_git_info()` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/10221 * Squeezenet reshape outputs fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/10222
    😃 New Contributors (30) * @KieraMengru0907 made their first contribution in https://github.com/ultralytics/yolov5/pull/9001 * @cher-liang made their first contribution in https://github.com/ultralytics/yolov5/pull/9009 * @0zppd made their first contribution in https://github.com/ultralytics/yolov5/pull/9068 * @HighMans made their first contribution in https://github.com/ultralytics/yolov5/pull/9174 * @ymerkli made their first contribution in https://github.com/ultralytics/yolov5/pull/9227 * @spacewalk01 made their first contribution in https://github.com/ultralytics/yolov5/pull/9230 * @VELCpro made their first contribution in https://github.com/ultralytics/yolov5/pull/9256 * @DN6 made their first contribution in https://github.com/ultralytics/yolov5/pull/9232 * @robinned made their first contribution in https://github.com/ultralytics/yolov5/pull/9330 * @kisaragychihaya made their first contribution in https://github.com/ultralytics/yolov5/pull/9240 * @hotohoto made their first contribution in https://github.com/ultralytics/yolov5/pull/9414 * @Oswells made their first contribution in https://github.com/ultralytics/yolov5/pull/9452 * @mucunwuxian made their first contribution in https://github.com/ultralytics/yolov5/pull/9487 * @FeiGeChuanShu made their first contribution in https://github.com/ultralytics/yolov5/pull/9512 * @zombob made their first contribution in https://github.com/ultralytics/yolov5/pull/9542 * @gaziqbal made their first contribution in https://github.com/ultralytics/yolov5/pull/9228 * @Forever518 made their first contribution in https://github.com/ultralytics/yolov5/pull/9545 * @davidamacey made their first contribution in https://github.com/ultralytics/yolov5/pull/9576 * @soumik12345 made their first contribution in https://github.com/ultralytics/yolov5/pull/9652 * @senhorinfinito made their first contribution in https://github.com/ultralytics/yolov5/pull/9668 * @KristenKehrer made their first contribution in https://github.com/ultralytics/yolov5/pull/9654 * @paulguerrie made their first contribution in https://github.com/ultralytics/yolov5/pull/9724 * @vladoossss made their first contribution in https://github.com/ultralytics/yolov5/pull/9785 * @SSTato made their first contribution in https://github.com/ultralytics/yolov5/pull/9879 * @janus-zheng made their first contribution in https://github.com/ultralytics/yolov5/pull/10090 * @rusamentiaga made their first contribution in https://github.com/ultralytics/yolov5/pull/10131 * @adumrewal made their first contribution in https://github.com/ultralytics/yolov5/pull/10163 * @rkechols made their first contribution in https://github.com/ultralytics/yolov5/pull/10133 * @triple-Mu made their first contribution in https://github.com/ultralytics/yolov5/pull/10166
    Source code(tar.gz)
    Source code(zip)
    efficientnet_b0.pt(10.34 MB)
    efficientnet_b1.pt(15.22 MB)
    efficientnet_b2.pt(17.74 MB)
    efficientnet_b3.pt(23.76 MB)
    exp-l-5232.pt(110.44 MB)
    exp-m-5010.pt(48.67 MB)
    exp-m-sama-5272.pt(37.57 MB)
    exp-s-4358.pt(12.85 MB)
    exp-x-5316.pt(173.88 MB)
    exp-x6-5692.pt(297.16 MB)
    resnet101.pt(85.42 MB)
    resnet18.pt(22.37 MB)
    resnet34.pt(41.70 MB)
    resnet50.pt(48.98 MB)
    yolov5l-cls.pt(50.87 MB)
    yolov5l-seg.pt(91.89 MB)
    yolov5l.pt(89.28 MB)
    yolov5l6.pt(147.36 MB)
    yolov5m-cls.pt(24.88 MB)
    yolov5m-seg.pt(42.36 MB)
    yolov5m.pt(40.82 MB)
    yolov5m6.pt(68.95 MB)
    yolov5n-cls.pt(4.86 MB)
    yolov5n-seg.pt(4.11 MB)
    yolov5n.pt(3.87 MB)
    yolov5n6.pt(6.85 MB)
    yolov5s-cls.pt(10.52 MB)
    yolov5s-seg.pt(14.87 MB)
    yolov5s.pt(14.12 MB)
    yolov5s6.pt(24.77 MB)
    yolov5x-cls.pt(92.03 MB)
    yolov5x-seg.pt(170.01 MB)
    yolov5x.pt(166.04 MB)
    yolov5x6.pt(269.62 MB)
  • v6.2(Aug 17, 2022)


    This release incorporates 401 PRs from 41 contributors since our last release in February 2022. It adds Classification training, validation, prediction and export (to all 11 formats), and also provides ImageNet-pretrained YOLOv5m-cls, ResNet (18, 34, 50, 101) and EfficientNet (b0-b3) models.

    My main goal with this release is to introduce super simple YOLOv5 classification workflows just like our existing object detection models. The new v6.2 YOLOv5-cls models below are just a start, we will continue to improve these going forward together with our existing detection models. We'd love your contributions on this effort!

    Our next release, v6.3 is scheduled for September and will bring official instance segmentation support to YOLOv5, with a major v7.0 release later this year updating architectures across all 3 tasks - classification, detection and segmentation.

    Important Updates

    • Classification Models ⭐ NEW: YOLOv5-cls ImageNet-pretrained classification models are now available for the first time (https://github.com/ultralytics/yolov5/pull/8956 by @glenn-jocher)
    • ClearML logging ⭐ NEW: Integration with the open-source experiment tracker ClearML. Installing with pip install clearml will enable the integration and allow users to track every training run in ClearML. This in turn allows users to track and compare runs and even schedule runs remotely. (https://github.com/ultralytics/yolov5/pull/8620 by @thepycoder)
    • Deci.ai optimization ⭐ NEW: Automatically compile and quantize YOLOv5 for better inference performance in one click at Deci (https://github.com/ultralytics/yolov5/pull/8956 by @glenn-jocher).
    • GPU Export Benchmarks: Benchmark (mAP and speed) all YOLOv5 export formats with python utils/benchmarks.py --weights yolov5s.pt --device 0 for GPU benchmarks or --device cpu for CPU benchmarks (https://github.com/ultralytics/yolov5/pull/6963 by @glenn-jocher).
    • Training Reproducibility: Single-GPU YOLOv5 training with torch>=1.12.0 is now fully reproducible, and a new --seed argument can be used (default seed=0) (https://github.com/ultralytics/yolov5/pull/8213 by @AyushExel).
    • Apple Metal Performance Shader (MPS) Support: MPS support for Apple M1/M2 devices with --device mps (full functionality is pending torch updates in https://github.com/pytorch/pytorch/issues/77764) (https://github.com/ultralytics/yolov5/pull/7878 by @glenn-jocher)

    New Classification Checkpoints

    We trained YOLOv5-cls classification models on ImageNet for 90 epochs using a 4xA100 instance, and we trained ResNet and EfficientNet models alongside with the same default training settings to compare. We exported all models to ONNX FP32 for CPU speed tests and to TensorRT FP16 for GPU speed tests. We ran all speed tests on Google Colab Pro for easy reproducibility.

    | Model | size
    (pixels) | accuracy
    top1 | accuracy
    top5 | Train time
    90 epochs
    4x A100 (hours) | Speed
    ONNX-CPU
    (ms) | Speed
    TensorRT-V100
    (ms) | params
    (M) | FLOPs
    @224 (B) | |----------------------------------------------------------------------------------------------------|-----------------------|-----------------------|-----------------------|-------------------------------------------------|--------------------------------|-------------------------------------|--------------------|------------------------| | YOLOv5n-cls | 224 | 64.6 | 85.4 | 7:59 | 3.3 | 0.5 | 2.5 | 0.5 | | YOLOv5s-cls | 224 | 71.5 | 90.2 | 8:09 | 6.6 | 0.6 | 5.4 | 1.4 | | YOLOv5m-cls | 224 | 75.9 | 92.9 | 10:06 | 15.5 | 0.9 | 12.9 | 3.9 | | YOLOv5l-cls | 224 | 78.0 | 94.0 | 11:56 | 26.9 | 1.4 | 26.5 | 8.5 | | YOLOv5x-cls | 224 | 79.0 | 94.4 | 15:04 | 54.3 | 1.8 | 48.1 | 15.9 | | | | ResNet18 | 224 | 70.3 | 89.5 | 6:47 | 11.2 | 0.5 | 11.7 | 3.7 | | ResNet34 | 224 | 73.9 | 91.8 | 8:33 | 20.6 | 0.9 | 21.8 | 7.4 | | ResNet50 | 224 | 76.8 | 93.4 | 11:10 | 23.4 | 1.0 | 25.6 | 8.5 | | ResNet101 | 224 | 78.5 | 94.3 | 17:10 | 42.1 | 1.9 | 44.5 | 15.9 | | | | EfficientNet_b0 | 224 | 75.1 | 92.4 | 13:03 | 12.5 | 1.3 | 5.3 | 1.0 | | EfficientNet_b1 | 224 | 76.4 | 93.2 | 17:04 | 14.9 | 1.6 | 7.8 | 1.5 | | EfficientNet_b2 | 224 | 76.6 | 93.4 | 17:10 | 15.9 | 1.6 | 9.1 | 1.7 | | EfficientNet_b3 | 224 | 77.7 | 94.0 | 19:19 | 18.9 | 1.9 | 12.2 | 2.4 |

    • All checkpoints are trained to 90 epochs with SGD optimizer with lr0=0.001 and weight_decay=5e-5 at image size 224 and all default settings.
      Runs logged to https://wandb.ai/glenn-jocher/YOLOv5-Classifier-v6-2
    • Accuracy values are for single-model single-scale on ImageNet-1k dataset.
      Reproduce by python classify/val.py --data ../datasets/imagenet --img 224
    • Speed averaged over 100 inference images using a Colab Pro V100 High-RAM instance.
      Reproduce by python classify/val.py --data ../datasets/imagenet --img 224 --batch 1
    • Export to ONNX at FP32 and TensorRT at FP16 done with export.py.
      Reproduce by python export.py --weights yolov5s-cls.pt --include engine onnx --imgsz 224

    New Classification Model Usage Examples

    Train

    YOLOv5 classification training supports auto-download of MNIST, Fashion-MNIST, CIFAR10, CIFAR100, Imagenette, Imagewoof, and ImageNet datasets with the --data argument. To start training on MNIST for example use --data mnist.

    # Single-GPU
    python classify/train.py --model yolov5s-cls.pt --data cifar100 --epochs 5 --img 224 --batch 128
    
    # Multi-GPU DDP
    python -m torch.distributed.run --nproc_per_node 4 --master_port 1 classify/train.py --model yolov5s-cls.pt --data imagenet --epochs 5 --img 224 --device 0,1,2,3
    

    Val

    Validate YOLOv5m-cls accuracy on ImageNet-1k dataset:

    bash data/scripts/get_imagenet.sh --val  # download ImageNet val split (6.3G, 50000 images)
    python classify/val.py --weights yolov5m-cls.pt --data ../datasets/imagenet --img 224  # validate
    

    Predict

    Use pretrained YOLOv5s-cls.pt to predict bus.jpg:

    python classify/predict.py --weights yolov5s-cls.pt --data data/images/bus.jpg
    
    model = torch.hub.load('ultralytics/yolov5', 'custom', 'yolov5s-cls.pt')  # load from PyTorch Hub
    

    Export

    Export a group of trained YOLOv5s-cls, ResNet and EfficientNet models to ONNX and TensorRT:

    python export.py --weights yolov5s-cls.pt resnet50.pt efficientnet_b0.pt --include onnx engine --img 224
    

    Changelog

    • Changes between previous release and this release: https://github.com/ultralytics/yolov5/compare/v6.1...v6.2
    • Changes since this release: https://github.com/ultralytics/yolov5/compare/v6.2...HEAD
    🛠️ New Features and Bug Fixes (401)
    • Pre-commit table fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6744
    • Update tutorial.ipynb (2 CPUs, 12.7 GB RAM, 42.2/166.8 GB disk) by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6767
    • Update min warmup iterations from 1k to 100 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6768
    • Default OMP_NUM_THREADS=8 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6770
    • Update tutorial.ipynb by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6771
    • Update hyp.VOC.yaml by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6772
    • Fix export for 1-channel images by @lcombaldieu in https://github.com/ultralytics/yolov5/pull/6780
    • Update EMA decay tau by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6769
    • YOLOv5s6 params FLOPs fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6782
    • Update PULL_REQUEST_TEMPLATE.md by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6783
    • Update autoanchor.py by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6794
    • Update sweep.yaml by @lcombaldieu in https://github.com/ultralytics/yolov5/pull/6825
    • AutoAnchor improved initialization robustness by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6854
    • Add *.ts to VID_FORMATS by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6859
    • Update --cache disk deprecate *_npy/ dirs by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6876
    • Update yolov5s.yaml by @vnekat in https://github.com/ultralytics/yolov5/pull/6865
    • Default FP16 TensorRT export by @DavidBaldsiefen in https://github.com/ultralytics/yolov5/pull/6798
    • Bump actions/setup-python from 2 to 3 by @dependabot in https://github.com/ultralytics/yolov5/pull/6880
    • Bump actions/checkout from 2 to 3 by @dependabot in https://github.com/ultralytics/yolov5/pull/6881
    • Fix TRT max_workspace_size deprecation notice by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6856
    • Update bytes to GB with bit shift by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6886
    • Move git_describe() to general.py by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6918
    • PyTorch 1.11.0 compatibility updates by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6932
    • Optimize PyTorch 1.11.0 compatibility update by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6933
    • Allow 3-point segments by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6938
    • Fix PyTorch Hub export inference shapes by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6949
    • DetectMultiBackend() --half handling by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6945
    • Update Dockerfile torch==1.11.0+cu113 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6954
    • New val.py cuda variable by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6957
    • DetectMultiBackend() return device update by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6958
    • Tensor initialization on device improvements by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6959
    • EdgeTPU optimizations by @paradigmn in https://github.com/ultralytics/yolov5/pull/6808
    • Model ema key backward compatibility fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6972
    • YOLOv5 Export Benchmarks for GPU by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6963
    • Update TQDM bar format by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6988
    • Conditional Timeout() by OS (disable on Windows) by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7013
    • fix: add default PIL font as fallback by @maxstrobel in https://github.com/ultralytics/yolov5/pull/7010
    • Consistent saved_model output format by @MrinalJain17 in https://github.com/ultralytics/yolov5/pull/7032
    • ComputeLoss() indexing/speed improvements by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7048
    • Update Dockerfile to git clone instead of COPY by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7053
    • Create SECURITY.md by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7054
    • Fix incomplete URL substring sanitation by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7056
    • Use PIL to eliminate chroma subsampling in crops by @LaserBorg in https://github.com/ultralytics/yolov5/pull/7008
    • Fix check_anchor_order() in pixel-space not grid-space by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7060
    • Update detect.py non-inplace with y.tensor_split() by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7062
    • Update common.py lists for tuples by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7063
    • Update W&B message to LOGGER.info() by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7064
    • Update init.py by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7065
    • Add non-zero da check_anchor_order() condition by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7066
    • Fix2 check_anchor_order() in pixel-space not grid-space by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7067
    • Revert "Update detect.py non-inplace with y.tensor_split()" by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7074
    • Update loss.py with if self.gr < 1: by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7087
    • Update loss for FP16 tobj by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7088
    • Display model name in model summary by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7101
    • torch.split() 1.7.0 compatibility fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7102
    • Update benchmarks significant digits by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7103
    • Model summary pathlib fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7104
    • Remove named arguments where possible by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7105
    • Multi-threaded VisDrone and VOC downloads by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7108
    • np.fromfile() Chinese image paths fix by @yeshanliu in https://github.com/ultralytics/yolov5/pull/6979
    • Add PyTorch Hub results.save(labels=False) option by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7129
    • Fix cv2.imwrite on non-ASCII paths by @CCRcmcpe in https://github.com/ultralytics/yolov5/pull/7139
    • Fix detect.py --view-img for non-ASCII paths by @Zengyf-CVer in https://github.com/ultralytics/yolov5/pull/7093
    • Add Architecture Summary to README Tutorials by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7146
    • Adjust NMS time limit warning to batch size by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7156
    • Sidestep os.path.relpath() Windows bug by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7158
    • NMS unused variable fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7161
    • yolo.py --profile updates by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7170
    • Revert C3() change by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7172
    • Bump actions/cache from 2.1.7 to 3 by @dependabot in https://github.com/ultralytics/yolov5/pull/7175
    • yolo.py profiling updates by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7178
    • Update tutorial.ipynb by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7212
    • ENV OMP_NUM_THREADS=8 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7215
    • Add train.py --name cfg option by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7202
    • precommit: yapf by @Borda in https://github.com/ultralytics/yolov5/pull/5494
    • CLI fire prep updates by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7229
    • Update .pre-commit-config.yaml by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7230
    • SavedModel TF Serve Fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7228
    • Create CODE_OF_CONDUCT.md by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7233
    • Fix www.youtube.com hostname by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7242
    • Update minimum Python>=3.7.0 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7247
    • Update setup.cfg to description_file field by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7248
    • Update tutorial.ipynb by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7254
    • Update tutorial.ipynb by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7255
    • Fix Flask REST API by @Zengyf-CVer in https://github.com/ultralytics/yolov5/pull/7210
    • Export with official nn.SiLU() by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7256
    • Refactor out-of-place Detect() for reduced ops by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7257
    • torch.split() replace slicing on out-of-place inference by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7258
    • Export single output only by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7259
    • TorchScript single-output fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7261
    • Integrate offset into grid by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7262
    • [pre-commit.ci] pre-commit suggestions by @pre-commit-ci in https://github.com/ultralytics/yolov5/pull/7279
    • Update Dockerfile by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7282
    • Enable TensorFlow ops for --nms and --agnostic-nms by @leeflix in https://github.com/ultralytics/yolov5/pull/7281
    • Update cv2.imread() patch with flags argument by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7287
    • Context manager open(file) as f fixes by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7289
    • val.py --weights and --data compatibility check by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7292
    • Add dataset sizes (zipped) by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7293
    • Add check_requirements(('pycocotools>=2.0',)) by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7295
    • fix: disable usage of root logger by @maxstrobel in https://github.com/ultralytics/yolov5/pull/7296
    • Update export.py by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7301
    • Use tqdm.auto by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7311
    • Add retry=3 to download() by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7313
    • Add callbacks by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7315
    • Copy wandb param dict before training to avoid overwrites. by @n1mmy in https://github.com/ultralytics/yolov5/pull/7317
    • Update Objects365.yaml by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7323
    • Fix TF export for BottleneckCSP layer by @nrupatunga in https://github.com/ultralytics/yolov5/pull/7330
    • Objects365 images GB vs zips GB by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7335
    • Simplify callbacks.py return by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7333
    • Print dataset scan only if RANK in (-1, 0) by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7337
    • Update _make_grid() to model dtype by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7346
    • Rename 'MacOS' to 'macOS' by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7349
    • Add python benchmarks.py --test for export-only by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7350
    • Add ONNX export metadata by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7353
    • DetectMultiBackend() default stride=32 by @rglkt in https://github.com/ultralytics/yolov5/pull/7342
    • Loss and IoU speed improvements by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7361
    • Swap unsafe_chunk() for chunk() by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7362
    • Delete FUNDING.yml by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7363
    • Replace Slack with Community Forum in issues by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7364
    • Update ci-testing.yml by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7365
    • Bump actions/stale from 4 to 5 by @dependabot in https://github.com/ultralytics/yolov5/pull/7371
    • Update optimizer param group strategy by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7376
    • Add support for different normalization layers by @vardanagarwal in https://github.com/ultralytics/yolov5/pull/7377
    • Dynamic normalization layer selection by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7392
    • Add version warning for wandb by @AyushExel in https://github.com/ultralytics/yolov5/pull/7385
    • Remove OpenVINO ONNX opset<=12 check by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7398
    • Fix EdgeTPU output directory by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7399
    • Update git_describe() by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7402
    • Remove tensorrt pip install check by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7439
    • Disable pbar for DDP ranks > 0 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7440
    • Add --half support for FP16 CoreML exports with by @Cedric-Perauer in https://github.com/ultralytics/yolov5/pull/7446
    • Bump cirrus-actions/rebase from 1.5 to 1.6 by @dependabot in https://github.com/ultralytics/yolov5/pull/7462
    • Update val.py by @HERIUN in https://github.com/ultralytics/yolov5/pull/7478
    • Improved non-latin Annotator() plotting by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7488
    • check_fonts() download to CONFIG_DIR fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7489
    • Fix val.py Ensemble() by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7490
    • Added YOLOv5_AUTOINSTALL environment variable by @jkocherhans in https://github.com/ultralytics/yolov5/pull/7505
    • Refactor Dockerfiles to utils/docker by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7510
    • Add yesqa to precommit checks by @Zengyf-CVer in https://github.com/ultralytics/yolov5/pull/7511
    • Fix val plots=plots by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7524
    • Reduce val device transfers by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7525
    • Add Docker --file argument to build by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7527
    • Empty val batch CUDA device fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7539
    • Autoinstall TensorRT if missing by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7537
    • Add mdformat to precommit checks and update other version by @Zengyf-CVer in https://github.com/ultralytics/yolov5/pull/7529
    • Update precommit monthly python 3.7+ by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7542
    • Update downloads.py current release by @Powercube7 in https://github.com/ultralytics/yolov5/pull/7541
    • Update check_requirements() with cmds=() argument by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7543
    • Add --noplots flag to suppress figures and images logging by @AyushExel in https://github.com/ultralytics/yolov5/pull/7534
    • Improve availability of YOLOv5 in Russia by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7545
    • Update restapi.py by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7309
    • Restrict TRT autoinstall to Linux-only by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7549
    • PyTorch Hub _verbose=False fix2 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7550
    • Enable results.print() when _verbose=False by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7558
    • Add print(results) override for PyTorch Hub results by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7559
    • TensorRT PyTorch Hub inference fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7560
    • Add PyTorch-only benchmark arg by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7564
    • Fix from yolov5 import utils statement by @Jack24658735 in https://github.com/ultralytics/yolov5/pull/7578
    • Remove tqdm.auto by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7599
    • Add --half support for OpenVINO exports by @djmmoss in https://github.com/ultralytics/yolov5/pull/7615
    • increment_path() robustness improvements by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7628
    • Reduce opencv-python>=4.1.1 for Jetson Nano by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7645
    • Bump scipy>=1.5 to meet numpy constraints by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7646
    • Update plot.py by @sylvanding in https://github.com/ultralytics/yolov5/pull/7654
    • Bump github/codeql-action from 1 to 2 by @dependabot in https://github.com/ultralytics/yolov5/pull/7665
    • Disallow --dynamic when --half is passed by @dmatos2012 in https://github.com/ultralytics/yolov5/pull/7669
    • Update Dockerfile-cpu to force python3.9 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7675
    • Pin Docker-cpu FROM ubuntu:20.04 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7677
    • FROM nvcr.io/nvidia/pytorch:22.04-py3 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7680
    • Update README.md by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7686
    • Update tutorial.ipynb by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7715
    • Update on_train_end callback by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7716
    • Report fused model summary by default by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7722
    • Ability to download older assets by @CristiFati in https://github.com/ultralytics/yolov5/pull/7767
    • Pin downloads to release version by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7790
    • Implement DDP static_graph=True by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6940
    • Add smoothing to curve plots and max F1 index by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7798
    • Add Dockerfile-M1 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7720
    • Add random interpolation method augmentation by @developer0hye in https://github.com/ultralytics/yolov5/pull/6826
    • Rename utils/datasets.py -> utils/dataloaders.py by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7799
    • Add @threaded decorator by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7813
    • Add Python version output by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7814
    • Refactor collections and fstrings by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7821
    • Refactor modules by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7823
    • YOLOv5 OpenVINO PyTorch Hub inference fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7826
    • New TensorFlow TFDWConv() module by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7824
    • Bump cirrus-actions/rebase from 1.6 to 1.7 by @dependabot in https://github.com/ultralytics/yolov5/pull/7831
    • New TensorFlow TFCrossConv() module by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7827
    • Fix TFDWConv() c1 == c2 check by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7842
    • Replace openvino-dev with OpenVINO Runtime inference by @GabrielDornelles in https://github.com/ultralytics/yolov5/pull/7843
    • TFDWConv() depthwise_initializer fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7845
    • Update Dockerfile --no-install-recommends by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7846
    • Update CI CPU badge by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7855
    • Create docker.yml by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7856
    • Update Dockerfile-cpu install libpython3.8-dev by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7857
    • Add TFDWConv() depth_multiplier arg by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7858
    • Update Dockerfile-arm64 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7860
    • Invert Docker Image publishing order by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7877
    • Removed shell=True from subprocess commands that require user inputs by @JWLee89 in https://github.com/ultralytics/yolov5/pull/7875
    • Added Windows cmd to count GPU devices by @xylieong in https://github.com/ultralytics/yolov5/pull/7891
    • Bug fix mAP0.5-0.95 by @lebedevdes in https://github.com/ultralytics/yolov5/pull/6787
    • cv2.resize interpolation fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7903
    • Add DWConvTranspose2d() module by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7881
    • Add check_yaml() to benchmarks.py by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7916
    • Add --keras argument for TF exports by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7921
    • Add PyTorch AMP check by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7917
    • Code refactor by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7923
    • AMP check image download backup by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7936
    • Fix AMP check tolerance by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7937
    • Windows check_file() fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7938
    • Add OpenVINO metadata to export by @xylieong in https://github.com/ultralytics/yolov5/pull/7947
    • OpenVINO metadata fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7952
    • OpenVINO metadata fix2 by @xylieong in https://github.com/ultralytics/yolov5/pull/7954
    • YOLOv5 Apple Metal Performance Shader (MPS) support by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7878
    • Increase NMS time limit to 50 ms/img by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7956
    • Increase NMS fixed time limit 300ms + 30ms/img by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7957
    • AMP check improvements backup YOLOv5n pretrained by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7959
    • Update greetings.yml by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7965
    • Update requirements.txt with Usage example by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7966
    • Remove formats variable to avoid pd conflict by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7993
    • check_requirements() Windows fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7997
    • Add psutil and ipython to requirements.txt by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7998
    • cURL download double quotes by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7999
    • Update and add benchmarks to ci-testing.yml by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/7996
    • Add warning emoji ⚠️ on --conf > 0.001 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8005
    • Update CI benchmarks to ONNX autoinstall by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8008
    • Pin CI protobuf==3.20.1 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8015
    • check_requirements() "" Windows double quote by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8016
    • Add requirements.txt protobuf<=3.20.1 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8017
    • Add best.pt PyTorch Hub inference to CI by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8024
    • Add Dockerfile descriptions by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8031
    • Simplify and fix --save-period epoch 0 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8042
    • .detach() on bias init by @tcmyxc in https://github.com/ultralytics/yolov5/pull/8044
    • attempt_load() deserialize fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8051
    • Fix FP32 TensorRT model export by @SahilChachra in https://github.com/ultralytics/yolov5/pull/8046
    • Make Docker actions conditional on ultralytics/yolov5 repo by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8060
    • Update stale.yml to 300 ops per run by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8061
    • Fix torch long to float tensor on HUB macOS by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8067
    • Improved dataset error introspection by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8091
    • experimental.py Apple MPS device fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8121
    • [pre-commit.ci] pre-commit suggestions by @pre-commit-ci in https://github.com/ultralytics/yolov5/pull/8119
    • fix(utils): missing edge when resample segments by @HRan2004 in https://github.com/ultralytics/yolov5/pull/8092
    • AutoBatch checks against failed solutions by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8159
    • FROM nvcr.io/nvidia/pytorch:22.05-py3 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8162
    • Docker GPU pip install opencv-python<4.6.0.66 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8164
    • Improved dataset_stats() YAML checks by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8125
    • Bump actions/setup-python from 3 to 4 by @dependabot in https://github.com/ultralytics/yolov5/pull/8186
    • Reject webcam inference on Colab/Kaggle by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8209
    • Remove streaming source sleep period by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8243
    • Prefer MPS over CPU if available by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8210
    • HUB dataset_stats() error reporting by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8192
    • process_batch() as numpy arrays by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8254
    • Created using Colaboratory by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8255
    • logging.ERROR on RANK not in (0, 1) by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8284
    • device_name="MYRIAD" for Intel NCS2 comment by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8327
    • Allow preview resize in detect.py by @RyanHir in https://github.com/ultralytics/yolov5/pull/8318
    • Create README_cn.md by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8344
    • Allow detect.py to use video size for initial window size by @NicholasZolton in https://github.com/ultralytics/yolov5/pull/8330
    • Revamp Chinese docs by @zhiqwang in https://github.com/ultralytics/yolov5/pull/8350
    • Fix bias warmup LR init by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8356
    • Add File Size (MB) column to benchmarks by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8359
    • Update protobuf requirement from <=3.20.1 to <4.21.3 by @dependabot in https://github.com/ultralytics/yolov5/pull/8346
    • Fix ONNX --dynamic export on GPU by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8378
    • Update tutorial.ipynb by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8380
    • Implementation of Early Stopping for DDP training by @giacomoguiduzzi in https://github.com/ultralytics/yolov5/pull/8345
    • Improve --local_rank arg comment by @pourmand1376 in https://github.com/ultralytics/yolov5/pull/8409
    • Update cache comments by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8414
    • TRT --half fix autocast images to FP16 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8435
    • Expose OpenVINO batch_size similarly to TensorRT by @democat3457 in https://github.com/ultralytics/yolov5/pull/8437
    • Do not prefer Apple MPS by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8446
    • Update stale.yml by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8465
    • [pre-commit.ci] pre-commit suggestions by @pre-commit-ci in https://github.com/ultralytics/yolov5/pull/8470
    • Exclude torch==1.12.0, torchvision==0.13.0 (Fix #8395) by @mjun0812 in https://github.com/ultralytics/yolov5/pull/8497
    • Update tutorial.ipynb by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8507
    • Training reproducibility improvements by @AyushExel in https://github.com/ultralytics/yolov5/pull/8213
    • Revert "Expose OpenVINO batch_size similarly to TensorRT" by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8510
    • Avoid FP64 ops for MPS support in train.py by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8511
    • Fix ap calculation bug #8464 by @UnglvKitDe in https://github.com/ultralytics/yolov5/pull/8484
    • Add --hard-fail argument to benchmarks for CI errors by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8513
    • Simplify benchmarks.py assertions by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8515
    • Properly expose batch_size from OpenVINO similarly to TensorRT by @democat3457 in https://github.com/ultralytics/yolov5/pull/8514
    • Add --half arguments to export.py Usage examples by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8516
    • XML export --half fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8522
    • Fix LoadImages() with dataset YAML lists by @democat3457 in https://github.com/ultralytics/yolov5/pull/8517
    • val.py assert ncm == nc fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8545
    • CIoU protected divides by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8546
    • Update metrics.py with IoU protected divides by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8550
    • Add TensorRT dependencies by @Zengyf-CVer in https://github.com/ultralytics/yolov5/pull/8553
    • Add thop>=0.1.0 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8558
    • Raise error on suffix-less model path by @democat3457 in https://github.com/ultralytics/yolov5/pull/8561
    • Assert --optimize not used with cuda device by @democat3457 in https://github.com/ultralytics/yolov5/pull/8569
    • Update requirements.txt comment spacing by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8562
    • Explicitly set weight_decay value by @developer0hye in https://github.com/ultralytics/yolov5/pull/8592
    • Update scipy>=1.7.3 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8595
    • Update tqdm>=4.64.0 and thop>=0.1.1 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8596
    • Add pip install wheel to avoid legacy setup.py install by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8597
    • Link fuse() to AutoShape() for Hub models by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8599
    • FROM nvcr.io/nvidia/pytorch:22.06-py3 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8600
    • Refactor optimizer initialization by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8607
    • assert torch!=1.12.0 for DDP training by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8621
    • Fix OMP_NUM_THREADS=1 for macOS by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8624
    • Upgrade onnxsim to v0.4.1 by @daquexian in https://github.com/ultralytics/yolov5/pull/8632
    • Check TensorBoard logger before adding graph by @JarnoRFB in https://github.com/ultralytics/yolov5/pull/8664
    • Use contextlib's suppress method to silence an error by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8668
    • Update hubconf.py to reset LOGGER.level after load by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8674
    • Update warning emojis by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8678
    • Update hubconf.py to reset logging level to INFO by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8680
    • Add generator and worker seed by @UnglvKitDe in https://github.com/ultralytics/yolov5/pull/8602
    • Set torch.cuda.manual_seed_all() for DDP by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8688
    • Move .dockerignore to root by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8690
    • Faster crop saving by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8696
    • Remove else: from load_image() by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8692
    • Avoid cv2 window init code on Windows by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8712
    • Update dataloaders.py by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8714
    • New HUBDatasetStats() class by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8716
    • Fix BGR->RGB Bug in albumentations #8641 by @UnglvKitDe in https://github.com/ultralytics/yolov5/pull/8695
    • coremltools>=5.2 for CoreML export by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8725
    • Revert "Fix BGR->RGB Bug in albumentations #8641" by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8727
    • fix: broken is_docker check by @maxstrobel in https://github.com/ultralytics/yolov5/pull/8711
    • Revert protobuf<=3.20.1 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8742
    • Dynamic batch size support for TensorRT by @democat3457 in https://github.com/ultralytics/yolov5/pull/8526
    • Fix confusion matrix update when no predictions are made by @jbutle55 in https://github.com/ultralytics/yolov5/pull/8748
    • Add val.py no label warning by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8782
    • Fix detect.py --update list bug by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8783
    • ci-testing.yml Windows-friendly ENV variables by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8794
    • Add hubconf.py argparser by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8799
    • Print hubconf.py args by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8800
    • Update Colab Notebook CI by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8798
    • Deprecate torch 1.6.0 compat _non_persistent_buffers_set by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8797
    • Detect.inplace=False for multithread-safe inference by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8801
    • Update train.py for val.run(half=amp) by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8804
    • Fix val.py 'no labels found bug' by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8806
    • Update requirements.txt with tf-cpu and tf-aarch64 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8807
    • FROM nvcr.io/nvidia/pytorch:22.07-py3 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8808
    • Update ci-testing.yml streamlined tests by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8809
    • Check git status on upstream ultralytics or origin dynamically by @pourmand1376 in https://github.com/ultralytics/yolov5/pull/8694
    • Fix Colab-update pre-commit EOF bug by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8810
    • Update .pre-commit-config.yaml by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8811
    • Update .pre-commit-config.yaml by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8812
    • Remove assert not is_docker() from GitHub checks by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8813
    • Add .git to .dockerignore by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8815
    • Add tensor hooks and 10.0 gradient clipping by @UnglvKitDe in https://github.com/ultralytics/yolov5/pull/8598
    • Update README.md with contributors.png by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8820
    • Remove hook torch.nan_to_num(x) by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8826
    • RUN git clone instead of COPY to /usr/src/app by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8827
    • [pre-commit.ci] pre-commit suggestions by @pre-commit-ci in https://github.com/ultralytics/yolov5/pull/8828
    • Fix missing attr model.model when loading custom yolov model by @jacksonargo in https://github.com/ultralytics/yolov5/pull/8830
    • New smart_resume() by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8838
    • Self-contained checkpoint --resume by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8839
    • Add check_file(data) i.e. --data coco128.yaml by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8851
    • export.py replace check_file -> check_yaml by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8852
    • Update dataloaders.py remove float64 shapes by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8865
    • Fix TensorRT --dynamic excess outputs bug by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8869
    • Single-line TRT dynamic assertion by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8871
    • HUBDatasetStats() preview images to 50 quality by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8880
    • --resume training from URL weights by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8882
    • --resume training from URL weights fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8884
    • Update CI to default Python 3.10 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8883
    • ClearML experiment tracking integration by @thepycoder in https://github.com/ultralytics/yolov5/pull/8620
    • smart_optimizer() improved reporting by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8887
    • emoji-safe default logging by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8888
    • Fix/improve social media bar by @kalenmike in https://github.com/ultralytics/yolov5/pull/8893
    • Update README.md Environments icons by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8895
    • Fix anchor incorrectly initialized by @YellowAndGreen in https://github.com/ultralytics/yolov5/pull/8891
    • Edge TPU add --search_delegate fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8902
    • Capitalize YouTube by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8903
    • About "os.R_OK" in general.py by @19190205wzy in https://github.com/ultralytics/yolov5/pull/8909
    • Scope torchvision.utils.draw_bounding_boxes import by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8915
    • Add torch==1.7.0 to CI tests by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8916
    • Direct download table links by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8917
    • Fix --source 'path/*.jpg' glob example by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8927
    • Deci.ai optimization and deployment Integration by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8928
    • Allow train to use zipped content by @kalenmike in https://github.com/ultralytics/yolov5/pull/8940
    • Remove DDP destroy_process_group() on train end by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8935
    • GFLOPs computation fix for classification models by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8954
    • New smart_inference_mode() conditional decorator by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8957
    • Fix windows LOGGER with emojis output by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8958
    • Add bash script arguments by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8962
    • Add .tar support for datasets by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8963
    • Allow multiple-model serving from Flask REST API by @mpromonet in https://github.com/ultralytics/yolov5/pull/8973
    • Colab and Kaggle loggers removeHandler by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/8985
    • Fix bug with resume by @savchenkoyana in https://github.com/ultralytics/yolov5/pull/8912
    😃 New Contributors (41)
    • @lcombaldieu made their first contribution in https://github.com/ultralytics/yolov5/pull/6780
    • @vnekat made their first contribution in https://github.com/ultralytics/yolov5/pull/6865
    • @DavidBaldsiefen made their first contribution in https://github.com/ultralytics/yolov5/pull/6798
    • @paradigmn made their first contribution in https://github.com/ultralytics/yolov5/pull/6808
    • @maxstrobel made their first contribution in https://github.com/ultralytics/yolov5/pull/7010
    • @LaserBorg made their first contribution in https://github.com/ultralytics/yolov5/pull/7008
    • @yeshanliu made their first contribution in https://github.com/ultralytics/yolov5/pull/6979
    • @CCRcmcpe made their first contribution in https://github.com/ultralytics/yolov5/pull/7139
    • @leeflix made their first contribution in https://github.com/ultralytics/yolov5/pull/7281
    • @n1mmy made their first contribution in https://github.com/ultralytics/yolov5/pull/7317
    • @rglkt made their first contribution in https://github.com/ultralytics/yolov5/pull/7342
    • @vardanagarwal made their first contribution in https://github.com/ultralytics/yolov5/pull/7377
    • @Cedric-Perauer made their first contribution in https://github.com/ultralytics/yolov5/pull/7446
    • @HERIUN made their first contribution in https://github.com/ultralytics/yolov5/pull/7478
    • @jkocherhans made their first contribution in https://github.com/ultralytics/yolov5/pull/7505
    • @Powercube7 made their first contribution in https://github.com/ultralytics/yolov5/pull/7541
    • @Jack24658735 made their first contribution in https://github.com/ultralytics/yolov5/pull/7578
    • @djmmoss made their first contribution in https://github.com/ultralytics/yolov5/pull/7615
    • @sylvanding made their first contribution in https://github.com/ultralytics/yolov5/pull/7654
    • @dmatos2012 made their first contribution in https://github.com/ultralytics/yolov5/pull/7669
    • @GabrielDornelles made their first contribution in https://github.com/ultralytics/yolov5/pull/7843
    • @JWLee89 made their first contribution in https://github.com/ultralytics/yolov5/pull/7875
    • @xylieong made their first contribution in https://github.com/ultralytics/yolov5/pull/7891
    • @lebedevdes made their first contribution in https://github.com/ultralytics/yolov5/pull/6787
    • @tcmyxc made their first contribution in https://github.com/ultralytics/yolov5/pull/8044
    • @SahilChachra made their first contribution in https://github.com/ultralytics/yolov5/pull/8046
    • @HRan2004 made their first contribution in https://github.com/ultralytics/yolov5/pull/8092
    • @RyanHir made their first contribution in https://github.com/ultralytics/yolov5/pull/8318
    • @NicholasZolton made their first contribution in https://github.com/ultralytics/yolov5/pull/8330
    • @giacomoguiduzzi made their first contribution in https://github.com/ultralytics/yolov5/pull/8345
    • @pourmand1376 made their first contribution in https://github.com/ultralytics/yolov5/pull/8409
    • @democat3457 made their first contribution in https://github.com/ultralytics/yolov5/pull/8437
    • @mjun0812 made their first contribution in https://github.com/ultralytics/yolov5/pull/8497
    • @UnglvKitDe made their first contribution in https://github.com/ultralytics/yolov5/pull/8484
    • @daquexian made their first contribution in https://github.com/ultralytics/yolov5/pull/8632
    • @JarnoRFB made their first contribution in https://github.com/ultralytics/yolov5/pull/8664
    • @jbutle55 made their first contribution in https://github.com/ultralytics/yolov5/pull/8748
    • @jacksonargo made their first contribution in https://github.com/ultralytics/yolov5/pull/8830
    • @thepycoder made their first contribution in https://github.com/ultralytics/yolov5/pull/8620
    • @YellowAndGreen made their first contribution in https://github.com/ultralytics/yolov5/pull/8891
    • @19190205wzy made their first contribution in https://github.com/ultralytics/yolov5/pull/8909
    • @mpromonet made their first contribution in https://github.com/ultralytics/yolov5/pull/8973
    • @savchenkoyana made their first contribution in https://github.com/ultralytics/yolov5/pull/8912
    Source code(tar.gz)
    Source code(zip)
    efficientnet_b0.pt(10.34 MB)
    efficientnet_b1.pt(15.22 MB)
    efficientnet_b2.pt(17.74 MB)
    efficientnet_b3.pt(23.76 MB)
    exp10-m-base.pt(63.21 MB)
    exp11m-5056.pt(63.21 MB)
    resnet101.pt(85.42 MB)
    resnet18.pt(22.37 MB)
    resnet34.pt(41.70 MB)
    resnet50.pt(48.98 MB)
    yolov5l-cls.pt(50.87 MB)
    yolov5l-seg.pt(91.89 MB)
    yolov5l.pt(89.28 MB)
    yolov5l6.pt(147.36 MB)
    yolov5m-cls.pt(24.88 MB)
    yolov5m-seg.pt(42.36 MB)
    yolov5m.pt(40.82 MB)
    yolov5m6.pt(68.95 MB)
    yolov5n-cls.pt(4.86 MB)
    yolov5n-seg.pt(4.11 MB)
    yolov5n.pt(3.87 MB)
    yolov5n6.pt(6.85 MB)
    yolov5s-cls.pt(10.52 MB)
    yolov5s-seg.pt(14.87 MB)
    yolov5s.pt(14.12 MB)
    yolov5s6.pt(24.77 MB)
    yolov5x-cls.pt(92.03 MB)
    yolov5x-seg.pt(170.01 MB)
    yolov5x.pt(166.04 MB)
    yolov5x6.pt(269.62 MB)
  • v6.1(Feb 22, 2022)

    This release incorporates many new features and bug fixes (271 PRs from 48 contributors) since our last release in October 2021. It adds TensorRT, Edge TPU and OpenVINO support, and provides retrained models at --batch-size 128 with new default one-cycle linear LR scheduler. YOLOv5 now officially supports 11 different formats, not just for export but for inference (both detect.py and PyTorch Hub), and validation to profile mAP and speed results after export.

    Format | export.py --include | Model :--- | --: | :-- PyTorch | - | yolov5s.pt TorchScript | torchscript | yolov5s.torchscript ONNX | onnx | yolov5s.onnx OpenVINO | openvino | yolov5s_openvino_model/ TensorRT | engine | yolov5s.engine CoreML | coreml | yolov5s.mlmodel TensorFlow SavedModel | saved_model | yolov5s_saved_model/ TensorFlow GraphDef | pb | yolov5s.pb TensorFlow Lite | tflite | yolov5s.tflite TensorFlow Edge TPU | edgetpu | yolov5s_edgetpu.tflite TensorFlow.js | tfjs | yolov5s_web_model/

    Usage examples (ONNX shown):

    Export:          python export.py --weights yolov5s.pt --include onnx
    Detect:          python detect.py --weights yolov5s.onnx
    PyTorch Hub:     model = torch.hub.load('ultralytics/yolov5', 'custom', 'yolov5s.onnx')
    Validate:        python val.py --weights yolov5s.onnx
    Visualize:       https://netron.app
    

    Important Updates

    • TensorRT support: TensorFlow, Keras, TFLite, TF.js model export now fully integrated using python export.py --include saved_model pb tflite tfjs (https://github.com/ultralytics/yolov5/pull/5699 by @imyhxy)
    • Tensorflow Edge TPU support ⭐ NEW: New smaller YOLOv5n (1.9M params) model below YOLOv5s (7.5M params), exports to 2.1 MB INT8 size, ideal for ultralight mobile solutions. (https://github.com/ultralytics/yolov5/pull/3630 by @zldrobit)
    • OpenVINO support: YOLOv5 ONNX models are now compatible with both OpenCV DNN and ONNX Runtime (https://github.com/ultralytics/yolov5/pull/6057 by @glenn-jocher).
    • Export Benchmarks: Benchmark (mAP and speed) all YOLOv5 export formats with python utils/benchmarks.py --weights yolov5s.pt. Currently operates on CPU, future updates will implement GPU support. (https://github.com/ultralytics/yolov5/pull/6613 by @glenn-jocher).
    • Architecture: no changes
    • Hyperparameters: minor change
      • hyp-scratch-large.yaml lrf reduced from 0.2 to 0.1 (https://github.com/ultralytics/yolov5/pull/6525 by @glenn-jocher).
    • Training: Default Learning Rate (LR) scheduler updated
      • One-cycle with cosine replace with one-cycle linear for improved results (https://github.com/ultralytics/yolov5/pull/6729 by @glenn-jocher).

    New Results

    All model trainings logged to https://wandb.ai/glenn-jocher/YOLOv5_v61_official

    YOLOv5-P5 640 Figure (click to expand)

    Figure Notes (click to expand)
    • COCO AP val denotes [email protected]:0.95 metric measured on the 5000-image COCO val2017 dataset over various inference sizes from 256 to 1536.
    • GPU Speed measures average inference time per image on COCO val2017 dataset using a AWS p3.2xlarge V100 instance at batch-size 32.
    • EfficientDet data from google/automl at batch size 8.
    • Reproduce by python val.py --task study --data coco.yaml --iou 0.7 --weights yolov5n6.pt yolov5s6.pt yolov5m6.pt yolov5l6.pt yolov5x6.pt

    Example YOLOv5l before and after metrics:

    |YOLOv5l
    Large|size
    (pixels) |mAPval
    0.5:0.95 |mAPval
    0.5 |Speed
    CPU b1
    (ms) |Speed
    V100 b1
    (ms) |Speed
    V100 b32
    (ms) |params
    (M) |FLOPs
    @640 (B) --- |--- |--- |--- |--- |--- |--- |--- |--- v5.0 |640 |48.2 |66.9 |457.9 |11.6 |2.8 |47.0 |115.4 v6.0 (previous) |640 |48.8 |67.2 |424.5 |10.9|2.7 |46.5 |109.1 v6.1 (this release) |640 |49.0 |67.3 |430.0 |10.1|2.7 |46.5 |109.1

    Pretrained Checkpoints

    |Model |size
    (pixels) |mAPval
    0.5:0.95 |mAPval
    0.5 |Speed
    CPU b1
    (ms) |Speed
    V100 b1
    (ms) |Speed
    V100 b32
    (ms) |params
    (M) |FLOPs
    @640 (B) |--- |--- |--- |--- |--- |--- |--- |--- |--- |YOLOv5n |640 |28.0 |45.7 |45 |6.3|0.6|1.9|4.5 |YOLOv5s |640 |37.4 |56.8 |98 |6.4 |0.9 |7.2 |16.5 |YOLOv5m |640 |45.4 |64.1 |224 |8.2 |1.7 |21.2 |49.0 |YOLOv5l |640 |49.0 |67.3 |430 |10.1 |2.7 |46.5 |109.1 |YOLOv5x |640 |50.7 |68.9 |766 |12.1 |4.8 |86.7 |205.7 | | | | | | | | | |YOLOv5n6 |1280 |36.0 |54.4 |153 |8.1 |2.1 |3.2 |4.6 |YOLOv5s6 |1280 |44.8 |63.7 |385 |8.2 |3.6 |12.6 |16.8 |YOLOv5m6 |1280 |51.3 |69.3 |887 |11.1 |6.8 |35.7 |50.0 |YOLOv5l6 |1280 |53.7 |71.3 |1784 |15.8 |10.5 |76.8 |111.4 |YOLOv5x6
    + TTA|1280
    1536 |55.0
    55.8 |72.7
    72.7 |3136
    - |26.2
    - |19.4
    - |140.7
    - |209.8
    -

    Table Notes (click to expand)
    • All checkpoints are trained to 300 epochs with default settings. Nano and Small models use hyp.scratch-low.yaml hyps, all others use hyp.scratch-high.yaml.
    • mAPval values are for single-model single-scale on COCO val2017 dataset.
      Reproduce by python val.py --data coco.yaml --img 640 --conf 0.001 --iou 0.65
    • Speed averaged over COCO val images using a AWS p3.2xlarge instance. NMS times (~1 ms/img) not included.
      Reproduce by python val.py --data coco.yaml --img 640 --task speed --batch 1
    • TTA Test Time Augmentation includes reflection and scale augmentations.
      Reproduce by python val.py --data coco.yaml --img 1536 --iou 0.7 --augment

    Changelog

    Changes between previous release and this release: https://github.com/ultralytics/yolov5/compare/v6.0...v6.1 Changes since this release: https://github.com/ultralytics/yolov5/compare/v6.1...HEAD

    New Features and Bug Fixes (271)
    • fix tf conversion in new v6 models by @YoniChechik in https://github.com/ultralytics/yolov5/pull/5153
    • Use YOLOv5n for CI testing by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5154
    • Update stale.yml by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5156
    • Check 'onnxruntime-gpu' if torch.has_cuda by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5087
    • Add class filtering to LoadImagesAndLabels() dataloader by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5172
    • W&B: fix dpp with wandb disabled by @AyushExel in https://github.com/ultralytics/yolov5/pull/5163
    • Update autodownload fallbacks to v6.0 assets by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5177
    • W&B: DDP fix by @AyushExel in https://github.com/ultralytics/yolov5/pull/5176
    • Adjust legend labels for classes without instances by @NauchtanRobotics in https://github.com/ultralytics/yolov5/pull/5174
    • Improved check_suffix() robustness to '' and "" by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5192
    • Highlight contributors in README by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5173
    • Add hyp.scratch-med.yaml by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5196
    • Update Objects365.yaml to include the official validation set by @farleylai in https://github.com/ultralytics/yolov5/pull/5194
    • Autofix duplicate label handling by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5210
    • Update Objects365.yaml val count by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5212
    • Update/inplace ops by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5233
    • Add on_fit_epoch_end callback by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5232
    • Update rebase.yml by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5245
    • Add dependabot for GH actions by @zhiqwang in https://github.com/ultralytics/yolov5/pull/5250
    • Bump cirrus-actions/rebase from 1.4 to 1.5 by @dependabot in https://github.com/ultralytics/yolov5/pull/5251
    • Bump actions/cache from 1 to 2.1.6 by @dependabot in https://github.com/ultralytics/yolov5/pull/5252
    • Bump actions/stale from 3 to 4 by @dependabot in https://github.com/ultralytics/yolov5/pull/5253
    • Update rebase.yml with workflows permissions by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5255
    • autosplit: take image files with uppercase extensions into account by @jdfr in https://github.com/ultralytics/yolov5/pull/5269
    • take EXIF orientation tags into account when fixing corrupt images by @jdfr in https://github.com/ultralytics/yolov5/pull/5270
    • More informative EarlyStopping() message by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5303
    • Uncomment OpenCV 4.5.4 requirement in detect.py by @SamFC10 in https://github.com/ultralytics/yolov5/pull/5305
    • Weights download script minor improvements by @CristiFati in https://github.com/ultralytics/yolov5/pull/5213
    • Small fixes to docstrings by @zhiqwang in https://github.com/ultralytics/yolov5/pull/5313
    • W&B: Media panel fix by @AyushExel in https://github.com/ultralytics/yolov5/pull/5317
    • Add autobatch feature for best batch-size estimation by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5092
    • Update AutoShape.forward() model.classes example by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5324
    • DDP nl fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5332
    • Add pre-commit CI action by @Borda in https://github.com/ultralytics/yolov5/pull/4982
    • W&B: Fix sweep by @AyushExel in https://github.com/ultralytics/yolov5/pull/5402
    • Update GitHub issues templates by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5404
    • Fix MixConv2d() remove shortcut + apply depthwise by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5410
    • Meshgrid indexing='ij' for PyTorch 1.10 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5309
    • Update get_loggers() by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4854
    • Update README.md by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5438
    • Fixed a small typo in CONTRIBUTING.md by @pranathlcp in https://github.com/ultralytics/yolov5/pull/5445
    • Update check_git_status() to run under ROOT working directory by @MrinalJain17 in https://github.com/ultralytics/yolov5/pull/5441
    • Fix tf.py LoadImages() dataloader return values by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5455
    • Remove check_requirements(('tensorflow>=2.4.1',)) by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5476
    • Improve GPU name by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5478
    • Update torch_utils.py import LOGGER by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5483
    • Add tf.py verification printout by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5484
    • Keras CI fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5486
    • Delete code-format.yml by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5487
    • Fix float zeros format by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5491
    • Handle edgetpu model inference by @Namburger in https://github.com/ultralytics/yolov5/pull/5372
    • precommit: isort by @Borda in https://github.com/ultralytics/yolov5/pull/5493
    • Fix increment_path() with multiple-suffix filenames by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5518
    • Write date in checkpoint file by @developer0hye in https://github.com/ultralytics/yolov5/pull/5514
    • Update plots.py feature_visualization path issues by @ys31jp in https://github.com/ultralytics/yolov5/pull/5519
    • Update cls bias init by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5520
    • Common is_coco logic betwen train.py and val.py by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5521
    • Fix increment_path() explicit file vs dir handling by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5523
    • Fix detect.py URL inference by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5525
    • Update check_file() avoid repeat URL downloads by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5526
    • Update export.py by @nanmi in https://github.com/ultralytics/yolov5/pull/5471
    • Update train.py by @wonbeomjang in https://github.com/ultralytics/yolov5/pull/5451
    • Suppress ONNX export trace warning by @deepsworld in https://github.com/ultralytics/yolov5/pull/5437
    • Update autobatch.py by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5536
    • Update autobatch.py by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5538
    • Update Issue Templates with 💡 ProTip! by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5539
    • Update models/hub/*.yaml files for v6.0n release by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5540
    • intersect_dicts() in hubconf.py fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5542
    • Fix for *.yaml emojis on load by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5543
    • Fix save_one_box() by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5545
    • Inside Ultralytics video https://youtu.be/Zgi9g1ksQHc by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5546
    • Add --conf-thres >> 0.001 warning by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5567
    • LOGGER consolidation by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5569
    • New DetectMultiBackend() class by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5549
    • FROM nvcr.io/nvidia/pytorch:21.10-py3 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5592
    • Add notebook_init() to utils/init.py by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5488
    • Fix check_requirements() resource warning allocation open file by @ayman-saleh in https://github.com/ultralytics/yolov5/pull/5602
    • Update train, val tqdm to fixed width by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5367
    • Update val.py speed and study tasks by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5608
    • np.unique() sort fix for segments by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5609
    • Improve plots.py robustness by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5616
    • HUB dataset previews to JPEG by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5627
    • DDP WORLD_SIZE-safe dataloader workers by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5631
    • Default DataLoader shuffle=True for training by @werner-duvaud in https://github.com/ultralytics/yolov5/pull/5623
    • AutoAnchor and AutoBatch LOGGER by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5635
    • W&B refactor, handle exceptions, CI example by @AyushExel in https://github.com/ultralytics/yolov5/pull/5618
    • Replace 2 transpose() with 1 permute in TransformerBlock()` by @dingyiwei in https://github.com/ultralytics/yolov5/pull/5645
    • Bump pip from 19.2 to 21.1 in /utils/google_app_engine by @dependabot in https://github.com/ultralytics/yolov5/pull/5661
    • Update ci-testing.yml to Python 3.9 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5660
    • TFDetect dynamic anchor count assignment fix by @nrupatunga in https://github.com/ultralytics/yolov5/pull/5668
    • Update train.py comment to 'Model attributes' by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5670
    • Update export.py docstring by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5689
    • NUM_THREADS leave at least 1 CPU free by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5706
    • Prune unused imports by @Borda in https://github.com/ultralytics/yolov5/pull/5711
    • Explicitly compute TP, FP in val.py by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5727
    • Remove .autoshape() method by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5694
    • SECURITY.md by @IL2006 in https://github.com/ultralytics/yolov5/pull/5695
    • Save *.npy features on detect.py --visualize by @Zengyf-CVer in https://github.com/ultralytics/yolov5/pull/5701
    • Export, detect and validation with TensorRT engine file by @imyhxy in https://github.com/ultralytics/yolov5/pull/5699
    • Do not save hyp.yaml and opt.yaml on evolve by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5775
    • fix the path error in export.py by @miknyko in https://github.com/ultralytics/yolov5/pull/5778
    • TorchScript torch==1.7.0 Path support by @miknyko in https://github.com/ultralytics/yolov5/pull/5781
    • W&B: refactor W&B tables by @AyushExel in https://github.com/ultralytics/yolov5/pull/5737
    • Scope TF imports in DetectMultiBackend() by @phodgers in https://github.com/ultralytics/yolov5/pull/5792
    • Remove NCOLS from tqdm by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5804
    • Refactor new model.warmup() method by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5810
    • GCP VM from Image example by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5814
    • Bump actions/cache from 2.1.6 to 2.1.7 by @dependabot in https://github.com/ultralytics/yolov5/pull/5816
    • Update dataset_stats() to cv2.INTER_AREA by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5821
    • Fix TensorRT potential unordered binding addresses by @imyhxy in https://github.com/ultralytics/yolov5/pull/5826
    • Handle non-TTY wandb.errors.UsageError by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5839
    • Avoid inplace modifyingimgs in LoadStreams by @passerbythesun in https://github.com/ultralytics/yolov5/pull/5850
    • Update LoadImages ret_val=False handling by @gmt710 in https://github.com/ultralytics/yolov5/pull/5852
    • Update val.py by @pradeep-vishnu in https://github.com/ultralytics/yolov5/pull/5838
    • Update TorchScript suffix to *.torchscript by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5856
    • Add --workers 8 argument to val.py by @iumyx2612 in https://github.com/ultralytics/yolov5/pull/5857
    • Update plot_lr_scheduler() by @daikankan in https://github.com/ultralytics/yolov5/pull/5864
    • Update nl after cutout() by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5873
    • AutoShape() models as DetectMultiBackend() instances by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5845
    • Single-command multiple-model export by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5882
    • Detections().tolist() explicit argument fix by @lizeng614 in https://github.com/ultralytics/yolov5/pull/5907
    • W&B: Fix bug in upload dataset module by @AyushExel in https://github.com/ultralytics/yolov5/pull/5908
    • Add *.engine (TensorRT extensions) to .gitignore by @greg2451 in https://github.com/ultralytics/yolov5/pull/5911
    • Add ONNX inference providers by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5918
    • Add hardware checks to notebook_init() by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5919
    • Revert "Update plot_lr_scheduler()" by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5920
    • Absolute '/content/sample_data' by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5922
    • Default PyTorch Hub to autocast(False) by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5926
    • Fix ONNX opset inconsistency with parseargs and run args by @d57montes in https://github.com/ultralytics/yolov5/pull/5937
    • Make select_device() robust to batch_size=-1 by @youyuxiansen in https://github.com/ultralytics/yolov5/pull/5940
    • fix .gitignore not tracking existing folders by @pasmai in https://github.com/ultralytics/yolov5/pull/5946
    • Update strip_optimizer() by @iumyx2612 in https://github.com/ultralytics/yolov5/pull/5949
    • Add nms and agnostic nms to export.py by @d57montes in https://github.com/ultralytics/yolov5/pull/5938
    • Refactor NUM_THREADS by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5954
    • Fix Detections class tolist() method by @yonomitt in https://github.com/ultralytics/yolov5/pull/5945
    • Fix imgsz bug by @d57montes in https://github.com/ultralytics/yolov5/pull/5948
    • pretrained=False fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5966
    • make parameter ignore epochs by @jinmc in https://github.com/ultralytics/yolov5/pull/5972
    • YOLOv5s6 params and FLOPs fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5977
    • Update callbacks.py with __init__() by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5979
    • Increase ar_thr from 20 to 100 for better detection on slender (high aspect ratio) objects by @MrinalJain17 in https://github.com/ultralytics/yolov5/pull/5556
    • Allow --weights URL by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5991
    • Recommend jar xf file.zip for zips by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5993
    • *.torchscript inference self.jit fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6007
    • Check TensorRT>=8.0.0 version by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6021
    • Multi-layer capable --freeze argument by @youyuxiansen in https://github.com/ultralytics/yolov5/pull/6019
    • train -> val comment fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6024
    • Add dataset source citations by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6032
    • Kaggle LOGGER fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6041
    • Simplify set_logging() indexing by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6042
    • --freeze fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6044
    • OpenVINO Export by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6057
    • Reduce G/D/CIoU logic operations by @jedi007 in https://github.com/ultralytics/yolov5/pull/6074
    • Init tensor directly on device by @deepsworld in https://github.com/ultralytics/yolov5/pull/6068
    • W&B: track batch size after autobatch by @AyushExel in https://github.com/ultralytics/yolov5/pull/6039
    • W&B: Log best results after training ends by @AyushExel in https://github.com/ultralytics/yolov5/pull/6120
    • Log best results by @awsaf49 in https://github.com/ultralytics/yolov5/pull/6085
    • Refactor/reduce G/C/D/IoU if: else statements by @cmoseses in https://github.com/ultralytics/yolov5/pull/6087
    • Add EdgeTPU support by @zldrobit in https://github.com/ultralytics/yolov5/pull/3630
    • Enable AdamW optimizer by @bilzard in https://github.com/ultralytics/yolov5/pull/6152
    • Update export format docstrings by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6151
    • Update greetings.yml by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6165
    • [pre-commit.ci] pre-commit suggestions by @pre-commit-ci in https://github.com/ultralytics/yolov5/pull/6177
    • Update NMS max_wh=7680 for 8k images by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6178
    • Add OpenVINO inference by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6179
    • Ignore *_openvino_model/ dir by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6180
    • Global export format sort by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6182
    • Fix TorchScript on mobile export by @yinrong in https://github.com/ultralytics/yolov5/pull/6183
    • TensorRT 7 anchor_grid compatibility fix by @imyhxy in https://github.com/ultralytics/yolov5/pull/6185
    • Add tensorrt>=7.0.0 checks by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6193
    • Add CoreML inference by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6195
    • Fix nan-robust stream FPS by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6198
    • Edge TPU compiler comment by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6196
    • TFLite --int8 'flatbuffers==1.12' fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6216
    • TFLite --int8 'flatbuffers==1.12' fix 2 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6217
    • Add edgetpu_compiler checks by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6218
    • Attempt edgetpu-compiler autoinstall by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6223
    • Update README speed reproduction command by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6228
    • Update P2-P7 models/hub variants by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6230
    • TensorRT 7 export fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6235
    • Fix cmd string on tfjs export by @dart-bird in https://github.com/ultralytics/yolov5/pull/6243
    • Enable ONNX --half FP16 inference by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6268
    • Update export.py with Detect, Validate usages by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6280
    • Add is_kaggle() function by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6285
    • Fix device count check by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6290
    • Fixing bug multi-gpu training by @hdnh2006 in https://github.com/ultralytics/yolov5/pull/6299
    • select_device() cleanup by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6302
    • Fix train.py parameter groups desc error by @Otfot in https://github.com/ultralytics/yolov5/pull/6318
    • Remove dataset_stats() autodownload capability by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6303
    • Console corrupted -> corrupt by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6338
    • TensorRT assert im.device.type != 'cpu' on export by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6340
    • export.py return exported files/dirs by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6343
    • export.py automatic forward_export by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6352
    • Add optional VERBOSE environment variable by @johnk2hawaii in https://github.com/ultralytics/yolov5/pull/6353
    • Reuse de_parallel() rather than is_parallel() by @imyhxy in https://github.com/ultralytics/yolov5/pull/6354
    • DEVICE_COUNT instead of WORLD_SIZE to calculate nw by @sitecao in https://github.com/ultralytics/yolov5/pull/6324
    • Flush callbacks when on --evolve by @AyushExel in https://github.com/ultralytics/yolov5/pull/6374
    • FROM nvcr.io/nvidia/pytorch:21.12-py3 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6377
    • FROM nvcr.io/nvidia/pytorch:21.10-py3 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6379
    • Add albumentations to Dockerfile by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6392
    • Add stop_training=False flag to callbacks by @haimat in https://github.com/ultralytics/yolov5/pull/6365
    • Add detect.py GIF video inference by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6410
    • Update greetings.yaml email address by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6412
    • Rename logger from 'utils.logger' to 'yolov5' by @JonathanSamelson in https://github.com/ultralytics/yolov5/pull/6421
    • Prefer tflite_runtime for TFLite inference if installed by @motokimura in https://github.com/ultralytics/yolov5/pull/6406
    • Update workflows by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6427
    • Namespace VERBOSE env variable to YOLOv5_VERBOSE by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6428
    • Add *.asf video support by @toschi23 in https://github.com/ultralytics/yolov5/pull/6436
    • Revert "Remove dataset_stats() autodownload capability" by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6442
    • Fix select_device() for Multi-GPU by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6434
    • Fix2 select_device() for Multi-GPU by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6461
    • Add Product Hunt social media icon by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6464
    • Resolve dataset paths by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6489
    • Simplify TF normalized to pixels by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6494
    • Improved export.py usage examples by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6495
    • CoreML inference fix list() -> sorted() by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6496
    • Suppress torch.jit.TracerWarning on export by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6498
    • Suppress export.run() TracerWarning by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6499
    • W&B: Remember batch_size on resuming by @AyushExel in https://github.com/ultralytics/yolov5/pull/6512
    • Update hyp.scratch-high.yaml lrf: 0.1 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6525
    • TODO issues exempt from stale action by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6530
    • Update val_batch*.jpg for Chinese fonts by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6526
    • Social icons after text by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6473
    • Edge TPU compiler sudo fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6531
    • Edge TPU export 'list index out of range' fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6533
    • Edge TPU tf.lite.experimental.load_delegate fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6536
    • Fixing minor multi-streaming issues with TensoRT engine by @greg2451 in https://github.com/ultralytics/yolov5/pull/6504
    • Load checkpoint on CPU instead of on GPU by @bilzard in https://github.com/ultralytics/yolov5/pull/6516
    • flake8: code meanings by @Borda in https://github.com/ultralytics/yolov5/pull/6481
    • Fix 6 Flake8 issues by @Borda in https://github.com/ultralytics/yolov5/pull/6541
    • Edge TPU TF imports fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6542
    • Move trainloader functions to class methods by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6559
    • Improved AutoBatch DDP error message by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6568
    • Fix zero-export handling with if any(f): by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6569
    • Fix plot_labels() colored histogram bug by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6574
    • Allow custom--evolve project names by @MattVAD in https://github.com/ultralytics/yolov5/pull/6567
    • Add DATASETS_DIR global in general.py by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6578
    • return opt from train.run() by @chf4850 in https://github.com/ultralytics/yolov5/pull/6581
    • Fix YouTube dislike button bug in pafy package by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6603
    • Fix hyp_evolve.yaml indexing bug by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6604
    • Fix ROOT / data when running W&B log_dataset() by @or-toledano in https://github.com/ultralytics/yolov5/pull/6606
    • YouTube dependency fix youtube_dl==2020.12.2 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6612
    • Add YOLOv5n to Reproduce section by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6619
    • W&B: Improve resume stability by @AyushExel in https://github.com/ultralytics/yolov5/pull/6611
    • W&B: don't log media in evolve by @AyushExel in https://github.com/ultralytics/yolov5/pull/6617
    • YOLOv5 Export Benchmarks by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6613
    • Fix ConfusionMatrix scale vmin=0.0 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6638
    • Fixed wandb logger KeyError by @imyhxy in https://github.com/ultralytics/yolov5/pull/6637
    • Fix yolov3.yaml remove list by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6655
    • Validate with 2x --workers by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6658
    • Validate with 2x --workers single-GPU/CPU fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6659
    • Add --cache val option by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6663
    • Robust scipy.cluster.vq.kmeans too few points by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6668
    • Update Dockerfile torch==1.10.2+cu113 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6669
    • FROM nvcr.io/nvidia/pytorch:22.01-py3 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6670
    • FROM nvcr.io/nvidia/pytorch:21.10-py3 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6671
    • Update Dockerfile reorder installs by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6672
    • FROM nvcr.io/nvidia/pytorch:22.01-py3 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6673
    • FROM nvcr.io/nvidia/pytorch:21.10-py3 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6677
    • Fix TF exports >= 2GB by @zldrobit in https://github.com/ultralytics/yolov5/pull/6292
    • Fix --evolve --bucket gs://... by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6698
    • Fix CoreML P6 inference by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6700
    • Fix floating point in number of workers by @SamuelYvon in https://github.com/ultralytics/yolov5/pull/6701
    • Edge TPU inference fix by @RaffaeleGalliera in https://github.com/ultralytics/yolov5/pull/6686
    • Use export_formats() in export.py by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6705
    • Suppress torch AMP-CPU warnings by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6706
    • Update nw to max(nd, 1) by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6714
    • GH: add PR template by @Borda in https://github.com/ultralytics/yolov5/pull/6482
    • Switch default LR scheduler from cos to linear by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6729
    • Updated VOC hyperparameters by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/6732
    New Contributors (48)
    • @YoniChechik made their first contribution in https://github.com/ultralytics/yolov5/pull/5153
    • @farleylai made their first contribution in https://github.com/ultralytics/yolov5/pull/5194
    • @jdfr made their first contribution in https://github.com/ultralytics/yolov5/pull/5269
    • @pranathlcp made their first contribution in https://github.com/ultralytics/yolov5/pull/5445
    • @MrinalJain17 made their first contribution in https://github.com/ultralytics/yolov5/pull/5441
    • @Namburger made their first contribution in https://github.com/ultralytics/yolov5/pull/5372
    • @ys31jp made their first contribution in https://github.com/ultralytics/yolov5/pull/5519
    • @nanmi made their first contribution in https://github.com/ultralytics/yolov5/pull/5471
    • @wonbeomjang made their first contribution in https://github.com/ultralytics/yolov5/pull/5451
    • @deepsworld made their first contribution in https://github.com/ultralytics/yolov5/pull/5437
    • @ayman-saleh made their first contribution in https://github.com/ultralytics/yolov5/pull/5602
    • @werner-duvaud made their first contribution in https://github.com/ultralytics/yolov5/pull/5623
    • @nrupatunga made their first contribution in https://github.com/ultralytics/yolov5/pull/5668
    • @IL2006 made their first contribution in https://github.com/ultralytics/yolov5/pull/5695
    • @Zengyf-CVer made their first contribution in https://github.com/ultralytics/yolov5/pull/5701
    • @miknyko made their first contribution in https://github.com/ultralytics/yolov5/pull/5778
    • @phodgers made their first contribution in https://github.com/ultralytics/yolov5/pull/5792
    • @passerbythesun made their first contribution in https://github.com/ultralytics/yolov5/pull/5850
    • @gmt710 made their first contribution in https://github.com/ultralytics/yolov5/pull/5852
    • @pradeep-vishnu made their first contribution in https://github.com/ultralytics/yolov5/pull/5838
    • @iumyx2612 made their first contribution in https://github.com/ultralytics/yolov5/pull/5857
    • @daikankan made their first contribution in https://github.com/ultralytics/yolov5/pull/5864
    • @lizeng614 made their first contribution in https://github.com/ultralytics/yolov5/pull/5907
    • @greg2451 made their first contribution in https://github.com/ultralytics/yolov5/pull/5911
    • @youyuxiansen made their first contribution in https://github.com/ultralytics/yolov5/pull/5940
    • @pasmai made their first contribution in https://github.com/ultralytics/yolov5/pull/5946
    • @yonomitt made their first contribution in https://github.com/ultralytics/yolov5/pull/5945
    • @jinmc made their first contribution in https://github.com/ultralytics/yolov5/pull/5972
    • @jedi007 made their first contribution in https://github.com/ultralytics/yolov5/pull/6074
    • @awsaf49 made their first contribution in https://github.com/ultralytics/yolov5/pull/6085
    • @cmoseses made their first contribution in https://github.com/ultralytics/yolov5/pull/6087
    • @bilzard made their first contribution in https://github.com/ultralytics/yolov5/pull/6152
    • @pre-commit-ci made their first contribution in https://github.com/ultralytics/yolov5/pull/6177
    • @yinrong made their first contribution in https://github.com/ultralytics/yolov5/pull/6183
    • @dart-bird made their first contribution in https://github.com/ultralytics/yolov5/pull/6243
    • @hdnh2006 made their first contribution in https://github.com/ultralytics/yolov5/pull/6299
    • @Otfot made their first contribution in https://github.com/ultralytics/yolov5/pull/6318
    • @johnk2hawaii made their first contribution in https://github.com/ultralytics/yolov5/pull/6353
    • @sitecao made their first contribution in https://github.com/ultralytics/yolov5/pull/6324
    • @haimat made their first contribution in https://github.com/ultralytics/yolov5/pull/6365
    • @JonathanSamelson made their first contribution in https://github.com/ultralytics/yolov5/pull/6421
    • @motokimura made their first contribution in https://github.com/ultralytics/yolov5/pull/6406
    • @toschi23 made their first contribution in https://github.com/ultralytics/yolov5/pull/6436
    • @MattVAD made their first contribution in https://github.com/ultralytics/yolov5/pull/6567
    • @chf4850 made their first contribution in https://github.com/ultralytics/yolov5/pull/6581
    • @or-toledano made their first contribution in https://github.com/ultralytics/yolov5/pull/6606
    • @SamuelYvon made their first contribution in https://github.com/ultralytics/yolov5/pull/6701
    • @RaffaeleGalliera made their first contribution in https://github.com/ultralytics/yolov5/pull/6686

    Full Changelog: https://github.com/ultralytics/yolov5/compare/v6.0...v6.1

    Source code(tar.gz)
    Source code(zip)
    yolov5l.pt(89.28 MB)
    yolov5l6.pt(147.36 MB)
    yolov5m-VOC.pt(40.31 MB)
    yolov5m.pt(40.82 MB)
    yolov5m6.pt(68.95 MB)
    yolov5n-7-k5.pt(3.17 MB)
    yolov5n-7.pt(2.62 MB)
    yolov5n.pt(3.87 MB)
    yolov5n6.pt(6.85 MB)
    yolov5s.pt(14.12 MB)
    yolov5s6.pt(24.77 MB)
    YOLOv5x-7-k5.pt(115.90 MB)
    YOLOv5x-7.pt(101.90 MB)
    yolov5x.pt(166.04 MB)
    yolov5x6.pt(269.62 MB)
Owner
Ultralytics
YOLOv5 🚀 and Vision AI ⭐
Ultralytics
Generate saved_model, tfjs, tf-trt, EdgeTPU, CoreML, quantized tflite and .pb from .tflite.

tflite2tensorflow Generate saved_model, tfjs, tf-trt, EdgeTPU, CoreML, quantized tflite and .pb from .tflite. 1. Supported Layers No. TFLite Layer TF

Katsuya Hyodo 214 Dec 29, 2022
YOLOv3 in PyTorch > ONNX > CoreML > TFLite

This repository represents Ultralytics open-source research into future object detection methods, and incorporates lessons learned and best practices

Ultralytics 9.3k Jan 7, 2023
WHENet - ONNX, OpenVINO, TFLite, TensorRT, EdgeTPU, CoreML, TFJS, YOLOv4/YOLOv4-tiny-3L

HeadPoseEstimation-WHENet-yolov4-onnx-openvino ONNX, OpenVINO, TFLite, TensorRT, EdgeTPU, CoreML, TFJS, YOLOv4/YOLOv4-tiny-3L 1. Usage $ git clone htt

Katsuya Hyodo 49 Sep 21, 2022
Quantized tflite models for ailia TFLite Runtime

ailia-models-tflite Quantized tflite models for ailia TFLite Runtime About ailia TFLite Runtime ailia TF Lite Runtime is a TensorFlow Lite compatible

ax Inc. 13 Dec 23, 2022
Repo for parser tensorflow(.pb) and tflite(.tflite)

tfmodel_parser .pb file is the format of tensorflow model .tflite file is the format of tflite model, which usually used in mobile devices before star

null 1 Dec 23, 2021
MMdnn is a set of tools to help users inter-operate among different deep learning frameworks. E.g. model conversion and visualization. Convert models between Caffe, Keras, MXNet, Tensorflow, CNTK, PyTorch Onnx and CoreML.

MMdnn MMdnn is a comprehensive and cross-framework tool to convert, visualize and diagnose deep learning (DL) models. The "MM" stands for model manage

Microsoft 5.7k Jan 9, 2023
Robust Video Matting in PyTorch, TensorFlow, TensorFlow.js, ONNX, CoreML!

Robust Video Matting in PyTorch, TensorFlow, TensorFlow.js, ONNX, CoreML!

Peter Lin 6.5k Jan 4, 2023
Robust Video Matting in PyTorch, TensorFlow, TensorFlow.js, ONNX, CoreML!

Robust Video Matting (RVM) English | 中文 Official repository for the paper Robust High-Resolution Video Matting with Temporal Guidance. RVM is specific

flow-dev 2 Aug 21, 2022
Convert Pytorch model to onnx or tflite, and the converted model can be visualized by Netron

Convert Pytorch model to onnx or tflite, and the converted model can be visualized by Netron

Roxbili 5 Nov 19, 2022
tf2onnx - Convert TensorFlow, Keras and Tflite models to ONNX.

tf2onnx converts TensorFlow (tf-1.x or tf-2.x), tf.keras and tflite models to ONNX via command line or python api.

Open Neural Network Exchange 1.8k Jan 8, 2023
Yolov5-lite - Minimal PyTorch implementation of YOLOv5

Yolov5-Lite: Minimal YOLOv5 + Deep Sort Overview This repo is a shortened versio

Kadir Nar 57 Nov 28, 2022
🍅🍅🍅YOLOv5-Lite: lighter, faster and easier to deploy. Evolved from yolov5 and the size of model is only 1.7M (int8) and 3.3M (fp16). It can reach 10+ FPS on the Raspberry Pi 4B when the input size is 320×320~

YOLOv5-Lite:lighter, faster and easier to deploy Perform a series of ablation experiments on yolov5 to make it lighter (smaller Flops, lower memory, a

pogg 1.5k Jan 5, 2023
TPH-YOLOv5: Improved YOLOv5 Based on Transformer Prediction Head for Object Detection on Drone-Captured Scenarios

TPH-YOLOv5 This repo is the implementation of "TPH-YOLOv5: Improved YOLOv5 Based on Transformer Prediction Head for Object Detection on Drone-Captured

cv516Buaa 439 Dec 22, 2022
Multi-task yolov5 with detection and segmentation based on yolov5

YOLOv5DS Multi-task yolov5 with detection and segmentation based on yolov5(branch v6.0) decoupled head anchor free segmentation head README中文 Ablation

null 150 Dec 30, 2022
Hcaptcha-challenger - Gracefully face hCaptcha challenge with Yolov5(ONNX) embedded solution

hCaptcha Challenger ?? Gracefully face hCaptcha challenge with Yolov5(ONNX) embe

null 593 Jan 3, 2023
ONNX Runtime Web demo is an interactive demo portal showing real use cases running ONNX Runtime Web in VueJS.

ONNX Runtime Web demo is an interactive demo portal showing real use cases running ONNX Runtime Web in VueJS. It currently supports four examples for you to quickly experience the power of ONNX Runtime Web.

Microsoft 58 Dec 18, 2022
An executor that loads ONNX models and embeds documents using the ONNX runtime.

ONNXEncoder An executor that loads ONNX models and embeds documents using the ONNX runtime. Usage via Docker image (recommended) from jina import Flow

Jina AI 2 Mar 15, 2022
ONNX-GLPDepth - Python scripts for performing monocular depth estimation using the GLPDepth model in ONNX

ONNX-GLPDepth - Python scripts for performing monocular depth estimation using the GLPDepth model in ONNX

Ibai Gorordo 18 Nov 6, 2022
ONNX-PackNet-SfM: Python scripts for performing monocular depth estimation using the PackNet-SfM model in ONNX

Python scripts for performing monocular depth estimation using the PackNet-SfM model in ONNX

Ibai Gorordo 14 Dec 9, 2022