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 양자화
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으로 출력하고 종료합니다

enginetensorrt의 별칭이고 literttflite의 별칭입니다. 둘 다 무언가 기록되기 전에 정규 이름으로 해석되므로 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에서는 confiou는 받지만 max_det은 받지 않으므로, format=coreml nms=true와 함께 기본값이 아닌 max_det을 넘기면 config_unsupported로 종료합니다.

half=trueint8=true를 함께 쓰는 것은 오류가 아닙니다. INT8이 우선하고 half는 무시되며 경고가 stderr로 나갑니다.

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

모델 계열이 지원하는 형식

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

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

내보낸 결과물 실행

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

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

출력과 종료 코드

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

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

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