Giter Site home page Giter Site logo

sahi's Introduction

SAHI: Slicing Aided Hyper Inference

A lightweight vision library for performing large scale object detection & instance segmentation

teaser

downloads downloads
pypi version conda version package testing
ci
Open In Colab HuggingFace Spaces

Overview

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 yolov5/mmdet/detectron2/huggingface model
predict-fiftyone perform sliced/standard prediction using any yolov5/mmdet/detectron2/huggingface 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 yolov5 format

Quick Start Examples

📜 List of publications that cite SAHI (currently 150+)

🏆 List of competition winners that used SAHI

Tutorials

sahi-yolox

Installation

sahi-installation

Installation details:
  • Install sahi using pip:
pip install sahi
  • On Windows, Shapely needs to be installed via Conda:
conda install -c conda-forge shapely
  • Install your desired version of pytorch and torchvision (cuda 11.3 for detectron2, cuda 11.7 for rest):
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
  • Install your desired detection framework (yolov5):
pip install yolov5==7.0.13
  • Install your desired detection framework (ultralytics):
pip install ultralytics==8.0.207
  • Install your desired detection framework (mmdet):
pip install mim
mim install mmdet==3.0.0
  • Install your desired detection framework (detectron2):
pip install detectron2 -f https://dl.fbaipublicfiles.com/detectron2/wheels/cu113/torch1.10/index.html
  • Install your desired detection framework (huggingface):
pip install transformers timm
  • Install your desired detection framework (super-gradients):
pip install super-gradients==3.3.1

Framework Agnostic Sliced/Standard Prediction

sahi-predict

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.

Error Analysis Plots & Evaluation

sahi-analyse

Find detailed info at Error Analysis Plots & Evaluation.

Interactive Visualization & Inspection

sahi-fiftyone

Find detailed info at Interactive Result Visualization and Inspection.

Other utilities

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.

Citation

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}
}

Contributing

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:

  • Install required development packages:
pip install -e ."[dev]"
  • Reformat with black and isort:
python -m scripts.run_code_style format

Contributors

sahi's People

Contributors

fcakyon avatar devrimcavusoglu avatar kadirnar avatar ssahinnkadir avatar pranavdurai10 avatar tureckova avatar aynursusuz avatar mwitiderrick avatar jacobmarks avatar jokober avatar mcvarer avatar s-aiueo32 avatar youngjaedev avatar madenburak avatar christofferedlund avatar dean-wetherby-simplisafe avatar mldovakin avatar edugzlez avatar myosq avatar amoghdhaliwal avatar hamzalopode avatar ilkermanap avatar ishworii avatar mayrajeo avatar karl-joan avatar lakshaymehra avatar mecevit avatar aphilas avatar nguyenthean avatar pushpakbhoge avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.