A vision library for performing sliced inference on large images/small objects

Overview

SAHI: Slicing Aided Hyper Inference

PyPI version Conda version CI

A vision library for performing sliced inference on large images/small objects

teaser

Overview

Object detection and instance segmentation are by far the most important fields of applications in Computer Vision. However, detection of small objects and inference on large images are still major issues in practical usage. Here comes the SAHI to help developers overcome these real-world problems.

Getting started

Blogpost

Check the official SAHI blog post.

Installation

  • Install sahi using conda:
conda install -c obss sahi
  • Install sahi using pip:
pip install sahi
  • Install your desired version of pytorch and torchvision:
pip install torch torchvision
  • Install your desired detection framework (such as mmdet):
pip install mmdet

Usage

  • Sliced inference:
result = get_sliced_prediction(
    image,
    detection_model,
    slice_height = 256,
    slice_width = 256,
    overlap_height_ratio = 0.2,
    overlap_width_ratio = 0.2
)

Refer to inference notebook for detailed usage.

  • Slice an image:
from sahi.slicing import slice_image

slice_image_result, num_total_invalid_segmentation = slice_image(
    image=image_path,
    output_file_name=output_file_name,
    output_dir=output_dir,
    slice_height=256,
    slice_width=256,
    overlap_height_ratio=0.2,
    overlap_width_ratio=0.2,
)
  • Slice a coco formatted dataset:
from sahi.slicing import slice_coco

coco_dict, coco_path = slice_coco(
    coco_annotation_file_path=coco_annotation_file_path,
    image_dir=image_dir,
    slice_height=256,
    slice_width=256,
    overlap_height_ratio=0.2,
    overlap_width_ratio=0.2,
)

Adding new detection framework support

sahi library currently only supports MMDetection models. However it is easy to add new frameworks.

All you need to do is, creating a new class in model.py that implements DetectionModel class. You can take the MMDetection wrapper as a reference.

Contributers

