SSD

SSD (Single Shot MultiBox Detector) przewiduje każdą ramkę i wynik klasy z gęstej siatki domyślnych ramek w jednym przebiegu w przód, bez osobnego etapu propozycji regionów. LibreYOLO udostępnia checkpoint SSD300 z backbone VGG16 jako detektor wyłącznie do inferencji.

Zadania
detection
Rozmiary
300 at 300 px
Instalacja
pip install libreyolo
Poziom obsługi
Tylko inferencja, od wersji v. Tylko predykcja, walidacja i eksport. Funkcje trenowania nie mają zastosowania.
Projekt źródłowy
SSD, autorzy: UNC Chapel Hill, Zoox, Google and University of Michigan, licencja: BSD-3-Clause. Publikacja, kod źródłowy
Licencje
Kod: BSD-3-Clause, wagi: BSD-3-Clause. Użycie komercyjne

Instalacja

SSD nie wymaga żadnego opcjonalnego dodatku. Wszystkie importowane elementy znajdują się w instalacji podstawowej.

bash
pip install libreyolo

Predykcja

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("LibreSSD300.pt")result = model(SAMPLE_IMAGE, save=True) for box in result.boxes:    print(box.cls, box.conf, box.xyxy)
CLI
libreyolo predict model=LibreSSD300.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. SSD dekoduje siatkę domyślnych ramek z wynikami dla każdej klasy, a następnie uruchamia tłumienie niemaksymalne. Argumenty conf, iou i max_det mają tu zatem rzeczywisty wpływ, inaczej niż w detektorach opartych na zapytaniach w tej bibliotece. Więcej informacji o źródłach, streamingu i obsłudze wyników zawiera strona predykcji.

Warianty

SSD udostępnia jeden checkpoint: sieć SSD300 z backbone VGG16 na jej stałym natywnym obszarze. Ta rodzina nie oferuje wyboru rozmiaru ani skali. Predykcja, walidacja i eksport używają tego jednego grafu.

Plik wag nazywa się LibreSSD300.pt, czyli prefiks rodziny z jej jedynym kluczem rozmiaru "300". Odpowiada mu klasa LibreSSD, dlatego bezpośrednie utworzenie ma postać LibreSSD(size="300"), a nie klasy nazwanej jak plik.

Walidacja

val() zwraca słownik kluczy metrics/, który obejmuje precision, recall, mAP 50 i mAP 50-95, zmierzone względem dowolnego zbioru danych w formacie użytym do trenowania.

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

Eksport

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

SSD eksportuje wyłącznie do ONNX. Wszystkie inne formaty są obecnie blokowane dla tej rodziny. Eksport zawsze używa natywnego obszaru checkpointu, a graf udostępnia surową, spakowaną głowicę SSD zamiast wyjścia ze scalonym tłumieniem niemaksymalnym, dlatego nms=True nie jest przyjmowane podczas eksportu. Własne backendy LibreYOLO wykonują etap dekodowania i tłumienia po ponownym wczytaniu grafu.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreSSD300.pt") # imgsz celowo pominięto: SSD300 jest śledzony na natywnym obszarze checkpointu,# a każda inna wartość zgłasza błąd przed rozpoczęciem eksportu.model.export(format="onnx")
CLI
libreyolo export model=LibreSSD300.pt format=onnx
Użycie wyeksportowanego pliku
from libreyolo import LibreYOLO # 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("LibreSSD300.onnx")result = model(SAMPLE_IMAGE) print(result.boxes.xyxy)

Checkpointy

Wszystkie opublikowane pliki wag dla tej rodziny.

PlikWejście (px)Licencja wag
Detection
LibreSSD300.pt300bsd-3-clause

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
SSD, UNC Chapel Hill, Zoox, Google and University of Michigan
Licencja projektu źródłowego
BSD-3-Clause
Kod źródłowy projektu
github.com/pytorch/vision
Kod LibreYOLO
MIT
Wagi
BSD-3-Clause, ponownie opublikowane w huggingface.co/LibreYOLO
Interpretacja
BSD-3-Clause is a permissive license, so these weights can be used in commercial and closed-source products. It asks you to keep its copyright notice and disclaimer with any copy you redistribute, and it places no obligation on your own application code. The official SSD300 COCO checkpoint carries no separate, checkpoint-specific license: LibreYOLO's mirror applies BSD-3-Clause on an explicitly disclosed implied basis, the same basis torchvision states for its own pretrained SSD300 weights. The VGG16 backbone the graph is built on traces back to Oxford's fully convolutional reduced VGGNet, released under CC BY 4.0 by Karen Simonyan and Andrew Zisserman.

Kod SSD300 w LibreYOLO nie został przeniesiony z własnego wydania Caffe autorów publikacji. Pochodzi z implementacji SSD300 w torchvision na licencji BSD-3-Clause i to repozytorium jest wskazane powyżej jako źródło. Wagi backbone VGG16 wywodzą się z w pełni konwolucyjnego, zredukowanego VGGNet grupy Oxford, wydanego przez Karen Simonyan i Andrew Zisserman na licencji CC BY 4.0.

Cytowanie

@inproceedings{liu2016ssd,
  title = {{SSD}: Single Shot MultiBox Detector},
  author = {Liu, Wei and Anguelov, Dragomir and Erhan, Dumitru and Szegedy, Christian and Reed, Scott and Fu, Cheng-Yang and Berg, Alexander C.},
  booktitle = {ECCV},
  year = {2016}
}

Skopiowano z bloku cytowania autorów w github.com/weiliu89/caffe/tree/ssd#citing-ssd.

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.