SSD
SSD (Single Shot MultiBox Detector) sagt alle Begrenzungsrahmen und Klassenbewertungen in einem einzigen Vorwärtsdurchlauf aus einem dichten Raster von Standardboxen vorher, ohne separate Region-Proposal-Stufe. LibreYOLO stellt den VGG16-basierten SSD300-Checkpoint als reinen Inferenzdetektor bereit.
- Aufgaben
- detection
- Größen
- 300 at 300 px
- Installation
pip install libreyolo- Supportstufe
- Nur Inferenz, seit v. Nur Vorhersage, Validierung und Export. Trainingsfunktionen sind nicht verfügbar.
- Upstream
- SSD von UNC Chapel Hill, Zoox, Google and University of Michigan, BSD-3-Clause. Publikation, Quelle
- Lizenzen
- Code BSD-3-Clause, Gewichte BSD-3-Clause. Kommerzielle Nutzung
Installation
SSD benötigt kein optionales Extra. Alle Importe sind in der Basisinstallation enthalten.
pip install libreyoloVorhersage
Die Gewichte werden bei der ersten Verwendung von Hugging Face heruntergeladen und lokal zwischengespeichert.
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)libreyolo predict model=LibreSSD300.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=TrueDas zurückgegebene Results-Objekt entspricht dem jeder anderen Familie, sodass der Wechsel zu einem anderen Detektor nur eine einzige Codezeile erfordert. SSD decodiert sein Raster aus Standardboxen mit klassenweisen Bewertungen und führt anschließend Non-Maximum Suppression aus. Deshalb haben conf, iou und max_det hier tatsächlich eine Wirkung, anders als bei den abfragebasierten Detektoren dieser Bibliothek. Unter Vorhersage findest du Informationen zu Quellen, Streaming und Ergebnisverarbeitung.
Varianten
SSD stellt einen Checkpoint bereit: das VGG16-basierte SSD300-Netzwerk mit seiner festen nativen Canvas-Größe. Diese Familie bietet keine Auswahl an Größen oder Skalierungen. Vorhersage, Validierung und Export verwenden denselben Graphen.
Die Gewichtsdatei heißt LibreSSD300.pt. Der Name besteht aus dem Familienpräfix und dem einzigen Größenschlüssel "300". Die zugrunde liegende Klasse heißt LibreSSD, sodass die direkte Erstellung LibreSSD(size="300") lautet und nicht über eine nach der Datei benannte Klasse erfolgt.
Validierung
val() gibt ein Dictionary mit metrics/-Schlüsseln für Precision, Recall, mAP 50 und mAP 50-95 zurück, gemessen anhand jedes Datensatzes im Format, das du für das Training verwendet hast.
from libreyolo import LibreYOLO model = LibreYOLO("LibreSSD300.pt")metrics = model.val(data="my-dataset.yaml") print(metrics["metrics/mAP50-95"])print(metrics["metrics/mAP50"])libreyolo val model=LibreSSD300.pt data=my-dataset.yamlExport
| Aufgabe | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Detection | Detection to ONNX: unterstützt | Detection to TorchScript: nicht unterstützt | Detection to ExecuTorch: nicht unterstützt | Detection to TensorRT: nicht unterstützt | Detection to OpenVINO: nicht unterstützt | Detection to Paddle: nicht unterstützt | Detection to MNN: nicht unterstützt | Detection to RKNN: nicht unterstützt | Detection to ncnn: nicht unterstützt | Detection to TFLite: nicht unterstützt | Detection to CoreML: nicht unterstützt | Detection to Core AI: nicht unterstützt |
SSD kann nur nach ONNX exportiert werden. Alle anderen Formate sind für diese Familie derzeit gesperrt. Der Export verwendet immer die native Canvas-Größe des Checkpoints. Der Graph gibt den gepackten Rohkopf von SSD aus und keine zusammengeführte Non-Maximum-Suppression-Ausgabe, weshalb nms=True beim Export nicht akzeptiert wird. Die LibreYOLO-Backends führen das Decodieren und die Unterdrückung nach dem erneuten Laden des Graphen aus.
from libreyolo import LibreYOLO model = LibreYOLO("LibreSSD300.pt") # imgsz wird hier bewusst ausgelassen: SSD300 wird mit der nativen# Canvas-Größe seines Checkpoints aufgezeichnet; jeder andere Wert löst vor dem Export einen Fehler aus.model.export(format="onnx")libreyolo export model=LibreSSD300.pt format=onnxfrom libreyolo import LibreYOLO # Die Factory leitet anhand der Dateiendung weiter, daher wird ein exportiertes Artefakt# wie jeder Checkpoint geladen und gibt dasselbe Results-Objekt zurück.model = LibreYOLO("LibreSSD300.onnx")result = model(SAMPLE_IMAGE) print(result.boxes.xyxy)Checkpoints
Alle für diese Familie veröffentlichten Gewichtsdateien.
| Datei | Eingabe (px) | Lizenz der Gewichte |
|---|---|---|
| Detection | ||
| LibreSSD300.pt | 300 | bsd-3-clause |
Jede oben aufgeführte Datei ist heute in der LibreYOLO-Organisation verfügbar und wird bei der ersten Verwendung heruntergeladen.
Lizenzierung
Prüfe die Lizenz im Hugging-Face-Repository der konkreten Gewichte, die du herunterlädst. Jeder Checkpoint in der LibreYOLO-Organisation hat eine Lizenz, und sie ist innerhalb einer Familie nicht immer gleich. Dieses Repository ist die maßgebliche Quelle. Die Zusammenfassung unten beschreibt den Stand bei der letzten Verifizierung dieser Seite.
Dies ist eine Beschreibung der beteiligten Lizenzen und keine Rechtsberatung. Wenn die Antwort kommerziell relevant ist, lies die Lizenzen selbst und hole eigenen Rechtsrat ein.
- Originalarbeit
- SSD, UNC Chapel Hill, Zoox, Google and University of Michigan
- Upstream-Lizenz
- BSD-3-Clause
- Upstream-Quelle
- github.com/pytorch/vision
- LibreYOLO-Code
- MIT
- Gewichte
- BSD-3-Clause, erneut unter huggingface.co/LibreYOLO veröffentlicht
- Einordnung
- 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.
Der SSD300-Code von LibreYOLO wurde nicht aus der Caffe-Veröffentlichung der Autoren des Papers portiert, sondern leitet sich von der BSD-3-Clause-Implementierung SSD300 aus torchvision ab. Das oben verlinkte Repository ist daher die Upstream-Quelle. Die VGG16-Gewichte des Backbones gehen auf das vollständig konvolutionale, reduzierte VGGNet aus Oxford zurück, das Karen Simonyan und Andrew Zisserman unter CC BY 4.0 veröffentlicht haben.
Zitieren
@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}
}Aus dem Zitierblock der Autoren unter github.com/weiliu89/caffe/tree/ssd#citing-ssd kopiert.