readme: ---
  license: apache-2.0
  inference: false
  tags:
  - object-detection
  - computer-vision
  - vision
  - mmdet
  - sahi
  
  datasets:
  - detection-datasets/coco
  ---
  
  ### Model Description
  [YOLOX: Exceeding YOLO Series in 2021](https://arxiv.org/abs/2107.08430)
  
  [SAHI: Slicing Aided Hyper Inference and Fine-tuning for Small Object Detection](https://arxiv.org/abs/2202.06934)
  
  Improved anchor-free YOLO architecture for object detection task.
  
  
  ### Documents
  - [GitHub Repo](https://github.com/open-mmlab/mmdetection/blob/master/configs/yolox/README.md)
  - [Paper - YOLOX: Exceeding YOLO Series in 2021](https://arxiv.org/abs/2107.08430)
    
  ### Datasets
  The YOLOX model was pre-trained on [ImageNet-1k](https://huggingface.co/datasets/imagenet2012) and fine-tuned on [COCO 2017 object detection](https://cocodataset.org/#download), a dataset consisting of 118k/5k annotated images for training/validation respectively. 
  
  
  ### How to use
  
  - Install [sahi](https://github.com/obss/sahi) and `mmdet`:
  
  ```bash
  pip install -U sahi
  pip install mmcv-full==1.7.0 -f https://download.openmmlab.com/mmcv/dist/cu113/torch1.11.0/index.html
  pip install mmdet==2.26.0
  ```
  
  - Load model and perform prediction:
  
  ```python
  from sahi import AutoDetectionModel
  from sahi.utils.file import download_from_url
  from sahi.predict import get_prediction
  from sahi.cv import read_image_as_pil
  
  MMDET_YOLOX_TINY_MODEL_URL = "https://huggingface.co/fcakyon/mmdet-yolox-tiny/resolve/main/yolox_tiny_8x8_300e_coco_20211124_171234-b4047906.pth"
  MMDET_YOLOX_TINY_MODEL_PATH = "yolox.pt"
  MMDET_YOLOX_TINY_CONFIG_URL = "https://huggingface.co/fcakyon/mmdet-yolox-tiny/raw/main/yolox_tiny_8x8_300e_coco.py"
  MMDET_YOLOX_TINY_CONFIG_PATH = "config.py"
  IMAGE_URL = "https://user-images.githubusercontent.com/34196005/142730935-2ace3999-a47b-49bb-83e0-2bdd509f1c90.jpg"
  
  # download weight and config
  download_from_url(
    MMDET_YOLOX_TINY_MODEL_URL,
    MMDET_YOLOX_TINY_MODEL_PATH,
  )
  download_from_url(
    MMDET_YOLOX_TINY_CONFIG_URL,
    MMDET_YOLOX_TINY_CONFIG_PATH,
  )
  
  # create model
  detection_model = AutoDetectionModel.from_pretrained(
      model_type='mmdet',
      model_path=MMDET_YOLOX_TINY_MODEL_PATH,
      config_path=MMDET_YOLOX_TINY_CONFIG_PATH,
      confidence_threshold=0.5,
      device="cuda:0", # or 'cpu'
  )
  
  # prepare input image
  image = read_image_as_pil(IMAGE_URL)
  
  # perform prediction
  prediction_result = get_prediction(
    image=image,
    detection_model=detection_model
  )
  
  # visualize predictions
  prediction_result.export_predictions(export_dir='results/')
  
  # get predictions
  prediction_result.object_prediction_list
  ```
  
  More info at [demo notebook](https://github.com/obss/sahi/blob/main/demo/inference_for_mmdetection.ipynb).
  
  ### BibTeX Entry and Citation Info
  ```
  @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}
  }
  ```
  ```
  @article{yolox2021,
    title={{YOLOX}: Exceeding YOLO Series in 2021},
    author={Ge, Zheng and Liu, Songtao and Wang, Feng and Li, Zeming and Sun, Jian},
    journal={arXiv preprint arXiv:2107.08430},
    year={2021}
  }
  ```