libreyolo export

체크포인트 하나를 배포 형식 하나로 변환하고 결과물을 weights/ 아래에 씁니다. 아래 인자 중 어떤 것이 적용되는지는 형식이 결정합니다.

명령
libreyolo export
필수
model
출력
weights/<checkpoint-stem>[_fp16|_int8]<format-suffix>

요약

bash
libreyolo export model=<name|path> [format=<format>] [key=value ...]

인자는 key=value 쌍이며 POSIX 형식도 동작하므로 format=onnx와 --format onnx는 같은 인자입니다.

인자

인자기본값의미
model모델 가중치 .pt. 필수
formatonnx내보내기 형식: onnx, torchscript, executorch, tensorrt, openvino, paddle, mnn, rknn, ncnn, tflite, coreml, coreai
nameRKNN 대상 플랫폼, 현재는 rk3588만 지원합니다. 다른 형식과 함께 쓰면 거부됩니다
imgsz입력 이미지 크기: 640 또는 480x640 (HxW). 480,640 형식도 허용됩니다. 설정하지 않으면 모델 자체의 크기
batch1내보내기 배치 크기
halffalseFP16 정밀도
int8falseINT8 양자화
quantize정밀도를 16 (FP16), 8 (INT8) 또는 32 (FP32)로 지정합니다. half와 int8을 대체합니다
dynamicfalse동적 입력 형상 (ONNX)
simplifytrueONNX 그래프 단순화
nmsfalse모델에 NMS를 내장합니다. ONNX와 CoreML만 해당
conf0.25내장 NMS의 신뢰도 임계값
iou0.45내장 NMS의 IoU 임계값
max_det300ONNX 내장 NMS의 최대 탐지 수
opsetONNX opset 버전. 설정하지 않으면 자동으로 선택됩니다
dataINT8용 보정 데이터
fraction1.0사용할 보정 데이터의 비율
deviceauto트레이싱에 사용할 장치
allow_download_scriptsfalse데이터셋 YAML 다운로드 블록에 내장된 Python 허용
jsonfalsestdout에 JSON 출력
quietfalsestderr 억제
verbosefalse상세 내보내기 로깅
verifyfalseRKNN Toolkit2 PC 시뮬레이터를 실행해 ONNX Runtime과 비교합니다. RKNN만 해당
help_jsonfalse명령 스키마를 JSON으로 출력하고 종료합니다

engine은 tensorrt의 별칭이고 litert는 tflite의 별칭입니다. 둘 다 무언가 기록되기 전에 정규 이름으로 해석되므로 JSON 출력과 로그 줄에는 항상 tensorrt 또는 tflite가 표시됩니다.

예제

기본
# weights/LibreYOLO9s.onnx 파일을 씁니다libreyolo export model=LibreYOLO9s.pt format=onnx imgsz=640
그래프 안의 NMS
libreyolo export model=LibreYOLO9s.pt format=onnx \  nms=true conf=0.25 iou=0.45 max_det=300
결과물 실행하기
libreyolo export model=LibreYOLO9s.pt format=onnx imgsz=640 # 팩토리는 파일 접미사를 보고 분기하므로 내보낸 파일이 체크포인트처럼 로드됩니다.libreyolo predict model=weights/LibreYOLO9s.onnx \  source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg

참고

파일이 저장되는 위치

이 명령은 출력 경로를 받지 않습니다. 결과물은 weights/에 기록되며, 이름은 원본 체크포인트에서 확장자를 뺀 이름에 형식의 접미사를 붙인 것이고, 두 정밀도 중 하나를 요청했다면 _fp16 또는 _int8이 중간에 삽입됩니다. LibreYOLO9s.pt를 FP16으로 ONNX로 내보내면 weights/LibreYOLO9s_fp16.onnx가 됩니다. JSON 결과에는 확정된 output_path, MB 단위 파일 크기, 그리고 [batch, 3, height, width] 형태의 입력 형상이 담깁니다.

거부되는 조합

nms=true는 ONNX와 CoreML에서 허용되고 다른 모든 형식에서는 nms_unsupported_format으로 거부됩니다. ONNX에서는 내장 그래프가 배치 1로 고정되기 때문에 dynamic을 강제로 끄고 그 사실을 stderr에 알립니다. CoreML에서는 conf와 iou는 받지만 max_det은 받지 않으므로, format=coreml nms=true와 함께 기본값이 아닌 max_det을 넘기면 config_unsupported로 종료합니다.

half=true와 int8=true를 함께 쓰는 것은 오류가 아닙니다. INT8이 우선하고 half는 무시되며 경고가 stderr로 나갑니다. half 또는 int8과 일치하지 않는 quantize는 config_conflict로 종료합니다.

name과 verify는 현재 RKNN 옵션입니다. 둘 중 하나를 다른 형식과 함께 넘기면 무시되지 않고 config_unsupported로 종료합니다.

모델 계열이 지원하는 형식

지원 여부는 전역이 아니라 모델 계열별, 작업별로 정해집니다. libreyolo formats family=<family> task=<task>는 그 조합에서 각 형식의 등급을 이유, 관련 제약, 그리고 그 조합에서 export()가 FP16과 INT8을 받는지와 함께 출력합니다. 인자는 libreyolo formats 문서를 참고하십시오.

일부 형식은 선택적 설치가 필요하고 일부는 툴체인이 필요합니다. Python 의존성이 빠져 있으면 export_dep_missing으로 종료하고, 형식이 만들어 낼 수 없는 정밀도를 요청하면 format_precision_unsupported로 종료합니다.

내보낸 결과물 실행

내보낸 결과물은 체크포인트와 동일한 모델 팩토리를 거쳐 파일 접미사를 키로 삼아 로드되므로 libreyolo predict model=weights/LibreYOLO9s.onnx는 추가 변환 없이 동작합니다. 예측 옵션 세 가지는 예외이며 런타임 백엔드에서는 거부됩니다: tiling, overlap_ratio, output_file_format.

배포 대상 두 가지에는 별도의 문서 페이지가 있습니다: NVIDIA DeepStream과 NVIDIA Jetson.

출력과 종료 코드

결과는 stdout으로, 진행 상황은 stderr로 나갑니다. 종료 코드는 성공 시 0, 사용법이나 설정 오류는 2, 모델을 로드할 수 없을 때는 4, 알 수 없는 형식이나 내보내기 의존성 누락, 지원하지 않는 정밀도, 거부된 내장 NMS 요청은 5, 그 외 런타임 실패는 1입니다.

관련 문서: libreyolo quantize는 PyTorch에 머물면서 배포 결과물이 아니라 체크포인트를 씁니다.

TFLite INT8은 YOLO9 또는 YOLOX 탐지에서 data=..., fraction=1.0, batch=1, dynamic=False와 함께 int8=True를 사용합니다. FP16은 지원하지 않으며, 두 정밀도 플래그를 모두 지정하면 CLI는 INT8을 우선하고 half를 제외합니다. JSON 내보내기 출력은 직사각형 학습 체크포인트에서 다시 로드한 정사각형 전용 계열의 정사각형 폴백을 포함하여 실제 결정된 캔버스를 보고합니다.

LibreYOLO v1.6.0에서 검증되었습니다.