Repository navigation
A minor release that moves the tests, docs and examples to YOLO26, defaults YOLOE to YOLOE-26, fixes bugs in the YOLOE, YOLO-World, torchvision, Hugging Face and mmdet wrappers, downloads and scripts, and makes COCO slicing and mask drawing faster with the same output.
💥 Breaking Changes
- YOLOE loads
yoloe-26s-seg.ptwhen nomodel_pathis given (#1499) instead ofyoloe-11s-seg.pt. Passmodel_pathto keep using YOLOE-11. - The
hugging_face_universal_segmentationmodel type is removed (#1498). It had no module behind it and always failed withModuleNotFoundError. Usehuggingface_segmentationfor those models.
🐛 Fixes
- YOLOE and YOLO-World predictions use the class names set with
set_classes(#1499) instead of'0','1'and so on. Acategory_mappingyou pass in is still kept. model_type="yolo-world"loads (#1498). The registered class name was misspelled, so it always failed withAttributeError.- The torchvision wrapper keeps every image of a batch (#1502) with its own shift amount and full shape, instead of only the last image.
- Hugging Face panoptic segmentation keeps batch outputs paired with their slices (#1502). An image with no segments was dropped, so the predictions after it got the wrong slice positions.
- mmdet inference no longer has a path that raises
NameError(#1502). python -m sahi.scripts.slice_cocoruns (#1501). It passed the builtinsliceto Fire instead ofslicer.predictadds up the export time of every image (#1501) instead of keeping only the last one, and no longer raisesKeyErrorwithverbose=2when there are no images.predict_fiftyonecounts the prediction time of sliced predictions (#1501).sahi envshows pillow and every installed OpenCV distribution (#1501), and no longer lists tensorflow, which sahi does not use.- Downloads write to a temporary file first (#1495, #1504), so an interrupted download never leaves a broken model file that later runs would load. The YOLOv5 helpers used by the YOLOv5 notebook now go through the same download code.
⚡ Performance
All of these give the same output as before (#1503).
| Benchmark | v0.13.1 | v0.14.0 |
|---|---|---|
slice_coco on 50 VisDrone images, 6493 sliced annotations |
1.48 s | 0.92 s |
| Drawing 80 masks on a 4K image | 2.09 s | 0.15 s |
Drawing masks on 100 frames of the OpenCV vtest.avi video |
1.20 s | 0.12 s |
- Slicing computes each annotation's bbox and area once per image instead of once per slice.
- Mask drawing blends only the area each mask covers instead of the whole image.
- Sliced prediction and
SliceImageResultindexing no longer rebuild the slice lists on every access, andpredictconverts each image to an array once for all exports.
🧹 Maintenance & CI
- Tests and CI commands use YOLO26 (#1496) for detection, segmentation, OBB and ONNX export.
- CI installs CPU torch (#1494), which makes the CI caches about three times smaller.
from __future__ import annotationsis removed (#1500) now that Python 3.10 is the minimum, and ruff stops it from coming back.