SSD

SSD (Single Shot MultiBox Detector) передбачає всі рамки й оцінки класів зі щільної сітки типових рамок за один прямий прохід без окремого етапу пропозицій областей. LibreYOLO постачає контрольну точку SSD300 із VGG16 як детектор лише для інференсу.

Задачі
detection
Розміри
300 at 300 px
Встановлення
pip install libreyolo
Рівень підтримки
Лише інференс, починаючи з v. Лише передбачення, валідація та експорт. Функції навчання не застосовуються.
Першоджерело
SSD, автори: UNC Chapel Hill, Zoox, Google and University of Michigan, ліцензія BSD-3-Clause. Стаття, джерело
Ліцензії
Код: BSD-3-Clause, ваги: BSD-3-Clause. Комерційне використання

Встановлення

SSD не потребує додаткових залежностей. Усе, що вона імпортує, входить до базового встановлення.

bash
pip install libreyolo

Передбачення

Під час першого використання ваги завантажуються з Hugging Face і кешуються локально.

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

Повернений об'єкт Results є однаковим для всіх сімейств, тому заміна детектора потребує зміни одного рядка. SSD декодує сітку типових рамок з оцінками для кожного класу, а потім виконує немаксимальне придушення, тому conf, iou і max_det тут дійсно впливають на результат, на відміну від детекторів на основі запитів у цій бібліотеці. Типи джерел, потокове передбачення та обробку результатів описано в розділі передбачення.

Варіанти

SSD постачає одну контрольну точку: мережу SSD300 із VGG16 на її фіксованому початковому полотні. Це сімейство не має вибору розміру чи масштабу; передбачення, валідація та експорт використовують один граф.

Файл ваг має назву LibreSSD300.pt, тобто префікс сімейства разом із його єдиним ключем розміру "300". Йому відповідає клас LibreSSD, тому безпосереднє створення має форму LibreSSD(size="300"), а не клас із назвою файлу.

Валідація

val() повертає словник ключів metrics/ із точністю, повнотою, mAP 50 та mAP 50-95, виміряними на будь-якому датасеті у форматі, на якому проводилося навчання.

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

Експорт

ЗадачаONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
DetectionDetection to ONNX: підтримуєтьсяDetection to TorchScript: не підтримуєтьсяDetection to ExecuTorch: не підтримуєтьсяDetection to TensorRT: не підтримуєтьсяDetection to OpenVINO: не підтримуєтьсяDetection to Paddle: не підтримуєтьсяDetection to MNN: не підтримуєтьсяDetection to RKNN: не підтримуєтьсяDetection to ncnn: не підтримуєтьсяDetection to TFLite: не підтримуєтьсяDetection to CoreML: не підтримуєтьсяDetection to Core AI: не підтримується

SSD експортується лише до ONNX; усі інші формати наразі заблоковано для цього сімейства. Експорт завжди використовує початкове полотно контрольної точки, а граф відкриває необроблену запаковану голову SSD замість об'єднаного виходу немаксимального придушення, тому nms=True під час експорту не приймається. Власні бекенди LibreYOLO виконують декодування й придушення після повторного завантаження графа.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreSSD300.pt") # imgsz тут пропущено навмисно: SSD300 трасується на початковому полотні# контрольної точки, а будь-яке інше значення спричиняє помилку до початку експорту.model.export(format="onnx")
CLI
libreyolo export model=LibreSSD300.pt format=onnx
Використання експортованого файлу
from libreyolo import LibreYOLO # Фабрика маршрутизує за суфіксом файлу, тому експортований артефакт# завантажується як будь-яка контрольна точка й повертає той самий об'єкт Results.model = LibreYOLO("LibreSSD300.onnx")result = model(SAMPLE_IMAGE) print(result.boxes.xyxy)

Контрольні точки

Усі опубліковані файли ваг цього сімейства.

ФайлВхід (пікс.)Ліцензія ваг
Detection
LibreSSD300.pt300bsd-3-clause

Кожен наведений вище файл уже доступний у організації LibreYOLO і завантажується під час першого використання.

Ліцензування

Перевіряйте ліцензію в репозиторії Hugging Face конкретних ваг, які завантажуєте. Кожна контрольна точка в організації LibreYOLO має ліцензію, і вона не завжди однакова для всього сімейства. Цей репозиторій є авторитетним джерелом, а наведене нижче резюме описує умови на момент останньої перевірки сторінки.

Це опис відповідних ліцензій, а не юридична консультація. Якщо відповідь має комерційне значення, самостійно прочитайте ліцензії та зверніться по юридичну консультацію.

Оригінальна робота
SSD, UNC Chapel Hill, Zoox, Google and University of Michigan
Ліцензія першоджерела
BSD-3-Clause
Джерело першоджерела
github.com/pytorch/vision
Код LibreYOLO
MIT
Ваги
BSD-3-Clause, повторно опубліковано на huggingface.co/LibreYOLO
Тлумачення
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.

Код SSD300 у LibreYOLO не перенесено з власного релізу авторів статті для Caffe; він походить від реалізації SSD300 у torchvision під ліцензією BSD-3-Clause, і саме на цей репозиторій веде посилання початкового джерела вище. Ваги бекбона VGG16 походять також від повністю згорткової скороченої VGGNet Oxford, випущеної Karen Simonyan та Andrew Zisserman під ліцензією CC BY 4.0.

Цитування

@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}
}

Скопійовано з блоку цитування авторів на сторінці github.com/weiliu89/caffe/tree/ssd#citing-ssd.

Перевірено з LibreYOLO v1.5.0. Таблиці підтримки, контрольні точки й результати бенчмарків на цій сторінці згенеровано з випущеної бібліотеки та опублікованих ваг, а не написано вручну.