Object detection and instance segmentation are by far the most important applications in Computer Vision. However, the detection of small objects and inference on large images still need to be improved in practical usage. Here comes the SAHI to help developers overcome these real-world problems with many vision utilities.
Command | Description |
---|---|
predict | perform sliced/standard video/image prediction using any ultralytics/mmdet/detectron2/huggingface/torchvision model |
predict-fiftyone | perform sliced/standard prediction using any ultralytics/mmdet/detectron2/huggingface/torchvision model and explore results in fiftyone app |
coco slice | automatically slice COCO annotation and image files |
coco fiftyone | explore multiple prediction results on your COCO dataset with fiftyone ui ordered by number of misdetections |
coco evaluate | evaluate classwise COCO AP and AR for given predictions and ground truth |
coco analyse | calculate and export many error analysis plots |
coco yolov5 | automatically convert any COCO dataset to ultralytics format |
List of publications that cite SAHI (currently 200+)
? List of competition winners that used SAHI
Introduction to SAHI
Official paper (ICIP 2022 oral)
Pretrained weights and ICIP 2022 paper files
Visualizing and Evaluating SAHI predictions with FiftyOne (2024) (NEW)
'Exploring SAHI' Research Article from 'learnopencv.com'
'VIDEO TUTORIAL: Slicing Aided Hyper Inference for Small Object Detection - SAHI' (RECOMMENDED)
Video inference support is live
Kaggle notebook
Satellite object detection
Error analysis plots & evaluation (RECOMMENDED)
Interactive result visualization and inspection (RECOMMENDED)
COCO dataset conversion
Slicing operation notebook
YOLOX
+ SAHI
demo: (RECOMMENDED)
RT-DETR
+ SAHI
walkthrough: (NEW)
YOLOv8
+ SAHI
walkthrough:
DeepSparse
+ SAHI
walkthrough:
HuggingFace
+ SAHI
walkthrough:
YOLOv5
+ SAHI
walkthrough:
MMDetection
+ SAHI
walkthrough:
Detectron2
+ SAHI
walkthrough:
TorchVision
+ SAHI
walkthrough:
sahi
using pip:pip install sahi
Shapely
needs to be installed via Conda:conda install -c conda-forge shapely
conda install pytorch=1.10.2 torchvision=0.11.3 cudatoolkit=11.3 -c pytorch
conda install pytorch=1.13.1 torchvision=0.14.1 pytorch-cuda=11.7 -c pytorch -c nvidia
pip install yolov5==7.0.13
pip install ultralytics==8.0.207
pip install mim
mim install mmdet==3.0.0
pip install detectron2 -f https://dl.fbaipublicfiles.com/detectron2/wheels/cu113/torch1.10/index.html
pip install transformers timm
pip install super-gradients==3.3.1
Find detailed info on sahi predict
command at cli.md.
Find detailed info on video inference at video inference tutorial.
Find detailed info on image/dataset slicing utilities at slicing.md.
Find detailed info at Error Analysis Plots & Evaluation.
Find detailed info at Interactive Result Visualization and Inspection.
Find detailed info on COCO utilities (yolov5 conversion, slicing, subsampling, filtering, merging, splitting) at coco.md.
Find detailed info on MOT utilities (ground truth dataset creation, exporting tracker metrics in mot challenge format) at mot.md.
If you use this package in your work, please cite it as:
@article{akyon2022sahi,
title={Slicing Aided Hyper Inference and Fine-tuning for Small Object Detection},
author={Akyon, Fatih Cagatay and Altinuc, Sinan Onur and Temizel, Alptekin},
journal={2022 IEEE International Conference on Image Processing (ICIP)},
doi={10.1109/ICIP46576.2022.9897990},
pages={966-970},
year={2022}
}
@software{obss2021sahi,
author = {Akyon, Fatih Cagatay and Cengiz, Cemil and Altinuc, Sinan Onur and Cavusoglu, Devrim and Sahin, Kadir and Eryuksel, Ogulcan},
title = {{SAHI: A lightweight vision library for performing large scale object detection and instance segmentation}},
month = nov,
year = 2021,
publisher = {Zenodo},
doi = {10.5281/zenodo.5718950},
url = {https://doi.org/10.5281/zenodo.5718950}
}
sahi
library currently supports all YOLOv5 models, MMDetection models, Detectron2 models, and HuggingFace object detection models. Moreover, it is easy to add new frameworks.
All you need to do is, create a new .py file under sahi/models/ folder and create a new class in that .py file that implements DetectionModel class. You can take the MMDetection wrapper or YOLOv5 wrapper as a reference.
Before opening a PR:
pip install -e ."[dev]"
python -m scripts.run_code_style format
Fatih Cagatay Akyon
Sinan Onur Altinuc
Devrim Cavusoglu
Cemil Cengiz
Ogulcan Eryuksel
Kadir Nar
Burak Maden
Pushpak Bhoge
M. Can V.
Christoffer Edlund
Ishwor
Mehmet Ecevit
Kadir Sahin
Wey
Youngjae
Alzbeta Tureckova
So Uchida
Yonghye Kwon
Neville
Janne Mäyrä
Christoffer Edlund
Ilker Manap
Nguyễn Thế An
Wei Ji
Aynur Susuz
Pranav Durai
Lakshay Mehra
Karl-Joan Alesma
Jacob Marks
William Lung
Amogh Dhaliwal