Szybki start

Najkrótsza ścieżka przez LibreYOLO: predykcja na jednym obrazie, trenowanie na małym zbiorze danych, a następnie eksport wyniku. Każde z tych poleceń działa na CPU.

Instalacja
pip install libreyolo
Checkpoint
LibreYOLO9t.pt
Sprzęt
CPU wystarcza do wszystkiego na tej stronie

Instalacja

bash
pip install libreyolo

To wszystko, czego wymagają poniższe sekcje dotyczące predykcji i trenowania. Eksport do ONNX dodaje jedną zależność. Pełną listę zawiera strona instalacji.

Predykcja

Python
from libreyolo import LibreYOLO, SAMPLE_IMAGE # Przy pierwszym użyciu pobiera checkpoint, a następnie zapisuje go w weights/.model = LibreYOLO("LibreYOLO9t.pt") # Pojedynczy obraz zwraca jeden obiekt Results.result = model(SAMPLE_IMAGE, save=True) for box in result.boxes:    print(result.names[int(box.cls)], float(box.conf), box.xyxy.tolist())
CLI
libreyolo predict model=yolo9-t save=True \  source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg
Wideo i strumienie
from libreyolo import LibreYOLO model = LibreYOLO("LibreYOLO9t.pt") # stream=True zwraca po jednym obiekcie Results na klatkę zamiast tworzyć listę.# Zastąp ścieżkę indeksem kamery internetowej, adresem URL RTSP lub folderem.for result in model.predict("clip.mp4", stream=True, save=True):    print(len(result.boxes))

LibreYOLO() jest funkcją fabrykującą. Odczytuje plik, ustala rodzinę, do której należą wagi, i zwraca model tej rodziny. Dzięki temu zmiana detektora wymaga zmiany jednego wiersza. Podanie LibreYOLO9t.pt bez katalogu powoduje wyszukanie weights/LibreYOLO9t.pt względem katalogu roboczego i pobranie go w to miejsce, jeśli brakuje pliku. Zasady pobierania i pracę offline opisuje strona checkpointy i wagi.

Opcja save=True zapisuje kopię z adnotacjami w katalogu runs/detect/, w podkatalogu predict, którego numer zwiększa się przy każdym uruchomieniu. Zwracany obiekt Results zawiera boxes, a names mapuje indeks klasy na jej etykietę. Ścieżka do jednego obrazu zwraca jeden obiekt Results. Katalog, lista obrazów lub stream=True zwraca odpowiednio listę albo generator takich obiektów.

Trenowanie

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreYOLO9t.pt") # coco8 to dołączony do biblioteki zbiór danych z 8 obrazami. Przy pierwszym# użyciu jest pobierany z adresu URL, więc nie trzeba uruchamiać żadnego skryptu.results = model.train(    data="coco8.yaml",    epochs=1,    imgsz=640,    batch=4,    device="cpu",) print(results["save_dir"])print(results["best_checkpoint"])
CLI
libreyolo train model=yolo9-t data=coco8.yaml \  epochs=1 imgsz=640 batch=4 device=cpu
Walidacja
from libreyolo import LibreYOLO model = LibreYOLO("LibreYOLO9t.pt") # val() zwraca zwykły słownik, a nie obiekt.metrics = model.val(data="coco8.yaml", device="cpu") print(metrics["metrics/mAP50-95"])print(metrics["metrics/mAP50"])print(metrics["metrics/precision"], metrics["metrics/recall"])

data oznacza plik YAML zbioru danych. Plik coco8.yaml jest dołączony do biblioteki, dlatego fragment kodu działa bez zmian. Nazwa niedołączonego pliku jest interpretowana jako ścieżka. Zbiory danych są wyszukiwane w ~/datasets lub w katalogu wskazanym przez LIBREYOLO_DATASETS_DIR, jeśli ustawiono tę zmienną.

Uruchomienie zapisuje dane w project/name, domyślnie w katalogu pod runs/train, z plikami weights/best.pt i weights/last.pt. Funkcja train() zwraca słownik obejmujący save_dir, best_checkpoint, last_checkpoint, funkcje straty dla każdej epoki oraz metryki walidacji dla każdej epoki. Wytrenowany checkpoint wczytuje się przez LibreYOLO() dokładnie tak samo jak wstępnie wytrenowany.

Nie każdą rodzinę można trenować. Gdy rodzina obsługuje tylko inferencję, train() zgłasza NotImplementedError i podaje tę informację. Znaczenie poszczególnych poziomów wsparcia wyjaśniają podstawowe pojęcia.

Eksport

TorchScript
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreYOLO9t.pt") # export() zwraca ścieżkę do zapisanego pliku.path = model.export(format="torchscript")print(path) # Funkcja fabrykująca wybiera ścieżkę na podstawie sufiksu pliku, więc artefakt# wczytuje się ponownie jak checkpoint i zwraca ten sam obiekt Results.exported = LibreYOLO(path)result = exported(SAMPLE_IMAGE)print(len(result.boxes))
ONNX
pip install "libreyolo[onnx]"libreyolo export model=yolo9-t format=onnx imgsz=640

TorchScript nie wymaga niczego poza instalacją bazową. Każdy z pozostałych formatów ma własny zestaw opcjonalnych zależności, a zakres obsługi zależy od rodziny i zadania zamiast być jednolity. Szczegóły zawiera strona eksport i wdrożenie.

Argumenty przyjmowane przez każdy format obejmują imgsz (liczbę całkowitą lub parę wysokości i szerokości), batch (domyślnie 1), half, int8 z plikiem YAML data do kalibracji, dynamic (domyślnie True), simplify (domyślnie True), opset, device oraz output_path. Jeśli pominięto output_path, plik jest zapisywany w weights/ pod nazwą wyprowadzoną z checkpointu.

Co dalej

Zweryfikowano z LibreYOLO v1.5.0.