narzędzia libreyolo

Dziewięć poleceń, które raportują lub sprawdzają, zamiast liczyć. Wypisują informacje o środowisku, spis modeli i formatów, rozwiązane wartości domyślne oraz szczegóły checkpointu, a także budują i przeszukują galerię twarzy.

Polecenia
version, checks, models, formats, cfg, info, metadata, enroll, compare
Wyjście
stdout, w postaci tekstu lub z json=true jako jeden obiekt z schema_version

Składnia

bash
libreyolo <command> [key=value ...]

Argumenty to pary key=value, a forma POSIX też działa, więc model=x i --model x to ten sam argument. Każde polecenie z tej strony wypisuje wyniki na stdout i przyjmuje json=true oraz quiet=true.

Polecenie główne ma jedną własną flagę, libreyolo --version, która wypisuje ciąg z wersją i kończy działanie. Jest to mniejsze wyjście niż w przypadku opisanego niżej polecenia version.

version

Wypisuje wersję biblioteki LibreYOLO oraz wersje Pythona, biblioteki torch i CUDA, z którymi działa.

bash
libreyolo version
ArgumentDomyślnieZnaczenie
jsonfalseWyjście JSON na stdout
quietfalseWyciszenie stderr

checks

Wypisuje środowisko bardziej szczegółowo: Python, torch, CUDA, cuDNN, każde wykryte GPU z nazwą i pamięcią oraz zainstalowaną wersję każdego opcjonalnego pakietu, z którego korzystają ścieżki eksportu.

bash
libreyolo checks
ArgumentDomyślnieZnaczenie
jsonfalseWyjście JSON na stdout
quietfalseWyciszenie stderr

Lista pakietów obejmuje onnx, onnxruntime, tensorrt, openvino, paddlepaddle, x2paddle, mnn, ncnn, onnx2tf, ai-edge-litert, transformers i scipy. Pakiet, który nie jest zainstalowany, jest zgłaszany jako brakujący, a nie pomijany, więc nieudany eksport można powiązać z brakującą zależnością na podstawie tego jednego polecenia.

models

Wypisuje każdą rodzinę modeli wraz z jej zadaniami, rozmiarami, nazwami CLI, które wskazują na jej checkpointy, oraz rozdzielczością wejściową każdego rozmiaru.

bash
libreyolo models
ArgumentDomyślnieZnaczenie
jsonfalseWyjście JSON na stdout
quietfalseWyciszenie stderr

Rodzina, której opcjonalna zależność nie jest zainstalowana, jest wypisana jako niedostępna razem z linią pip install, która ją udostępni. Nazwy CLI to skróty przyjmowane przez model=: yolox-s wskazuje na LibreYOLOXs.pt, a zadania inne niż detekcja mają sufiks swojego zadania.

formats

Wypisuje formaty eksportu, które potrafi wygenerować zainstalowane środowisko, wraz z rozszerzeniem pliku każdego formatu i informacją, czy obsługuje on FP16 i INT8.

bash
libreyolo formats [family=<family>] [task=<task>]
ArgumentDomyślnieZnaczenie
familyPokazanie poziomów wsparcia dla jednej rodziny modeli. model= jest przyjmowane jako ta sama opcja
taskKanoniczne zadanie modelu. Gdy nie podano, domyślne zadanie rodziny
jsonfalseWyjście JSON na stdout
quietfalseWyciszenie stderr

Bez family wyjściem jest sam spis formatów. Z nim każdy format zyskuje poziom wsparcia dla tej rodziny i tego zadania, uzasadnienie tego poziomu oraz ewentualne powiązane z nim ograniczenie. Nieznana rodzina albo zadanie, którego rodzina nie obsługuje, to błąd użycia.

Aliasy formatów pojawiają się obok nazwy kanonicznej: engine dla tensorrt, litert dla tflite.

cfg

Wypisuje rozwiązaną konfigurację domyślną: domyślne ustawienia trenowania, domyślne ustawienia walidacji, domyślne ustawienia predykcji oraz nadpisania dla poszczególnych rodzin.

bash
libreyolo cfg
ArgumentDomyślnieZnaczenie
jsonfalseWyjście JSON na stdout
quietfalseWyciszenie stderr

Wartości są odczytywane z dataclass konfiguracji, a nie z kopii, więc jest to źródło prawdy o tym, czego użyje trenowanie, gdy nie poda się argumentu. family_overrides to sekcja, która odpowiada na pytanie, dlaczego rodzina trenowała się z ustawieniami, o które nikt nie prosił. Zobacz libreyolo train, aby poznać sposób stosowania tych nadpisań.

info

Ładuje model na CPU i podaje jego rodzinę, rozmiar, liczbę parametrów, klasy oraz poziom wsparcia eksportu dla każdego formatu.

