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