From fd3d53bef8d62e009477b34291042c74adccd8ae Mon Sep 17 00:00:00 2001 From: SWHL Date: Wed, 19 Jun 2024 11:49:22 +0800 Subject: [PATCH] refactor(rapid_layout): Split rapid_layout package into an indenpent repository --- .../gen_whl_to_pypi_rapid_layout.yml | 64 ----- README.md | 4 +- docs/README_Layout.md | 82 ------ docs/doc_whl_rapid_layout.md | 1 - rapid_layout/__init__.py | 15 - rapid_layout/config.yaml | 24 -- rapid_layout/main.py | 157 ----------- rapid_layout/models/.gitkeep | 0 rapid_layout/utils/__init__.py | 18 -- rapid_layout/utils/download_model.py | 62 ----- rapid_layout/utils/infer_engine.py | 231 ---------------- rapid_layout/utils/load_image.py | 124 --------- rapid_layout/utils/logger.py | 21 -- rapid_layout/utils/post_prepross.py | 256 ------------------ rapid_layout/utils/pre_procss.py | 103 ------- rapid_layout/utils/vis_res.py | 115 -------- setup_layout.py | 66 ----- tests/test_files/layout.png | Bin 167921 -> 0 bytes tests/test_layout.py | 30 -- 19 files changed, 1 insertion(+), 1372 deletions(-) delete mode 100644 .github/workflows/gen_whl_to_pypi_rapid_layout.yml delete mode 100644 docs/README_Layout.md delete mode 100644 docs/doc_whl_rapid_layout.md delete mode 100644 rapid_layout/__init__.py delete mode 100644 rapid_layout/config.yaml delete mode 100644 rapid_layout/main.py delete mode 100644 rapid_layout/models/.gitkeep delete mode 100644 rapid_layout/utils/__init__.py delete mode 100644 rapid_layout/utils/download_model.py delete mode 100644 rapid_layout/utils/infer_engine.py delete mode 100644 rapid_layout/utils/load_image.py delete mode 100644 rapid_layout/utils/logger.py delete mode 100644 rapid_layout/utils/post_prepross.py delete mode 100644 rapid_layout/utils/pre_procss.py delete mode 100644 rapid_layout/utils/vis_res.py delete mode 100644 setup_layout.py delete mode 100644 tests/test_files/layout.png delete mode 100644 tests/test_layout.py diff --git a/.github/workflows/gen_whl_to_pypi_rapid_layout.yml b/.github/workflows/gen_whl_to_pypi_rapid_layout.yml deleted file mode 100644 index 3adb9f9..0000000 --- a/.github/workflows/gen_whl_to_pypi_rapid_layout.yml +++ /dev/null @@ -1,64 +0,0 @@ -name: Push rapidocr_layout to pypi - -on: - push: - branches: [ main ] - paths: - - 'rapid_layout/**' - - 'docs/doc_whl_rapid_layout.md' - - 'setup_layout.py' - - '.github/workflows/gen_whl_to_pypi_rapid_layout.yml' - - 'tests/test_layout.py' - -env: - RESOURCES_URL: https://github.com/RapidAI/RapidStructure/releases/download/v0.0.0/rapid_layout_models.zip - -jobs: - UnitTesting: - runs-on: ubuntu-latest - steps: - - name: Pull latest code - uses: actions/checkout@v3 - - - name: Set up Python 3.10 - uses: actions/setup-python@v4 - with: - python-version: '3.10' - architecture: 'x64' - - - name: Display Python version - run: python -c "import sys; print(sys.version)" - - - name: Unit testings - run: | - wget $RESOURCES_URL - ZIP_NAME=${RESOURCES_URL##*/} - DIR_NAME=${ZIP_NAME%.*} - - unzip $DIR_NAME - cp $DIR_NAME/*.onnx rapid_layout/models/ - pip install -r requirements.txt - pytest tests/test_layout.py - - GenerateWHL_PushPyPi: - needs: UnitTesting - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v3 - - - name: Run setup - run: | - pip install -r requirements.txt - wget $RESOURCES_URL - ZIP_NAME=${RESOURCES_URL##*/} - DIR_NAME=${ZIP_NAME%.*} - unzip $ZIP_NAME - mv $DIR_NAME/*.onnx rapid_layout/models/ - python setup_layout.py bdist_wheel "${{ github.event.head_commit.message }}" - - - name: Publish distribution 📦 to PyPI - uses: pypa/gh-action-pypi-publish@v1.5.0 - with: - password: ${{ secrets.RAPID_STRUCTURE }} - packages_dir: dist/ diff --git a/README.md b/README.md index 4f953f8..fd9e64b 100644 --- a/README.md +++ b/README.md @@ -15,8 +15,6 @@ ### 简介 -> 🎉 推出知识星球[RapidAI私享群](https://t.zsxq.com/0duLBZczw),这里的提问会优先得到回答和支持,也会享受到RapidAI组织后续持续优质的服务,欢迎大家的加入。 - 该部分的功能主要针对文档类图像,包括文档图像分类、版面分析和表格识别。 可配套使用项目:[RapidOCR](https://github.com/RapidAI/RapidOCR) @@ -24,7 +22,7 @@ 相关模型托管:[Hugging Face Models](https://huggingface.co/SWHL/RapidStructure) ### [文档方向分类](./docs/README_Orientation.md) -### [版面分析](./docs/README_Layout.md) +### [版面分析](https://github.com/RapidAI/RapidLayout) ### [表格识别](./docs/README_Table.md) 更多表格识别:[TableStructureRec](https://github.com/RapidAI/TableStructureRec) diff --git a/docs/README_Layout.md b/docs/README_Layout.md deleted file mode 100644 index bd2b518..0000000 --- a/docs/README_Layout.md +++ /dev/null @@ -1,82 +0,0 @@ -## Rapid Layout -

- - - PyPI - -

