libreyolo export

Converte un checkpoint in un formato di deployment e scrive l'artefatto sotto weights/. Il formato decide quali degli argomenti qui sotto si applicano.

Comando
libreyolo export
Obbligatorio
model
Output
weights/<checkpoint-stem>[_fp16|_int8]<format-suffix>

Sinossi

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

Gli argomenti sono coppie key=value, e funziona anche la forma POSIX, quindi format=onnx e --format onnx sono lo stesso argomento.

Argomenti

ArgomentoDefaultSignificato
modelPesi del modello .pt. Obbligatorio
formatonnxFormato di esportazione: onnx, torchscript, executorch, tensorrt, openvino, paddle, mnn, rknn, ncnn, tflite, coreml, coreai
namePiattaforma di destinazione RKNN, per ora solo rk3588. Rifiutato con qualsiasi altro formato
imgszDimensione dell'immagine di input: 640 oppure 480x640 (altezza x larghezza). Si accetta anche 480,640. La dimensione propria del modello se non impostato
batch1Dimensione del batch dell'esportazione
halffalsePrecisione FP16
int8falseQuantizzazione INT8
dynamicfalseForme di input dinamiche (ONNX)
simplifytrueSemplificazione del grafo ONNX
nmsfalseIncorpora l'NMS nel modello. Solo ONNX e CoreML
conf0.25Soglia di confidenza per l'NMS incorporato
iou0.45Soglia di IoU per l'NMS incorporato
max_det300Numero massimo di rilevamenti per l'NMS incorporato di ONNX
opsetVersione dell'opset ONNX. Scelta automaticamente se non impostata
dataDati di calibrazione per INT8
fraction1.0Frazione dei dati di calibrazione da usare
deviceautoDispositivo per il tracing
allow_download_scriptsfalseConsente Python incorporato nei blocchi di download del YAML del dataset
jsonfalseOutput JSON su stdout
quietfalseSilenzia stderr
verbosefalseLog dettagliato dell'esportazione
verifyfalseEsegue il simulatore PC di RKNN Toolkit2 e lo confronta con ONNX Runtime. Solo RKNN
help_jsonfalseStampa lo schema del comando come JSON ed esce

engine è un alias di tensorrt e litert un alias di tflite. Entrambi vengono risolti nel nome canonico prima che venga scritto qualsiasi cosa, quindi l'output JSON e la riga di log riportano sempre tensorrt o tflite.

Esempi

Base
# Scrive weights/LibreYOLO9s.onnxlibreyolo export model=LibreYOLO9s.pt format=onnx imgsz=640
NMS dentro il grafo
libreyolo export model=LibreYOLO9s.pt format=onnx \  nms=true conf=0.25 iou=0.45 max_det=300
Eseguire l'artefatto
libreyolo export model=LibreYOLO9s.pt format=onnx imgsz=640 # La factory si basa sul suffisso del file, quindi l'esportazione si carica come un checkpoint.libreyolo predict model=weights/LibreYOLO9s.onnx \  source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg

Note

Dove finisce il file

Il comando non accetta un percorso di output. L'artefatto viene scritto in weights/, con il nome base del checkpoint di origine più il suffisso del formato, e con _fp16 o _int8 inserito quando è stata richiesta una di quelle precisioni. LibreYOLO9s.pt esportato in ONNX a FP16 diventa weights/LibreYOLO9s_fp16.onnx. Il risultato JSON porta l'output_path risolto, la dimensione del file in MB e la forma dell'input come [batch, 3, height, width].

Combinazioni che vengono rifiutate

nms=true è accettato per ONNX e CoreML e rifiutato per ogni altro formato con nms_unsupported_format. Su ONNX forza dynamic a off, dato che il grafo incorporato è fissato a batch 1, e lo segnala su stderr. Su CoreML accetta conf e iou ma non max_det, quindi un max_det diverso da quello predefinito insieme a format=coreml nms=true esce con config_unsupported.

half=true insieme a int8=true non è un errore. Vince INT8, half viene scartato e un avviso va su stderr.

name e verify oggi sono opzioni di RKNN. Passarne una qualsiasi con un altro formato esce con config_unsupported invece di essere ignorata.

Quali formati supporta una famiglia

Il supporto è per famiglia e per task, non globale. libreyolo formats family=<family> task=<task> stampa il livello di ogni formato per quella combinazione, con il motivo e l'eventuale vincolo associato. Vedi libreyolo formats per gli argomenti.

Alcuni formati richiedono un'installazione opzionale e altri richiedono un toolchain. Una dipendenza Python mancante esce con export_dep_missing; una precisione che il formato non può produrre esce con format_precision_unsupported.

Eseguire ciò che hai esportato

Gli artefatti esportati si caricano attraverso la stessa factory di modelli dei checkpoint, in base al suffisso del file, quindi libreyolo predict model=weights/LibreYOLO9s.onnx funziona senza nessuna ulteriore conversione. Tre opzioni di predizione fanno eccezione e vengono rifiutate sui backend di runtime: tiling, overlap_ratio e output_file_format.

Due destinazioni di deployment hanno una pagina propria: NVIDIA DeepStream e NVIDIA Jetson.

Output e codici di uscita

stdout porta il risultato; l'avanzamento va su stderr. Il codice di uscita è 0 in caso di successo, 2 per un errore d'uso o di configurazione, 4 quando il modello non può essere caricato, 5 per un formato sconosciuto, una dipendenza di esportazione mancante, una precisione non supportata o una richiesta di NMS incorporato rifiutata, e 1 per altri errori a runtime.

Correlato: libreyolo quantize, che resta in PyTorch e scrive un checkpoint invece di un artefatto di deployment.

Verificato con LibreYOLO v1.5.0.