bash
libreyolo info model=<name|path>
ArgumentDomyślnieZnaczenie
modelNazwa modelu lub ścieżka do wag. Wymagane
detailedfalseDołączenie szczegółów dla poszczególnych parametrów
jsonfalseWyjście JSON na stdout
quietfalseWyciszenie stderr

metadata

Odczytuje metadane checkpointu bez budowania modelu i sprawdza ich zgodność ze schematem checkpointu biblioteki LibreYOLO.

bash
libreyolo metadata path=<checkpoint.pt>
ArgumentDomyślnieZnaczenie
pathŚcieżka do checkpointu .pt. Wymagane
jsonfalseWyjście JSON na stdout
quietfalseWyciszenie stderr

Duże wpisy zawierające tensory są podsumowywane, a nie wypisywane w całości, więc wyjście pozostaje czytelne także dla pełnego checkpointu z trenowania. Nieistniejący checkpoint kończy działanie kodem checkpoint_not_found, a taki, którego metadane nie przechodzą walidacji, wypisuje błędy i kończy działanie kodem 1.

enroll

Buduje galerię twarzy z drzewa katalogów, w którym jeden katalog odpowiada jednej osobie, dzięki czemu późniejsze predykcje mogą nazwać znalezione twarze.

bash
libreyolo enroll model=<embedder> source=<people-dir> gallery=<gallery.npz>
ArgumentDomyślnieZnaczenie
modelModel do embeddingów twarzy, ścieżka lub nazwa. Wymagane
sourceDrzewo z jednym katalogiem na osobę, source/<identity>/*.jpg. Wymagane
galleryWyjściowy plik galerii .npz. Jeśli istnieje, jest rozszerzany w miejscu. Wymagane
face_detectorDetektor twarzy: plik .onnx z YuNet albo detektor LibreYOLO. Gdy nie podano, domyślny detektor rodziny
deviceautoUrządzenie: 0, cpu, mps, auto
jsonfalseWyjście JSON na stdout
quietfalseWyciszenie stderr
bash
# people/ zawiera jeden katalog na tożsamość; nazwa katalogu staje się tożsamością.
libreyolo enroll model=librefacerec-l.onnx source=people/ gallery=people.npz

Nazwa podkatalogu jest tożsamością. Obraz referencyjny, na którym nie da się wykryć twarzy, jest pomijany z komunikatem na stderr, a reszta jest przetwarzana dalej; źródło bez podkatalogów z tożsamościami albo takie, w którym nie znaleziono żadnej twarzy, to błąd.

Powstały plik przekaż do libreyolo predict jako gallery=people.npz, aby detekcje niosły tożsamość i wynik dopasowania.

compare

Podaje podobieństwo kosinusowe między dwoma obrazami twarzy oraz to, czy przekracza ono próg tej samej tożsamości.

bash
libreyolo compare model=<embedder> source=<a.jpg> source2=<b.jpg>
ArgumentDomyślnieZnaczenie
modelModel do embeddingów twarzy, ścieżka lub nazwa. Wymagane
sourcePierwszy obraz. Wymagane
source2Drugi obraz do porównania. Wymagane
face_detectorDetektor twarzy: plik .onnx z YuNet albo detektor LibreYOLO
threshold0.4Próg podobieństwa kosinusowego dla decyzji o tej samej tożsamości
deviceautoUrządzenie: 0, cpu, mps, auto
jsonfalseWyjście JSON na stdout
quietfalseWyciszenie stderr
bash
libreyolo compare model=librefacerec-l.onnx source=a.jpg source2=b.jpg

libreyolo verify jest zarejestrowane jako druga nazwa tego polecenia i przyjmuje te same argumenty.

Zarówno compare, jak i enroll wymagają modelu, którego zadaniem jest embedding twarzy. Wszystko inne kończy działanie kodem config_unsupported. Jako źródła przyjmowane są zarówno lokalne ścieżki do obrazów, jak i adresy URL http oraz https.

Przykłady

Środowisko
libreyolo versionlibreyolo checks
Co jest dostępne
libreyolo modelslibreyolo formats family=yolo9 task=detect
Sprawdzenie checkpointu
libreyolo info model=LibreYOLO9s.ptlibreyolo metadata path=weights/LibreYOLO9s.pt

Uwagi

Wynik trafia na stdout; postęp i ostrzeżenia idą na stderr. json=true wypisuje jeden obiekt z polem schema_version i to jest forma przeznaczona do odczytu ze skryptu. Wyjście tekstowe jest domyślne i jest przeznaczone do czytania przez człowieka.

Kody wyjścia są zgodne z tą samą mapą co w reszcie CLI: 0 przy powodzeniu, 2 przy błędzie użycia lub konfiguracji, 3 gdy nie można znaleźć źródła, 4 gdy nie można wczytać modelu lub checkpointu i 1 przy innych błędach w trakcie działania.

Powiązane: libreyolo doctor, czyli polecenie do inspekcji po stronie zbioru danych, oraz libreyolo profile, po stronie wydajności.

Zweryfikowano z LibreYOLO v1.5.0.