- -#### 简介和说明 -- 该部分主要是做文档类图像的版面分析。模型来源:[PaddleOCR 版面分析](https://github.com/PaddlePaddle/PaddleOCR/blob/133d67f27dc8a241d6b2e30a9f047a0fb75bebbe/ppstructure/layout/README_ch.md) -- 具体来说,就是分析给定的文档类别图像(论文截图等),定位其中类别和位置,如标题、段落、表格和图片等各个部分。 -- 目前支持三种类别的版面分析模型:中文、英文和表格版面分析模型,具体可参见下面表格: - - |`model_type`| 版面类型 | 模型名称 | 支持类别| - | :------ | :----- | :------ | :----- | - |`pp_layout_table`| 表格 | `layout_table.onnx` |`table` | - | `pp_layout_publaynet`| 英文 | `layout_publaynet.onnx` |`text title list table figure` | - | `pp_layout_table`| 中文 | `layout_cdla.onnx` | `text title figure figure_caption table table_caption`
`header footer reference equation` | - -- 模型下载地址为:[百度网盘](https://pan.baidu.com/s/1PI9fksW6F6kQfJhwUkewWg?pwd=p29g) | [Google Drive](https://drive.google.com/drive/folders/1DAPWSN2zGQ-ED_Pz7RaJGTjfkN2-Mvsf?usp=sharing) - -#### 安装 -由于模型较小,预先将中文版面分析模型(`layout_cdla.onnx`)打包进了whl包内,如果做中文版面分析,可直接安装使用 - -```bash -$ pip install rapid-layout -``` - -#### 使用方式 -1. python脚本运行 - ```python - import cv2 - from rapid_layout import RapidLayout,vis_layout - - # model_type类型参见上表。指定不同model_type时,会自动下载相应模型到安装目录下的。 - layout_engine = RapidLayout(box_threshold=0.5, model_type="pp_layout_cdla") - - img = cv2.imread('test_images/layout.png') - - layout_res, elapse = layout_engine(img) - - ploted_img = vis_layout(img, layout_res) - cv2.imwrite("layout_res.png", ploted_img) - print(layout_res) - ``` - -2. 终端运行 - - 用法: - ```bash - $ rapid_layout -h - usage: rapid_layout [-h] -img IMG_PATH [-m {pp_layout_cdla,pp_layout_publaynet,pp_layout_table}] - [--box_threshold {pp_layout_cdla,pp_layout_publaynet,pp_layout_table}] [-v] - - options: - -h, --help show this help message and exit - -img IMG_PATH, --img_path IMG_PATH - Path to image for layout. - -m {pp_layout_cdla,pp_layout_publaynet,pp_layout_table}, --model_type {pp_layout_cdla,pp_layout_publaynet,pp_layout_table} - Support model type - --box_threshold {pp_layout_cdla,pp_layout_publaynet,pp_layout_table} - Box threshold, the range is [0, 1] - -v, --vis Wheter to visualize the layout results. - ``` - - 示例: - ```bash - $ rapid_layout -v -img test_images/layout.png - ``` - -3. 结果 - - 返回结果 - ```python - # bbox: [左上角x0,左上角y0, 右下角x1, 右下角y1] - # label: 类别 - [ - {'bbox': array([321.4160495, 91.53214898, 562.06141263, 199.85522603]), 'label': 'text'}, - {'bbox': array([58.67292211, 107.29000663, 300.25448676, 199.68142]), 'label': 'table_caption'} - ] - ``` - - 可视化结果 -
- -
diff --git a/docs/doc_whl_rapid_layout.md b/docs/doc_whl_rapid_layout.md deleted file mode 100644 index 8163c11..0000000 --- a/docs/doc_whl_rapid_layout.md +++ /dev/null @@ -1 +0,0 @@ -See [link](https://github.com/RapidAI/RapidStructure) for details. diff --git a/rapid_layout/__init__.py b/rapid_layout/__init__.py deleted file mode 100644 index 014ffb0..0000000 --- a/rapid_layout/__init__.py +++ /dev/null @@ -1,15 +0,0 @@ -# copyright (c) 2020 PaddlePaddle Authors. All Rights Reserve. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -from .main import RapidLayout -from .utils import VisLayout diff --git a/rapid_layout/config.yaml b/rapid_layout/config.yaml deleted file mode 100644 index 33a85d2..0000000 --- a/rapid_layout/config.yaml +++ /dev/null @@ -1,24 +0,0 @@ -model_path: models/layout_cdla.onnx - -use_cuda: false -CUDAExecutionProvider: - device_id: 0 - arena_extend_strategy: kNextPowerOfTwo - cudnn_conv_algo_search: EXHAUSTIVE - do_copy_in_default_stream: true - -pre_process: - Resize: - size: [800, 608] - NormalizeImage: - std: [0.229, 0.224, 0.225] - mean: [0.485, 0.456, 0.406] - scale: 1./255. - order: hwc - ToCHWImage: - KeepKeys: - keep_keys: ['image'] - -post_process: - score_threshold: 0.5 - nms_threshold: 0.5 \ No newline at end of file diff --git a/rapid_layout/main.py b/rapid_layout/main.py deleted file mode 100644 index ae06b92..0000000 --- a/rapid_layout/main.py +++ /dev/null @@ -1,157 +0,0 @@ -# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -import argparse -import time -from pathlib import Path -from typing import Optional, Tuple, Union - -import cv2 -import numpy as np - -from .utils import ( - DownloadModel, - LoadImage, - OrtInferSession, - PicoDetPostProcess, - VisLayout, - create_operators, - get_logger, - read_yaml, - transform, -) - -ROOT_DIR = Path(__file__).resolve().parent -logger = get_logger("rapid_layout") - -ROOT_URL = "https://github.com/RapidAI/RapidStructure/releases/download/v0.0.0/" -KEY_TO_MODEL_URL = { - "pp_layout_cdla": f"{ROOT_URL}/layout_cdla.onnx", - "pp_layout_publaynet": f"{ROOT_URL}/layout_publaynet.onnx", - "pp_layout_table": f"{ROOT_URL}/layout_table.onnx", -} -DEFAULT_MODEL_PATH = str(ROOT_DIR / "models" / "layout_cdla.onnx") - - -class RapidLayout: - def __init__( - self, - model_type: str = "pp_layout_cdla", - box_threshold: float = 0.5, - use_cuda: bool = False, - ): - config_path = str(ROOT_DIR / "config.yaml") - config = read_yaml(config_path) - config["model_path"] = self.get_model_path(model_type) - config["use_cuda"] = use_cuda - - self.session = OrtInferSession(config) - labels = self.session.get_character_list() - logger.info("%s contains %s", model_type, labels) - - self.preprocess_op = create_operators(config["pre_process"]) - - config["post_process"]["score_threshold"] = box_threshold - self.postprocess_op = PicoDetPostProcess(labels, **config["post_process"]) - self.load_img = LoadImage() - - def __call__( - self, img_content: Union[str, np.ndarray, bytes, Path] - ) -> Tuple[Optional[np.ndarray], Optional[np.ndarray], Optional[np.ndarray], float]: - img = self.load_img(img_content) - - ori_im = img.copy() - data = transform({"image": img}, self.preprocess_op) - img = data[0] - if img is None: - return None, None, None, 0.0 - - img = np.expand_dims(img, axis=0) - img = img.copy() - - preds, elapse = 0, 1 - starttime = time.time() - preds = self.session(img) - - score_list, boxes_list = [], [] - num_outs = int(len(preds) / 2) - for out_idx in range(num_outs): - score_list.append(preds[out_idx]) - boxes_list.append(preds[out_idx + num_outs]) - - boxes, scores, class_names = self.postprocess_op( - ori_im, img, {"boxes": score_list, "boxes_num": boxes_list} - ) - elapse = time.time() - starttime - return boxes, scores, class_names, elapse - - @staticmethod - def get_model_path(model_type: str) -> str: - model_url = KEY_TO_MODEL_URL.get(model_type, None) - if model_url: - model_path = DownloadModel.download(model_url) - return model_path - - logger.info("model url is None, using the default model %s", DEFAULT_MODEL_PATH) - return DEFAULT_MODEL_PATH - - -def main(): - parser = argparse.ArgumentParser() - parser.add_argument( - "-img", "--img_path", type=str, required=True, help="Path to image for layout." - ) - parser.add_argument( - "-m", - "--model_type", - type=str, - default=DEFAULT_MODEL_PATH, - choices=list(KEY_TO_MODEL_URL.keys()), - help="Support model type", - ) - parser.add_argument( - "--box_threshold", - type=float, - default=0.5, - choices=list(KEY_TO_MODEL_URL.keys()), - help="Box threshold, the range is [0, 1]", - ) - parser.add_argument( - "-v", - "--vis", - action="store_true", - help="Wheter to visualize the layout results.", - ) - args = parser.parse_args() - - layout_engine = RapidLayout( - model_type=args.model_type, box_threshold=args.box_threshold - ) - - img = cv2.imread(args.img_path) - boxes, scores, class_names, *elapse = layout_engine(img) - print(boxes) - print(scores) - print(class_names) - - if args.vis: - img_path = Path(args.img_path) - ploted_img = VisLayout.draw_detections(img, boxes, scores, class_names) - if ploted_img is not None: - save_path = img_path.resolve().parent / f"vis_{img_path.name}" - cv2.imwrite(str(save_path), ploted_img) - print(f"The visualized image has been saved in {save_path}") - - -if __name__ == "__main__": - main() diff --git a/rapid_layout/models/.gitkeep b/rapid_layout/models/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/rapid_layout/utils/__init__.py b/rapid_layout/utils/__init__.py deleted file mode 100644 index beb7dac..0000000 --- a/rapid_layout/utils/__init__.py +++ /dev/null @@ -1,18 +0,0 @@ -# -*- encoding: utf-8 -*- -# @Author: SWHL -# @Contact: liekkaskono@163.com -import yaml - -from .download_model import DownloadModel -from .infer_engine import OrtInferSession -from .load_image import LoadImage -from .logger import get_logger -from .post_prepross import PicoDetPostProcess -from .pre_procss import create_operators, transform -from .vis_res import VisLayout - - -def read_yaml(yaml_path): - with open(yaml_path, "rb") as f: - data = yaml.load(f, Loader=yaml.Loader) - return data diff --git a/rapid_layout/utils/download_model.py b/rapid_layout/utils/download_model.py deleted file mode 100644 index a0d9d93..0000000 --- a/rapid_layout/utils/download_model.py +++ /dev/null @@ -1,62 +0,0 @@ -# -*- encoding: utf-8 -*- -# @Author: SWHL -# @Contact: liekkaskono@163.com -import io -from pathlib import Path -from typing import Optional, Union - -import requests -from tqdm import tqdm - -from .logger import get_logger - -logger = get_logger("DownloadModel") -CUR_DIR = Path(__file__).resolve() -PROJECT_DIR = CUR_DIR.parent.parent - - -class DownloadModel: - cur_dir = PROJECT_DIR - - @classmethod - def download(cls, model_full_url: Union[str, Path]) -> str: - save_dir = cls.cur_dir / "models" - save_dir.mkdir(parents=True, exist_ok=True) - - model_name = Path(model_full_url).name - save_file_path = save_dir / model_name - if save_file_path.exists(): - logger.info("%s already exists", save_file_path) - return str(save_file_path) - - try: - logger.info("Download %s to %s", model_full_url, save_dir) - file = cls.download_as_bytes_with_progress(model_full_url, model_name) - cls.save_file(save_file_path, file) - except Exception as exc: - raise DownloadModelError from exc - return str(save_file_path) - - @staticmethod - def download_as_bytes_with_progress( - url: Union[str, Path], name: Optional[str] = None - ) -> bytes: - resp = requests.get(str(url), stream=True, allow_redirects=True, timeout=180) - total = int(resp.headers.get("content-length", 0)) - bio = io.BytesIO() - with tqdm( - desc=name, total=total, unit="b", unit_scale=True, unit_divisor=1024 - ) as pbar: - for chunk in resp.iter_content(chunk_size=65536): - pbar.update(len(chunk)) - bio.write(chunk) - return bio.getvalue() - - @staticmethod - def save_file(save_path: Union[str, Path], file: bytes): - with open(save_path, "wb") as f: - f.write(file) - - -class DownloadModelError(Exception): - pass diff --git a/rapid_layout/utils/infer_engine.py b/rapid_layout/utils/infer_engine.py deleted file mode 100644 index fb1fd35..0000000 --- a/rapid_layout/utils/infer_engine.py +++ /dev/null @@ -1,231 +0,0 @@ -# -*- encoding: utf-8 -*- -# @Author: SWHL -# @Contact: liekkaskono@163.com -import os -import platform -import traceback -from enum import Enum -from pathlib import Path -from typing import Any, Dict, List, Tuple, Union - -import numpy as np -from onnxruntime import ( - GraphOptimizationLevel, - InferenceSession, - SessionOptions, - get_available_providers, - get_device, -) - -from .logger import get_logger - - -class EP(Enum): - CPU_EP = "CPUExecutionProvider" - CUDA_EP = "CUDAExecutionProvider" - DIRECTML_EP = "DmlExecutionProvider" - - -class OrtInferSession: - def __init__(self, config: Dict[str, Any]): - self.logger = get_logger("OrtInferSession") - - model_path = config.get("model_path", None) - self._verify_model(model_path) - - self.cfg_use_cuda = config.get("use_cuda", None) - self.cfg_use_dml = config.get("use_dml", None) - - self.had_providers: List[str] = get_available_providers() - EP_list = self._get_ep_list() - - sess_opt = self._init_sess_opts(config) - self.session = InferenceSession( - model_path, - sess_options=sess_opt, - providers=EP_list, - ) - self._verify_providers() - - @staticmethod - def _init_sess_opts(config: Dict[str, Any]) -> SessionOptions: - sess_opt = SessionOptions() - sess_opt.log_severity_level = 4 - sess_opt.enable_cpu_mem_arena = False - sess_opt.graph_optimization_level = GraphOptimizationLevel.ORT_ENABLE_ALL - - cpu_nums = os.cpu_count() - intra_op_num_threads = config.get("intra_op_num_threads", -1) - if intra_op_num_threads != -1 and 1 <= intra_op_num_threads <= cpu_nums: - sess_opt.intra_op_num_threads = intra_op_num_threads - - inter_op_num_threads = config.get("inter_op_num_threads", -1) - if inter_op_num_threads != -1 and 1 <= inter_op_num_threads <= cpu_nums: - sess_opt.inter_op_num_threads = inter_op_num_threads - - return sess_opt - - def _get_ep_list(self) -> List[Tuple[str, Dict[str, Any]]]: - cpu_provider_opts = { - "arena_extend_strategy": "kSameAsRequested", - } - EP_list = [(EP.CPU_EP.value, cpu_provider_opts)] - - cuda_provider_opts = { - "device_id": 0, - "arena_extend_strategy": "kNextPowerOfTwo", - "cudnn_conv_algo_search": "EXHAUSTIVE", - "do_copy_in_default_stream": True, - } - self.use_cuda = self._check_cuda() - if self.use_cuda: - EP_list.insert(0, (EP.CUDA_EP.value, cuda_provider_opts)) - - self.use_directml = self._check_dml() - if self.use_directml: - self.logger.info( - "Windows 10 or above detected, try to use DirectML as primary provider" - ) - directml_options = ( - cuda_provider_opts if self.use_cuda else cpu_provider_opts - ) - EP_list.insert(0, (EP.DIRECTML_EP.value, directml_options)) - return EP_list - - def _check_cuda(self) -> bool: - if not self.cfg_use_cuda: - return False - - cur_device = get_device() - if cur_device == "GPU" and EP.CUDA_EP.value in self.had_providers: - return True - - self.logger.warning( - "%s is not in available providers (%s). Use %s inference by default.", - EP.CUDA_EP.value, - self.had_providers, - self.had_providers[0], - ) - self.logger.info("!!!Recommend to use rapidocr_paddle for inference on GPU.") - self.logger.info( - "(For reference only) If you want to use GPU acceleration, you must do:" - ) - self.logger.info( - "First, uninstall all onnxruntime pakcages in current environment." - ) - self.logger.info( - "Second, install onnxruntime-gpu by `pip install onnxruntime-gpu`." - ) - self.logger.info( - "\tNote the onnxruntime-gpu version must match your cuda and cudnn version." - ) - self.logger.info( - "\tYou can refer this link: https://onnxruntime.ai/docs/execution-providers/CUDA-EP.html" - ) - self.logger.info( - "Third, ensure %s is in available providers list. e.g. ['CUDAExecutionProvider', 'CPUExecutionProvider']", - EP.CUDA_EP.value, - ) - return False - - def _check_dml(self) -> bool: - if not self.cfg_use_dml: - return False - - cur_os = platform.system() - if cur_os != "Windows": - self.logger.warning( - "DirectML is only supported in Windows OS. The current OS is %s. Use %s inference by default.", - cur_os, - self.had_providers[0], - ) - return False - - cur_window_version = int(platform.release().split(".")[0]) - if cur_window_version < 10: - self.logger.warning( - "DirectML is only supported in Windows 10 and above OS. The current Windows version is %s. Use %s inference by default.", - cur_window_version, - self.had_providers[0], - ) - return False - - if EP.DIRECTML_EP.value in self.had_providers: - return True - - self.logger.warning( - "%s is not in available providers (%s). Use %s inference by default.", - EP.DIRECTML_EP.value, - self.had_providers, - self.had_providers[0], - ) - self.logger.info("If you want to use DirectML acceleration, you must do:") - self.logger.info( - "First, uninstall all onnxruntime pakcages in current environment." - ) - self.logger.info( - "Second, install onnxruntime-directml by `pip install onnxruntime-directml`" - ) - self.logger.info( - "Third, ensure %s is in available providers list. e.g. ['DmlExecutionProvider', 'CPUExecutionProvider']", - EP.DIRECTML_EP.value, - ) - return False - - def _verify_providers(self): - session_providers = self.session.get_providers() - first_provider = session_providers[0] - - if self.use_cuda and first_provider != EP.CUDA_EP.value: - self.logger.warning( - "%s is not avaiable for current env, the inference part is automatically shifted to be executed under %s.", - EP.CUDA_EP.value, - first_provider, - ) - - if self.use_directml and first_provider != EP.DIRECTML_EP.value: - self.logger.warning( - "%s is not available for current env, the inference part is automatically shifted to be executed under %s.", - EP.DIRECTML_EP.value, - first_provider, - ) - - def __call__(self, input_content: np.ndarray) -> np.ndarray: - input_dict = dict(zip(self.get_input_names(), [input_content])) - try: - return self.session.run(self.get_output_names(), input_dict) - except Exception as e: - error_info = traceback.format_exc() - raise ONNXRuntimeError(error_info) from e - - def get_input_names(self) -> List[str]: - return [v.name for v in self.session.get_inputs()] - - def get_output_names(self) -> List[str]: - return [v.name for v in self.session.get_outputs()] - - def get_character_list(self, key: str = "character") -> List[str]: - meta_dict = self.session.get_modelmeta().custom_metadata_map - return meta_dict[key].splitlines() - - def have_key(self, key: str = "character") -> bool: - meta_dict = self.session.get_modelmeta().custom_metadata_map - if key in meta_dict.keys(): - return True - return False - - @staticmethod - def _verify_model(model_path: Union[str, Path, None]): - if model_path is None: - raise ValueError("model_path is None!") - - model_path = Path(model_path) - if not model_path.exists(): - raise FileNotFoundError(f"{model_path} does not exists.") - - if not model_path.is_file(): - raise FileExistsError(f"{model_path} is not a file.") - - -class ONNXRuntimeError(Exception): - pass diff --git a/rapid_layout/utils/load_image.py b/rapid_layout/utils/load_image.py deleted file mode 100644 index 04c49e0..0000000 --- a/rapid_layout/utils/load_image.py +++ /dev/null @@ -1,124 +0,0 @@ -# -*- encoding: utf-8 -*- -# @Author: SWHL -# @Contact: liekkaskono@163.com -from io import BytesIO -from pathlib import Path -from typing import Any, Union - -import cv2 -import numpy as np -from PIL import Image, UnidentifiedImageError - -root_dir = Path(__file__).resolve().parent -InputType = Union[str, np.ndarray, bytes, Path, Image.Image] - - -class LoadImage: - def __init__(self): - pass - - def __call__(self, img: InputType) -> np.ndarray: - if not isinstance(img, InputType.__args__): - raise LoadImageError( - f"The img type {type(img)} does not in {InputType.__args__}" - ) - - origin_img_type = type(img) - img = self.load_img(img) - img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR) - img = self.convert_img(img, origin_img_type) - return img - - def load_img(self, img: InputType) -> np.ndarray: - if isinstance(img, (str, Path)): - self.verify_exist(img) - try: - img = self.img_to_ndarray(Image.open(img)) - except UnidentifiedImageError as e: - raise LoadImageError(f"cannot identify image file {img}") from e - return img - - if isinstance(img, bytes): - img = self.img_to_ndarray(Image.open(BytesIO(img))) - return img - - if isinstance(img, np.ndarray): - return img - - if isinstance(img, Image.Image): - return self.img_to_ndarray(img) - - raise LoadImageError(f"{type(img)} is not supported!") - - def img_to_ndarray(self, img: Image.Image) -> np.ndarray: - if img.mode == "1": - img = img.convert("L") - return np.array(img) - return np.array(img) - - def convert_img(self, img: np.ndarray, origin_img_type: Any) -> np.ndarray: - if img.ndim == 2: - return cv2.cvtColor(img, cv2.COLOR_GRAY2BGR) - - if img.ndim == 3: - channel = img.shape[2] - if channel == 1: - return cv2.cvtColor(img, cv2.COLOR_GRAY2BGR) - - if channel == 2: - return self.cvt_two_to_three(img) - - if channel == 3: - if issubclass(origin_img_type, (str, Path, bytes, Image.Image)): - return cv2.cvtColor(img, cv2.COLOR_RGB2BGR) - return img - - if channel == 4: - return self.cvt_four_to_three(img) - - raise LoadImageError( - f"The channel({channel}) of the img is not in [1, 2, 3, 4]" - ) - - raise LoadImageError(f"The ndim({img.ndim}) of the img is not in [2, 3]") - - @staticmethod - def cvt_two_to_three(img: np.ndarray) -> np.ndarray: - """gray + alpha → BGR""" - img_gray = img[..., 0] - img_bgr = cv2.cvtColor(img_gray, cv2.COLOR_GRAY2BGR) - - img_alpha = img[..., 1] - not_a = cv2.bitwise_not(img_alpha) - not_a = cv2.cvtColor(not_a, cv2.COLOR_GRAY2BGR) - - new_img = cv2.bitwise_and(img_bgr, img_bgr, mask=img_alpha) - new_img = cv2.add(new_img, not_a) - return new_img - - @staticmethod - def cvt_four_to_three(img: np.ndarray) -> np.ndarray: - """RGBA → BGR""" - r, g, b, a = cv2.split(img) - new_img = cv2.merge((b, g, r)) - - not_a = cv2.bitwise_not(a) - not_a = cv2.cvtColor(not_a, cv2.COLOR_GRAY2BGR) - - new_img = cv2.bitwise_and(new_img, new_img, mask=a) - - mean_color = np.mean(new_img) - if mean_color <= 0.0: - new_img = cv2.add(new_img, not_a) - else: - new_img = cv2.bitwise_not(new_img) - return new_img - - @staticmethod - def verify_exist(file_path: Union[str, Path]): - if not Path(file_path).exists(): - raise LoadImageError(f"{file_path} does not exist.") - - -class LoadImageError(Exception): - pass diff --git a/rapid_layout/utils/logger.py b/rapid_layout/utils/logger.py deleted file mode 100644 index 66522c4..0000000 --- a/rapid_layout/utils/logger.py +++ /dev/null @@ -1,21 +0,0 @@ -# -*- encoding: utf-8 -*- -# @Author: SWHL -# @Contact: liekkaskono@163.com -import logging -from functools import lru_cache - - -@lru_cache(maxsize=32) -def get_logger(name: str) -> logging.Logger: - logger = logging.getLogger(name) - logger.setLevel(logging.DEBUG) - - fmt = "%(asctime)s - %(name)s - %(levelname)s: %(message)s" - format_str = logging.Formatter(fmt) - - sh = logging.StreamHandler() - sh.setLevel(logging.DEBUG) - - logger.addHandler(sh) - sh.setFormatter(format_str) - return logger diff --git a/rapid_layout/utils/post_prepross.py b/rapid_layout/utils/post_prepross.py deleted file mode 100644 index f134cf8..0000000 --- a/rapid_layout/utils/post_prepross.py +++ /dev/null @@ -1,256 +0,0 @@ -# -*- encoding: utf-8 -*- -# @Author: SWHL -# @Contact: liekkaskono@163.com -import numpy as np - - -class PicoDetPostProcess: - def __init__( - self, - labels, - strides=[8, 16, 32, 64], - score_threshold=0.4, - nms_threshold=0.5, - nms_top_k=1000, - keep_top_k=100, - ): - self.labels = labels - self.strides = strides - self.score_threshold = score_threshold - self.nms_threshold = nms_threshold - self.nms_top_k = nms_top_k - self.keep_top_k = keep_top_k - - def __call__(self, ori_img, img, preds): - scores, raw_boxes = preds["boxes"], preds["boxes_num"] - batch_size = raw_boxes[0].shape[0] - reg_max = int(raw_boxes[0].shape[-1] / 4 - 1) - - out_boxes_num = [] - out_boxes_list = [] - ori_shape, input_shape, scale_factor = self.img_info(ori_img, img) - - for batch_id in range(batch_size): - # generate centers - decode_boxes = [] - select_scores = [] - for stride, box_distribute, score in zip(self.strides, raw_boxes, scores): - box_distribute = box_distribute[batch_id] - score = score[batch_id] - # centers - fm_h = input_shape[0] / stride - fm_w = input_shape[1] / stride - h_range = np.arange(fm_h) - w_range = np.arange(fm_w) - ww, hh = np.meshgrid(w_range, h_range) - ct_row = (hh.flatten() + 0.5) * stride - ct_col = (ww.flatten() + 0.5) * stride - center = np.stack((ct_col, ct_row, ct_col, ct_row), axis=1) - - # box distribution to distance - reg_range = np.arange(reg_max + 1) - box_distance = box_distribute.reshape((-1, reg_max + 1)) - box_distance = self.softmax(box_distance, axis=1) - box_distance = box_distance * np.expand_dims(reg_range, axis=0) - box_distance = np.sum(box_distance, axis=1).reshape((-1, 4)) - box_distance = box_distance * stride - - # top K candidate - topk_idx = np.argsort(score.max(axis=1))[::-1] - topk_idx = topk_idx[: self.nms_top_k] - center = center[topk_idx] - score = score[topk_idx] - box_distance = box_distance[topk_idx] - - # decode box - decode_box = center + [-1, -1, 1, 1] * box_distance - - select_scores.append(score) - decode_boxes.append(decode_box) - - # nms - bboxes = np.concatenate(decode_boxes, axis=0) - confidences = np.concatenate(select_scores, axis=0) - picked_box_probs = [] - picked_labels = [] - for class_index in range(0, confidences.shape[1]): - probs = confidences[:, class_index] - mask = probs > self.score_threshold - probs = probs[mask] - if probs.shape[0] == 0: - continue - subset_boxes = bboxes[mask, :] - box_probs = np.concatenate([subset_boxes, probs.reshape(-1, 1)], axis=1) - box_probs = self.hard_nms( - box_probs, - iou_threshold=self.nms_threshold, - top_k=self.keep_top_k, - ) - picked_box_probs.append(box_probs) - picked_labels.extend([class_index] * box_probs.shape[0]) - - if len(picked_box_probs) == 0: - out_boxes_list.append(np.empty((0, 4))) - out_boxes_num.append(0) - - else: - picked_box_probs = np.concatenate(picked_box_probs) - - # resize output boxes - picked_box_probs[:, :4] = self.warp_boxes( - picked_box_probs[:, :4], ori_shape[batch_id] - ) - im_scale = np.concatenate( - [scale_factor[batch_id][::-1], scale_factor[batch_id][::-1]] - ) - picked_box_probs[:, :4] /= im_scale - # clas score box - out_boxes_list.append( - np.concatenate( - [ - np.expand_dims(np.array(picked_labels), axis=-1), - np.expand_dims(picked_box_probs[:, 4], axis=-1), - picked_box_probs[:, :4], - ], - axis=1, - ) - ) - out_boxes_num.append(len(picked_labels)) - - out_boxes_list = np.concatenate(out_boxes_list, axis=0) - out_boxes_num = np.asarray(out_boxes_num).astype(np.int32) - - boxes, scores, class_names = [], [], [] - for dt in out_boxes_list: - clsid, bbox, score = int(dt[0]), dt[2:], dt[1] - label = self.labels[clsid] - boxes.append(bbox) - scores.append(score) - class_names.append(label) - return np.array(boxes), np.array(scores), np.array(class_names) - - def load_layout_dict(self, layout_dict_path): - with open(layout_dict_path, "r", encoding="utf-8") as fp: - labels = fp.readlines() - return [label.strip("\n") for label in labels] - - def warp_boxes(self, boxes, ori_shape): - """Apply transform to boxes""" - width, height = ori_shape[1], ori_shape[0] - n = len(boxes) - if n: - # warp points - xy = np.ones((n * 4, 3)) - xy[:, :2] = boxes[:, [0, 1, 2, 3, 0, 3, 2, 1]].reshape( - n * 4, 2 - ) # x1y1, x2y2, x1y2, x2y1 - # xy = xy @ M.T # transform - xy = (xy[:, :2] / xy[:, 2:3]).reshape(n, 8) # rescale - # create new boxes - x = xy[:, [0, 2, 4, 6]] - y = xy[:, [1, 3, 5, 7]] - xy = ( - np.concatenate((x.min(1), y.min(1), x.max(1), y.max(1))).reshape(4, n).T - ) - # clip boxes - xy[:, [0, 2]] = xy[:, [0, 2]].clip(0, width) - xy[:, [1, 3]] = xy[:, [1, 3]].clip(0, height) - return xy.astype(np.float32) - return boxes - - def img_info(self, ori_img, img): - origin_shape = ori_img.shape - resize_shape = img.shape - im_scale_y = resize_shape[2] / float(origin_shape[0]) - im_scale_x = resize_shape[3] / float(origin_shape[1]) - scale_factor = np.array([im_scale_y, im_scale_x], dtype=np.float32) - img_shape = np.array(img.shape[2:], dtype=np.float32) - - input_shape = np.array(img).astype("float32").shape[2:] - ori_shape = np.array((img_shape,)).astype("float32") - scale_factor = np.array((scale_factor,)).astype("float32") - return ori_shape, input_shape, scale_factor - - @staticmethod - def softmax(x, axis=None): - def logsumexp(a, axis=None, b=None, keepdims=False): - a_max = np.amax(a, axis=axis, keepdims=True) - - if a_max.ndim > 0: - a_max[~np.isfinite(a_max)] = 0 - elif not np.isfinite(a_max): - a_max = 0 - - tmp = np.exp(a - a_max) - - # suppress warnings about log of zero - with np.errstate(divide="ignore"): - s = np.sum(tmp, axis=axis, keepdims=keepdims) - out = np.log(s) - - if not keepdims: - a_max = np.squeeze(a_max, axis=axis) - out += a_max - return out - - return np.exp(x - logsumexp(x, axis=axis, keepdims=True)) - - def hard_nms(self, box_scores, iou_threshold, top_k=-1, candidate_size=200): - """ - Args: - box_scores (N, 5): boxes in corner-form and probabilities. - iou_threshold: intersection over union threshold. - top_k: keep top_k results. If k <= 0, keep all the results. - candidate_size: only consider the candidates with the highest scores. - Returns: - picked: a list of indexes of the kept boxes - """ - scores = box_scores[:, -1] - boxes = box_scores[:, :-1] - picked = [] - indexes = np.argsort(scores) - indexes = indexes[-candidate_size:] - while len(indexes) > 0: - current = indexes[-1] - picked.append(current) - if 0 < top_k == len(picked) or len(indexes) == 1: - break - current_box = boxes[current, :] - indexes = indexes[:-1] - rest_boxes = boxes[indexes, :] - iou = self.iou_of( - rest_boxes, - np.expand_dims(current_box, axis=0), - ) - indexes = indexes[iou <= iou_threshold] - - return box_scores[picked, :] - - def iou_of(self, boxes0, boxes1, eps=1e-5): - """Return intersection-over-union (Jaccard index) of boxes. - Args: - boxes0 (N, 4): ground truth boxes. - boxes1 (N or 1, 4): predicted boxes. - eps: a small number to avoid 0 as denominator. - Returns: - iou (N): IoU values. - """ - overlap_left_top = np.maximum(boxes0[..., :2], boxes1[..., :2]) - overlap_right_bottom = np.minimum(boxes0[..., 2:], boxes1[..., 2:]) - - overlap_area = self.area_of(overlap_left_top, overlap_right_bottom) - area0 = self.area_of(boxes0[..., :2], boxes0[..., 2:]) - area1 = self.area_of(boxes1[..., :2], boxes1[..., 2:]) - return overlap_area / (area0 + area1 - overlap_area + eps) - - @staticmethod - def area_of(left_top, right_bottom): - """Compute the areas of rectangles given two corners. - Args: - left_top (N, 2): left top corner. - right_bottom (N, 2): right bottom corner. - Returns: - area (N): return the area. - """ - hw = np.clip(right_bottom - left_top, 0.0, None) - return hw[..., 0] * hw[..., 1] diff --git a/rapid_layout/utils/pre_procss.py b/rapid_layout/utils/pre_procss.py deleted file mode 100644 index f5e3e21..0000000 --- a/rapid_layout/utils/pre_procss.py +++ /dev/null @@ -1,103 +0,0 @@ -# -*- encoding: utf-8 -*- -# @Author: SWHL -# @Contact: liekkaskono@163.com -from pathlib import Path -from typing import Union - -import cv2 -import numpy as np - -InputType = Union[str, np.ndarray, bytes, Path] - - -def transform(data, ops=None): - """transform""" - if ops is None: - ops = [] - - for op in ops: - data = op(data) - if data is None: - return None - return data - - -def create_operators(op_param_dict): - ops = [] - for op_name, param in op_param_dict.items(): - if param is None: - param = {} - op = eval(op_name)(**param) - ops.append(op) - return ops - - -class Resize: - def __init__(self, size=(640, 640)): - self.size = size - - def resize_image(self, img): - resize_h, resize_w = self.size - ori_h, ori_w = img.shape[:2] # (h, w, c) - ratio_h = float(resize_h) / ori_h - ratio_w = float(resize_w) / ori_w - img = cv2.resize(img, (int(resize_w), int(resize_h))) - return img, [ratio_h, ratio_w] - - def __call__(self, data): - img = data["image"] - if "polys" in data: - text_polys = data["polys"] - - img_resize, [ratio_h, ratio_w] = self.resize_image(img) - if "polys" in data: - new_boxes = [] - for box in text_polys: - new_box = [] - for cord in box: - new_box.append([cord[0] * ratio_w, cord[1] * ratio_h]) - new_boxes.append(new_box) - data["polys"] = np.array(new_boxes, dtype=np.float32) - data["image"] = img_resize - return data - - -class NormalizeImage: - def __init__(self, scale=None, mean=None, std=None, order="chw"): - if isinstance(scale, str): - scale = eval(scale) - - self.scale = np.float32(scale if scale is not None else 1.0 / 255.0) - mean = mean if mean is not None else [0.485, 0.456, 0.406] - std = std if std is not None else [0.229, 0.224, 0.225] - - shape = (3, 1, 1) if order == "chw" else (1, 1, 3) - self.mean = np.array(mean).reshape(shape).astype("float32") - self.std = np.array(std).reshape(shape).astype("float32") - - def __call__(self, data): - img = np.array(data["image"]) - assert isinstance(img, np.ndarray), "invalid input 'img' in NormalizeImage" - data["image"] = (img.astype("float32") * self.scale - self.mean) / self.std - return data - - -class ToCHWImage: - def __init__(self, **kwargs): - pass - - def __call__(self, data): - img = np.array(data["image"]) - data["image"] = img.transpose((2, 0, 1)) - return data - - -class KeepKeys: - def __init__(self, keep_keys): - self.keep_keys = keep_keys - - def __call__(self, data): - data_list = [] - for key in self.keep_keys: - data_list.append(data[key]) - return data_list diff --git a/rapid_layout/utils/vis_res.py b/rapid_layout/utils/vis_res.py deleted file mode 100644 index f73ee79..0000000 --- a/rapid_layout/utils/vis_res.py +++ /dev/null @@ -1,115 +0,0 @@ -# -*- encoding: utf-8 -*- -# @Author: SWHL -# @Contact: liekkaskono@163.com -from typing import Optional - -import cv2 -import numpy as np - - -class VisLayout: - @classmethod - def draw_detections( - cls, - image: np.ndarray, - boxes: Optional[np.ndarray], - scores: Optional[np.ndarray], - class_names: Optional[np.ndarray], - mask_alpha=0.3, - ) -> Optional[np.ndarray]: - """_summary_ - - Args: - image (np.ndarray): H x W x C - boxes (np.ndarray): (N, 4) - scores (np.ndarray): (N, ) - class_ids (np.ndarray): (N, ) - mask_alpha (float, optional): _description_. Defaults to 0.3. - - Returns: - np.ndarray: _description_ - """ - if boxes is None or scores is None or class_names is None: - return None - - det_img = image.copy() - - img_height, img_width = image.shape[:2] - font_size = min([img_height, img_width]) * 0.0006 - text_thickness = int(min([img_height, img_width]) * 0.001) - - det_img = cls.draw_masks(det_img, boxes, mask_alpha) - - for label, box, score in zip(class_names, boxes, scores): - color = cls.get_color() - - cls.draw_box(det_img, box, color) - caption = f"{label} {int(score * 100)}%" - cls.draw_text(det_img, caption, box, color, font_size, text_thickness) - - return det_img - - @staticmethod - def draw_box( - image: np.ndarray, - box: np.ndarray, - color: tuple[int, int, int] = (0, 0, 255), - thickness: int = 2, - ) -> np.ndarray: - x1, y1, x2, y2 = box.astype(int) - return cv2.rectangle(image, (x1, y1), (x2, y2), color, thickness) - - @staticmethod - def draw_text( - image: np.ndarray, - text: str, - box: np.ndarray, - color: tuple[int, int, int] = (0, 0, 255), - font_size: float = 0.001, - text_thickness: int = 2, - ) -> np.ndarray: - x1, y1, x2, y2 = box.astype(int) - (tw, th), _ = cv2.getTextSize( - text=text, - fontFace=cv2.FONT_HERSHEY_SIMPLEX, - fontScale=font_size, - thickness=text_thickness, - ) - th = int(th * 1.2) - - cv2.rectangle(image, (x1, y1), (x1 + tw, y1 - th), color, -1) - - return cv2.putText( - image, - text, - (x1, y1), - cv2.FONT_HERSHEY_SIMPLEX, - font_size, - (255, 255, 255), - text_thickness, - cv2.LINE_AA, - ) - - @classmethod - def draw_masks( - cls, - image: np.ndarray, - boxes: np.ndarray, - mask_alpha: float = 0.3, - ) -> np.ndarray: - mask_img = image.copy() - for box in boxes: - color = cls.get_color() - x1, y1, x2, y2 = box.astype(int) - cv2.rectangle(mask_img, (x1, y1), (x2, y2), color, -1) - - return cv2.addWeighted(mask_img, mask_alpha, image, 1 - mask_alpha, 0) - - @staticmethod - def get_color(): - colors = ( - np.random.randint(0, 255), - np.random.randint(0, 255), - np.random.randint(0, 255), - ) - return colors diff --git a/setup_layout.py b/setup_layout.py deleted file mode 100644 index ebb2bd8..0000000 --- a/setup_layout.py +++ /dev/null @@ -1,66 +0,0 @@ -# -*- encoding: utf-8 -*- -# @Author: SWHL -# @Contact: liekkaskono@163.com -import sys -from pathlib import Path - -import setuptools -from get_pypi_latest_version import GetPyPiLatestVersion - - -def get_readme(): - root_dir = Path(__file__).resolve().parent - readme_path = str(root_dir / "docs" / "doc_whl_rapid_layout.md") - with open(readme_path, "r", encoding="utf-8") as f: - readme = f.read() - return readme - - -MODULE_NAME = "rapid_layout" -obtainer = GetPyPiLatestVersion() -latest_version = obtainer(MODULE_NAME) -VERSION_NUM = obtainer.version_add_one(latest_version) - -if len(sys.argv) > 2: - match_str = " ".join(sys.argv[2:]) - matched_versions = obtainer.extract_version(match_str) - if matched_versions: - VERSION_NUM = matched_versions -sys.argv = sys.argv[:2] - -setuptools.setup( - name=MODULE_NAME, - version=VERSION_NUM, - platforms="Any", - long_description=get_readme(), - long_description_content_type="text/markdown", - description="Tools for document layout analysis based ONNXRuntime.", - author="SWHL", - author_email="liekkaskono@163.com", - url="https://github.com/RapidAI/RapidStructure", - license="Apache-2.0", - include_package_data=True, - install_requires=[ - "onnxruntime>=1.7.0", - "PyYAML>=6.0", - "opencv_python>=4.5.1.48", - "numpy>=1.21.6,<2", - "Pillow", - "tqdm", - "requests", - ], - packages=[MODULE_NAME, f"{MODULE_NAME}.models", f"{MODULE_NAME}.utils"], - package_data={"": ["layout_cdla.onnx", "*.yaml"]}, - keywords=["ppstructure,layout,rapidocr,rapid_layout"], - classifiers=[ - "Programming Language :: Python :: 3.6", - "Programming Language :: Python :: 3.7", - "Programming Language :: Python :: 3.8", - "Programming Language :: Python :: 3.9", - "Programming Language :: Python :: 3.10", - "Programming Language :: Python :: 3.11", - "Programming Language :: Python :: 3.12", - ], - python_requires=">=3.6,<3.13", - entry_points={"console_scripts": [f"{MODULE_NAME}={MODULE_NAME}.main:main"]}, -) diff --git a/tests/test_files/layout.png b/tests/test_files/layout.png deleted file mode 100644 index 29a1dc53f0b756e4102285bc265265e424744912..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 167921 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 diff --git a/tests/test_layout.py b/tests/test_layout.py deleted file mode 100644 index 1d3fa5c..0000000 --- a/tests/test_layout.py +++ /dev/null @@ -1,30 +0,0 @@ -# -*- encoding: utf-8 -*- -# @Author: SWHL -# @Contact: liekkaskono@163.com -import sys -from pathlib import Path - -import cv2 -import pytest - -cur_dir = Path(__file__).resolve().parent -root_dir = cur_dir.parent - -sys.path.append(str(root_dir)) - -from rapid_layout import RapidLayout - -test_file_dir = cur_dir / "test_files" -layout_engine = RapidLayout() - -img_path = test_file_dir / "layout.png" - -img = cv2.imread(str(img_path)) - - -@pytest.mark.parametrize( - "img_content", [img_path, str(img_path), open(img_path, "rb").read(), img] -) -def test_multi_input(img_content): - boxes, scores, class_names, *elapse = layout_engine(img_content) - assert len(boxes) == 15