Comments
  • improve json loading

    improve json loading

    Fix the bug :

    Traceback (most recent call last):
      File "C:\ProgramData\Anaconda3\Scripts\labelme2coco-script.py", line 33, in <module>
        sys.exit(load_entry_point('labelme2coco==0.2.1', 'console_scripts', 'labelme2coco')())
      File "C:\ProgramData\Anaconda3\lib\site-packages\labelme2coco-0.2.1-py3.9.egg\labelme2coco\cli.py", line 8, in app
      File "C:\ProgramData\Anaconda3\lib\site-packages\fire\core.py", line 141, in Fire
        component_trace = _Fire(component, args, parsed_flag_args, context, name)
      File "C:\ProgramData\Anaconda3\lib\site-packages\fire\core.py", line 466, in _Fire
        component, remaining_args = _CallAndUpdateTrace(
      File "C:\ProgramData\Anaconda3\lib\site-packages\fire\core.py", line 681, in _CallAndUpdateTrace
        component = fn(*varargs, **kwargs)
      File "C:\ProgramData\Anaconda3\lib\site-packages\labelme2coco-0.2.1-py3.9.egg\labelme2coco\__init__.py", line 32, in convert
      File "C:\ProgramData\Anaconda3\lib\site-packages\labelme2coco-0.2.1-py3.9.egg\labelme2coco\labelme2coco.py", line 41, in get_coco_from_labelme_folder
      File "C:\ProgramData\Anaconda3\lib\site-packages\sahi\utils\file.py", line 66, in load_json
        data = json.load(json_file)
      File "C:\ProgramData\Anaconda3\lib\json\__init__.py", line 293, in load
        return loads(fp.read(),
    UnicodeDecodeError: 'gbk' codec can't decode byte 0x90 in position 82: illegal multibyte sequence
    
    enhancement 
    opened by qingfengtommy 20
  • add support for video prediction

    add support for video prediction

    This PR brings full support for sliced/standard inference for video input format for all MMDetection/Detectron2/YOLOv5 models :fire:

    sahi-video-inf

    • Just give video file as source:
    sahi predict --model_path yolov5s.pt --model_type yolov5 --source video.mp4 --export_visual
    

    You can also view video render during video inference with --view_video:

    sahi predict --model_path yolov5s.pt --model_type yolov5 --source video.mp4 --export_visual --view_video
    
    • To forward 100 frames, on opened window press key D
    • To revert 100 frames, on opened window press key A
    • To forward 20 frames, on opened window press key G
    • To revert 20 frames, on opened window press key F
    • To exit, on opened window press key Esc

    Note: If --view_video is slow, you can add --frame_skip_interval=20 argument to skip interval of 20 frames each time.

    enhancement 
    opened by madenburak 15
  • add YOLOX model support

    add YOLOX model support

    SAHI kütüphanesine YOLOX modelini en basit haliyle ekledim. #535

    Düzeltilecekler:

    • [X] Resize modulu yazıldı.
    • [ ] Test kodu yazılacak.
    • [ ] Notebook dosyası oluşturulacak.

    Resize kodunu özellikle yazmadım. SAHI için ortak bir resize modulu oluşturabilir miyiz? Yolox reposundaki örneği incelleyip geri dönüş yapabilir misiniz? YOLOX-RESIZE

    Ayrıca nms_thre değerini kullanıcıdan istesek nasıl olur? Şuan ben manuel değer veriyorum. Aynı durum yolov7 modeli içinde geçerli.

    enhancement 
    opened by kadirnar 13
  • add automatic slice size calculation

    add automatic slice size calculation

    • If I do not want to give slicing parameters or
    • I do not know what to give,

    it automatically calculates slicing parameters according to the resolution of the image.

    enhancement 
    opened by mcvarer 7
  • Added support for exporting predictions in COCO format

    Added support for exporting predictions in COCO format

    Added support for exporting predictions in COCO format

    changelog: -

    • COCO prediction object of class CocoPrediction can be added into COCO image object of class sahi.utils.cocoCocoImage using method <CocoImage_Instance>.add_prediction
    • __repr__ method updated to reflect predictions in class sahi.utils..coco.CocoImage
    • Additional property prediction_array added in class sahi.utils.coco.Coco to export COCO predictions in json-serializable format. Logic for the property is defined in new function sahi.utils.coco.create_coco_prediction_array
    • added the test cases for the same in test_cocoutils.py
    • updated file coco.md with necessary documentation

    Basic flow is like this

    from sahi.utils.coco import Coco, CocoImage, CocoAnnotation, CocoPrediction
    from sahi.utils.file import save_json
    
    coco_obj = Coco()
    
    # add n images to coco_obj
    for _ in range(n):
        image = CocoImage(**kwargs)
        
        # add n annotations to the image
        for _ in ange(n):
            image.add_annotation(CocoAnnotation(**kwargs))
        
        # add n predictions to the image
        for _ in range(n)
            image.add_prediction(CocoPrediction(**kwargs))
        
        # add image to coco object
        coco_obj.add_image(image)
    
    # export ground truth annotations
    coco_gt = coco_obj.json
    save_json(coco_gt , "ground_truth.json")
    
    # export preadictions 
    coco_predictions = coco_obj.prediction_array
    save_json(coco_predictions, "predictions.json"
    

    Why this is useful?

    The user can utilize the exported files to calculate standard coco metrics using offical COCO api pycocotool with relative ease. This is example of using that

    from pycocotools.cocoeval import COCOeval
    from pycocotools.coco import COCO
    
    # load json files
    coco_ground_truth = COCO(annotation_file="ground_truth.json")
    coco_predictions = coco_ground_truth.loadRes("predictions.json")
    
    coco_evaluator = COCOeval(coco_ground_truth, coco_predictions, "bbox")
    coco_evaluator.evaluate()
    coco_evaluator.accumulate()
    coco_evaluator.summarize()
    

    This can be further expanded to define class which can be conveniently used to evaluate the prediction, something like this

    class DatasetEvalutor:
        # user can inherit and overwrite the given load_model, get_annotation and get_prediction methods
        def __init__(self, **kwargs):
            self.images = []  # list of image meta data
            self.model = None # model place holder
            self.dataset = Coco() # coco object
    
        def load_model(self,**kwargs):
            # logic for loading model goes here
            # set self.model to model
    
        def get_annotation(self, **kwargs):
            # logic for annotation goes here
            # result must return a sahi.utils.coco.CocoAnnotation instance
    
        def get_prediction(self, **kwargs):
            # logic for prediction goes here
            # result must return a sahi.utils.coco.CocoPrediction instance
    
        def run_inference(self, **kwargs):
            # loop over images create CocoImage and add annotations and prediction to it
            # add those CocoImage instance into self.dataset
    
        def evaluate(self, **kwargs):
            # pycocotool code to generate metrics
    
    documentation enhancement 
    opened by PushpakBhoge 7
  • Downgrade Pillow

    Downgrade Pillow

    Issue

    When running the sahi colab notebooks, an error occurs when attempting to run inference using a pretrained model:

    ImportError                               Traceback (most recent call last)
    [<ipython-input-5-6c3be4aaa524>](https://localhost:8080/#) in <module>
    ----> 1 detection_model = AutoDetectionModel.from_pretrained(
          2     model_type='detectron2',
          3     model_path=model_path,
          4     config_path=model_path,
          5     confidence_threshold=0.5,
    
    14 frames
    [/usr/local/lib/python3.8/dist-packages/PIL/ImageFont.py](https://localhost:8080/#) in <module>
         35 from . import Image
         36 from ._deprecate import deprecate
    ---> 37 from ._util import is_directory, is_path
         38 
         39 
    
    ImportError: cannot import name 'is_directory' from 'PIL._util' (/usr/local/lib/python3.8/dist-packages/PIL/_util.py)
    

    Solution

    A solution to this problem (as per this stack overflow post) is to downgrade Pillow and freeze it at version 6.2.2. Using this version of Pillow allows users to successfully execute the entire notebook demonstrating the functionality of sahi.

    Risks

    Freezing the version of Pillow to an earlier state may result in unexpected behaviour, and lead to vulnerabilities in the future if more up to date versions of Pillow are not supported.

    opened by hlydecker 5
  • Changed Mask class to store RLE encoded masks to save RAM.

    Changed Mask class to store RLE encoded masks to save RAM.

    Changed Mask class to store RLE encoded masks to save RAM usage on large images. (Work in progress)

    When doing inference on large images (5300, 3600) pixel with around 100 instances, the sahi library uses around 14 GB of RAM. I introduced internal conversion to RLE encoded masks in the Mask class to save RAM memory and got it down to around 2GB RAM usage for our use-case (see plots).

    RAM_comprison

    Since pycocotools are a bit tricky to install on windows, the code are designed to utilize RLE encoding if pycocotools are available.

    The inference time does not seem to increase by these changes, but only ran a single test so take the results with a grain of salt.

    inference_time_comprison

    enhancement 
    opened by ChristofferEdlund 5
  • Fix bug that Unable to print for prediction time when verbose=2

    Fix bug that Unable to print for prediction time when verbose=2

    Error executing below in current code

    result = get_sliced_prediction(
        "demo_data/small-vehicles1.jpeg",
        detection_model,
        slice_height = 256,
        slice_width = 256,
        overlap_height_ratio = 0.2,
        overlap_width_ratio = 0.2,
        verbose=2
    )
    
    opened by youngjae-avikus 5
  • add detectron2 support

    add detectron2 support

    Sahi algoritmasına detectron2 kütüphanesini eklenmesi amaçlanmıştır.

    Yapılan Değişiklikler:

    Model.py: class Detectron2Model(DetectionModel) sınıfı eklendi. utils/detectron2.py: Test cfg kodu ve .pkl yolları eklendi. tests/test_detectron2.py: Modelin test edilmesi için test_detectron2.py dosyası oluşturuldu.

    enhancement 
    opened by kadirnar 5
  • add support to instantiate a `DetectionModel` from layer

    add support to instantiate a `DetectionModel` from layer

    This PR adds support to instantiate a DetectionModel out of a YOLOv5 model trained on Layer. It includes:

    • A new from_layer() method in AutoDetectionModel to load models from Layer.
    • A new set_model() method in DetectionModel to create a DetectionModel out of an already loaded model.
    • Tests for from_layer() and set_model().

    Example

    You can pass a path of a YOLOv5 model trained on Layer to instantiate a DetectionModel. Here we fetch the yolo5vs pretrained model from this Layer project

    from sahi import AutoDetectionModel
    detection_model = AutoDetectionModel.from_layer("layer/yolov5/models/yolov5s")
    

    Tests

    To run the tests related to from_layer() functionality you can:

    pytest tests/test_layer.py
    

    Screenshot

    image enhancement 
    opened by mecevit 3
  • add `get_coco_with_clipped_bboxes` utility to coco class

    add `get_coco_with_clipped_bboxes` utility to coco class

    Limit overflowing coco bounding boxes to image dimensions

    Usage:

    coco = Coco.from_coco_dict_or_path( coco_path, clip_bboxes_to_img_dims=True)
    

    or,

    coco = coco.get_coco_with_clipped_bboxes()
    
    opened by ssahinnkadir 3
  • add Tensorflow Hub detector support

    add Tensorflow Hub detector support

    Testlerden geçebilmesi için tensorflow ve tensorflow_hub kütüphanelerin kurulması gerekiyor.

    • package_testing.yml
    • ci.yml
    - name: Install tensorflow and tensorflow_hub
      run: >
        pip install  tensorflow
        pip install tensorflow_hub
    

    Bu format uygun mudur? @fcakyon

    enhancement workflows 
    opened by kadirnar 19
Releases(0.11.9)
  • 0.11.9(Dec 24, 2022)

    What's Changed

    • update yolov5 version in ci by @fcakyon in https://github.com/obss/sahi/pull/797
    • fix torch dependency in HuggingfaceDetectionModel by @fcakyon in https://github.com/obss/sahi/pull/798
    • update installation, support latest transformers version by @fcakyon in https://github.com/obss/sahi/pull/799

    Full Changelog: https://github.com/obss/sahi/compare/0.11.8...0.11.9

    Source code(tar.gz)
    Source code(zip)
  • 0.11.8(Dec 23, 2022)

    What's Changed

    • update coco to yolov5 export by @fcakyon in https://github.com/obss/sahi/pull/794

    Full Changelog: https://github.com/obss/sahi/compare/0.11.7...0.11.8

    Source code(tar.gz)
    Source code(zip)
  • 0.11.7(Dec 20, 2022)

    What's Changed

    • make default verbose false for min version check by @fcakyon in https://github.com/obss/sahi/pull/765
    • download mmdet yolox model from hfhub in tests by @fcakyon in https://github.com/obss/sahi/pull/766
    • update torchvision demo by @fcakyon in https://github.com/obss/sahi/pull/776
    • The coco.md file has been updated. by @kadirnar in https://github.com/obss/sahi/pull/777
    • Added indent parameter to save_json parameter. by @kadirnar in https://github.com/obss/sahi/pull/783
    • fix slicing tests by @fcakyon in https://github.com/obss/sahi/pull/787
    • fix json.decoder.JSONDecodeError in coco to yolov5 conversion by @kadirnar in https://github.com/obss/sahi/pull/786

    Full Changelog: https://github.com/obss/sahi/compare/0.11.6...0.11.7

    Source code(tar.gz)
    Source code(zip)
  • 0.11.6(Dec 1, 2022)

    What's Changed

    • fix detectron2 device by @fcakyon in https://github.com/obss/sahi/pull/763
    • update dependency versions in ci by @fcakyon in https://github.com/obss/sahi/pull/760
    • remove python3.6 in ci by @fcakyon in https://github.com/obss/sahi/pull/762

    Full Changelog: https://github.com/obss/sahi/compare/0.11.5...0.11.6

    Source code(tar.gz)
    Source code(zip)
  • 0.11.5(Nov 27, 2022)

    What's Changed

    • fixes a bug that prevents cuda device selection by @fcakyon in https://github.com/obss/sahi/pull/756

    Full Changelog: https://github.com/obss/sahi/compare/0.11.4...0.11.5

    Source code(tar.gz)
    Source code(zip)
  • 0.11.4(Nov 15, 2022)

    What's Changed

    • improve bbox data structure by @fcakyon in https://github.com/obss/sahi/pull/730
    • make some classes importable from highest level by @fcakyon in https://github.com/obss/sahi/pull/731
    • add min dependency version check by @fcakyon in https://github.com/obss/sahi/pull/734
    • handle numpy bbox in object annotation by @fcakyon in https://github.com/obss/sahi/pull/735
    • add 2 slicing utils by @fcakyon in https://github.com/obss/sahi/pull/736
    • fix predict script by @fcakyon in https://github.com/obss/sahi/pull/737
    • update torch torchvision versions in ci by @fcakyon in https://github.com/obss/sahi/pull/729
    • update ci workflow name by @fcakyon in https://github.com/obss/sahi/pull/732

    Full Changelog: https://github.com/obss/sahi/compare/0.11.3...0.11.4

    Source code(tar.gz)
    Source code(zip)
  • 0.11.3(Nov 14, 2022)

    What's Changed

    • update model dependency and device management by @fcakyon in https://github.com/obss/sahi/pull/725
    • implement indexing support for slice image result by @fcakyon in https://github.com/obss/sahi/pull/726
    • update version by @fcakyon in https://github.com/obss/sahi/pull/727

    Full Changelog: https://github.com/obss/sahi/compare/0.11.2...0.11.3

    Source code(tar.gz)
    Source code(zip)
  • 0.11.2(Nov 14, 2022)

    What's Changed

    • support uppercase letter image/video extensions by @fcakyon in https://github.com/obss/sahi/pull/713
    • add cited paper list and competition winners by @fcakyon in https://github.com/obss/sahi/pull/705
    • fix a typo in readme by @fcakyon in https://github.com/obss/sahi/pull/706
    • update version by @fcakyon in https://github.com/obss/sahi/pull/707
    • make ci trigger more efficient by @fcakyon in https://github.com/obss/sahi/pull/709
    • update mmcv mmdet in ci by @fcakyon in https://github.com/obss/sahi/pull/714
    • update contributing and contributors sections in readme by @fcakyon in https://github.com/obss/sahi/pull/715
    • update predict docs by @fcakyon in https://github.com/obss/sahi/pull/723

    Full Changelog: https://github.com/obss/sahi/compare/0.11.1...0.11.2

    Source code(tar.gz)
    Source code(zip)
  • 0.11.1(Nov 1, 2022)

    What's Changed

    • fix coco segm eval by @fcakyon in https://github.com/obss/sahi/pull/701
    • add float bbox and segm point support, remove mot utils by @fcakyon in https://github.com/obss/sahi/pull/702

    Full Changelog: https://github.com/obss/sahi/compare/0.11.0...0.11.1

    Source code(tar.gz)
    Source code(zip)
  • 0.11.0(Oct 29, 2022)

    What's Changed

    • refactor models structure by @fcakyon in https://github.com/obss/sahi/pull/694

    Full Changelog: https://github.com/obss/sahi/compare/0.10.8...0.11.0

    Source code(tar.gz)
    Source code(zip)
  • 0.10.8(Oct 26, 2022)

    What's Changed

    • remove layer support by @fcakyon in https://github.com/obss/sahi/pull/692
    • Fixed a bug in greedynmm func by @youngjae-avikus in https://github.com/obss/sahi/pull/691
    • flake8 dependency fix for python3.7. by @devrimcavusoglu in https://github.com/obss/sahi/pull/676
    • fix links in readme by @fcakyon in https://github.com/obss/sahi/pull/689

    Full Changelog: https://github.com/obss/sahi/compare/0.10.7...0.10.8

    Source code(tar.gz)
    Source code(zip)
  • 0.10.7(Sep 27, 2022)

    What's Changed

    • update pybboxes version by @fcakyon in https://github.com/obss/sahi/pull/598
    • add support for yolov5==6.1.9 by @fcakyon in https://github.com/obss/sahi/pull/601
    • refactor demo notebooks by utilizing newly introduced AutoDetectionMo… by @ishworii in https://github.com/obss/sahi/pull/516
    • add norfair>=2.0.0 support by @fcakyon in https://github.com/obss/sahi/pull/595
    • Changed Mask class to store RLE encoded masks to save RAM. by @ChristofferEdlund in https://github.com/obss/sahi/pull/599
    • update workflow versions by @fcakyon in https://github.com/obss/sahi/pull/603

    New Contributors

    • @ishworii made their first contribution in https://github.com/obss/sahi/pull/516
    • @ChristofferEdlund made their first contribution in https://github.com/obss/sahi/pull/599

    Full Changelog: https://github.com/obss/sahi/compare/0.10.6...0.10.7

    Source code(tar.gz)
    Source code(zip)
  • 0.10.6(Sep 24, 2022)

    What's Changed

    • support yolov5>=6.1.9 by @fcakyon in https://github.com/obss/sahi/pull/592
    • update installation in readme by @fcakyon in https://github.com/obss/sahi/pull/584

    Full Changelog: https://github.com/obss/sahi/compare/0.10.5...0.10.6

    Source code(tar.gz)
    Source code(zip)
  • 0.10.5(Sep 4, 2022)

    What's Changed

    bugfix

    • fix auto slice warning by @fcakyon in https://github.com/obss/sahi/pull/574
    • fix a slice_image error by @fcakyon in https://github.com/obss/sahi/pull/575

    other

    • fix layer tests by @fcakyon in https://github.com/obss/sahi/pull/577
    • update ci package versions by @fcakyon in https://github.com/obss/sahi/pull/576

    Full Changelog: https://github.com/obss/sahi/compare/0.10.4...0.10.5

    Source code(tar.gz)
    Source code(zip)
  • 0.10.4(Aug 12, 2022)

    What's Changed

    • hotfix for occasional segmentation fault by @fcakyon in https://github.com/obss/sahi/pull/546
    • refactor requirement checking by @fcakyon in https://github.com/obss/sahi/pull/549
    • Code formatting and checks are moved to a single module. by @devrimcavusoglu in https://github.com/obss/sahi/pull/548
    • fix a typo in type hinting by @ymerkli in https://github.com/obss/sahi/pull/553
    • fix an incorrect url in comments by @aynursusuz in https://github.com/obss/sahi/pull/554
    • update version by @fcakyon in https://github.com/obss/sahi/pull/555
    • fix linting script by @devrimcavusoglu in https://github.com/obss/sahi/pull/558
    • fix an incorrect url in comments by @aynursusuz in https://github.com/obss/sahi/pull/559

    New Contributors

    • @ymerkli made their first contribution in https://github.com/obss/sahi/pull/553
    • @aynursusuz made their first contribution in https://github.com/obss/sahi/pull/554

    Full Changelog: https://github.com/obss/sahi/compare/0.10.3...0.10.4

    Source code(tar.gz)
    Source code(zip)
  • 0.10.3(Aug 2, 2022)

    What's Changed

    • fix coco2fiftyone script by @fcakyon in https://github.com/obss/sahi/pull/540
    • fix segmentation fault in same cases by @fcakyon in https://github.com/obss/sahi/pull/541

    Full Changelog: https://github.com/obss/sahi/compare/0.10.2...0.10.3

    Source code(tar.gz)
    Source code(zip)
  • 0.10.2(Jul 28, 2022)

    What's Changed

    • add automatic slice size calculation by @mcvarer in https://github.com/obss/sahi/pull/512
    • Fix bug that Unable to print for prediction time when verbose=2 by @youngjae-avikus in https://github.com/obss/sahi/pull/521
    • pybboxes allow oob, strict=False fix. by @devrimcavusoglu in https://github.com/obss/sahi/pull/528
    • update predict verbose by @fcakyon in https://github.com/obss/sahi/pull/514
    • update pybboxes version by @fcakyon in https://github.com/obss/sahi/pull/531

    New Contributors

    • @youngjae-avikus made their first contribution in https://github.com/obss/sahi/pull/521

    Full Changelog: https://github.com/obss/sahi/compare/0.10.1...0.10.2

    Source code(tar.gz)
    Source code(zip)
  • 0.10.1(Jun 25, 2022)

    What's Changed

    • add python 3.10 support by @fcakyon in https://github.com/obss/sahi/pull/503
    • add file_name to export_visuals by @mcvarer in https://github.com/obss/sahi/pull/507
    • refactor automodel to lazyload models by @fcakyon in https://github.com/obss/sahi/pull/509
    • update automodel loading method to from_pretrained by @fcakyon in https://github.com/obss/sahi/pull/510

    New Contributors

    • @mcvarer made their first contribution in https://github.com/obss/sahi/pull/507

    Full Changelog: https://github.com/obss/sahi/compare/0.10.0...0.10.1

    Source code(tar.gz)
    Source code(zip)
  • 0.10.0(Jun 21, 2022)

    New Features

    - Layer.ai integration

    from sahi import AutoDetectionModel
    
    detection_model = AutoDetectionModel.from_layer("layer/yolov5/models/yolov5s")
    
    result = get_sliced_prediction(
        "image.jpeg",
        detection_model,
        slice_height = 512,
        slice_width = 512,
        overlap_height_ratio = 0.2,
        overlap_width_ratio = 0.2
    )
    

    - HuggingfFace Transformers object detectors

    from sahi.model import HuggingfaceDetectionModel
    
    detection_model = HuggingfaceDetectionModel(
        model_path="facebook/detr-resnet-50",
        image_size=640,
        confidence_threshold=0.5
    )
    
    result = get_sliced_prediction(
        "image.jpeg",
        detection_model,
        slice_height = 512,
        slice_width = 512,
        overlap_height_ratio = 0.2,
        overlap_width_ratio = 0.2
    )
    

    - TorchVision object detectors

    import torchvision
    from sahi.model import TorchVisionDetectionModel
    
    model = torchvision.models.detection.fasterrcnn_resnet50_fpn(pretrained=True)
    
    detection_model = TorchVisionDetectionModel(
        model=model,
        image_size=640,
        confidence_threshold=0.5
    )
    
    result = get_sliced_prediction(
        "image.jpeg",
        detection_model,
        slice_height = 512,
        slice_width = 512,
        overlap_height_ratio = 0.2,
        overlap_width_ratio = 0.2
    )
    

    - Support for exporting predictions in COCO format

    from sahi.utils.coco import Coco, CocoImage, CocoAnnotation, CocoPrediction
    from sahi.utils.file import save_json
    from pycocotools.cocoeval import COCOeval
    from pycocotools.coco import COCO
    
    coco_obj = Coco()
    
    # add n images to coco_obj
    for _ in range(n):
        image = CocoImage(**kwargs)
        
        # add n annotations to the image
        for _ in ange(n):
            image.add_annotation(CocoAnnotation(**kwargs))
        
        # add n predictions to the image
        for _ in range(n)
            image.add_prediction(CocoPrediction(**kwargs))
        
        # add image to coco object
        coco_obj.add_image(image)
    
    # export ground truth annotations
    coco_gt = coco_obj.json
    save_json(coco_gt , "ground_truth.json")
    
    # export predictions 
    coco_predictions = coco_obj.prediction_array
    save_json(coco_predictions, "predictions.json")
    
    coco_ground_truth = COCO(annotation_file="coco_dataset.json")
    coco_predictions = coco_ground_truth.loadRes("coco_predictions.json")
    coco_evaluator = COCOeval(coco_ground_truth, coco_predictions, "bbox")
    coco_evaluator.evaluate()
    coco_evaluator.accumulate()
    coco_evaluator.summarize()
    

    What's Changed

    • refactor torch utils by @fcakyon in https://github.com/obss/sahi/pull/468
    • add automodel structure for unified model loading by @fcakyon in https://github.com/obss/sahi/pull/469
    • add support to instantiate a DetectionModel from layer by @mecevit in https://github.com/obss/sahi/pull/462
    • refactor automodel by @fcakyon in https://github.com/obss/sahi/pull/470
    • update layer versions in workflows by @fcakyon in https://github.com/obss/sahi/pull/471
    • update version to 0.10.0 by @fcakyon in https://github.com/obss/sahi/pull/474
    • Added support for exporting predictions in COCO format by @PushpakBhoge in https://github.com/obss/sahi/pull/465
    • update contributors in readme by @fcakyon in https://github.com/obss/sahi/pull/477
    • update device priority for Detectron2DetectionModel by @fcakyon in https://github.com/obss/sahi/pull/479
    • fix pickle export for video by @fcakyon in https://github.com/obss/sahi/pull/481
    • update continuous integration by @fcakyon in https://github.com/obss/sahi/pull/483
    • refactor import and torch utils by @fcakyon in https://github.com/obss/sahi/pull/484
    • make detectionmodel classes more explicit in automodel by @fcakyon in https://github.com/obss/sahi/pull/485
    • utilize check_requirements in several modules by @fcakyon in https://github.com/obss/sahi/pull/487
    • update package versions in workflows by @fcakyon in https://github.com/obss/sahi/pull/488
    • add support for huggingface transformers object detectors by @devrimcavusoglu in https://github.com/obss/sahi/pull/475
    • add torchvision detector support by @fcakyon in https://github.com/obss/sahi/pull/486
    • remove legacy image_size parameter by @kadirnar in https://github.com/obss/sahi/pull/494
    • AutoDetectionModel can be imported from sahi by @fcakyon in https://github.com/obss/sahi/pull/498
    • add python3.6 support by @fcakyon in https://github.com/obss/sahi/pull/489
    • refactor exception handling by @kadirnar in https://github.com/obss/sahi/pull/499
    • improve requirements and import handling by @fcakyon in https://github.com/obss/sahi/pull/502

    New Contributors

    • @mecevit made their first contribution in https://github.com/obss/sahi/pull/462
    • @PushpakBhoge made their first contribution in https://github.com/obss/sahi/pull/465

    Full Changelog: https://github.com/obss/sahi/compare/0.9.4...0.10.0

    Source code(tar.gz)
    Source code(zip)
  • 0.9.4(May 28, 2022)

    What's Changed

    • reduce ram usage by adding buffer based merging by @weypro in https://github.com/obss/sahi/pull/445
    • improve json loading by @qingfengtommy in https://github.com/obss/sahi/pull/453

    New Contributors

    • @weypro made their first contribution in https://github.com/obss/sahi/pull/445
    • @qingfengtommy made their first contribution in https://github.com/obss/sahi/pull/453

    Full Changelog: https://github.com/obss/sahi/compare/0.9.3...0.9.4

    Source code(tar.gz)
    Source code(zip)
  • 0.9.3(May 8, 2022)

    What's Changed

    • add support for video prediction by @madenburak in https://github.com/obss/sahi/pull/442

    sahi-video-inf

    • export prediction visuals by default @fcakyon in ##
    • add detection_model input to predict function by @ssahinnkadir in https://github.com/obss/sahi/pull/443
    • refactor postprocess call by @fcakyon in https://github.com/obss/sahi/pull/458
    • update yolov5, mmdet, norfair versions in ci by @fcakyon in https://github.com/obss/sahi/pull/459

    New Contributors

    • @madenburak made their first contribution in https://github.com/obss/sahi/pull/442

    Full Changelog: https://github.com/obss/sahi/compare/0.9.2...0.9.3

    Source code(tar.gz)
    Source code(zip)
  • 0.9.2(Apr 9, 2022)

    What's Changed

    • fix fiftyone utils by @fcakyon in https://github.com/obss/sahi/pull/423
    • update paper doi badge by @fcakyon in https://github.com/obss/sahi/pull/424
    • update env setup in readme by @kadirnar in https://github.com/obss/sahi/pull/408
    • update contributing section in readme by @fcakyon in https://github.com/obss/sahi/pull/434
    • update cli docs by @fcakyon in https://github.com/obss/sahi/pull/437
    • update package versions in ci by @fcakyon in https://github.com/obss/sahi/pull/439
    • update version by @fcakyon in https://github.com/obss/sahi/pull/440

    Full Changelog: https://github.com/obss/sahi/compare/0.9.1...0.9.2

    Source code(tar.gz)
    Source code(zip)
    test.mp4(686.92 KB)
  • 0.9.1(Mar 17, 2022)

    What's Changed

    • add the list of competitions sahi made us win by @fcakyon in https://github.com/obss/sahi/pull/385
    • add citation to paper by @fcakyon in https://github.com/obss/sahi/pull/387
    • add arxiv url for the SAHI paper by @fcakyon in https://github.com/obss/sahi/pull/388
    • handle invalid mask prediction by @fcakyon in https://github.com/obss/sahi/pull/390
    • improve code quality by @fcakyon in https://github.com/obss/sahi/pull/398
    • improve nms postprocess by @tureckova in https://github.com/obss/sahi/pull/405

    Full Changelog: https://github.com/obss/sahi/compare/0.9.0...0.9.1

    Source code(tar.gz)
    Source code(zip)
  • 0.9.0(Feb 12, 2022)

    detectron2

    What's Changed

    • add detectron2 support by @kadirnar in https://github.com/obss/sahi/pull/322
    • update detectron notebook by @fcakyon in https://github.com/obss/sahi/pull/355
    • refactor readme by @fcakyon in https://github.com/obss/sahi/pull/316
    • refactor slice_coco script and cli by @fcakyon in https://github.com/obss/sahi/pull/359
    • update analysis gif in readme by @fcakyon in https://github.com/obss/sahi/pull/362
    • update slice_coco export naming by @fcakyon in https://github.com/obss/sahi/pull/361
    • fix broken links in readme by @fcakyon in https://github.com/obss/sahi/pull/365
    • add kaggle notebook into readme by @rkinas in https://github.com/obss/sahi/pull/366
    • handle when class name contains invalid char by @fcakyon in https://github.com/obss/sahi/pull/369
    • handle out of image bbox predictions by @fcakyon in https://github.com/obss/sahi/pull/373
    • handle annotation dict without segmentation by @tureckova in https://github.com/obss/sahi/pull/374
    • fix unused coco util by @fcakyon @oulcan in https://github.com/obss/sahi/pull/375
    • fix coco util tests by @fcakyon in https://github.com/obss/sahi/pull/376
    • update torch, torchvision, mmdet, mmcv in tests by @fcakyon in https://github.com/obss/sahi/pull/379
    • handle nms-postprocess in edge cases by @fcakyon in https://github.com/obss/sahi/pull/370

    New Contributors

    • @kadirnar made their first contribution in https://github.com/obss/sahi/pull/322
    • @tureckova made their first contribution in https://github.com/obss/sahi/pull/374

    Full Changelog: https://github.com/obss/sahi/compare/0.8.22...0.9.0

    Source code(tar.gz)
    Source code(zip)
  • 0.8.22(Jan 13, 2022)

    What's Changed

    • fix LSNMS potprocess handle numpy array index in ObjectPredictionList by @fcakyon in https://github.com/obss/sahi/pull/350
    • fix unused coco merge util by @fcakyon in https://github.com/obss/sahi/pull/353

    Full Changelog: https://github.com/obss/sahi/compare/0.8.20...0.8.22

    Source code(tar.gz)
    Source code(zip)
  • 0.8.20(Jan 11, 2022)

    What's Changed

    • fix typo in print by @fcakyon in https://github.com/obss/sahi/pull/339
    • Update error analysis by @fcakyon in https://github.com/obss/sahi/pull/340
    • fix warning messages in coco analysis by @fcakyon in https://github.com/obss/sahi/pull/341
    • add auto postprocess type to predict by @fcakyon in https://github.com/obss/sahi/pull/342
    • refactor fiftyone utils by @fcakyon in https://github.com/obss/sahi/pull/345

    Full Changelog: https://github.com/obss/sahi/compare/0.8.19...0.8.20

    Source code(tar.gz)
    Source code(zip)
  • 0.8.19(Jan 6, 2022)

  • 0.8.18(Jan 2, 2022)

    What's Changed

    • refactor postprocessing and coco eval for 100x speed up by @fcakyon in https://github.com/obss/sahi/pull/320
    • refactor image_size and model_confidence for faster inference by @fcakyon in https://github.com/obss/sahi/pull/329
    • remove deprecated coco util by @fcakyon in https://github.com/obss/sahi/pull/323
    • fix LSNMSPostprocess by @fcakyon in https://github.com/obss/sahi/pull/330
    • fix rmtree in tests by @fcakyon in https://github.com/obss/sahi/pull/326

    Full Changelog: https://github.com/obss/sahi/compare/0.8.16...0.8.18

    Source code(tar.gz)
    Source code(zip)
  • 0.8.16(Dec 26, 2021)

    What's Changed

    • refactorize model classes, handle invalid polygons, minor improvements by @fcakyon in https://github.com/obss/sahi/pull/311
    • refactor tests and coco utils by @fcakyon in https://github.com/obss/sahi/pull/313
    • fix nms postprocess by @fcakyon in https://github.com/obss/sahi/pull/314
    • update predict verbose by @fcakyon in https://github.com/obss/sahi/pull/317
    • print exports dirs after process finishes by @fcakyon in https://github.com/obss/sahi/pull/318

    Full Changelog: https://github.com/obss/sahi/compare/0.8.15...0.8.16

    Source code(tar.gz)
    Source code(zip)
  • 0.8.15(Dec 15, 2021)

    What's Changed

    • update default params to match coco eval and error analysis by @fcakyon in https://github.com/obss/sahi/pull/306
    • utilize max_detections in coco_error_analysis by @fcakyon in https://github.com/obss/sahi/pull/307
    • reformat coco_error_analysis with black by @fcakyon in https://github.com/obss/sahi/pull/308

    Full Changelog: https://github.com/obss/sahi/compare/0.8.14...0.8.15

    Source code(tar.gz)
    Source code(zip)
Owner
Open Business Software Solutions
Open Source for Open Business
Open Business Software Solutions
NICE-GAN — Official PyTorch Implementation Reusing Discriminators for Encoding: Towards Unsupervised Image-to-Image Translation

NICE-GAN-pytorch - Official PyTorch implementation of NICE-GAN: Reusing Discriminators for Encoding: Towards Unsupervised Image-to-Image Translation

Runfa Chen 208 Nov 25, 2022
you can add any codes in any language by creating its respective folder (if already not available).

HACKTOBERFEST-2021-WEB-DEV Beginner-Hacktoberfest Need Your first pr for hacktoberfest 2k21 ? come on in About This is repository of Responsive Portfo

Suman Sharma 8 Oct 17, 2022
Deep Surface Reconstruction from Point Clouds with Visibility Information

Data, code and pretrained models for the paper Deep Surface Reconstruction from Point Clouds with Visibility Information.

Raphael Sulzer 23 Jan 04, 2023
[NeurIPS 2021] Well-tuned Simple Nets Excel on Tabular Datasets

[NeurIPS 2021] Well-tuned Simple Nets Excel on Tabular Datasets Introduction This repo contains the source code accompanying the paper: Well-tuned Sim

52 Jan 04, 2023
Campsite Reservation Finder

yellowstone-camping UPDATE: yellowstone-camping is being expanded and renamed to camply. The updated tool now interfaces with the Recreation.gov API a

Justin Flannery 233 Jan 08, 2023
TAug :: Time Series Data Augmentation using Deep Generative Models

TAug :: Time Series Data Augmentation using Deep Generative Models Note!!! The package is under development so be careful for using in production! Fea

35 Dec 06, 2022
LoveDA: A Remote Sensing Land-Cover Dataset for Domain Adaptive Semantic Segmentation (NeurIPS2021 Benchmark and Dataset Track)

LoveDA: A Remote Sensing Land-Cover Dataset for Domain Adaptive Semantic Segmentation by Junjue Wang, Zhuo Zheng, Ailong Ma, Xiaoyan Lu, and Yanfei Zh

Kingdrone 174 Dec 22, 2022
Code for reproducing our analysis in the paper titled: Image Cropping on Twitter: Fairness Metrics, their Limitations, and the Importance of Representation, Design, and Agency

Image Crop Analysis This is a repo for the code used for reproducing our Image Crop Analysis paper as shared on our blog post. If you plan to use this

Twitter Research 239 Jan 02, 2023
Using contrastive learning and OpenAI's CLIP to find good embeddings for images with lossy transformations

The official code for the paper "Inverse Problems Leveraging Pre-trained Contrastive Representations" (to appear in NeurIPS 2021).

Sriram Ravula 26 Dec 10, 2022
Repository for open research on optimizers.

Open Optimizers Repository for open research on optimizers. This is a test in sharing research/exploration as it happens. If you use anything from thi

Ariel Ekgren 6 Jun 24, 2022
Public repository created to store my custom-made tools for Just Dance (UbiArt Engine)

Woody's Just Dance Tools Public repository created to store my custom-made tools for Just Dance (UbiArt Engine) Development and updates Almost all of

Wodson de Andrade 8 Dec 24, 2022
Video Contrastive Learning with Global Context

Video Contrastive Learning with Global Context (VCLR) This is the official PyTorch implementation of our VCLR paper. Install dependencies environments

143 Dec 26, 2022
Improving Contrastive Learning by Visualizing Feature Transformation, ICCV 2021 Oral

Improving Contrastive Learning by Visualizing Feature Transformation This project hosts the codes, models and visualization tools for the paper: Impro

Bingchen Zhao 83 Dec 15, 2022
天勤量化开发包, 期货量化, 实时行情/历史数据/实盘交易

TqSdk 天勤量化交易策略程序开发包 TqSdk 是一个由信易科技发起并贡献主要代码的开源 python 库. 依托快期多年积累成熟的交易及行情服务器体系, TqSdk 支持用户使用极少的代码量构建各种类型的量化交易策略程序, 并提供包含期货、期权、股票的 历史数据-实时数据-开发调试-策略回测-

信易科技 2.8k Dec 30, 2022
Real-Time and Accurate Full-Body Multi-Person Pose Estimation&Tracking System

News! Aug 2020: v0.4.0 version of AlphaPose is released! Stronger tracking! Include whole body(face,hand,foot) keypoints! Colab now available. Dec 201

Machine Vision and Intelligence Group @ SJTU 6.7k Dec 28, 2022
For AILAB: Cross Lingual Retrieval on Yelp Search Engine

Cross-lingual Information Retrieval Model for Document Search Train Phase CUDA_VISIBLE_DEVICES="0,1,2,3" \ python -m torch.distributed.launch --nproc_

Chilia Waterhouse 104 Nov 12, 2022
Multiple-Object Tracking with Transformer

TransTrack: Multiple-Object Tracking with Transformer Introduction TransTrack: Multiple-Object Tracking with Transformer Models Training data Training

Peize Sun 537 Jan 04, 2023
Hierarchical probabilistic 3D U-Net, with attention mechanisms (—𝘈𝘵𝘵𝘦𝘯𝘵𝘪𝘰𝘯 𝘜-𝘕𝘦𝘵, 𝘚𝘌𝘙𝘦𝘴𝘕𝘦𝘵) and a nested decoder structure with deep supervision (—𝘜𝘕𝘦𝘵++).

Hierarchical probabilistic 3D U-Net, with attention mechanisms (—𝘈𝘵𝘵𝘦𝘯𝘵𝘪𝘰𝘯 𝘜-𝘕𝘦𝘵, 𝘚𝘌𝘙𝘦𝘴𝘕𝘦𝘵) and a nested decoder structure with deep supervision (—𝘜𝘕𝘦𝘵++). Built in TensorFlow 2.5. Configured for vox

Diagnostic Image Analysis Group 32 Dec 08, 2022
Wide Residual Networks (WideResNets) in PyTorch

Wide Residual Networks (WideResNets) in PyTorch WideResNets for CIFAR10/100 implemented in PyTorch. This implementation requires less GPU memory than

Jason Kuen 296 Dec 27, 2022
Curated list of awesome GAN applications and demo

gans-awesome-applications Curated list of awesome GAN applications and demonstrations. Note: General GAN papers targeting simple image generation such

Minchul Shin 4.5k Jan 07, 2023