API Pythona

Publiczną powierzchnię Pythona w LibreYOLO wyznacza lista __all__ w libreyolo/__init__.py. Wszystko na tej stronie można importować przez from libreyolo import <name>. Wszystko, czego nie ma na tej liście, jest wewnętrzne.

Punkty wejścia

Model wczytuje pięć obiektów wywoływalnych. Są rozdzielone według kontraktu wywołania, a nie architektury.

FabrykaWczytujePodpowiedź w czasie wywołaniaWymagany dodatek
LibreYOLORodziny bez podpowiedzi, rozpoznawane na podstawie checkpointu lub sufiksu pliku
LibreSAMSegmentatory sterowane podpowiedziami, według aliasu rozmiaruPunkty, ramki lub tekst koncepcjisam
LibreVLMGeneratywne detektory wizyjno-językowe, według aliasuSłownik klas lub swobodna podpowiedźvlm
LibreOpenVocabDetektory warunkowane tekstem, według aliasuSłownik klasopenvocab
LibreEnsembleCo najmniej dwa detektory scalone w jeden interfejs

Pięć punktów wejścia
from libreyolo import LibreYOLO, LibreEnsemble # Fabryka rodzin bez podpowiedzi, rozpoznająca typ po wagach.detector = LibreYOLO("LibreYOLO9t.pt") # Co najmniej dwa detektory za jednym interfejsem predykcji.ens = LibreEnsemble(["LibreYOLO9t.pt", "LibreYOLO9s.pt"]) # Pozostałe trzy fabryki wymagają zainstalowania dodatku:#   pip install 'libreyolo[sam]'        -> from libreyolo import LibreSAM#   pip install 'libreyolo[vlm]'        -> from libreyolo import LibreVLM#   pip install 'libreyolo[openvocab]'  -> from libreyolo import LibreOpenVocabprint(type(detector).__name__, ens.fusion)

LibreYOLO jest jedyną fabryką odczytującą plik. Pozostałe trzy przyjmują alias jako ciąg i rozwiązują go do repozytorium Hugging Face, dlatego argument jest nazwą modelu, a nie ścieżką.

python
LibreYOLO(
    model_path: str,
    size: str | None = None,
    reg_max: int = 16,
    nb_classes: int | None = None,
    device: str = "auto",
    task: str | None = None,
    compute_units: str = "all",
)

model_path przyjmuje checkpoint .pt, plik ONNX .onnx, ExecuTorch .pte, MNN .mnn, TensorRT .engine, katalog OpenVINO, Paddle lub ncnn albo adres URL modelu Triton przez HTTP lub HTTPS. W razie pominięcia size i nb_classes są odczytywane z checkpointu. compute_units jest odczytywane tylko przy wczytywaniu .mlpackage CoreML i przyjmuje all, cpu_only, cpu_and_gpu lub cpu_and_ne. task przyjmuje dowolną kanoniczną nazwę zadania z libreyolo.tasks.TASKS.

Wczytywanie dowolnego modelu przez jedną fabrykę
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreYOLO9t.pt") # Pojedyncze źródło obrazu zwraca jeden obiekt Results, a lista lub katalog# zwraca ich listę.result = model(SAMPLE_IMAGE) print(result.boxes.xyxy)print(result.names)
Bezpośredni import klasy rodziny
from libreyolo import LibreYOLO9, SAMPLE_IMAGE model = LibreYOLO9("LibreYOLO9t.pt", size="t")result = model(SAMPLE_IMAGE) print(len(result))

Klasy rodzin

Każda rodzina, którą może zwrócić fabryka, jest również eksportowana według nazwy. Klasę można więc utworzyć bezpośrednio, gdy checkpoint jest znany z wyprzedzeniem. Konstruktory są zgodne z BaseModel.__init__:

python
Family(model_path, size, nb_classes=80, device="auto", task=None, **kwargs)

W klasie rodziny size nie ma wartości domyślnej i tym różni się ona od fabryki. YOLO9 i jego warianty wstawiają reg_max: int = 16 po size.

Rodziny detekcyjne i wielozadaniowe: LibreYOLO9, LibreYOLO9E2E, LibreYOLO9P2, LibreYOLONAS, LibreYOLOX, LibreYOLO7, LibreYOLO4, LibreYOLO3, LibreYOLO2, LibreYOLO1, LibreRTDETR, LibreRTDETRv2, LibreRTDETRv4, LibreRFDETR, LibreDFINE, LibreDOMEDETR, LibreDEIM, LibreDEIMv2, LibreDETR, LibreDeformableDETR, LibreDINODETR, LibreLWDETR, LibreMaskRCNN, LibreFCOS, LibreFasterRCNN, LibreRetinaNet, LibreSSD, LibreCenterNet, LibreEfficientDet, LibreEC, LibrePICODET, LibreRTMDet, LibreFOMO.

Rodziny gęstej predykcji: LibreMiDaS, LibreDepthAnythingV2, LibreDepthAnything3, LibreZipDepth, LibreMoGe2, LibreTEED, LibreDexiNed, LibreNAFNet, LibreRealESRGAN, LibreSwinIR, LibreBiRefNet, LibreFeyNobg, LibreFCN, LibreEoMT, LibreDeepLabv3, LibrePIDNet, LibreSegformer, LibreLingBotVision.

