sbt-idp/cope2n-ai-fi/modules/ocr_engine/externals/sdsvtd
2023-12-12 18:51:32 +07:00
..
sdsvtd Add: Submodules 2023-12-12 18:51:32 +07:00
.gitignore Add: Submodules 2023-12-12 18:51:32 +07:00
LICENSE Add: Submodules 2023-12-12 18:51:32 +07:00
README.md Add: Submodules 2023-12-12 18:51:32 +07:00
requirements.txt Add: Submodules 2023-12-12 18:51:32 +07:00
setup.py Add: Submodules 2023-12-12 18:51:32 +07:00

Introduction

This repo serve as source code storage for the Standalone YoloX Detection packages.
Installing this package requires 2 additional packages: PyTorch and MMCV.

Installation

conda create -n sdsvtd-env python=3.8
conda activate sdsvtd-env
conda install pytorch torchvision pytorch-cuda=11.6 -c pytorch -c nvidia
pip install mmcv-full
git clone https://github.com/moewiee/sdsvtd.git
cd sdsvtd
pip install -v -e .

Basic Usage

from sdsvtd import StandaloneYOLOXRunner
runner = StandaloneYOLOXRunner(version='yolox-s-general-text-pretrain-20221226', device='cpu')

The version parameter accepts version names declared in sdsvtd.factory.online_model_factory or a local path such as $DIR\model.pth. To check for available versions in the hub, run:

import sdsvtd
print(sdsvtd.__hub_available_versions__)

Naturally, a StandaloneYOLOXRunner instance assumes the input to be an instance of np.ndarray or an instance of str (batch inferece is not supported), for examples:

import numpy as np
from sdsvtd import StandaloneYOLOXRunner
runner = StandaloneYOLOXRunner(version='yolox-s-general-text-pretrain-20221226', device='cpu')

dummy_input = np.ndarray(500, 500, 3)
result = runner(dummy_input)

Note: Output of StandaloneYOLOXRunner instance will be in format List[np.ndarray] with each list element corresponds to one class. Each np.ndarray will be a 5-d vector [x1 y1 x2 y2 confident] with coordinates rescaled to fit the original image size.

AutoRotation:
From version 0.1.0, sdsvtd support AutoRotation feature which accept a np.ndarray/str as input and return an straight rotated image (only available rotation degrees are 90, 180 and 270) of type np.ndarray and its bounding boxes of type List[np.ndarray]. Usage:

import numpy as np
from sdsvtd import StandaloneYOLOXRunner
runner = StandaloneYOLOXRunner(version='yolox-s-general-text-pretrain-20221226', device='cpu', auto_rotate=True)

rotated_image, result = runner(cv2.imread('path-to-image')) # or
rotated_image, result = runner(np.ndarray)

Version Changelog

  • [0.0.1]
    Initial version with specified features.

  • [0.0.2]
    Update more versions in model hub.

  • [0.0.3]
    Update feature to specify running device while initialize runner. Issue

  • [0.0.4]
    Fix a minor bugs when existing hub/local version != current hub/local version.

  • [0.0.5]
    Update model hub with handwritten text line detection version.

  • [0.1.0]
    Update new feature: Auto Rotation.

  • [0.1.1]
    Fix a bug in API inference class where return double result with auto_rotate=False.

  • [0.1.2] Fix a bug in rotate feature where rotator_version was ignored.