FAQ
Odpowiedzi na pytania, które nie dotyczą jednej rodziny modeli. Informacje właściwe dla rodziny znajdują się na jej stronie.
Od którego modelu zacząć?
Od YOLOv9 w przypadku detektora CNN i RF-DETR w przypadku detektora transformerowego. Oba należą do poziomu flagowego, co oznacza, że funkcje są projektowane i walidowane na GPU najpierw względem nich. Zobacz YOLOv9 i RF-DETR albo stronę wszystkich modeli, aby poznać pozostałe.
Czy potrzebne jest GPU?
Nie. Każdy model działa na CPU, a wszystko w szybkim starcie napisano tak, aby tam działało. GPU wpływa na czas trenowania i inferencji wideo, a nie na to, czy są możliwe.
Jak LibreYOLO wybiera urządzenie?
Domyślne ustawienie device="auto" używa CUDA, gdy PyTorch zgłasza jego
dostępność, następnie Metal Performance Shaders, gdy jest dostępne, a w innym
przypadku CPU. Aby przypiąć urządzenie, przekaż device do modelu albo do
predict, train, val i export. Akceptowane są "cpu", "cuda",
"cuda:0", "mps", sama liczba całkowita, taka jak 0, oraz ciąg cyfr.
Dwie ostatnie formy są rozwijane do cuda:<n>.
Polecenie libreyolo checks wyświetla kompilację Torch, wersje CUDA i cuDNN
oraz każde widoczne GPU. Jeśli polecenie nie pokazuje CUDA, zainstalowany pakiet
PyTorch jest kompilacją dla CPU. Strona instalacji opisuje jego
zastąpienie.
Gdzie trafiają pobrane wagi?
Do katalogu weights/ względem katalogu roboczego. Odwołanie do modelu bez
składnika katalogu jest rozwiązywane w tym miejscu i pobierane przy pierwszym
użyciu. Odwołanie zawierające katalog jest używane dokładnie w podanej postaci
i nigdy nie jest pobierane. Zobacz checkpointy i wagi.
Czy można działać bez dostępu do sieci?
Tak. Wystarczy raz pobrać checkpointy na połączonej maszynie i skopiować katalog
weights/. Później nic nie będzie łączyć się z siecią. Współdzielona ścieżka
tylko do odczytu również działa, ponieważ odwołanie zawierające katalog jest
traktowane dosłownie. Zbiory danych są rozwiązywane w ~/datasets lub katalogu
wskazanym przez LIBREYOLO_DATASETS_DIR.
Czy LibreYOLO można używać komercyjnie?
Kod jest objęty licencją MIT. Wstępnie wytrenowane wagi są osobną kwestią: mogą dziedziczyć warunki projektu lub zbioru danych, z którego pochodzą, a te warunki nie są jednolite nawet w obrębie jednej rodziny. Rozstrzygająca jest licencja konkretnego repozytorium Hugging Face, a każda strona modelu zawiera sekcję licencyjną, która ją przytacza. Gdy wagi są ograniczone, LibreYOLO wyświetla ograniczenie przed rozpoczęciem pobierania.
Czy można wczytać checkpoint z innego projektu?
Zwykle tak, przekazując jego ścieżkę do LibreYOLO(). Rozpoznane układy ze
źródeł nadrzędnych są konwertowane podczas wczytywania z zachowaniem liczby klas
i nazw, a checkpoint LibreYOLO zostaje zapisany obok źródła. Strona
importowania istniejących wag opisuje rozpoznawane formaty
i przypadki wymagające skryptu konwersji.
Dlaczego train zgłasza NotImplementedError?
Ponieważ ta rodzina obsługuje tylko inferencję, a wyjątek podaje przyczynę. Predykcja, walidacja oraz eksport, jeśli jest obsługiwany, działają. W LibreYOLO nie ma pętli trenowania dla tej architektury. Poziom obsługi w nagłówku strony modelu informuje o tym przed próbą. Zobacz podstawowe pojęcia.
Co zwraca val?
Zwykły słownik, a nie obiekt. Klucze detekcji obejmują metrics/precision,
metrics/recall, metrics/mAP50 i metrics/mAP50-95. Inne zadania zwracają
odpowiednie dla nich klucze, takie jak metrics/accuracy_top1 dla klasyfikacji
albo metrics/PQ, metrics/SQ i metrics/RQ dla segmentacji panoptycznej.
Jak uruchomić model na katalogu, wideo lub kamerze internetowej?
Należy przekazać źródło. Ścieżka pliku oznacza jeden obraz, katalog oznacza
wszystkie zawarte obrazy, ścieżka wideo oznacza wideo, liczba całkowita jest
indeksem kamery internetowej, a adres URL RTSP, RTMP, TCP, UDP lub HLS jest
transmisją na żywo. Plik .streams wymienia kilka źródeł jednocześnie. Źródła
na żywo wymagają stream=True, co zwraca po jednym Results na klatkę zamiast
budować listę. Tej samej flagi warto używać dla długich filmów i dużych
katalogów. Tylko adresy stron YouTube wymagają dodatku libreyolo[stream].
Jak zachować tylko wybrane klasy?
Przekaż do predict parametr classes z wymaganymi indeksami klas, na przykład
classes=[0, 2]. conf ustawia próg pewności, domyślnie 0.25, a max_det
ogranicza liczbę detekcji na obraz, domyślnie do 300.
Czy CLI używa flag, czy par key=value?
Klucza i wartości połączonych znakiem równości, dla każdego polecenia:
libreyolo predict model=yolo9-t source=my-image.jpg save=True
libreyolo train model=yolo9-t data=coco8.yaml epochs=50 imgsz=640model przyjmuje ścieżkę lub krótką nazwę w formie family-size, opcjonalnie
z sufiksem zadania, a libreyolo models wymienia wszystkie prawidłowe wartości.
Polecenia diagnostyczne i inwentarza przyjmują również --json, które wyświetla
te same dane jako obiekt do odczytu maszynowego na stdout.
Czy każdy model można wyeksportować do każdego formatu?
Nie. Pokrycie zależy od rodziny i zadania, nie jest jednolite, a każdy format ma własny dodatek do zainstalowania. Każda strona modelu zawiera macierz eksportu rodziny, a sekcja eksportu opisuje same formaty.
Czym różnią się segment, semantic i panoptic?
To trzy oddzielne zadania. segment tworzy po jednej masce na wykryty obiekt.
semantic przypisuje klasę każdemu pikselowi i nie rozdziela niczego na
instancje. panoptic przypisuje każdemu pikselowi dokładnie jedną etykietę,
łącząc policzalne elementy thing z amorficznymi obszarami stuff. Zadania mają
inne dane referencyjne, inne pola wyniku i inne metryki, a rodzina obsługuje te,
które występują na jej liście zadań.
Jak trenować na własnych klasach?
Utwórz plik YAML zbioru danych z train, val i names. Etykiety znajdują się
obok obrazów w równoległym drzewie labels/, po jednym pliku .txt na obraz,
ze znormalizowanymi współrzędnymi. nc jest opcjonalne i, jeśli występuje, musi
być zgodne z names. Najpierw uruchom libreyolo doctor <data.yaml>: polecenie
sprawdza problemy w zbiorze danych i kończy się kodem różnym od zera, gdy je
znajdzie, dzięki czemu może służyć jako bramka CI.
Dlaczego podczas wczytywania pojawia się ostrzeżenie o metadanych?
Ponieważ checkpoint nie zawiera kompletnych metadanych v1.0. Wczytywanie jest
kontynuowane przez ścieżkę zgodności, a ostrzeżenie dokładnie wymienia brakujące
klucze. Uruchom libreyolo metadata path=<file>, aby zobaczyć zawartość,
i sprawdź checkpointy i wagi, aby poznać wymagania schematu.
Import przestał działać po aktualizacji. Co się zmieniło?
Dla spójności zmieniono nazwy dwóch klas: LibreYOLORTDETR zmieniło się na
LibreRTDETR, a LibreYOLORFDETR na LibreRFDETR. Stare nazwy nadal są
rozwiązywane i emitują DeprecationWarning wskazujące nową nazwę, więc
istniejący kod działa podczas aktualizowania.