Rodziny klasyfikacji i embeddingów: LibreViT, LibreMobileNetV4, LibreConvNeXt, LibreDeiT, LibreSwin, LibreEfficientNetV2, LibreVGG, LibreResNet, LibreAlexNet, LibreCLIP, LibreSigLIP2, LibreDINOv2.

Inne zadania: LibreHRNet (pose), LibreL2CS (gaze), LibrePPOCR (ocr), LibreFaceEmbedder (embed).

Sąsiednie poziomy również eksportują klasy rodzin: LibreSAM1, LibreSAM2, LibreSAM3, LibreEdgeTAM, LibreMobileSAM, LibrePicoSAM3; LibreGroundingDINO, LibreOWLv2, LibreOMDetTurbo; LibreLFM2VL, LibreQwen3VL, LibreSmolVLM2, LibreInternVL3, LibreFlorence2, LibreKosmos2, LibreLocateAnything, LibreMODUS (również zapisywane jako LibreModus).

Interfejs predykcji

Wywołanie modelu uruchamia inferencję. predict jest aliasem __call__, więc można używać ich zamiennie.

python
model(
    source=None,
    *,
    conf=0.25,
    iou=0.45,
    imgsz=None,
    device=None,
    classes=None,
    max_det=300,
    augment=False,
    save=False,
    batch=1,
    stream=False,
    stream_buffer=False,
    vid_stride=1,
    show=False,
    output_path=None,
    color_format="auto",
    tiling=False,
    overlap_ratio=0.2,
    output_file_format=None,
    cuda_graph=False,
    **kwargs,
)

Pojedyncze źródło obrazu zwraca jeden Results. Lista, krotka lub katalog zwraca ich listę, a stream=True zwraca generator. Pozostałe metody obiektu modelu opisano na stronie API modelu.

Dane wyników

Results i osiemnaście klas jego danych są eksportowane na poziomie pakietu: Results, Boxes, Masks, Keypoints, Points, Probs, OBB, Gaze, SemanticMask, PanopticSegmentation, DepthMap, EdgeMap, NormalMap, RestoredImage, Matte, Meshes, OCRRegions, Embeddings, Identities. Każdą opisano na stronie typów Results.

Backendy

Wyeksportowane artefakty są wczytywane przez LibreYOLO() według sufiksu pliku, dlatego klasy backendów rzadko tworzy się ręcznie. Są eksportowane na potrzeby sytuacji, w których backend trzeba wybrać jawnie: OnnxBackend, OpenVINOBackend, PaddleBackend, TensorRTBackend, TritonBackend, NcnnBackend, CoreMLBackend oraz create_triton_config. BaseExporter jest rejestrem eksporterów stojącym za model.export().

Walidatory

model.val() kieruje wywołanie do odpowiedniego walidatora według zadania, dlatego poniższe klasy są eksportowane do bezpośredniego użycia i tworzenia podklas: DetectionValidator, SegmentationValidator, PoseValidator, SemanticValidator, PanopticValidator, DepthValidator, NormalValidator, EdgeValidator oraz wspólna ValidationConfig.

Śledzenie

model.track() wybiera tracker według nazwy. Eksportowane są również klasy trackerów i dataclasses ich konfiguracji: ByteTracker z TrackConfig, BoTSortTracker z BoTSortConfig oraz OCSortTracker z OCSortConfig.

Funkcje pomocnicze danych

DATASETS_DIR jest rozwiązaną ścieżką główną zbiorów danych, load_data_config odczytuje plik YAML zbioru danych, a check_dataset go waliduje. Loadery właściwe dla zadań, wymienione na stronie formatów zbiorów danych, znajdują się w libreyolo.data, a nie na poziomie pakietu.

Galerie i destylacja

Gallery i FaceGallery przechowują zarejestrowane wektory tożsamości dla zadania embed i tworzą dane Identities. Distiller i get_distill_config sterują trenowaniem nauczyciel-uczeń.

Zasoby

SAMPLE_IMAGE jest bezwzględną ścieżką obrazu dołączonego do pakietu, dzięki czemu każdy fragment kodu w tej dokumentacji działa bez wcześniejszego pobierania obrazu.

Leniwe importy i klasy o zmienionych nazwach

Większość nazw sąsiednich poziomów, backendy, walidatory i funkcje pomocnicze danych są rozwiązywane przez __getattr__ na poziomie modułu, dzięki czemu import libreyolo nie importuje ich zależności. Import nadal kończy się czytelnym komunikatem, gdy brakuje wymaganego dodatku.

Nazwy dwóch klas zmieniono, a stara pisownia nadal jest rozwiązywana z DeprecationWarning: LibreYOLORTDETR to obecnie LibreRTDETR, a LibreYOLORFDETR to obecnie LibreRFDETR.

Nazwy i sygnatury odczytano z libreyolo/__init__.py, libreyolo/models/__init__.py, libreyolo/models/base/model.py, libreyolo/models/base/inference.py, libreyolo/models/sam/model.py, libreyolo/models/vlm/__init__.py, libreyolo/models/openvocab/__init__.py i libreyolo/ensemble/model.py w wersji 1.5.0.