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 clearml
will enable the integration and allow users to track every training run in ClearML. This in turn allows users to track and compare runs and even schedule runs remotely. (#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 0
for GPU benchmarks or--device cpu
for CPU benchmarks (#6963 by @glenn-jocher). - Training Reproducibility: Single-GPU YOLOv5 training with
torch>=1.12.0
is now fully reproducible, and a new--seed
argument can be used (default seed=0) (#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.001
andweight_decay=5e-5
at image size 224 and all default settings.
Runs logged to https://wandb.ai/glenn-jocher/YOLOv5-Classifier-v6-2 - Accuracy values are for single-model single-scale on ImageNet-1k dataset.
Reproduce 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,3
Val
Validate YOLOv5m-cls accuracy on ImageNet-1k dataset:
bash data/scripts/get_imagenet.sh --val # download ImageNet val split (6.3G, 50000 images)
python classify/val.py --weights yolov5m-cls.pt --data ../datasets/imagenet --img 224 # validate
Predict
Use pretrained YOLOv5s-cls.pt to predict bus.jpg:
python classify/predict.py --weights yolov5s-cls.pt --data data/images/bus.jpg
model = torch.hub.load('ultralytics/yolov5', 'custom', 'yolov5s-cls.pt') # load from PyTorch Hub
Export
Export a group of trained YOLOv5s-cls, ResNet and EfficientNet models to ONNX and TensorRT:
python export.py --weights yolov5s-cls.pt resnet50.pt efficientnet_b0.pt --include onnx engine --img 224
Changelog
- Changes between previous release and this release: 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=8
by @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
tau
by @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
*.ts
toVID_FORMATS
by @glenn-jocher in #6859 - Update
--cache disk
deprecate*_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_size
deprecation 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()
--half
handling by @glenn-jocher in #6945 - Update Dockerfile
torch==1.11.0+cu113
by @glenn-jocher in #6954 - New val.py
cuda
variable by @glenn-jocher in #6957 - DetectMultiBackend() return
device
update by @glenn-jocher in #6958 - Tensor initialization on device improvements by @glenn-jocher in #6959
- EdgeTPU optimizations by @paradigmn in #6808
- Model
ema
key 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 clone
instead ofCOPY
by @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
da
check_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
tobj
by @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
pathlib
fix 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.imwrite
on non-ASCII paths by @CCRcmcpe in #7139 - Fix
detect.py --view-img
for 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 --profile
updates 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=8
by @glenn-jocher in #7215- Add train.py
--name cfg
option by @glenn-jocher in #7202 - precommit: yapf by @Borda in #5494
- CLI
fire
prep 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.com
hostname by @glenn-jocher in #7242 - Update minimum Python>=3.7.0 by @glenn-jocher in #7247
- Update setup.cfg to
description_file
field 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
--nms
and--agnostic-nms
by @leeflix in #7281 - Update
cv2.imread()
patch with flags argument by @glenn-jocher in #7287 - Context manager
open(file) as f
fixes by @glenn-jocher in #7289 - val.py
--weights
and--data
compatibility 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.auto
by @glenn-jocher in #7311 - Add
retry=3
todownload()
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 modeldtype
by @glenn-jocher in #7346 - Rename 'MacOS' to 'macOS' by @glenn-jocher in #7349
- Add
python benchmarks.py --test
for export-only by @glenn-jocher in #7350 - Add ONNX export metadata by @glenn-jocher in #7353
- DetectMultiBackend() default
stride=32
by @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<=12
check by @glenn-jocher in #7398 - Fix EdgeTPU output directory by @glenn-jocher in #7399
- Update
git_describe()
by @glenn-jocher in #7402 - Remove
tensorrt
pip install check by @glenn-jocher in #7439 - Disable
pbar
for DDP ranks > 0 by @glenn-jocher in #7440 - Add
--half
support 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_DIR
fix by @glenn-jocher in #7489- Fix val.py Ensemble() by @glenn-jocher in #7490
- Added
YOLOv5_AUTOINSTALL
environment variable by @jkocherhans in #7505 - Refactor Dockerfiles to
utils/docker
by @glenn-jocher in #7510 - Add yesqa to precommit checks by @Zengyf-CVer in #7511
- Fix val
plots=plots
by @glenn-jocher in #7524 - Reduce val device transfers by @glenn-jocher in #7525
- Add Docker
--file
argument 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
--noplots
flag 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=False
fix2 by @glenn-jocher in #7550 - Enable
results.print()
when_verbose=False
by @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 utils
statement by @Jack24658735 in #7578 - Remove
tqdm.auto
by @glenn-jocher in #7599 - Add
--half
support for OpenVINO exports by @djmmoss in #7615 increment_path()
robustness improvements by @glenn-jocher in #7628- Reduce
opencv-python>=4.1.1
for Jetson Nano by @glenn-jocher in #7645 - Bump
scipy>=1.5
to 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
--dynamic
when--half
is passed by @dmatos2012 in #7669 - Update Dockerfile-cpu to force python3.9 by @glenn-jocher in #7675
- Pin Docker-cpu
FROM ubuntu:20.04
by @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_end
callback 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=True
by @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.py
by @glenn-jocher in #7799 - Add
@threaded
decorator 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 == c2
check by @glenn-jocher in #7842 - Replace
openvino-dev
with OpenVINO Runtime inference by @GabrielDornelles in #7843 - TFDWConv()
depthwise_initializer
fix by @glenn-jocher in #7845 - Update Dockerfile
--no-install-recommends
by @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-dev
by @glenn-jocher in #7857 - Add TFDWConv()
depth_multiplier
arg 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.resize
interpolation 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
--keras
argument 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
formats
variable to avoidpd
conflict by @glenn-jocher in #7993 check_requirements()
Windows fix by @glenn-jocher in #7997- Add
psutil
andipython
to 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.001
by @glenn-jocher in #8005 - Update CI benchmarks to ONNX autoinstall by @glenn-jocher in #8008
- Pin CI
protobuf==3.20.1
by @glenn-jocher in #8015 check_requirements()
"" Windows double quote by @glenn-jocher in #8016- Add requirements.txt
protobuf<=3.20.1
by @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-period
epoch 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/yolov5
repo by @glenn-jocher in #8060 - Update stale.yml to 300 ops per run by @glenn-jocher in #8061
- Fix torch
long
tofloat
tensor 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.66
by @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.ERROR
onRANK
not in (0, 1) by @glenn-jocher in #8284device_name="MYRIAD" for Intel NCS2
comment 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
--dynamic
export 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_rank
arg comment by @pourmand1376 in #8409 - Update cache comments by @glenn-jocher in #8414
- TRT
--half
fix autocast images to FP16 by @glenn-jocher in #8435 - Expose OpenVINO
batch_size
similarly 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_size
similarly 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-fail
argument to benchmarks for CI errors by @glenn-jocher in #8513 - Simplify benchmarks.py assertions by @glenn-jocher in #8515
- Properly expose
batch_size
from OpenVINO similarly to TensorRT by @democat3457 in #8514 - Add
--half
arguments to export.py Usage examples by @glenn-jocher in #8516 - XML export
--half
fix by @glenn-jocher in #8522 - Fix
LoadImages()
with dataset YAML lists by @democat3457 in #8517 - val.py
assert ncm == nc
fix 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.0
by @glenn-jocher in #8558 - Raise error on suffix-less model path by @democat3457 in #8561
- Assert
--optimize
not used with cuda device by @democat3457 in #8569 - Update requirements.txt comment spacing by @glenn-jocher in #8562
- Explicitly set
weight_decay
value by @developer0hye in #8592 - Update
scipy>=1.7.3
by @glenn-jocher in #8595 - Update
tqdm>=4.64.0
andthop>=0.1.1
by @glenn-jocher in #8596 - Add
pip install wheel
to avoid legacysetup.py install
by @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=1
for 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_docker
check 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 --update
list 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_set
by @glenn-jocher in #8797 Detect.inplace=False
for 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
ultralytics
ororigin
dynamically 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/app
by @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
--resume
by @glenn-jocher in #8839 - Add check_file(data) i.e.
--data coco128.yaml
by @glenn-jocher in #8851 - export.py replace
check_file
->check_yaml
by @glenn-jocher in #8852 - Update dataloaders.py remove
float64
shapes 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
--resume
training from URL weights by @glenn-jocher in #8882--resume
training 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_delegate
fix 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_boxes
import by @glenn-jocher in #8915 - Add
torch==1.7.0
to 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
.tar
support 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