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 не нужны опциональные extra. Всё, что он импортирует, входит в базовую установку.

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 декодирует свою сетку опорных рамок с оценками по классам, а затем запускает non-maximum suppression, поэтому 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, а не выход со встроенным non-maximum suppression, поэтому 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 из Оксфорда, выпущенной под CC BY 4.0 Karen Simonyan и Andrew Zisserman.

Цитирование

@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. Таблицы поддержки, чекпойнты и результаты бенчмарков на этой странице сгенерированы из выпущенной библиотеки и опубликованных весов, а не написаны вручную.