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. Всё, что он импортирует, входит в базовую установку.
pip install libreyoloПредсказание
Веса скачиваются с Hugging Face при первом запуске и кэшируются локально.
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=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, измеренные на любом датасете в том формате, в котором вы
обучали модель.
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.yamlЭкспорт
| Задача | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Detection | Detection 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 выполняют шаг декодирования и подавления уже после того, как
граф загружен обратно.
from libreyolo import LibreYOLO model = LibreYOLO("LibreSSD300.pt") # imgsz здесь опущен намеренно: SSD300 трассируется на родном холсте# своего чекпойнта, а любое другое значение вызовет ошибку до начала экспорта.model.export(format="onnx")libreyolo export model=LibreSSD300.pt format=onnxfrom libreyolo import LibreYOLO # Фабрика выбирает путь по суффиксу файла, поэтому экспортированный артефакт# загружается как любой чекпойнт и возвращает тот же объект Results.model = LibreYOLO("LibreSSD300.onnx")result = model(SAMPLE_IMAGE) print(result.boxes.xyxy)Чекпойнты
Все опубликованные файлы весов этого семейства.
| Файл | Вход (пикс.) | Лицензия весов |
|---|---|---|
| Detection | ||
| LibreSSD300.pt | 300 | bsd-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.