--- license: apache-2.0 base_model: juliozhao/DocLayout-YOLO-DocStructBench tags: - object-detection - document-layout-analysis - onnx library_name: onnx --- # DocLayout-YOLO-DocStructBench (ONNX) [juliozhao/DocLayout-YOLO-DocStructBench](https://huggingface.co/juliozhao/DocLayout-YOLO-DocStructBench) 의 가중치를 **ONNX로 변환한 것**이다. 가중치 자체는 원본과 동일하며 재학습·파인튜닝하지 않았다. ## 왜 ONNX로 변환했는가 원본 가중치는 Apache-2.0 이지만, 이를 실행하는 `doclayout_yolo` 파이썬 패키지는 **AGPL-3.0** 이다. AGPL은 네트워크 서비스로 제공할 때도 소스 공개를 요구하는 강한 카피레프트라, 이 패키지를 제품에 넣으면 라이선스가 전염된다. Apache-2.0 인 가중치만 ONNX로 변환해 `onnxruntime`(MIT)으로 실행하면 동일한 성능을 유지하면서 AGPL 코드를 배포물에서 제외할 수 있다. ## 원본 대비 변경사항 (Apache-2.0 §4 고지) - 원본: `juliozhao/DocLayout-YOLO-DocStructBench` (revision `8c3299a30b8ff29a1503c4431b035b93220f7b11`) 의 `doclayout_yolo_docstructbench_imgsz1024.pt` - 변경: PyTorch `.pt` → ONNX 그래프로 내보내기만 수행. 가중치 값 변경 없음 - 변환 설정: `imgsz=1024`, `opset=17`, `simplify=False` - 변환 도구: doclayout-yolo 0.0.4, torch 2.11.0, onnx 1.22.0 ## 입출력 | | 형태 | 설명 | |---|---|---| | 입력 `images` | `[1, 3, 1024, 1024]` float32 | letterbox(패딩값 114) 후 0~1 정규화한 RGB | | 출력 `output0` | `[1, 300, 6]` float32 | `(x1, y1, x2, y2, confidence, class_id)` | YOLOv10 계열이라 NMS가 모델 안에 없다(NMS-free). 출력이 이미 최종 검출 결과이므로 후처리는 좌표 역변환과 임계값 필터뿐이다. ## 클래스 (10종, 순서 고정) ``` 0 title 5 table 1 plain text 6 table_caption 2 abandon 7 table_footnote 3 figure 8 isolate_formula 4 figure_caption 9 formula_caption ``` ## 사용 예 ```python import cv2, numpy as np, onnxruntime as ort from PIL import Image session = ort.InferenceSession("doclayout_yolo_docstructbench_imgsz1024.onnx", providers=["CPUExecutionProvider"]) # letterbox 전처리는 ultralytics 와 동일해야 좌표가 맞는다 (cv2 INTER_LINEAR, 패딩 114) ``` 전체 구현은 [골든링크 OCR 모듈](https://github.com/podongchip-stack/AIRookie/tree/feature/info/ocr)의 `src/goldenlink_ocr/layout.py` 참고. ## 라이선스 Apache License 2.0 — 원본 저작자의 라이선스를 그대로 따른다. 원저작권은 [juliozhao/DocLayout-YOLO-DocStructBench](https://huggingface.co/juliozhao/DocLayout-YOLO-DocStructBench) 의 저작자에게 있다.