Recent Releases of signature-lens
signature-lens - v7.0 - YOLOv5 SOTA Realtime Instance Segmentation
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 ramwill 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.01andweight_decay=5e-5at image size 640 and all default settings.
Runs logged to https://wandb.ai/glenn-jocher/YOLOv5v70official - Accuracy values are for single-model single-scale on COCO dataset.
Reproduce bypython 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 bypython 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 bypython 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.
```bash
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 --nprocpernode 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
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:
bash
python segment/predict.py --weights yolov5m-seg.pt --data data/images/bus.jpg
python
model = torch.hub.load('ultralytics/yolov5', 'custom', 'yolov5m-seg.pt') # load from PyTorch Hub (WARNING: inference not yet supported)
|
--- |---
Export
Export YOLOv5s-seg model to ONNX and TensorRT:
bash
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
- Python
Published by glenn-jocher over 3 years ago
signature-lens - v6.2 - YOLOv5 Classification Models, Apple M1, Reproducibility, ClearML and Deci.ai integrations
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 clearmlwill 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 0for GPU benchmarks or--device cpufor CPU benchmarks (https://github.com/ultralytics/yolov5/pull/6963 by @glenn-jocher). - Training Reproducibility: Single-GPU YOLOv5 training with
torch>=1.12.0is now fully reproducible, and a new--seedargument 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.001andweight_decay=5e-5at 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 bypython classify/val.py --data ../datasets/imagenet --img 224 - Speed averaged over 100 inference images using a Colab Pro V100 High-RAM instance.
Reproduce bypython classify/val.py --data ../datasets/imagenet --img 224 --batch 1 - Export to ONNX at FP32 and TensorRT at FP16 done with
export.py.
Reproduce bypython 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.
```bash
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 --nprocpernode 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
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:
bash
python classify/predict.py --weights yolov5s-cls.pt --data data/images/bus.jpg
python
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:
bash
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
- Python
Published by glenn-jocher over 3 years ago
signature-lens - v6.1 - TensorRT, TensorFlow Edge TPU and OpenVINO Export and Inference
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):
bash
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
lrfreduced from 0.2 to 0.1 (https://github.com/ultralytics/yolov5/pull/6525 by @glenn-jocher).
- hyp-scratch-large.yaml
- 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/YOLOv5v61official

YOLOv5-P5 640 Figure (click to expand)

Figure Notes (click to expand)
* **COCO AP val** denotes mAP@0.5:0.95 metric measured on the 5000-image [COCO val2017](http://cocodataset.org) dataset over various inference sizes from 256 to 1536. * **GPU Speed** measures average inference time per image on [COCO val2017](http://cocodataset.org) dataset using a [AWS p3.2xlarge](https://aws.amazon.com/ec2/instance-types/p3/) V100 instance at batch-size 32. * **EfficientDet** data from [google/automl](https://github.com/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](https://github.com/ultralytics/yolov5/blob/master/data/hyps/hyp.scratch-low.yaml) hyps, all others use [hyp.scratch-high.yaml](https://github.com/ultralytics/yolov5/blob/master/data/hyps/hyp.scratch-high.yaml). * **mAPval** values are for single-model single-scale on [COCO val2017](http://cocodataset.org) 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](https://aws.amazon.com/ec2/instance-types/p3/) 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](https://github.com/ultralytics/yolov5/issues/303) 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 modifying`imgs` 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/6732New 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/6686Full Changelog: https://github.com/ultralytics/yolov5/compare/v6.0...v6.1
- Python
Published by glenn-jocher almost 4 years ago
signature-lens - v6.0 - YOLOv5n 'Nano' models, Roboflow integration, TensorFlow export, OpenCV DNN support
This release incorporates many new features and bug fixes (465 PRs from 73 contributors) since our last release v5.0 in April, brings architecture tweaks, and also introduces new P5 and P6 'Nano' models: YOLOv5n and YOLOv5n6. Nano models maintain the YOLOv5s depth multiple of 0.33 but reduce the YOLOv5s width multiple from 0.50 to 0.25, resulting in ~75% fewer parameters, from 7.5M to 1.9M, ideal for mobile and CPU solutions.
Example usage:
bash
python detect.py --weights yolov5n.pt --img 640 # Nano P5 model trained at --img 640 (28.4 mAP@0.5:0.95)
python detect.py --weights yolov5n6.pt --img 1280 # Nano P6 model trained at --img 1280 (34.0 mAP0.5:0.95)
Important Updates
Roboflow Integration β NEW: Train YOLOv5 models directly on any Roboflow dataset with our new integration! (https://github.com/ultralytics/yolov5/issues/4975 by @Jacobsolawetz)
YOLOv5n 'Nano' models β 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/discussions/5027 by @glenn-jocher)
TensorFlow and Keras Export: 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/1127 by @zldrobit)OpenCV DNN: YOLOv5 ONNX models are now compatible with both OpenCV DNN and ONNX Runtime (https://github.com/ultralytics/yolov5/pull/4833 by @SamFC10).
Model Architecture: Updated backbones are slightly smaller, faster and more accurate.
- Replacement of
Focus()with an equivalentConv(k=6, s=2, p=2)layer (https://github.com/ultralytics/yolov5/issues/4825 by @thomasbi1) for improved exportability - New
SPPF()replacement forSPP()layer for reduced ops (https://github.com/ultralytics/yolov5/pull/4420 by @glenn-jocher) - Reduction in P3 backbone layer
C3()repeats from 9 to 6 for improved speeds - Reorder places
SPPF()at end of backbone - Reintroduction of shortcut in the last
C3()backbone layer - Updated hyperparameters with increased mixup and copy-paste augmentation
- Replacement of
New Results

YOLOv5-P5 640 Figure (click to expand)

Figure Notes (click to expand)
* **COCO AP val** denotes mAP@0.5:0.95 metric measured on the 5000-image [COCO val2017](http://cocodataset.org) dataset over various inference sizes from 256 to 1536. * **GPU Speed** measures average inference time per image on [COCO val2017](http://cocodataset.org) dataset using a [AWS p3.2xlarge](https://aws.amazon.com/ec2/instance-types/p3/) V100 instance at batch-size 32. * **EfficientDet** data from [google/automl](https://github.com/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`mAP improves from +0.3% to +1.1% across all models, and ~5% FLOPs reduction produces slight speed improvements and a reduced CUDA memory footprint. 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 (previous) |640 |48.2 |66.9 |457.9 |11.6 |2.8 |47.0 |115.4
v6.0 (this release) |640 |48.8 |67.2 |424.5 |10.9|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.4 |46.0 |45 |6.3|0.6|1.9|4.5
|YOLOv5s |640 |37.2 |56.0 |98 |6.4 |0.9 |7.2 |16.5
|YOLOv5m |640 |45.2 |63.9 |224 |8.2 |1.7 |21.2 |49.0
|YOLOv5l |640 |48.8 |67.2 |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 |34.0 |50.7 |153 |8.1 |2.1 |3.2 |4.6
|YOLOv5s6 |1280 |44.5 |63.0 |385 |8.2 |3.6 |16.8 |12.6
|YOLOv5m6 |1280 |51.0 |69.0 |887 |11.1 |6.8 |35.7 |50.0
|YOLOv5l6 |1280 |53.6 |71.6 |1784 |15.8 |10.5 |76.8 |111.4
|YOLOv5x6
+ TTA|1280
1536 |54.7
55.4 |72.4
72.3 |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 models use [hyp.scratch-low.yaml](https://github.com/ultralytics/yolov5/blob/master/data/hyps/hyp.scratch-low.yaml) hyperparameters, all others use [hyp.scratch-high.yaml](https://github.com/ultralytics/yolov5/blob/master/data/hyps/hyp.scratch-high.yaml). * **mAPval** values are for single-model single-scale on [COCO val2017](http://cocodataset.org) 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](https://aws.amazon.com/ec2/instance-types/p3/) instance. NMS times (~1 ms/img) not included.
Reproduce by `python val.py --data coco.yaml --img 640 --conf 0.25 --iou 0.45` * **TTA** [Test Time Augmentation](https://github.com/ultralytics/yolov5/issues/303) 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/v5.0...v6.0 Changes since this release: https://github.com/ultralytics/yolov5/compare/v6.0...HEAD
New Features and Bug Fixes (465)
* YOLOv5 v5.0 Release patch 1 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/2764 * Flask REST API Example by @robmarkcole in https://github.com/ultralytics/yolov5/pull/2732 * ONNX Simplifier by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/2815 * YouTube Bug Fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/2818 * PyTorch Hub cv2 .save() .show() bug fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/2831 * Create FUNDING.yml by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/2832 * Update FUNDING.yml by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/2833 * Fix ONNX dynamic axes export support with onnx simplifier, make onnx simplifier optional by @timstokman in https://github.com/ultralytics/yolov5/pull/2856 * Update increment_path() to handle file paths by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/2867 * Detection cropping+saving feature addition for detect.py and PyTorch Hub by @Ab-Abdurrahman in https://github.com/ultralytics/yolov5/pull/2827 * Implement yaml.safe_load() by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/2876 * Cleanup load_image() by @JoshSong in https://github.com/ultralytics/yolov5/pull/2871 * bug fix: switched rows and cols for correct detections in confusion matrix by @MichHeilig in https://github.com/ultralytics/yolov5/pull/2883 * VisDrone2019-DET Dataset Auto-Download by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/2882 * Uppercase model filenames enabled by @r-blmnr in https://github.com/ultralytics/yolov5/pull/2890 * ACON activation function by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/2893 * Explicit opt function arguments by @fcakyon in https://github.com/ultralytics/yolov5/pull/2817 * Update yolo.py by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/2899 * Update google_utils.py by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/2900 * Add detect.py --hide-conf --hide-labels --line-thickness options by @Ashafix in https://github.com/ultralytics/yolov5/pull/2658 * Default optimize_for_mobile() on TorchScript models by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/2908 * Update export.py onnx -> ct print bug fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/2909 * Update export.py for 2 dry runs by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/2910 * Add file_size() function by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/2911 * Update download() for tar.gz files by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/2919 * Update visdrone.yaml bug fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/2921 * changed default value of hide label argument to False by @albinxavi in https://github.com/ultralytics/yolov5/pull/2923 * Change default value of hide-conf argument to false by @albinxavi in https://github.com/ultralytics/yolov5/pull/2925 * test.py native --single-cls by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/2928 * Add verbose option to pytorch hub models by @NanoCode012 in https://github.com/ultralytics/yolov5/pull/2926 * ACON Activation batch-size 1 bug patch by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/2901 * Check_requirements() enclosing apostrophe bug fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/2929 * Update README.md by @BZFYS in https://github.com/ultralytics/yolov5/pull/2934 * Improved yolo.py profiling by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/2940 * Add yolov5/ to sys.path() for *.py subdir exec by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/2949 * New Colors() class by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/2963 * Update restapi.py by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/2967 * Global Wheat Detection 2020 Dataset Auto-Download by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/2968 * Objects365 Dataset AutoDownload by @ferdinandl007 in https://github.com/ultralytics/yolov5/pull/2932 * Update check_requirements() exclude list by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/2974 * Make cache saving optional by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/2977 * YOLOv5 AWS Inferentia Inplace compatibility updates by @jluntamazon in https://github.com/ultralytics/yolov5/pull/2953 * PyTorch Hub load directly when possible by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/2986 * Improve performance of dataset Logger by @AyushExel in https://github.com/ultralytics/yolov5/pull/2943 * Add unzip flag to download() by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3002 * Curl update by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3004 * Update hubconf.py for unified loading by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3005 * hubconf.py bug fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3007 * Added support for fp16 (half) to export.py by @hodovo in https://github.com/ultralytics/yolov5/pull/3010 * Add is_colab() function by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3018 * Add NMS threshold checks by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3020 * Fix ONNX export using --grid --simplify --dynamic simultaneously by @jylink in https://github.com/ultralytics/yolov5/pull/2982 * download() ThreadPool update by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3027 * FROM nvcr.io/nvidia/pytorch:21.04-py3 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3030 * Fix #3031 : use check_file for --data by @AyushExel in https://github.com/ultralytics/yolov5/pull/3035 * Add get_coco128.sh for downloading the coco128 dataset by @zldrobit in https://github.com/ultralytics/yolov5/pull/3047 * Do not optimize CoreML TorchScript model by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3055 * Fixed #3042 by @kepler62f in https://github.com/ultralytics/yolov5/pull/3058 * Update export.py with --train mode argument by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3066 * Explicitly convert artifact path to posix_path by @AyushExel in https://github.com/ultralytics/yolov5/pull/3067 * Update P5 + P6 model ensembling by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3082 * Update detect.py by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3087 * Add check_python() by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3088 * Add --optimize argument by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3093 * Update train.py by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3099 * Update GlobalWheat2020.yaml test: # 1276 images by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3101 * detect.py streaming source `--save-crop` bug fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3102 * Replace print() with logging.info() in trainloader by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3103 * New Ultralytics Colors() Palette by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3046 * Update JSON response by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3139 * Update https://ultralytics.com/images/zidane.jpg by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3140 * Add yolov5/__init__.py by @KC-Zhang in https://github.com/ultralytics/yolov5/pull/3127 * Add `--include torchscript onnx coreml` argument by @CristiFati in https://github.com/ultralytics/yolov5/pull/3137 * TorchScript, ONNX, CoreML Export tutorial title by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3142 * Update requirements.txt `onnx>=1.9.0` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3143 * Scope imports for torch.hub.list() improvement by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3144 * Scope all hubconf.py imports for torch.hub.list() by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3145 * SKU-110K CVPR2019 Dataset Auto-Download by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3167 * rename class autoShape -> AutoShape by @developer0hye in https://github.com/ultralytics/yolov5/pull/3173 * Parameterize ONNX `--opset-version` by @CristiFati in https://github.com/ultralytics/yolov5/pull/3154 * Add `device` argument to PyTorch Hub models by @cgerum in https://github.com/ultralytics/yolov5/pull/3104 * Plot labels.png histogram colors by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3192 * Add CAP_PROP_FRAME_COUNT for YouTube sources by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3193 * Silent List Bug Fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3214 * 0 FPS stream bug fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3216 * Parameterize max_det + inference default at 1000 by @adrianholovaty in https://github.com/ultralytics/yolov5/pull/3215 * TensorBoard add_graph() fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3236 * `plot_one_box()` default `color=(128, 128, 128)` by @yeric1789 in https://github.com/ultralytics/yolov5/pull/3240 * Add Cython by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3217 * Check CoreML models.train() mode by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3262 * Assert `--image-weights` not combined with DDP by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3275 * check `batch_size % utilized_device_count` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3276 * YouTube stream ending fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3277 * Fix TypeError: 'PosixPath' object is not iterable by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3285 * Improves docs and handling of entities and resuming by WandbLogger by @charlesfrye in https://github.com/ultralytics/yolov5/pull/3264 * Update LoadStreams init fallbacks by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3295 * PyTorch Hub `crops = results.crop()` return values by @yeric1789 in https://github.com/ultralytics/yolov5/pull/3282 * Comment Cython by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3297 * Improved check_requirements() robustness by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3298 * Explicit `git clone` master by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3311 * Implement `@torch.no_grad()` decorator by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3312 * Remove www subdomain from https://ultralytics.com by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3320 * TensorBoard DP/DDP graph fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3325 * yolo.py header by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3347 * Updated cache v0.2 with `hashlib` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3350 * Add URL file download to check_file() by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3330 * ONNX export in `.train()` mode fix by @ChaofWang in https://github.com/ultralytics/yolov5/pull/3362 * Ignore blank lines in `*.txt` labels by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3366 * update ci-testing.yml by @SkalskiP in https://github.com/ultralytics/yolov5/pull/3322 * Enable direct `--weights URL` definition by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3373 * Add Open in Kaggle badge by @pizzaz93 in https://github.com/ultralytics/yolov5/pull/3368 * `cv2.imread(img, -1)` for IMREAD_UNCHANGED by @tudoulei in https://github.com/ultralytics/yolov5/pull/3379 * COCO evolution fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3388 * Create `is_pip()` function by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3391 * Revert "`cv2.imread(img, -1)` for IMREAD_UNCHANGED" by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3395 * Update FLOPs description. by @chocosaj in https://github.com/ultralytics/yolov5/pull/3422 * Parse URL authentication by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3424 * Add FLOPs title to table by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3453 * Suppress jit trace warning + graph once by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3454 * Update MixUp augmentation `alpha=beta=32.0` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3455 * Add `timeout()` class by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3460 * Faster HSV augmentation by @developer0hye in https://github.com/ultralytics/yolov5/pull/3462 * Add `check_git_status()` 5 second timeout by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3464 * Improved `check_requirements()` offline-handling by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3466 * Add `output_names` argument for ONNX export with dynamic axes by @SamSamhuns in https://github.com/ultralytics/yolov5/pull/3456 * Revert FP16 `test.py` and `detect.py` inference to FP32 default by @edificewang in https://github.com/ultralytics/yolov5/pull/3423 * Add additional links/resources to stale.yml message by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3467 * Update stale.yml HUB URL by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3468 * Stale `github.actor` bug fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3483 * Explicit `model.eval()` call `if opt.train=False` by @developer0hye in https://github.com/ultralytics/yolov5/pull/3475 * check_requirements() exclude `opencv-python` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3495 * check_requirements() exclude `opencv-python` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3507 * early assert for cpu and half option by @developer0hye in https://github.com/ultralytics/yolov5/pull/3508 * Update tutorial.ipynb by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3510 * Reduce test.py results spacing by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3511 * Update README.md by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3512 * Merge `develop` branch into `master` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3518 * Use multi-threading in cache_labels by @deanmark in https://github.com/ultralytics/yolov5/pull/3505 * Update datasets.py by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3531 * Update FP16 `--half` argument for test.py and detect.py by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3532 * Update `dataset_stats()` for HUB by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3536 * On-demand `pycocotools` pip install by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3547 * Update `check_python(minimum=3.6.2)` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3548 * Update README.md by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3550 * Remove `opt` from `create_dataloader()`` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3552 * Remove `is_coco` argument from `test()` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3553 * Multi-GPU default to single device 0 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3554 * Update test.py profiling by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3555 * Remove redundant speed/study `half` argument by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3557 * Bump pip from 18.1 to 19.2 in /utils/google_app_engine by @dependabot in https://github.com/ultralytics/yolov5/pull/3561 * Refactor test.py arguments by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3558 * Refactor detect.py arguments by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3559 * Refactor models/export.py arguments by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3564 * Refactoring cleanup by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3565 * Ignore Seaborn plot warnings by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3576 * Update export.py, yolo.py `sys.path.append()` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3579 * Update stale.yml by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3585 * Add ConfusionMatrix `normalize=True` flag by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3586 * ConfusionMatrix `normalize=True` fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3587 * train.py GPU memory fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3590 * W&B: Allow changed in config variable by @AyushExel in https://github.com/ultralytics/yolov5/pull/3588 * Update `dataset_stats()` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3593 * Delete __init__.py by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3596 * Simplify README.md by @kalenmike in https://github.com/ultralytics/yolov5/pull/3530 * Update datasets.py by @masoodazhar in https://github.com/ultralytics/yolov5/pull/3591 * Download COCO and VOC by default by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3608 * Suppress wandb images size mismatch warning by @AyushExel in https://github.com/ultralytics/yolov5/pull/3611 * Fix incorrect end epoch by @wq9 in https://github.com/ultralytics/yolov5/pull/3612 * Update `check_file()` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3622 * Update README.md by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3624 * FROM nvcr.io/nvidia/pytorch:21.05-py3 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3633 * Add `**/*.torchscript.pt` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3634 * Update `verify_image_label()` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3635 * RUN pip install --no-cache -U torch torchvision by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3637 * Assert non-premature end of JPEG images by @xiaowk5516 in https://github.com/ultralytics/yolov5/pull/3638 * Update CONTRIBUTING.md by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3645 * Update CONTRIBUTING.md by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3647 * `is_coco` list fix by @thanhminhmr in https://github.com/ultralytics/yolov5/pull/3646 * Update README.md by @SpongeBab in https://github.com/ultralytics/yolov5/pull/3650 * Update `dataset_stats()` to list of dicts by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3657 * Remove `/weights` directory by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3659 * Update download_weights.sh comment by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3662 * Update train.py by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3667 * Update `train(hyp, *args)` to accept `hyp` file or dict by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3668 * Update TensorBoard by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3669 * Update `WORLD_SIZE` and `RANK` retrieval by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3670 * Cache v0.3: improved corrupt image/label reporting by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3676 * EMA changes for pre-model's batch_size by @ZouJiu1 in https://github.com/ultralytics/yolov5/pull/3681 * Update README.md by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3684 * Update cache check by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3691 * Skip HSV augmentation when hyperparameters are [0, 0, 0] by @thanhminhmr in https://github.com/ultralytics/yolov5/pull/3686 * Slightly modify CLI execution by @lb-desupervised in https://github.com/ultralytics/yolov5/pull/3687 * Reformat by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3694 * Update DDP for `torch.distributed.run` with `gloo` backend by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3680 * Eliminate `total_batch_size` variable by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3697 * Add torch DP warning by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3698 * Add `train.run()` method by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3700 * Update DDP backend `if dist.is_nccl_available()` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3705 * [x]W&B: Don't resume transfer learning runs by @AyushExel in https://github.com/ultralytics/yolov5/pull/3604 * Update 4 main ops for paths and .run() by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3715 * Fix `img2label_paths()` order by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3720 * Fix typo in export.py by @fcakyon in https://github.com/ultralytics/yolov5/pull/3729 * Backwards compatible cache version checks by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3730 * Update `check_datasets()` for dynamic unzip path by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3732 * Create `data/hyps` directory by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3747 * Force non-zero hyp evolution weights `w` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3748 * edit comment for img2tensor process by @developer0hye in https://github.com/ultralytics/yolov5/pull/3759 * Add optional dataset.yaml `path` attribute by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3753 * COCO annotations JSON fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3764 * Add `xyxy2xywhn()` by @developer0hye in https://github.com/ultralytics/yolov5/pull/3765 * Remove DDP `nn.MultiheadAttention` fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3768 * fix/incorrect_fitness_import by @SkalskiP in https://github.com/ultralytics/yolov5/pull/3770 * W&B: Update Tables API and comply with new dataset_check by @AyushExel in https://github.com/ultralytics/yolov5/pull/3772 * NGA xView 2018 Dataset Auto-Download by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3775 * Update README.md fix banner width by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3785 * Objectness IoU Sort by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3610 * Update objectness IoU sort by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3786 * Create hyp.scratch-p6.yaml by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3787 * Fix datasets for aws and get_coco.sh by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3788 * Update seeds for single-GPU reproducibility by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3789 * Update Usage examples by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3790 * nvcr.io/nvidia/pytorch:21.06-py3 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3791 * Update Dockerfile by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3792 * FROM nvcr.io/nvidia/pytorch:21.05-py3 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3794 * Fix competition link by @batrlatom in https://github.com/ultralytics/yolov5/pull/3799 * Fix warmup `accumulate` by @yellowdolphin in https://github.com/ultralytics/yolov5/pull/3722 * Add feature map visualization by @Zigars in https://github.com/ultralytics/yolov5/pull/3804 * Update `feature_visualization()` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3807 * Fix for `dataset_stats()` with updated data.yaml by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3819 * Move IoU functions to metrics.py by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3820 * Concise `TransformerBlock()` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3821 * Fix `LoadStreams()` dataloader frame skip issue by @feras-oughali in https://github.com/ultralytics/yolov5/pull/3833 * Plot `AutoShape()` detections in ascending order by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3843 * Copy-Paste augmentation for YOLOv5 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3845 * Add EXIF rotation to YOLOv5 Hub inference by @vaaliferov in https://github.com/ultralytics/yolov5/pull/3852 * `--evolve 300` generations CLI argument by @san-soucie in https://github.com/ultralytics/yolov5/pull/3863 * Add multi-stream saving feature by @ketan-b in https://github.com/ultralytics/yolov5/pull/3864 * Models `*.yaml` reformat by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3875 * Create `utils/augmentations.py` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3877 * Improved BGR2RGB speeds by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3880 * Evolution commented `hyp['anchors']` fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3887 * Hub models `map_location=device` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3894 * YOLOv5 + Albumentations integration by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3882 * Save PyTorch Hub models to `/root/hub/cache/dir` by @johnohagan in https://github.com/ultralytics/yolov5/pull/3904 * Feature visualization update by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3920 * Fix `torch.hub.list('ultralytics/yolov5')` pathlib bug by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3921 * Update `setattr()` default for Hub PIL images by @jmiranda-laplateforme in https://github.com/ultralytics/yolov5/pull/3923 * `feature_visualization()` CUDA fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3925 * Update `dataset_stats()` for zipped datasets by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3926 * Fix inconsistent NMS IoU value for COCO by @eldarkurtic in https://github.com/ultralytics/yolov5/pull/3934 * Feature visualization improvements 32 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3947 * Update augmentations.py by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3948 * Cache v0.4 update by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3954 * Numerical stability fix for Albumentations by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3958 * Update `albumentations>=1.0.2` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3966 * Update `np.random.random()` to `random.random()` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3967 * Update requirements.txt `albumentations>=1.0.2` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3972 * `Ensemble()` visualize fix by @seven320 in https://github.com/ultralytics/yolov5/pull/3973 * Update `probability` to `p` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3980 * Alert (no detections) by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3984 * Update README.md by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/3996 * Rename `test.py` to `val.py` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4000 * W&B: Proposal for supporting W&B sweeps by @AyushExel in https://github.com/ultralytics/yolov5/pull/3938 * Update greetings.yml by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4024 * Add `--sync-bn` known issue by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4032 * Update greetings.yml by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4037 * Update README.md by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4041 * AutoShape PosixPath support by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4047 * `val.py` refactor by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4053 * Module `super().__init__()` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4065 * Missing `nc` and `names` handling in check_dataset() by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4066 * Albumentations >= 1.0.3 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4068 * W&B: fix refactor bugs by @AyushExel in https://github.com/ultralytics/yolov5/pull/4069 * Refactor `export.py` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4080 * Addition refactor `export.py` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4089 * Add train.py `--img-size` floor by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4099 * Update resume.py by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4115 * Fix indentation in `log_training_progress()` by @imyhxy in https://github.com/ultralytics/yolov5/pull/4126 * Update README.md by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4134 * detect.py ONNX inference feature by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4073 * Rename `opset_version` to `opset` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4135 * Update train.py by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4136 * Refactor train.py and val.py `loggers` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4137 * Update README.md by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4143 * Add `export.py` ONNX inference suggestion by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4146 * New CSV Logger by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4148 * Update dataset comments by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4162 * Update script headers by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4163 * W&B: Improve documentation of the logger & use wandb assigned run names by default by @AyushExel in https://github.com/ultralytics/yolov5/pull/4174 * Update comments header by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4184 * Train from `--data path/to/dataset.zip` feature by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4185 * Create yolov5-bifpn.yaml by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4195 * Update Hub Path inputs by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4200 * W&B: Restructure code to support the new dataset_check() feature by @AyushExel in https://github.com/ultralytics/yolov5/pull/4197 * Update yolov5-bifpn.yaml by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4208 * W&B: More improvements and refactoring by @AyushExel in https://github.com/ultralytics/yolov5/pull/4205 * PyCharm reformat by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4209 * Add `@try_except` decorator by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4224 * Explicit `requirements.txt` location by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4225 * Suppress torch 1.9.0 `max_pool2d()` warning by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4227 * Fix weight decay comment by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4228 * Update profiler by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4236 * Add `python train.py --freeze N` argument by @IneovaAI in https://github.com/ultralytics/yolov5/pull/4238 * Update `profile()` for CUDA Memory allocation by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4239 * Add `train.py` and `val.py` callbacks by @kalenmike in https://github.com/ultralytics/yolov5/pull/4220 * W&B: suppress warnings by @AyushExel in https://github.com/ultralytics/yolov5/pull/4257 * Update AP calculation by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4260 * Update Autoshape forward header by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4271 * Update variables by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4273 * Add `DWConvClass()` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4274 * Update 'results saved to' string by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4275 * W&B: Fix sweep bug by @AyushExel in https://github.com/ultralytics/yolov5/pull/4276 * Feature `python train.py --cache disk` by @junjihashimoto in https://github.com/ultralytics/yolov5/pull/4049 * Fixed logging level in distributed mode by @imyhxy in https://github.com/ultralytics/yolov5/pull/4284 * Simplify callbacks by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4289 * Evolve in CSV format by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4307 * Update newline by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4308 * Update README.md by @Justsubh01 in https://github.com/ultralytics/yolov5/pull/4309 * Simpler code for DWConvClass by @developer0hye in https://github.com/ultralytics/yolov5/pull/4310 * `int(mlc)` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4385 * fix module count in parse_model by @orangeccc in https://github.com/ultralytics/yolov5/pull/4379 * Update README.md by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4387 * W&B: Add advanced features tutorial by @AyushExel in https://github.com/ultralytics/yolov5/pull/4384 * W&B: Fix for 4360 by @AyushExel in https://github.com/ultralytics/yolov5/pull/4388 * Fix rename `utils.google_utils` to `utils.downloads` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4393 * Simplify ONNX inference command by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4405 * No cache option for reading datasets by @ahmadmustafaanis in https://github.com/ultralytics/yolov5/pull/4376 * Update plots.py PIL box plotting by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4407 * Add `yolov5s-ghost.yaml` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4412 * Remove `encoding='ascii'` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4413 * Merge PIL and OpenCV in `plot_one_box(use_pil=False)` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4416 * Standardize headers and docstrings by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4417 * Add `SPPF()` layer by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4420 * Remove DDP process group timeout by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4422 * Update hubconf.py `attempt_load` import by @OmidSa75 in https://github.com/ultralytics/yolov5/pull/4428 * TFLite preparation by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4436 * Add TensorFlow and TFLite export by @zldrobit in https://github.com/ultralytics/yolov5/pull/1127 * Fix default `--weights yolov5s.pt` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4458 * Fix missing labels after albumentations by @huuquan1994 in https://github.com/ultralytics/yolov5/pull/4455 * `check_requirements(('coremltools',))` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4478 * W&B: Refactor the wandb_utils.py file by @AyushExel in https://github.com/ultralytics/yolov5/pull/4496 * Add `install=True` argument to `check_requirements` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4512 * Automatic TFLite uint8 determination by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4515 * Fix for `python models/yolo.py --profile` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4541 * Auto-fix corrupt JPEGs by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4548 * Fix for corrupt JPEGs auto-fix PR by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4560 * Fix for AP calculation limits 0.0 - 1.0 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4563 * ONNX opset 13 by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4566 * Add EarlyStopping feature by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4576 * Remove `image_weights` DDP code by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4579 * Add `Profile()` profiler by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4587 * Fix bug in `plot_one_box` when label is `None` by @karasawatakumi in https://github.com/ultralytics/yolov5/pull/4588 * Create `Annotator()` class by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4591 * Auto-UTF handling by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4594 * Re-order `plots.py` to class-first by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4595 * Update mosaic plots font size by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4596 * TensorBoard `on_train_end()` speed improvements by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4605 * Auto-download Arial.ttf on init by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4606 * Fix: add P2 layer 21 to yolov5-p2.yaml `Detect()` inputs by @YukunXia in https://github.com/ultralytics/yolov5/pull/4608 * Update `check_git_status()` warning by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4610 * W&B: Don't log models in evolve operation by @AyushExel in https://github.com/ultralytics/yolov5/pull/4611 * Close `matplotlib` plots after opening by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4612 * DDP `torch.jit.trace()` `--sync-bn` fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4615 * Fix for Arial.ttf redownloads with hub inference by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4627 * Fix 2 for Arial.ttf redownloads with hub inference by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4628 * Fix 3 for Arial.ttf redownloads with hub inference by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4629 * Fix for `plot_evolve()` string argument by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4639 * Fix `is_coco` on missing `data['val']` key by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4642 * Fixed 'meta' and 'hyp' may out of order when using evolve by @imyhxy in https://github.com/ultralytics/yolov5/pull/4657 * EarlyStopper updates by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4679 * Optimised Callback Class to Reduce Code and Fix Errors by @kalenmike in https://github.com/ultralytics/yolov5/pull/4688 * Remove redundant `ComputeLoss` code by @zhiqwang in https://github.com/ultralytics/yolov5/pull/4701 * Add suffix checks by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4711 * Fix `check_suffix()` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4712 * Update `check_yaml()` comment by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4713 * Add `user_config_dir('Ultralytics')` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4715 * Add `crops = results.crop()` dictionary by @ELHoussineT in https://github.com/ultralytics/yolov5/pull/4676 * Make CONFIG_DIR configurable per environment variable by @joaodiogocosta in https://github.com/ultralytics/yolov5/pull/4727 * Allow `multi_label` option for NMS with PyTorch Hub by @jeanbmar in https://github.com/ultralytics/yolov5/pull/4728 * Scope `onnx-simplifier` requirements check by @Zegorax in https://github.com/ultralytics/yolov5/pull/4730 * Fix `user_config_dir()` for GCP/AWS functions by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4726 * Fix `--data from_HUB.zip` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4732 * Improved `detect.py` timing by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4741 * Add `callbacks` to train function in W&B sweep by @jveitchmichaelis in https://github.com/ultralytics/yolov5/pull/4742 * Fix `is_writeable()` for 3 OS support by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4743 * Add TF and TFLite models to `.gitignore` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4747 * Add TF and TFLite models to `.dockerignore` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4748 * Update `is_writeable()` for 2 methods by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4744 * Centralize `user_config_dir()` decision making by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4755 * Replace `path.absolute()` with `path.resolve()` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4763 * Add TensorFlow formats to `export.py` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4479 * Update ci-testing.yml by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4770 * Update ci-testing.yml by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4772 * Shuffle all 4(or 9) images in mosaic augmentation by @kimnamu in https://github.com/ultralytics/yolov5/pull/4787 * Add `--int8` argument by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4799 * Evolution `--resume` fix by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4802 * Refactor `forward()` method profiling by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4816 * Feature/fix export on url by @kalenmike in https://github.com/ultralytics/yolov5/pull/4823 * Fix 'PyTorch starting from' for URL weights by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4828 * Multiple TF export improvements by @zldrobit in https://github.com/ultralytics/yolov5/pull/4824 * Fix val.py study plot by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4831 * `PIL.ImageDraw.text(anchor=...)` removal, reduce to `>=7.1.2` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4842 * Sorted datasets update to `cache_labels()` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4845 * Single `cache_version` definition by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4846 * W&B: Enable login timeout by @AyushExel in https://github.com/ultralytics/yolov5/pull/4843 * Consolidate `init_seeds()` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4849 * Refactor argparser printing to `print_args()` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4850 * Update `sys.path.append(str(ROOT))` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4852 * Simplify `check_requirements()` usage by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4855 * Update greetings.yml by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4856 * Update Dockerfile by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4861 * Update Dockerfile by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4862 * Fix DDP destruction `LOGGER.info()` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4863 * Annotator `check_font()` RANK -1 remove progress by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4864 * W&B: Login only in master processes by @AyushExel in https://github.com/ultralytics/yolov5/pull/4866 * W&B: Fix dataset check by @AyushExel in https://github.com/ultralytics/yolov5/pull/4879 * Fix arg help string to match 'classes' arg name. by @NauchtanRobotics in https://github.com/ultralytics/yolov5/pull/4893 * Avoid out-of-image class labels by @zldrobit in https://github.com/ultralytics/yolov5/pull/4902 * TensorFlow.js export enhancements by @zldrobit in https://github.com/ultralytics/yolov5/pull/4905 * fix zipfile name for coco128-segments by @SamFC10 in https://github.com/ultralytics/yolov5/pull/4914 * Replace `os.system('unzip file.zip')` -> `ZipFile.extractall()` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4919 * Fix `root` referenced before assignment by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4920 * Add Slack Forum badge to README by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4930 * Validate `best.pt` on train end by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4889 * Update default Albumentations by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4931 * Scope `check_file()` search space by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4933 * Update Dockerfile by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4935 * Automatic Chinese fonts plotting by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4951 * Allow YOLOv5 execution from arbitrary `cwd` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4954 * Update relative `ROOT` logic by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4955 * Add `roboflow` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4956 * Fix `isascii()` method calls for python 3.6 by @d57montes in https://github.com/ultralytics/yolov5/pull/4958 * Fix relative `ROOT` Pytorch Hub custom model bug by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4974 * Add Roboflow to README by @kalenmike in https://github.com/ultralytics/yolov5/pull/4972 * Update wandb_utils.py by @d57montes in https://github.com/ultralytics/yolov5/pull/4953 * Add Hub custom models to CI tests by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4978 * Faster `--img 64` CI tests by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4979 * Clickable CI badge by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4985 * Revert `torch.hub.load()` test by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/4986 * Fix URL parsing bug by @kalenmike in https://github.com/ultralytics/yolov5/pull/4998 * Update W&B README by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5006 * Add YOLOv5 Survey link to README.md by @kalenmike in https://github.com/ultralytics/yolov5/pull/5000 * Update train.py by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5014 * Update README.md by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5015 * Compute loss on final val by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5017 * Fix missing `opt.device` on `--task study` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5031 * Fix pylint: do not use bare 'except' by @zhiqwang in https://github.com/ultralytics/yolov5/pull/5025 * Clip TTA Augmented Tails by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5028 * Implement `--save-period` locally by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5047 * Fix `yaml.safe_load()` ignore emoji errors by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5060 * Update Dockerfile to `ADD` Arial.ttf by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5084 * Update datasets.py comments by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5088 * Re-open IP-camera videostream if disconnected by @EgOrlukha in https://github.com/ultralytics/yolov5/pull/5074 * Fix SKU-110K HUB: `OSError` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5106 * Add `requests` to requirements.txt by @sandstorm12 in https://github.com/ultralytics/yolov5/pull/5112 * Pass `LOCAL_RANK` to `torch_distributed_zero_first()` by @qiningonline in https://github.com/ultralytics/yolov5/pull/5114 * Fix different devices bug when moving model from GPU to CPU by @SamFC10 in https://github.com/ultralytics/yolov5/pull/5110 * Pass `--device` for `--task study` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5118 * Update val.py `--speed` and `--study` usages by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5120 * Update val.py `pad = 0.0 if task == 'speed' else 0.5` by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5121 * Update plots.py by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5127 * Fix `ROOT` as relative path by @maltelorbach in https://github.com/ultralytics/yolov5/pull/5129 * Refactor `Detect()` anchors for ONNX <> OpenCV DNN compatibility by @SamFC10 in https://github.com/ultralytics/yolov5/pull/4833 * Add OpenCV DNN option for ONNX inference by @glenn-jocher in https://github.com/ultralytics/yolov5/pull/5136 * update `detect.py` in order to support torch script by @andreiionutdamian in https://github.com/ultralytics/yolov5/pull/5109New Contributors (73)
* @robmarkcole made their first contribution in https://github.com/ultralytics/yolov5/pull/2732 * @timstokman made their first contribution in https://github.com/ultralytics/yolov5/pull/2856 * @Ab-Abdurrahman made their first contribution in https://github.com/ultralytics/yolov5/pull/2827 * @JoshSong made their first contribution in https://github.com/ultralytics/yolov5/pull/2871 * @MichHeilig made their first contribution in https://github.com/ultralytics/yolov5/pull/2883 * @r-blmnr made their first contribution in https://github.com/ultralytics/yolov5/pull/2890 * @fcakyon made their first contribution in https://github.com/ultralytics/yolov5/pull/2817 * @Ashafix made their first contribution in https://github.com/ultralytics/yolov5/pull/2658 * @albinxavi made their first contribution in https://github.com/ultralytics/yolov5/pull/2923 * @BZFYS made their first contribution in https://github.com/ultralytics/yolov5/pull/2934 * @ferdinandl007 made their first contribution in https://github.com/ultralytics/yolov5/pull/2932 * @jluntamazon made their first contribution in https://github.com/ultralytics/yolov5/pull/2953 * @hodovo made their first contribution in https://github.com/ultralytics/yolov5/pull/3010 * @jylink made their first contribution in https://github.com/ultralytics/yolov5/pull/2982 * @kepler62f made their first contribution in https://github.com/ultralytics/yolov5/pull/3058 * @KC-Zhang made their first contribution in https://github.com/ultralytics/yolov5/pull/3127 * @CristiFati made their first contribution in https://github.com/ultralytics/yolov5/pull/3137 * @cgerum made their first contribution in https://github.com/ultralytics/yolov5/pull/3104 * @adrianholovaty made their first contribution in https://github.com/ultralytics/yolov5/pull/3215 * @yeric1789 made their first contribution in https://github.com/ultralytics/yolov5/pull/3240 * @charlesfrye made their first contribution in https://github.com/ultralytics/yolov5/pull/3264 * @ChaofWang made their first contribution in https://github.com/ultralytics/yolov5/pull/3362 * @pizzaz93 made their first contribution in https://github.com/ultralytics/yolov5/pull/3368 * @tudoulei made their first contribution in https://github.com/ultralytics/yolov5/pull/3379 * @chocosaj made their first contribution in https://github.com/ultralytics/yolov5/pull/3422 * @SamSamhuns made their first contribution in https://github.com/ultralytics/yolov5/pull/3456 * @edificewang made their first contribution in https://github.com/ultralytics/yolov5/pull/3423 * @deanmark made their first contribution in https://github.com/ultralytics/yolov5/pull/3505 * @dependabot made their first contribution in https://github.com/ultralytics/yolov5/pull/3561 * @kalenmike made their first contribution in https://github.com/ultralytics/yolov5/pull/3530 * @masoodazhar made their first contribution in https://github.com/ultralytics/yolov5/pull/3591 * @wq9 made their first contribution in https://github.com/ultralytics/yolov5/pull/3612 * @xiaowk5516 made their first contribution in https://github.com/ultralytics/yolov5/pull/3638 * @thanhminhmr made their first contribution in https://github.com/ultralytics/yolov5/pull/3646 * @SpongeBab made their first contribution in https://github.com/ultralytics/yolov5/pull/3650 * @ZouJiu1 made their first contribution in https://github.com/ultralytics/yolov5/pull/3681 * @lb-desupervised made their first contribution in https://github.com/ultralytics/yolov5/pull/3687 * @batrlatom made their first contribution in https://github.com/ultralytics/yolov5/pull/3799 * @yellowdolphin made their first contribution in https://github.com/ultralytics/yolov5/pull/3722 * @Zigars made their first contribution in https://github.com/ultralytics/yolov5/pull/3804 * @feras-oughali made their first contribution in https://github.com/ultralytics/yolov5/pull/3833 * @vaaliferov made their first contribution in https://github.com/ultralytics/yolov5/pull/3852 * @san-soucie made their first contribution in https://github.com/ultralytics/yolov5/pull/3863 * @ketan-b made their first contribution in https://github.com/ultralytics/yolov5/pull/3864 * @johnohagan made their first contribution in https://github.com/ultralytics/yolov5/pull/3904 * @jmiranda-laplateforme made their first contribution in https://github.com/ultralytics/yolov5/pull/3923 * @eldarkurtic made their first contribution in https://github.com/ultralytics/yolov5/pull/3934 * @seven320 made their first contribution in https://github.com/ultralytics/yolov5/pull/3973 * @imyhxy made their first contribution in https://github.com/ultralytics/yolov5/pull/4126 * @IneovaAI made their first contribution in https://github.com/ultralytics/yolov5/pull/4238 * @junjihashimoto made their first contribution in https://github.com/ultralytics/yolov5/pull/4049 * @Justsubh01 made their first contribution in https://github.com/ultralytics/yolov5/pull/4309 * @orangeccc made their first contribution in https://github.com/ultralytics/yolov5/pull/4379 * @ahmadmustafaanis made their first contribution in https://github.com/ultralytics/yolov5/pull/4376 * @OmidSa75 made their first contribution in https://github.com/ultralytics/yolov5/pull/4428 * @huuquan1994 made their first contribution in https://github.com/ultralytics/yolov5/pull/4455 * @karasawatakumi made their first contribution in https://github.com/ultralytics/yolov5/pull/4588 * @YukunXia made their first contribution in https://github.com/ultralytics/yolov5/pull/4608 * @zhiqwang made their first contribution in https://github.com/ultralytics/yolov5/pull/4701 * @ELHoussineT made their first contribution in https://github.com/ultralytics/yolov5/pull/4676 * @joaodiogocosta made their first contribution in https://github.com/ultralytics/yolov5/pull/4727 * @jeanbmar made their first contribution in https://github.com/ultralytics/yolov5/pull/4728 * @Zegorax made their first contribution in https://github.com/ultralytics/yolov5/pull/4730 * @jveitchmichaelis made their first contribution in https://github.com/ultralytics/yolov5/pull/4742 * @kimnamu made their first contribution in https://github.com/ultralytics/yolov5/pull/4787 * @NauchtanRobotics made their first contribution in https://github.com/ultralytics/yolov5/pull/4893 * @SamFC10 made their first contribution in https://github.com/ultralytics/yolov5/pull/4914 * @d57montes made their first contribution in https://github.com/ultralytics/yolov5/pull/4958 * @EgOrlukha made their first contribution in https://github.com/ultralytics/yolov5/pull/5074 * @sandstorm12 made their first contribution in https://github.com/ultralytics/yolov5/pull/5112 * @qiningonline made their first contribution in https://github.com/ultralytics/yolov5/pull/5114 * @maltelorbach made their first contribution in https://github.com/ultralytics/yolov5/pull/5129 * @andreiionutdamian made their first contribution in https://github.com/ultralytics/yolov5/pull/5109
- Python
Published by glenn-jocher over 4 years ago
signature-lens - v5.0 - YOLOv5-P6 1280 models, AWS, Supervise.ly and YouTube integrations
This release implements YOLOv5-P6 models and retrained YOLOv5-P5 models. All model sizes YOLOv5s/m/l/x are now available in both P5 and P6 architectures:
- YOLOv5-P5 models (same architecture as v4.0 release): 3 output layers P3, P4, P5 at strides 8, 16, 32, trained at
--img 640bash python detect.py --weights yolov5s.pt # P5 models yolov5m.pt yolov5l.pt yolov5x.pt - YOLOv5-P6 models: 4 output layers P3, P4, P5, P6 at strides 8, 16, 32, 64 trained at
--img 1280bash python detect.py --weights yolov5s6.pt # P6 models yolov5m6.pt yolov5l6.pt yolov5x6.pt
Example usage: ```bash
Command Line
python detect.py --weights yolov5m.pt --img 640 # P5 model at 640
python detect.py --weights yolov5m6.pt --img 640 # P6 model at 640
python detect.py --weights yolov5m6.pt --img 1280 # P6 model at 1280
python
PyTorch Hub
model = torch.hub.load('ultralytics/yolov5', 'yolov5m6') # P6 model results = model(imgs, size=1280) # inference at 1280 ```
Notable Updates
- YouTube Inference: Direct inference from YouTube videos, i.e.
python detect.py --source 'https://youtu.be/NUsoVlDFqZg'. Live streaming videos and normal videos supported. (https://github.com/ultralytics/yolov5/pull/2752) - AWS Integration: Amazon AWS integration and new AWS Quickstart Guide for simple EC2 instance YOLOv5 training and resuming of interrupted Spot instances. (https://github.com/ultralytics/yolov5/pull/2185)
- Supervise.ly Integration: New integration with the Supervisely Ecosystem for training and deploying YOLOv5 models with Supervise.ly (https://github.com/ultralytics/yolov5/issues/2518)
- Improved W&B Integration: Allows saving datasets and models directly to Weights & Biases. This allows for --resume directly from W&B (useful for temporary environments like Colab), as well as enhanced visualization tools. See this blog by @AyushExel for details. (https://github.com/ultralytics/yolov5/pull/2125)
Updated Results
P6 models include an extra P6/64 output layer for detection of larger objects, and benefit the most from training at higher resolution. For this reason we trained all P5 models at 640, and all P6 models at 1280.

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](https://github.com/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`- April 11, 2021: v5.0 release: YOLOv5-P6 1280 models, AWS, Supervise.ly and YouTube integrations.
- January 5, 2021: v4.0 release: nn.SiLU() activations, Weights & Biases logging, PyTorch Hub integration.
- August 13, 2020: v3.0 release: nn.Hardswish() activations, data autodownload, native AMP.
- July 23, 2020: v2.0 release: improved model definition, training and mAP.
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](http://cocodataset.org/#upload) 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](https://cloud.google.com/compute/docs/machine-types#n1_standard_machine_types) 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](https://github.com/ultralytics/yolov5/issues/303)) includes reflection and scale augmentation. **Reproduce TTA** by `python test.py --data coco.yaml --img 1536 --iou 0.7 --augment`Changelog
Changes between previous release and this release: https://github.com/ultralytics/yolov5/compare/v4.0...v5.0 Changes since this release: https://github.com/ultralytics/yolov5/compare/v5.0...HEAD
Click a section below to expand details:
Implemented Enhancements (26)
- Return predictions as json #2703
- Single channel image trainingοΌ #2609
- Images in MPO Format are considered corrupted #2446
- Improve Validation Visualization #2384
- Add ASFF (three fuse feature layers) int the Head for V5(s,m,l,x) #2348
- Dear author, can you provide a visualization scheme for YOLOV5 feature graphs during detect.py? Thank you! #2259
- Dataloader #2201
- Update Train Custom Data wiki page #2187
- Multi-class NMS #2162
- π‘Idea: Mosaic cropping using segmentation labels #2151
- Improving Confusion Matrix Interpretability: FP and FN vectors should be switched to align with Predicted and True axis #2071
- Interpreting model YoloV5 by Grad-cam #2065
- Output optimal confidence threshold based on PR curve #2048
- is it valuable that add --cache-images option to detect.py? #2004
- I want to change the anchor box to anchor circles, where do you think the change to be made ? #1987
- Support for imgaug #1954
- Any plan for Knowledge Distillation? #1762
- Is there a wasy to run detections on a video/webcam/rtrsp, etc EVERY x SECONDS? #1742
- Can yolov5 support rotated target detection? #1728
- Deploying yolov5 to TorchServe (GPU compatible) #1681
- Why diffrent colors of bboxs? #1638
- Yet another export yolov5 models to ONNX and inference with TensorRT #1597
- Rerange the blocks of Focus Layer into
row majorto be compatible with tensorflowSpaceToDepth#413 - YouTube Livestream Detection #2752 (ben-milanko)
- Add TransformerLayer, TransformerBlock, C3TR modules #2333 (dingyiwei)
- Improved W&B integration #2125 (AyushExel)
Fixed Bugs (73)
- it seems that check\_wandb\_resume don't support multiple input files of images. [\#2716](https://github.com/ultralytics/yolov5/issues/2716) - ip camera or web camera. error: \(-215:Assertion failed\) !ss ize.empty\(\) in function 'cv::resize' [\#2709](https://github.com/ultralytics/yolov5/issues/2709) - Model predict with forward will fail if PIL image does not have filename attribute [\#2702](https://github.com/ultralytics/yolov5/issues/2702) - βQuestion Whenever i try to run my model i run into this error AttributeError: 'NoneType' object has no attribute 'startswith' from wandbutils.py line 161 I wonder why ? Any workaround or fix [\#2697](https://github.com/ultralytics/yolov5/issues/2697) - coremltools no longer included in docker container [\#2686](https://github.com/ultralytics/yolov5/issues/2686) - 'LoadImages' path handling appears to be broken [\#2618](https://github.com/ultralytics/yolov5/issues/2618) - CUDA memory leak [\#2586](https://github.com/ultralytics/yolov5/issues/2586) - UnboundLocalError: local variable 'wandb\_logger' referenced before assignment [\#2562](https://github.com/ultralytics/yolov5/issues/2562) - RuntimeError: CUDA error: CUBLAS\_STATUS\_INTERNAL\_ERROR when calling `cublasCreate\(handle\)` [\#2417](https://github.com/ultralytics/yolov5/issues/2417) - CUDNN Mapping Error [\#2415](https://github.com/ultralytics/yolov5/issues/2415) - Can't train in DDP mode after recent update [\#2405](https://github.com/ultralytics/yolov5/issues/2405) - a bug about function bbox\_iou\(\) [\#2376](https://github.com/ultralytics/yolov5/issues/2376) - Training got stuck when I used DistributedDataParallel mode but dataParallel mode is useful [\#2375](https://github.com/ultralytics/yolov5/issues/2375) - Something wrong with fixing ema [\#2343](https://github.com/ultralytics/yolov5/issues/2343) - Conversion to CoreML fails when running with --batch 2 [\#2322](https://github.com/ultralytics/yolov5/issues/2322) - The "fitness" function in train.py. [\#2303](https://github.com/ultralytics/yolov5/issues/2303) - Error "Directory already existed" happen when training with multiple GPUs [\#2275](https://github.com/ultralytics/yolov5/issues/2275) - self.balance = {3: \[4.0, 1.0, 0.4\], 4: \[4.0, 1.0, 0.25, 0.06\], 5: \[4.0, 1.0, 0.25, 0.06, .02\]}\[det.nl\] [\#2255](https://github.com/ultralytics/yolov5/issues/2255) - Cannot run model with URL as argument [\#2246](https://github.com/ultralytics/yolov5/issues/2246) - Yolov5 crashes with RTSP stream analysis [\#2226](https://github.com/ultralytics/yolov5/issues/2226) - interruption during evolve [\#2218](https://github.com/ultralytics/yolov5/issues/2218) - I am a student of Tsinghua University, doing research in Tencent. When I train with yolov5, the following problems appearοΌSincerely hope to get help, [\#2203](https://github.com/ultralytics/yolov5/issues/2203) - Frame Loss in video stream [\#2196](https://github.com/ultralytics/yolov5/issues/2196) - wandb.ai not logging epochs vs metrics/losses instead uses step [\#2175](https://github.com/ultralytics/yolov5/issues/2175) - Evolve is leaking files [\#2142](https://github.com/ultralytics/yolov5/issues/2142) - Issue in torchscript model inference [\#2129](https://github.com/ultralytics/yolov5/issues/2129) - RuntimeError: CUDA error: device-side assert triggered [\#2124](https://github.com/ultralytics/yolov5/issues/2124) - In 'evolve' mode, If the original hyp is 0, It will never update [\#2122](https://github.com/ultralytics/yolov5/issues/2122) - Caching image path [\#2121](https://github.com/ultralytics/yolov5/issues/2121) - can't convert cuda:0 device type tensor to numpy. Use Tensor.cpu\(\) to copy the tensor to host memory first [\#2106](https://github.com/ultralytics/yolov5/issues/2106) - Error in creating model with Ghost modules [\#2081](https://github.com/ultralytics/yolov5/issues/2081) - TypeError: int\(\) can't convert non-string with explicit base [\#2066](https://github.com/ultralytics/yolov5/issues/2066) - \[Pytorch Hub\] Hub CI is broken with latest master of yolo5 example. [\#2050](https://github.com/ultralytics/yolov5/issues/2050) - Problems when downloading requirements [\#2047](https://github.com/ultralytics/yolov5/issues/2047) - detect.py - images always saved [\#2029](https://github.com/ultralytics/yolov5/issues/2029) - thop and pycocotools shouldn't be hard requirements to train a model [\#2014](https://github.com/ultralytics/yolov5/issues/2014) - CoreML export failure [\#2007](https://github.com/ultralytics/yolov5/issues/2007) - loss function like has a bug [\#1988](https://github.com/ultralytics/yolov5/issues/1988) - CoreML export failure: unexpected number of inputs for node x.2 \(\_convolution\): 13 [\#1945](https://github.com/ultralytics/yolov5/issues/1945) - torch.nn.modules.module.ModuleAttributeError: 'Hardswish' object has no attribute 'inplace' [\#1939](https://github.com/ultralytics/yolov5/issues/1939) - runs not logging separately in wandb.ai [\#1937](https://github.com/ultralytics/yolov5/issues/1937) - wrong batch size after --resume on multiple GPUs [\#1936](https://github.com/ultralytics/yolov5/issues/1936) - TypeError: int\(\) can't convert non-string with explicit base [\#1927](https://github.com/ultralytics/yolov5/issues/1927) - RuntimeError: DataLoader worker [\#1908](https://github.com/ultralytics/yolov5/issues/1908) - Unable to export weights into onnx [\#1900](https://github.com/ultralytics/yolov5/issues/1900) - CUDA Initialization Warning on Docker when not passing in gpu [\#1891](https://github.com/ultralytics/yolov5/issues/1891) - Issue with github api rate limiting [\#1890](https://github.com/ultralytics/yolov5/issues/1890) - wandb: ERROR Error while calling W&B API: Error 1062: Duplicate entry '189160-gbp6y2en' for key 'PRIMARY' \(\Closed Issues (42)
- Can feed tensor the model [\#2722](https://github.com/ultralytics/yolov5/issues/2722) - hello, everyone, In order to modify the network more conveniently based on this rep., I restructure the network part, which is divided into backbone, neck, head [\#2710](https://github.com/ultralytics/yolov5/issues/2710) - Differentiate between normal banner and LED banner [\#2647](https://github.com/ultralytics/yolov5/issues/2647) - π Hello @Wilson-inclaims, thank you for your interest in π YOLOv5! Please visit our βοΈ \[Tutorials\]\(https://github.com/ultralytics/yolov5/wiki\#tutorials\) to get started, where you can find quickstart guides for simple tasks like \[Custom Data Training\]\(https://github.com/ultralytics/yolov5/wiki/Train-Custom-Data\) all the way to advanced concepts like \[Hyperparameter Evolution\]\(https://github.com/ultralytics/yolov5/issues/607\). [\#2516](https://github.com/ultralytics/yolov5/issues/2516) - I got a runtimerror when I run classifier.py to train my own dataset. [\#2438](https://github.com/ultralytics/yolov5/issues/2438) - RuntimeError: a view of a leaf Variable that requires grad is being used in an in-place operation. [\#2403](https://github.com/ultralytics/yolov5/issues/2403) - ππ‘ YOLOv5 Study: batch size [\#2377](https://github.com/ultralytics/yolov5/issues/2377) - export.py export onnx for gpu failed [\#2365](https://github.com/ultralytics/yolov5/issues/2365) - in \_ddp\_init\_helper expect\_sparse\_gradient\) RuntimeError: Model replicas must have an equal number of parameters. [\#2311](https://github.com/ultralytics/yolov5/issues/2311) - Custom dataset training using YOLOv5 [\#2296](https://github.com/ultralytics/yolov5/issues/2296) - label format [\#2293](https://github.com/ultralytics/yolov5/issues/2293) - MAP NOT PRINTING [\#2283](https://github.com/ultralytics/yolov5/issues/2283) - Why didn't I get results in my video test? [\#2277](https://github.com/ultralytics/yolov5/issues/2277) - Label Missing: for images and labels... 203 found, 50 missing, 0 empty, 0 corrupted: 100% [\#2268](https://github.com/ultralytics/yolov5/issues/2268) - Pytorch Hub inference returns different results than detect.py [\#2224](https://github.com/ultralytics/yolov5/issues/2224) - yolov5x train.py error [\#2181](https://github.com/ultralytics/yolov5/issues/2181) - degrees is radians? [\#2160](https://github.com/ultralytics/yolov5/issues/2160) - AssertionError: Image Not Found [\#2130](https://github.com/ultralytics/yolov5/issues/2130) - How to load custom trained model to detect sample image? [\#2097](https://github.com/ultralytics/yolov5/issues/2097) - YOLOv5 installed failed on Macbook M1 [\#2075](https://github.com/ultralytics/yolov5/issues/2075) - How to set the number of seconds to detect once [\#2072](https://github.com/ultralytics/yolov5/issues/2072) - Where the changes should be made to detect horizontal line and vertical lines? Can anyone discus elaborately? [\#2070](https://github.com/ultralytics/yolov5/issues/2070) - Video inference stops after a certain number of frames [\#2064](https://github.com/ultralytics/yolov5/issues/2064) - Can't YOLOV5 be detected with multithreading? [\#1979](https://github.com/ultralytics/yolov5/issues/1979) - I want to make a images file what divided images in test.py [\#1931](https://github.com/ultralytics/yolov5/issues/1931) - different image size w/ torchscript windows c++ [\#1920](https://github.com/ultralytics/yolov5/issues/1920) - run detect the result οΌthe Image don't have box [\#1910](https://github.com/ultralytics/yolov5/issues/1910) - resume problem [\#1884](https://github.com/ultralytics/yolov5/issues/1884) - Detect source as .txt error [\#1877](https://github.com/ultralytics/yolov5/issues/1877) - yolov5 v4.0 tensorrt deployment [\#1874](https://github.com/ultralytics/yolov5/issues/1874) - Hyperparameter Evolution: load dataset every time [\#1864](https://github.com/ultralytics/yolov5/issues/1864) - Caching images problem [\#1862](https://github.com/ultralytics/yolov5/issues/1862) - About Release v4.0 [\#1841](https://github.com/ultralytics/yolov5/issues/1841) - @glenn best practices for running trained YOLOv5 models in new python environments is to use PyTorch Hub. See PyTorch Hub Tutorial: [\#1789](https://github.com/ultralytics/yolov5/issues/1789) - yolov5x.pt is not compatible with ./models/yolov5x.yam [\#1721](https://github.com/ultralytics/yolov5/issues/1721) - Parameter '--device' doesn't work! [\#1706](https://github.com/ultralytics/yolov5/issues/1706) - Thank you for your issue! [\#1687](https://github.com/ultralytics/yolov5/issues/1687) - Convert the label format [\#1652](https://github.com/ultralytics/yolov5/issues/1652) - Autorun not working [\#1599](https://github.com/ultralytics/yolov5/issues/1599) - When model.model\[-1\]. export = False in export.py, coreml export failing. Please check. [\#1491](https://github.com/ultralytics/yolov5/issues/1491) - Error 'AttributeError: 'str' object has no attribute 'get'' at running train.py [\#1479](https://github.com/ultralytics/yolov5/issues/1479) - Docker image is not working, ```torch.nn.modules.module.ModuleAttributeError: 'Hardswish' object has no attribute 'inplace```' [\#1327](https://github.com/ultralytics/yolov5/issues/1327)Merged Pull Requests (172)
- Tensorboard model visualization bug fix [\#2758](https://github.com/ultralytics/yolov5/pull/2758) ([glenn-jocher](https://github.com/glenn-jocher)) - utils/wandb\_logging PEP8 reformat [\#2755](https://github.com/ultralytics/yolov5/pull/2755) ([glenn-jocher](https://github.com/glenn-jocher)) - torch.cuda.amp bug fix [\#2750](https://github.com/ultralytics/yolov5/pull/2750) ([glenn-jocher](https://github.com/glenn-jocher)) - autocast enable=torch.cuda.is\_available\(\) [\#2748](https://github.com/ultralytics/yolov5/pull/2748) ([glenn-jocher](https://github.com/glenn-jocher)) - Add Hub results.pandas\(\) method [\#2725](https://github.com/ultralytics/yolov5/pull/2725) ([glenn-jocher](https://github.com/glenn-jocher)) - Update README with collapsable notes [\#2721](https://github.com/ultralytics/yolov5/pull/2721) ([glenn-jocher](https://github.com/glenn-jocher)) - Fix \#2716: Add support for list-of-directory data format for wandb [\#2719](https://github.com/ultralytics/yolov5/pull/2719) ([AyushExel](https://github.com/AyushExel)) - Updated filename attributes for YOLOv5 Hub BytesIO [\#2718](https://github.com/ultralytics/yolov5/pull/2718) ([glenn-jocher](https://github.com/glenn-jocher)) - Updated filename attributes for YOLOv5 Hub results [\#2708](https://github.com/ultralytics/yolov5/pull/2708) ([glenn-jocher](https://github.com/glenn-jocher)) - pip install coremltools onnx [\#2690](https://github.com/ultralytics/yolov5/pull/2690) ([glenn-jocher](https://github.com/glenn-jocher)) - autoShape forward im = np.asarray\(im\) \# to numpy [\#2689](https://github.com/ultralytics/yolov5/pull/2689) ([glenn-jocher](https://github.com/glenn-jocher)) - PyTorch Hub model.save\(\) increment as runs/hub/exp [\#2684](https://github.com/ultralytics/yolov5/pull/2684) ([glenn-jocher](https://github.com/glenn-jocher)) - Fix: \#2674 [\#2683](https://github.com/ultralytics/yolov5/pull/2683) ([AyushExel](https://github.com/AyushExel)) - Update README with Tips for Best Results tutorial [\#2682](https://github.com/ultralytics/yolov5/pull/2682) ([glenn-jocher](https://github.com/glenn-jocher)) - Disallow resume for dataset uploading [\#2657](https://github.com/ultralytics/yolov5/pull/2657) ([AyushExel](https://github.com/AyushExel)) - Speed profiling improvements [\#2648](https://github.com/ultralytics/yolov5/pull/2648) ([glenn-jocher](https://github.com/glenn-jocher)) - Add tqdm pbar.close\(\) [\#2644](https://github.com/ultralytics/yolov5/pull/2644) ([zzttqu](https://github.com/zzttqu)) - PyTorch Hub amp.autocast\(\) inference [\#2641](https://github.com/ultralytics/yolov5/pull/2641) ([glenn-jocher](https://github.com/glenn-jocher)) - PyTorch Hub custom model to CUDA device fix [\#2636](https://github.com/ultralytics/yolov5/pull/2636) ([glenn-jocher](https://github.com/glenn-jocher)) - Improve git\_describe\(\) fix 1 [\#2635](https://github.com/ultralytics/yolov5/pull/2635) ([glenn-jocher](https://github.com/glenn-jocher)) - Fix: evolve with wandb [\#2634](https://github.com/ultralytics/yolov5/pull/2634) ([AyushExel](https://github.com/AyushExel)) - Improve git\_describe\(\) [\#2633](https://github.com/ultralytics/yolov5/pull/2633) ([glenn-jocher](https://github.com/glenn-jocher)) - FROM nvcr.io/nvidia/pytorch:21.03-py3 [\#2623](https://github.com/ultralytics/yolov5/pull/2623) ([glenn-jocher](https://github.com/glenn-jocher)) - Remove conflicting nvidia-tensorboard package [\#2622](https://github.com/ultralytics/yolov5/pull/2622) ([glenn-jocher](https://github.com/glenn-jocher)) - Update Detections\(\) self.n comment [\#2620](https://github.com/ultralytics/yolov5/pull/2620) ([glenn-jocher](https://github.com/glenn-jocher)) - Update detections\(\) self.t = tuple\(\) [\#2617](https://github.com/ultralytics/yolov5/pull/2617) ([glenn-jocher](https://github.com/glenn-jocher)) - Create date\_modified\(\) [\#2616](https://github.com/ultralytics/yolov5/pull/2616) ([glenn-jocher](https://github.com/glenn-jocher)) - Added '.mpo' to supported image formats [\#2615](https://github.com/ultralytics/yolov5/pull/2615) ([maxupp](https://github.com/maxupp)) - Fix Indentation in test.py [\#2614](https://github.com/ultralytics/yolov5/pull/2614) ([AyushExel](https://github.com/AyushExel)) - Update git\_describe\(\) for remote dir usage [\#2606](https://github.com/ultralytics/yolov5/pull/2606) ([glenn-jocher](https://github.com/glenn-jocher)) - Remove Cython from requirements.txt [\#2604](https://github.com/ultralytics/yolov5/pull/2604) ([glenn-jocher](https://github.com/glenn-jocher)) - resume.py fix DDP typo [\#2603](https://github.com/ultralytics/yolov5/pull/2603) ([glenn-jocher](https://github.com/glenn-jocher)) - Update segment2box\(\) comment [\#2600](https://github.com/ultralytics/yolov5/pull/2600) ([glenn-jocher](https://github.com/glenn-jocher)) - Save webcam results, add --nosave option [\#2598](https://github.com/ultralytics/yolov5/pull/2598) ([glenn-jocher](https://github.com/glenn-jocher)) - YOLOv5 PyTorch Hub models \>\> check\_requirements\(\) [\#2592](https://github.com/ultralytics/yolov5/pull/2592) ([glenn-jocher](https://github.com/glenn-jocher)) - YOLOv5 PyTorch Hub models \>\> check\_requirements\(\) [\#2591](https://github.com/ultralytics/yolov5/pull/2591) ([glenn-jocher](https://github.com/glenn-jocher)) - YOLOv5 PyTorch Hub models \>\> check\_requirements\(\) [\#2588](https://github.com/ultralytics/yolov5/pull/2588) ([glenn-jocher](https://github.com/glenn-jocher)) - W&B DDP fix 2 [\#2587](https://github.com/ultralytics/yolov5/pull/2587) ([glenn-jocher](https://github.com/glenn-jocher)) - W&B resume ddp from run link fix [\#2579](https://github.com/ultralytics/yolov5/pull/2579) ([AyushExel](https://github.com/AyushExel)) - YOLOv5 PyTorch Hub models \>\> check\_requirements\(\) [\#2577](https://github.com/ultralytics/yolov5/pull/2577) ([glenn-jocher](https://github.com/glenn-jocher)) - Update tensorboard\>=2.4.1 [\#2576](https://github.com/ultralytics/yolov5/pull/2576) ([glenn-jocher](https://github.com/glenn-jocher)) - Enhanced check\_requirements\(\) with auto-install [\#2575](https://github.com/ultralytics/yolov5/pull/2575) ([glenn-jocher](https://github.com/glenn-jocher)) - W&B DDP fix [\#2574](https://github.com/ultralytics/yolov5/pull/2574) ([AyushExel](https://github.com/AyushExel)) - check\_requirements\(\) exclude pycocotools, thop [\#2571](https://github.com/ultralytics/yolov5/pull/2571) ([glenn-jocher](https://github.com/glenn-jocher)) - Update Detections\(\) times=None [\#2570](https://github.com/ultralytics/yolov5/pull/2570) ([glenn-jocher](https://github.com/glenn-jocher)) - Add opencv-contrib-python to requirements.txt [\#2564](https://github.com/ultralytics/yolov5/pull/2564) ([youngjinshin](https://github.com/youngjinshin)) - Supervisely Ecosystem [\#2519](https://github.com/ultralytics/yolov5/pull/2519) ([mkolomeychenko](https://github.com/mkolomeychenko)) - add option to disable half precision when testing [\#2507](https://github.com/ultralytics/yolov5/pull/2507) ([bfineran](https://github.com/bfineran)) - PyTorch Hub models default to CUDA:0 if available [\#2472](https://github.com/ultralytics/yolov5/pull/2472) ([glenn-jocher](https://github.com/glenn-jocher)) - Scipy kmeans-robust autoanchor update [\#2470](https://github.com/ultralytics/yolov5/pull/2470) ([glenn-jocher](https://github.com/glenn-jocher)) - Be able to create dataset from annotated images only [\#2466](https://github.com/ultralytics/yolov5/pull/2466) ([kinoute](https://github.com/kinoute)) - autoShape\(\) speed profiling update [\#2460](https://github.com/ultralytics/yolov5/pull/2460) ([glenn-jocher](https://github.com/glenn-jocher)) - Add autoShape\(\) speed profiling [\#2459](https://github.com/ultralytics/yolov5/pull/2459) ([glenn-jocher](https://github.com/glenn-jocher)) - CVPR 2021 Argoverse-HD autodownload curl [\#2455](https://github.com/ultralytics/yolov5/pull/2455) ([glenn-jocher](https://github.com/glenn-jocher)) - labels.jpg class names [\#2454](https://github.com/ultralytics/yolov5/pull/2454) ([glenn-jocher](https://github.com/glenn-jocher)) - Update test.py --task train val study [\#2453](https://github.com/ultralytics/yolov5/pull/2453) ([glenn-jocher](https://github.com/glenn-jocher)) - Integer printout [\#2450](https://github.com/ultralytics/yolov5/pull/2450) ([glenn-jocher](https://github.com/glenn-jocher)) - DDP after autoanchor reorder [\#2421](https://github.com/ultralytics/yolov5/pull/2421) ([glenn-jocher](https://github.com/glenn-jocher)) - CVPR 2021 Argoverse-HD autodownload fix [\#2418](https://github.com/ultralytics/yolov5/pull/2418) ([glenn-jocher](https://github.com/glenn-jocher)) - CVPR 2021 Argoverse-HD dataset autodownload support [\#2400](https://github.com/ultralytics/yolov5/pull/2400) ([karthiksharma98](https://github.com/karthiksharma98)) - GCP sudo docker userdata.sh [\#2393](https://github.com/ultralytics/yolov5/pull/2393) ([glenn-jocher](https://github.com/glenn-jocher)) - AWS wait && echo "All tasks done." [\#2391](https://github.com/ultralytics/yolov5/pull/2391) ([glenn-jocher](https://github.com/glenn-jocher)) - bbox\_iou\(\) stability and speed improvements [\#2385](https://github.com/ultralytics/yolov5/pull/2385) ([glenn-jocher](https://github.com/glenn-jocher)) - image weights compatible faster random index generator v2 for mosaic β¦ [\#2383](https://github.com/ultralytics/yolov5/pull/2383) ([developer0hye](https://github.com/developer0hye)) - ENV HOME=/usr/src/app [\#2382](https://github.com/ultralytics/yolov5/pull/2382) ([glenn-jocher](https://github.com/glenn-jocher)) - --no-cache notebook [\#2381](https://github.com/ultralytics/yolov5/pull/2381) ([glenn-jocher](https://github.com/glenn-jocher)) - Resume with custom anchors fix [\#2361](https://github.com/ultralytics/yolov5/pull/2361) ([glenn-jocher](https://github.com/glenn-jocher)) - Anchor override for training from scratch [\#2350](https://github.com/ultralytics/yolov5/pull/2350) ([glenn-jocher](https://github.com/glenn-jocher)) - faster random index generator for mosaic augmentation [\#2345](https://github.com/ultralytics/yolov5/pull/2345) ([developer0hye](https://github.com/developer0hye)) - Add --label-smoothing eps argument to train.py \(default 0.0\) [\#2344](https://github.com/ultralytics/yolov5/pull/2344) ([ptran1203](https://github.com/ptran1203)) - FROM nvcr.io/nvidia/pytorch:21.02-py3 [\#2341](https://github.com/ultralytics/yolov5/pull/2341) ([glenn-jocher](https://github.com/glenn-jocher)) - EMA bug fix 2 [\#2330](https://github.com/ultralytics/yolov5/pull/2330) ([glenn-jocher](https://github.com/glenn-jocher)) - remove TTA 1 pixel offset [\#2325](https://github.com/ultralytics/yolov5/pull/2325) ([glenn-jocher](https://github.com/glenn-jocher)) - Update Dockerfile install htop [\#2320](https://github.com/ultralytics/yolov5/pull/2320) ([glenn-jocher](https://github.com/glenn-jocher)) - Update test.py [\#2319](https://github.com/ultralytics/yolov5/pull/2319) ([glenn-jocher](https://github.com/glenn-jocher)) - final\_epoch EMA bug fix [\#2317](https://github.com/ultralytics/yolov5/pull/2317) ([glenn-jocher](https://github.com/glenn-jocher)) - Fix labels being missed when image extension appears twice in filename [\#2300](https://github.com/ultralytics/yolov5/pull/2300) ([idenc](https://github.com/idenc)) - W&B entity support [\#2298](https://github.com/ultralytics/yolov5/pull/2298) ([toretak](https://github.com/toretak)) - GPU export options [\#2297](https://github.com/ultralytics/yolov5/pull/2297) ([toretak](https://github.com/toretak)) - Improved model+EMA checkpointing fix [\#2295](https://github.com/ultralytics/yolov5/pull/2295) ([glenn-jocher](https://github.com/glenn-jocher)) - Improved model+EMA checkpointing [\#2292](https://github.com/ultralytics/yolov5/pull/2292) ([glenn-jocher](https://github.com/glenn-jocher)) - Update train.py [\#2290](https://github.com/ultralytics/yolov5/pull/2290) ([glenn-jocher](https://github.com/glenn-jocher)) - Amazon AWS EC2 startup and re-startup scripts patch [\#2282](https://github.com/ultralytics/yolov5/pull/2282) ([glenn-jocher](https://github.com/glenn-jocher)) - FLOPS min stride 32 [\#2276](https://github.com/ultralytics/yolov5/pull/2276) ([xiaowo1996](https://github.com/xiaowo1996)) - Update Dockerfile with apt install zip [\#2274](https://github.com/ultralytics/yolov5/pull/2274) ([glenn-jocher](https://github.com/glenn-jocher)) - Update greetings.yml for auto-rebase on PR [\#2272](https://github.com/ultralytics/yolov5/pull/2272) ([glenn-jocher](https://github.com/glenn-jocher)) - Update minimum stride to 32 [\#2266](https://github.com/ultralytics/yolov5/pull/2266) ([glenn-jocher](https://github.com/glenn-jocher)) - Robust objectness loss balancing [\#2256](https://github.com/ultralytics/yolov5/pull/2256) ([glenn-jocher](https://github.com/glenn-jocher)) - Update inference default to multi\_label=False [\#2252](https://github.com/ultralytics/yolov5/pull/2252) ([glenn-jocher](https://github.com/glenn-jocher)) - Improved hubconf.py CI tests [\#2251](https://github.com/ultralytics/yolov5/pull/2251) ([glenn-jocher](https://github.com/glenn-jocher)) - YOLOv5 Hub URL inference bug fix [\#2250](https://github.com/ultralytics/yolov5/pull/2250) ([glenn-jocher](https://github.com/glenn-jocher)) - Unified hub and detect.py box and labels plotting [\#2243](https://github.com/ultralytics/yolov5/pull/2243) ([kinoute](https://github.com/kinoute)) - Add isdocker\(\) [\#2232](https://github.com/ultralytics/yolov5/pull/2232) ([glenn-jocher](https://github.com/glenn-jocher)) - Add check\_imshow\(\) [\#2231](https://github.com/ultralytics/yolov5/pull/2231) ([glenn-jocher](https://github.com/glenn-jocher)) - Update CI badge [\#2230](https://github.com/ultralytics/yolov5/pull/2230) ([glenn-jocher](https://github.com/glenn-jocher)) - Update yolo.py channel array [\#2223](https://github.com/ultralytics/yolov5/pull/2223) ([glenn-jocher](https://github.com/glenn-jocher)) - LoadStreams\(\) frame loss bug fix [\#2222](https://github.com/ultralytics/yolov5/pull/2222) ([glenn-jocher](https://github.com/glenn-jocher)) - TTA augument boxes one pixel shifted in de-flip ud and lr [\#2219](https://github.com/ultralytics/yolov5/pull/2219) ([VdLMV](https://github.com/VdLMV)) - Dynamic ONNX engine generation [\#2208](https://github.com/ultralytics/yolov5/pull/2208) ([aditya-dl](https://github.com/aditya-dl)) - YOLOv5 PyTorch Hub results.save\(\) method retains filenames [\#2194](https://github.com/ultralytics/yolov5/pull/2194) ([dan0nchik](https://github.com/dan0nchik)) - YOLOv5 Segmentation Dataloader Updates [\#2188](https://github.com/ultralytics/yolov5/pull/2188) ([glenn-jocher](https://github.com/glenn-jocher)) - Amazon AWS EC2 startup and re-startup scripts [\#2185](https://github.com/ultralytics/yolov5/pull/2185) ([glenn-jocher](https://github.com/glenn-jocher)) - PyTorch Hub results.save\('path/to/dir'\) [\#2179](https://github.com/ultralytics/yolov5/pull/2179) ([glenn-jocher](https://github.com/glenn-jocher)) - Changed socket port and added timeout [\#2176](https://github.com/ultralytics/yolov5/pull/2176) ([NanoCode012](https://github.com/NanoCode012)) - Update utils/datasets.py to support .webp files [\#2174](https://github.com/ultralytics/yolov5/pull/2174) ([Transigent](https://github.com/Transigent)) - Update requirements.txt [\#2173](https://github.com/ultralytics/yolov5/pull/2173) ([glenn-jocher](https://github.com/glenn-jocher)) - Update detect.py [\#2167](https://github.com/ultralytics/yolov5/pull/2167) ([ab-101](https://github.com/ab-101)) - Update data-autodownload background tasks [\#2154](https://github.com/ultralytics/yolov5/pull/2154) ([glenn-jocher](https://github.com/glenn-jocher)) - Linear LR scheduler option [\#2150](https://github.com/ultralytics/yolov5/pull/2150) ([glenn-jocher](https://github.com/glenn-jocher)) - Update train.py batch\_size \* 2 [\#2149](https://github.com/ultralytics/yolov5/pull/2149) ([glenn-jocher](https://github.com/glenn-jocher)) - Update train.py test batch\_size [\#2148](https://github.com/ultralytics/yolov5/pull/2148) ([glenn-jocher](https://github.com/glenn-jocher)) - LoadImages\(\) pathlib update [\#2140](https://github.com/ultralytics/yolov5/pull/2140) ([glenn-jocher](https://github.com/glenn-jocher)) - Unique \*.cache filenames fix [\#2134](https://github.com/ultralytics/yolov5/pull/2134) ([train255](https://github.com/train255)) - Making inference thread-safe by avoiding mutable state in Detect class [\#2120](https://github.com/ultralytics/yolov5/pull/2120) ([olehb](https://github.com/olehb)) - Make normalized confusion matrix more interpretable [\#2114](https://github.com/ultralytics/yolov5/pull/2114) ([rbavery](https://github.com/rbavery)) - Update plot\_study\(\) [\#2112](https://github.com/ultralytics/yolov5/pull/2112) ([glenn-jocher](https://github.com/glenn-jocher)) - Update test.py --task speed and study [\#2099](https://github.com/ultralytics/yolov5/pull/2099) ([glenn-jocher](https://github.com/glenn-jocher)) - Add variable-stride inference support [\#2091](https://github.com/ultralytics/yolov5/pull/2091) ([glenn-jocher](https://github.com/glenn-jocher)) - Add Kaggle badge [\#2090](https://github.com/ultralytics/yolov5/pull/2090) ([glenn-jocher](https://github.com/glenn-jocher)) - Add Amazon Deep Learning AMI environment [\#2085](https://github.com/ultralytics/yolov5/pull/2085) ([glenn-jocher](https://github.com/glenn-jocher)) - Add YOLOv5-P6 models [\#2083](https://github.com/ultralytics/yolov5/pull/2083) ([glenn-jocher](https://github.com/glenn-jocher)) - GhostConv update [\#2082](https://github.com/ultralytics/yolov5/pull/2082) ([glenn-jocher](https://github.com/glenn-jocher)) - W&B epoch logging update [\#2073](https://github.com/ultralytics/yolov5/pull/2073) ([glenn-jocher](https://github.com/glenn-jocher)) - Update to colors.TABLEAU\_COLORS [\#2069](https://github.com/ultralytics/yolov5/pull/2069) ([glenn-jocher](https://github.com/glenn-jocher)) - Update run-once lines [\#2058](https://github.com/ultralytics/yolov5/pull/2058) ([glenn-jocher](https://github.com/glenn-jocher)) - Metric-Confidence plots feature addition [\#2057](https://github.com/ultralytics/yolov5/pull/2057) ([glenn-jocher](https://github.com/glenn-jocher)) - Add histogram equalization fcn [\#2049](https://github.com/ultralytics/yolov5/pull/2049) ([glenn-jocher](https://github.com/glenn-jocher)) - Confusion matrix native image-space fix [\#2046](https://github.com/ultralytics/yolov5/pull/2046) ([ramonhollands](https://github.com/ramonhollands)) - Check im.format during dataset caching [\#2042](https://github.com/ultralytics/yolov5/pull/2042) ([glenn-jocher](https://github.com/glenn-jocher)) - Add exclude tuple to check\_requirements\(\) [\#2041](https://github.com/ultralytics/yolov5/pull/2041) ([glenn-jocher](https://github.com/glenn-jocher)) - data-autodownload background tasks [\#2034](https://github.com/ultralytics/yolov5/pull/2034) ([glenn-jocher](https://github.com/glenn-jocher)) - Docker pyYAML\>=5.3.1 fix [\#2031](https://github.com/ultralytics/yolov5/pull/2031) ([glenn-jocher](https://github.com/glenn-jocher)) - PyYAML==5.4.1 [\#2030](https://github.com/ultralytics/yolov5/pull/2030) ([glenn-jocher](https://github.com/glenn-jocher)) - Update autoshape .print\(\) and .save\(\) [\#2022](https://github.com/ultralytics/yolov5/pull/2022) ([glenn-jocher](https://github.com/glenn-jocher)) - Update requirements.txt [\#2021](https://github.com/ultralytics/yolov5/pull/2021) ([glenn-jocher](https://github.com/glenn-jocher)) - Update general.py check\_git\_status\(\) fix [\#2020](https://github.com/ultralytics/yolov5/pull/2020) ([glenn-jocher](https://github.com/glenn-jocher)) - Update inference multiple-counting [\#2019](https://github.com/ultralytics/yolov5/pull/2019) ([glenn-jocher](https://github.com/glenn-jocher)) - Update ci-testing.yml --img 128 [\#2018](https://github.com/ultralytics/yolov5/pull/2018) ([glenn-jocher](https://github.com/glenn-jocher)) - Update google\_utils.py attempt\_download\(\) fix [\#2017](https://github.com/ultralytics/yolov5/pull/2017) ([glenn-jocher](https://github.com/glenn-jocher)) - Update Dockerfile [\#2016](https://github.com/ultralytics/yolov5/pull/2016) ([glenn-jocher](https://github.com/glenn-jocher)) - check\_git\_status\(\) Windows fix [\#2015](https://github.com/ultralytics/yolov5/pull/2015) ([glenn-jocher](https://github.com/glenn-jocher)) - --verbose on final\_epoch [\#1997](https://github.com/ultralytics/yolov5/pull/1997) ([glenn-jocher](https://github.com/glenn-jocher)) - Add xywhn2xyxy\(\) [\#1983](https://github.com/ultralytics/yolov5/pull/1983) ([glenn-jocher](https://github.com/glenn-jocher)) - Update Dockerfile [\#1982](https://github.com/ultralytics/yolov5/pull/1982) ([glenn-jocher](https://github.com/glenn-jocher)) - check\_git\_status\(\) asserts [\#1977](https://github.com/ultralytics/yolov5/pull/1977) ([glenn-jocher](https://github.com/glenn-jocher)) - Update train.py [\#1972](https://github.com/ultralytics/yolov5/pull/1972) ([Anon-Artist](https://github.com/Anon-Artist)) - Update autoanchor.py [\#1971](https://github.com/ultralytics/yolov5/pull/1971) ([Anon-Artist](https://github.com/Anon-Artist)) - Update yolo.py [\#1970](https://github.com/ultralytics/yolov5/pull/1970) ([Anon-Artist](https://github.com/Anon-Artist)) - Update test.py [\#1969](https://github.com/ultralytics/yolov5/pull/1969) ([Anon-Artist](https://github.com/Anon-Artist)) - Update plots.py [\#1968](https://github.com/ultralytics/yolov5/pull/1968) ([Anon-Artist](https://github.com/Anon-Artist)) - check\_git\_status\(\) when not exist /workspace [\#1966](https://github.com/ultralytics/yolov5/pull/1966) ([glenn-jocher](https://github.com/glenn-jocher)) - Security Fix for Arbitrary Code Execution - huntr.dev [\#1962](https://github.com/ultralytics/yolov5/pull/1962) ([huntr-helper](https://github.com/huntr-helper)) - prevent check\_git\_status\(\) in docker images [\#1951](https://github.com/ultralytics/yolov5/pull/1951) ([glenn-jocher](https://github.com/glenn-jocher)) - Add ComputeLoss\(\) class [\#1950](https://github.com/ultralytics/yolov5/pull/1950) ([glenn-jocher](https://github.com/glenn-jocher)) - W&B mosaic log bug fix [\#1949](https://github.com/ultralytics/yolov5/pull/1949) ([glenn-jocher](https://github.com/glenn-jocher)) - Start setting up the improved W&B integration [\#1948](https://github.com/ultralytics/yolov5/pull/1948) ([AyushExel](https://github.com/AyushExel)) - W&B log epoch [\#1946](https://github.com/ultralytics/yolov5/pull/1946) ([glenn-jocher](https://github.com/glenn-jocher)) - Daemon thread mosaic plots fix [\#1943](https://github.com/ultralytics/yolov5/pull/1943) ([glenn-jocher](https://github.com/glenn-jocher)) - Fix batch-size on resume for multi-gpu [\#1942](https://github.com/ultralytics/yolov5/pull/1942) ([NanoCode012](https://github.com/NanoCode012)) - Add nn.SiLU inplace in attempt\_load\(\) [\#1940](https://github.com/ultralytics/yolov5/pull/1940) ([1991wangliang](https://github.com/1991wangliang)) - GitHub API rate limit fallback [\#1930](https://github.com/ultralytics/yolov5/pull/1930) ([glenn-jocher](https://github.com/glenn-jocher)) - check\_git\_status\(\) bug fix [\#1925](https://github.com/ultralytics/yolov5/pull/1925) ([glenn-jocher](https://github.com/glenn-jocher)) - check\_git\_status\(\) improvements [\#1916](https://github.com/ultralytics/yolov5/pull/1916) ([glenn-jocher](https://github.com/glenn-jocher)) - Colorstr\(\) updates [\#1909](https://github.com/ultralytics/yolov5/pull/1909) ([glenn-jocher](https://github.com/glenn-jocher)) - PyTorch Hub results.render\(\) [\#1897](https://github.com/ultralytics/yolov5/pull/1897) ([glenn-jocher](https://github.com/glenn-jocher)) - Docker CUDA warning fix [\#1895](https://github.com/ultralytics/yolov5/pull/1895) ([glenn-jocher](https://github.com/glenn-jocher)) - GitHub API rate limit fix [\#1894](https://github.com/ultralytics/yolov5/pull/1894) ([glenn-jocher](https://github.com/glenn-jocher)) - Add colorstr\(\) [\#1887](https://github.com/ultralytics/yolov5/pull/1887) ([glenn-jocher](https://github.com/glenn-jocher)) - auto-verbose if nc \<= 20 [\#1869](https://github.com/ultralytics/yolov5/pull/1869) ([glenn-jocher](https://github.com/glenn-jocher)) - actions/stale@v3 [\#1868](https://github.com/ultralytics/yolov5/pull/1868) ([glenn-jocher](https://github.com/glenn-jocher)) - Add check\_requirements\(\) [\#1853](https://github.com/ultralytics/yolov5/pull/1853) ([glenn-jocher](https://github.com/glenn-jocher)) - W&B ID reset on training completion [\#1852](https://github.com/ultralytics/yolov5/pull/1852) ([TommyZihao](https://github.com/TommyZihao))
- Python
Published by glenn-jocher almost 5 years ago
signature-lens - v4.0 - nn.SiLU() activations, Weights & Biases logging, PyTorch Hub integration
This release implements two architecture changes to YOLOv5, as well as various bug fixes and performance improvements.
Breaking Changes
- nn.SiLU() activations replace nn.LeakyReLU(0.1) and nn.Hardswish() activations used in previous versions. nn.SiLU() was introduced in PyTorch 1.7.0 (https://pytorch.org/docs/stable/generated/torch.nn.SiLU.html), and due to the recent timeframe certain export pipelines may be temporarily unavailable (CoreML possibly) without updates to the associated tools (i.e. coremltools).
Bug Fixes
- Multi-GPU --resume #1810
- leaf Variable inplace bug fix #1759
- Various additional bug fixes contained in PRs #1235 through #1837
Added Functionality
- Weights & Biases (W&B) Feature Addition #1235
- Utils reorganization #1392
- PyTorch Hub and autoShape update #1415
- W&B artifacts feature addition #1712
- Various additional feature additions contained in PRs #1235 through #1837
Updated Results
Latest models are all slightly smaller to due removal of one convolution within each bottleneck, which have been renamed as C3() modules now in light of the 3 I/O convolutions each one does vs the 4 in the standard CSP bottleneck. The previous manual concatenation and LeakyReLU(0.1) activations have both removed, simplifying the architecture, reducing parameter count, and better exploiting the .fuse() operation at inference time.
nn.SiLU() activations replace nn.LeakyReLU(0.1) and nn.Hardswish() activations throughout the model, simplifying the architecture as we now only have one single activation function used everywhere rather than the two types before.
In general the changes result in smaller models (89.0M params -> 87.7M YOLOv5x), faster inference times (6.9ms -> 6.0ms), and improved mAP (49.2 -> 50.1) for all models except YOLOv5s, which reduced mAP slightly (37.0 -> 36.8). In general the largest models benefit the most from this update. YOLOv5x in particular is now above 50.0 mAP at --img-size 640, which may be the first time this is possible at 640 resolution for any architecture I'm aware of (correct me if I'm wrong though).
** 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.
Pretrained Checkpoints
| Model | size | APval | APtest | AP50 | SpeedV100 | FPSV100 || params | GFLOPS | |---------- |------ |------ |------ |------ | -------- | ------| ------ |------ | :------: | | YOLOv5s |640 |36.8 |36.8 |55.6 |2.2ms |455 ||7.3M |17.0 | YOLOv5m |640 |44.5 |44.5 |63.1 |2.9ms |345 ||21.4M |51.3 | YOLOv5l |640 |48.1 |48.1 |66.4 |3.8ms |264 ||47.0M |115.4 | YOLOv5x |640 |50.1 |50.1 |68.7 |6.0ms |167 ||87.7M |218.8 | | | | | | | || | | YOLOv5x + TTA |832 |51.9 |51.9 |69.6 |24.9ms |40 ||87.7M |1005.3
- Python
Published by glenn-jocher about 5 years ago
signature-lens - v3.1 - Bug Fixes and Performance Improvements
This release aggregates various minor bug fixes and performance improvements since the main v3.0 release and incorporates PyTorch 1.7.0 compatibility updates. v3.1 models share weights with v3.0 models but contain minor module updates (inplace fields for nn.Hardswish() activations) for native PyTorch 1.7.0 compatibility. For PyTorch 1.7.0 release updates see https://github.com/pytorch/pytorch/releases/tag/v1.7.0.
Breaking Changes
- 'giou' hyperparameter has been renamed to 'box' to better reflect a criteria-agnostic regression loss term (https://github.com/ultralytics/yolov5/pull/1120)
Bug Fixes
- PyTorch 1.7 compatibility update.
torch>=1.6.0required,torch>=1.7.0recommended (https://github.com/ultralytics/yolov5/pull/1233) - GhostConv module bug fix (https://github.com/ultralytics/yolov5/pull/1176)
- Rectangular padding min stride bug fix from 64 to 32 (https://github.com/ultralytics/yolov5/pull/1165)
- Mosaic4 bug fix (https://github.com/ultralytics/yolov5/pull/1021)
- Logging directory runs/exp bug fix (https://github.com/ultralytics/yolov5/pull/978)
- Various additional
Added Functionality
- PyTorch Hub functionality with YOLOv5 .autoshape() method added (https://github.com/ultralytics/yolov5/pull/1210)
- Autolabelling addition and standardization across detect.py and test.py (https://github.com/ultralytics/yolov5/pull/1182)
- Precision-Recall Curve automatic plotting when testing (https://github.com/ultralytics/yolov5/pull/1107)
- Self-host VOC dataset for more reliable access and faster downloading (https://github.com/ultralytics/yolov5/pull/1077)
- Adding option to output autolabel confidence with --save-conf in test.py and detect.py (https://github.com/ultralytics/yolov5/pull/994)
- Google App Engine deployment option (https://github.com/ultralytics/yolov5/pull/964)
- Infinite Dataloader for faster training (https://github.com/ultralytics/yolov5/pull/876)
- Various additional
- Python
Published by glenn-jocher over 5 years ago
signature-lens - v3.0
This releases includes nn.Hardswish() activation implementation on Conv() modules, which increases mAP for all models at the expense of about 10% in inference speed. Training speeds are not significantly affected, though CUDA memory requirements increase about 10%. Training from scratch as well as finetuning both benefit from this change. The smallest models benefit the most from the Hardswish() activations, with increases of +0.9/+0.8/+0.7/+0.2mAP@0.5:0.95 for YOLOv5s/m/l/x.
All mAP values in our README are now reported at --img-size 640 (v2.0 reported at 672, and v1.0 reported at 736), so we've succeeded in increasing mAP while reducing the required --img-size :)
We've also listed YOLOv5x Test Time Augmentation (TTA) mAP and speeds for v3.0 in our README table for the first time (and for v2.0 below). Best results are YOLOv5x with TTA at 50.8 mAP@0.5:0.95. We've also updated efficientdet results in our comparison plot to reflect recent improvements in the google/automl repo.
Breaking Changes
- This release does not contain breaking changes.
- This release is only backwards compatible with v2.0 models trained with torch>=1.6.
Bug Fixes
- Hyperparameter evolution fixed, tutorial added (https://github.com/ultralytics/yolov5/issues/607)
Added Functionality
- PyTorch 1.6 compatible.
torch>=1.6required (43a616a9551cd53f031c05688884927ba0c13513) - PyTorch 1.6 native Automatic Mixed Precision (AMP) replaces NVIDIA Apex AMP (https://github.com/ultralytics/yolov5/pull/573)
nn.Hardswish()activations replacenn.LeakyReLU(0.1)in base convolution modulemodels.Conv()- Dataset Autodownload feature added (https://github.com/ultralytics/yolov5/pull/685)
- Model Autodownload improved (https://github.com/ultralytics/yolov5/pull/711)
- Layer freezing code added (https://github.com/ultralytics/yolov5/issues/679)
TensorRT export tutorial added (https://github.com/ultralytics/yolov5/pull/623)
** 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.
August 13, 2020: v3.0 release: nn.Hardswish() activations, data autodownload, native AMP.
July 23, 2020: v2.0 release: improved model definition, training and mAP.
June 22, 2020: PANet updates: new heads, reduced parameters, improved speed and mAP 364fcfd.
June 19, 2020: FP16 as new default for smaller checkpoints and faster inference d4c6674.
June 9, 2020: CSP updates: improved speed, size, and accuracy (credit to @WongKinYiu for CSP).
May 27, 2020: Public release. YOLOv5 models are SOTA among all known YOLO implementations.
April 1, 2020: Start development of future compound-scaled YOLOv3/YOLOv4-based PyTorch models.
Pretrained Checkpoints
v3.0 with nn.Hardswish()
Model | APval | APtest | AP50 | SpeedGPU | FPSGPU || params | FLOPS | ---------- |------ |------ |------ | -------- | ------| ------ |------ | :------: | YOLOv5s | 37.0 | 37.0 | 56.2 | 2.4ms | 476 || 7.5M | 13.2B YOLOv5m | 44.3 | 44.3 | 63.2 | 3.4ms | 333 || 21.8M | 39.4B YOLOv5l | 47.7 | 47.7 | 66.5 | 4.4ms | 256 || 47.8M | 88.1B YOLOv5x | 49.2 | 49.2 | 67.7 | 6.9ms | 164 || 89.0M | 166.4B | | | | | || | YOLOv5x + TTA|50.8| 50.8 | 68.9 | 25.5ms | 39 || 89.0M | 354.3B | | | | | || | YOLOv3-SPP | 45.6 | 45.5 | 65.2 | 4.5ms | 222 || 63.0M | 118.0B
** APtest denotes COCO test-dev2017 server results, all other AP results in the table denote val2017 accuracy.
** All AP numbers are for single-model single-scale without ensemble or test-time augmentation except for TTA. Reproduce by python test.py --data coco.yaml --img 640 --conf 0.001. Test Time Augmentation (TTA) runs at 3 image sizes. Reproduce TTA results by python test.py --data coco.yaml --img 832 --augment
** SpeedGPU measures end-to-end time per image averaged over 5000 COCO val2017 images using a GCP n1-standard-16 instance with one V100 GPU, and includes image preprocessing, PyTorch FP16 image inference at --batch-size 32 --img-size 640, postprocessing and NMS. Average NMS time included in this chart is 1-2ms/img. Reproduce by python test.py --data coco.yaml --img 640 --conf 0.1
** All checkpoints are trained to 300 epochs with default settings and hyperparameters (no autoaugmentation).
v2.0 with nn.LeakyReLU(0.1)
Model | APval | APtest | AP50 | SpeedGPU | FPSGPU || params | FLOPS | ---------- |------ |------ |------ | -------- | ------| ------ |------ | :------: | YOLOv5s | 36.1 | 36.1 | 55.3 | 2.2ms | 476 || 7.5M | 13.2B YOLOv5m | 43.5 | 43.5 | 62.5 | 3.2ms | 333 || 21.8M | 39.4B YOLOv5l | 47.0 | 47.1 | 65.6 | 4.1ms | 256 || 47.8M | 88.1B YOLOv5x | 49.0 | 49.0 | 67.4 | 6.4ms | 164 || 89.0M | 166.4B | | | | | || | YOLOv5x + TTA | 50.4 | 50.4 | 68.5 | 23.4ms | 43 || 89.0M | 354.3B | | | | | || | YOLOv3-SPP | 45.6 | 45.5 | 65.2 | 4.5ms | 222 || 63.0M | 118.0B
** APtest denotes COCO test-dev2017 server results, all other AP results in the table denote val2017 accuracy.
** All AP numbers are for single-model single-scale without ensemble or test-time augmentation. Reproduce by python test.py --data coco.yaml --img 672 --conf 0.001
** SpeedGPU measures end-to-end time per image averaged over 5000 COCO val2017 images using a GCP n1-standard-16 instance with one V100 GPU, and includes image preprocessing, PyTorch FP16 image inference at --batch-size 32 --img-size 640, postprocessing and NMS. Average NMS time included in this chart is 1-2ms/img. Reproduce by python test.py --data coco.yaml --img 640 --conf 0.1
** All checkpoints are trained to 300 epochs with default settings and hyperparameters (no autoaugmentation).
- Python
Published by glenn-jocher over 5 years ago
signature-lens - v2.0
Breaking Changes
IMPORTANT: v2.0 release contains breaking changes. Models trained with earlier versions will not operate correctly with v2.0. The last commit before v2.0 that operates correctly with all earlier pretrained models is: https://github.com/ultralytics/yolov5/tree/5e970d45c44fff11d1eb29bfc21bed9553abf986
To clone last commit prior to v2.0:
bash
git clone https://github.com/ultralytics/yolov5 # clone repo
cd yolov5
git reset --hard 5e970d4 # last commit before v2.0
Bug Fixes
- Various
Added Functionality
- Various
** GPU Speed measures end-to-end time per image averaged over 5000 COCO val2017 images using a V100 GPU with batch size 8, and includes image preprocessing, PyTorch FP16 inference, postprocessing and NMS.
- July 23, 2020: v2.0 release: improved model definition, training and mAP.
- June 22, 2020: PANet updates: new heads, reduced parameters, improved speed and mAP 364fcfd.
- June 19, 2020: FP16 as new default for smaller checkpoints and faster inference d4c6674.
- June 9, 2020: CSP updates: improved speed, size, and accuracy (credit to @WongKinYiu for CSP).
- May 27, 2020: Public release. YOLOv5 models are SOTA among all known YOLO implementations.
- April 1, 2020: Start development of future compound-scaled YOLOv3/YOLOv4-based PyTorch models.
Pretrained Checkpoints
| Model | APval | APtest | AP50 | SpeedGPU | FPSGPU || params | FLOPS | |---------- |------ |------ |------ | -------- | ------| ------ |------ | :------: | | YOLOv5s | 36.1 | 36.1 | 55.3 | 2.1ms | 476 || 7.5M | 13.2B | YOLOv5m | 43.5 | 43.5 | 62.5 | 3.0ms | 333 || 21.8M | 39.4B | YOLOv5l | 47.0 | 47.1 | 65.6 | 3.9ms | 256 || 47.8M | 88.1B | YOLOv5x | 49.0 | 49.0 | 67.4 | 6.1ms | 164 || 89.0M | 166.4B | | | | | | || | | YOLOv3-SPP | 45.6 | 45.5 | 65.2 | 4.5ms | 222 || 63.0M | 118.0B
** APtest denotes COCO test-dev2017 server results, all other AP results in the table denote val2017 accuracy.
** All AP numbers are for single-model single-scale without ensemble or test-time augmentation. Reproduce by python test.py --data coco.yaml --img 672 --conf 0.001
** SpeedGPU measures end-to-end time per image averaged over 5000 COCO val2017 images using a GCP n1-standard-16 instance with one V100 GPU, and includes image preprocessing, PyTorch FP16 image inference at --batch-size 32 --img-size 640, postprocessing and NMS. Average NMS time included in this chart is 1-2ms/img. Reproduce by python test.py --data coco.yaml --img 640 --conf 0.1
** All checkpoints are trained to 300 epochs with default settings and hyperparameters (no autoaugmentation).
- Python
Published by glenn-jocher over 5 years ago
signature-lens - v1.0
YOLOv5 1.0 Release Notes
- June 22, 2020: PANet updates: increased layers, reduced parameters, faster inference and improved mAP 364fcfd.
- June 19, 2020: FP16 as new default for smaller checkpoints and faster inference d4c6674.
- June 9, 2020: CSP updates: improved speed, size, and accuracy. Credit to @WongKinYiu for excellent CSP work.
- May 27, 2020: Public release of repo. YOLOv5 models are SOTA among all known YOLO implementations.
- April 1, 2020: Start development of future YOLOv3/YOLOv4-based PyTorch models in a range of compound-scaled sizes.
** GPU Speed measures end-to-end time per image averaged over 5000 COCO val2017 images using a V100 GPU with batch size 8, and includes image preprocessing, PyTorch FP16 inference, postprocessing and NMS.
Pretrained Checkpoints
| Model | APval | APtest | AP50 | SpeedGPU | FPSGPU || params | FLOPS | |---------- |------ |------ |------ | -------- | ------| ------ |------ | :------: | | YOLOv5s | 36.6 | 36.6 | 55.8 | 2.1ms | 476 || 7.5M | 13.2B | YOLOv5m | 43.4 | 43.4 | 62.4 | 3.0ms | 333 || 21.8M | 39.4B | YOLOv5l | 46.6 | 46.7 | 65.4 | 3.9ms | 256 || 47.8M | 88.1B | YOLOv5x | 48.4 | 48.4 | 66.9 | 6.1ms | 164 || 89.0M | 166.4B | YOLOv3-SPP | 45.6 | 45.5 | 65.2 | 4.5ms | 222 || 63.0M | 118.0B
** APtest denotes COCO test-dev2017 server results, all other AP results in the table denote val2017 accuracy.
** All AP numbers are for single-model single-scale without ensemble or test-time augmentation. Reproduce by python test.py --img 736 --conf 0.001
** SpeedGPU measures end-to-end time per image averaged over 5000 COCO val2017 images using a GCP n1-standard-16 instance with one V100 GPU, and includes image preprocessing, PyTorch FP16 image inference at --batch-size 32 --img-size 640, postprocessing and NMS. Average NMS time included in this chart is 1-2ms/img. Reproduce by python test.py --img 640 --conf 0.1
** All checkpoints are trained to 300 epochs with default settings and hyperparameters (no autoaugmentation).
- Python
Published by glenn-jocher over 5 years ago


