YOLOv1

YOLOv1 to oryginalny detektor z 2016 roku, od którego nazwę wzięła rodzina YOLO: jedna sieć konwolucyjna z głowicą w pełni połączoną przewiduje wszystkie ramki i wyniki klas w jednym przebiegu, bez ramek kotwic. LibreYOLO udostępnia go jako zamrożony eksponat przeznaczony wyłącznie do inferencji.

Zadania
detection
Rozmiary
t, b at 448 px
Instalacja
pip install libreyolo
Poziom obsługi
Muzealny, od wersji v. Zamrożony eksponat. Tylko poprawki błędów.
Projekt źródłowy
YOLOv1, autorzy: Joseph Redmon, licencja: Public domain (Darknet "YOLO LICENSE"). Publikacja, kod źródłowy
Licencje
Kod: MIT, wagi: Public domain (Darknet "YOLO LICENSE"). Użycie komercyjne

Instalacja

YOLOv1 nie wymaga żadnego dodatku poza pakietem podstawowym.

bash
pip install libreyolo

Predykcja

Ta rodzina służy wyłącznie do inferencji: train() zgłasza NotImplementedError, dlatego strona nie zawiera sekcji Trenowanie. Obsługiwane są predykcja, walidacja i eksport. Przy pierwszym użyciu wagi są pobierane z Hugging Face i zapisywane w lokalnej pamięci podręcznej.

Python
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreYOLO1b.pt")result = model(SAMPLE_IMAGE, save=True) for box in result.boxes:    print(box.cls, box.conf, box.xyxy)
CLI
libreyolo predict model=LibreYOLO1b.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=True

Zwracany obiekt Results jest taki sam dla każdej rodziny, więc zmiana detektora wymaga zmiany jednego wiersza. Dwie kwestie są charakterystyczne dla tej rodziny. Opublikowany checkpoint wytrenowano na Pascal VOC (2007+2012), a nie COCO, dlatego box.cls indeksuje 20 kategorii VOC (aeroplane, bicycle, bird, boat, bottle, bus, car, cat, chair, cow, diningtable, dog, horse, motorbike, person, pottedplant, sheep, sofa, train, tvmonitor) zamiast 80 kategorii COCO. Ponadto w pełni połączona głowica detekcji przyjmuje jeden obraz na raz, dlatego lista źródeł jest przetwarzana w pętli zamiast w prawdziwym batchu. Więcej informacji o źródłach, streamingu i obsłudze wyników zawiera strona predykcji.

Walidacja

val() zwraca słownik kluczy metrics/, który obejmuje precision, recall, mAP 50 i mAP 50-95, zmierzone względem zbioru danych w tej samej przestrzeni etykiet w stylu VOC, na której wytrenowano checkpoint.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreYOLO1b.pt")metrics = model.val(data="my-dataset.yaml") print(metrics["metrics/mAP50-95"])print(metrics["metrics/mAP50"])
CLI
libreyolo val model=LibreYOLO1b.pt data=my-dataset.yaml

Eksport

ZadanieONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
DetectionDetection to ONNX: obsługiwaneDetection to TorchScript: obsługiwaneDetection to ExecuTorch: obsługiwaneDetection to TensorRT: obsługiwaneDetection to OpenVINO: obsługiwaneDetection to Paddle: brak obsługiDetection to MNN: brak obsługiDetection to RKNN: brak obsługiDetection to ncnn: obsługiwaneDetection to TFLite: brak obsługiDetection to CoreML: brak obsługiDetection to Core AI: obsługiwane

Wyeksportowany artefakt jest ponownie ładowany przez LibreYOLO() na podstawie rozszerzenia pliku, więc plik .onnx lub .engine zachowuje się jak checkpoint i zwraca ten sam obiekt Results. Obsługiwane jest także uruchomienie grafu w samym środowisku uruchomieniowym bez zainstalowanego LibreYOLO, ale wtedy należy samodzielnie napisać przetwarzanie wstępne i końcowe.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreYOLO1b.pt")model.export(format="onnx")model.export(format="tensorrt", half=True)
CLI
libreyolo export model=LibreYOLO1b.pt format=onnxlibreyolo export model=LibreYOLO1b.pt format=tensorrt half=True
Użycie wyeksportowanego pliku
from libreyolo import LibreYOLO, SAMPLE_IMAGE # Fabryka wybiera ścieżkę na podstawie rozszerzenia pliku, więc wyeksportowany artefakt# ładuje się jak każdy checkpoint i zwraca ten sam obiekt Results.model = LibreYOLO("LibreYOLO1b.onnx")result = model(SAMPLE_IMAGE) print(result.boxes.xyxy)

Checkpointy

Wszystkie opublikowane pliki wag dla tej rodziny.

PlikWejście (px)Licencja wag
Detection
LibreYOLO1b.pt448other

Każdy z powyższych plików jest obecnie dostępny w organizacji LibreYOLO i pobierany przy pierwszym użyciu.

Licencja

Sprawdź licencję w repozytorium konkretnych pobieranych wag na Hugging Face. Każdy checkpoint w organizacji LibreYOLO ma licencję, która nie zawsze jest taka sama w całej rodzinie. To repozytorium jest źródłem rozstrzygającym, a poniższe podsumowanie opisuje stan z chwili ostatniej weryfikacji tej strony.

To opis obowiązujących licencji, a nie porada prawna. Jeśli odpowiedź ma znaczenie komercyjne, przeczytaj licencje i zasięgnij własnej porady prawnej.

Oryginalna praca
YOLOv1, Joseph Redmon
Licencja projektu źródłowego
Public domain (Darknet "YOLO LICENSE")
Kod źródłowy projektu
github.com/pjreddie/darknet
Kod LibreYOLO
MIT
Wagi
Public domain (Darknet "YOLO LICENSE"), ponownie opublikowane w huggingface.co/LibreYOLO
Interpretacja
Darknet's bundled NOTICE quotes its own license in full: "Darknet is public domain. Do whatever you want with it." That covers both the architecture and the pretrained weights LibreYOLO converts from it, with no attribution requirement and no restriction on commercial use. LibreYOLO's own code around this architecture is MIT. One thing to know before deploying this checkpoint: it is trained on Pascal VOC 2007+2012, not COCO, so it detects and names the 20 VOC categories rather than the 80 COCO ones.

Zweryfikowano z LibreYOLO v1.5.0. Tabele obsługi, checkpointy i wyniki benchmarków na tej stronie są generowane na podstawie wydanej biblioteki i opublikowanych wag, a nie wpisywane ręcznie.