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 не потребує додаткових залежностей. Усе, що вона імпортує, входить до базового встановлення.
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 декодує сітку типових рамок з
оцінками для кожного класу, а потім виконує немаксимальне придушення, тому
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 замість об'єднаного виходу
немаксимального придушення, тому 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 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.