Переглянути як Markdown

Deformable DETR

Deformable DETR замінює щільну перехресну увагу DETR розрідженим багатомасштабним семплюванням навколо кожної опорної точки, що зробило навчання трансформерних детекторів практичним. LibreYOLO постачає п'ять розмірів для виявлення лише в режимі інференсу.

Задачі
detection
Розміри
r50ss, r50ssdc5, r50, r50refine, r50twostage at 800 px
Встановлення
pip install libreyolo
Рівень підтримки
Лише інференс, починаючи з v. Лише передбачення, валідація та експорт. Функції навчання не застосовуються.
Першоджерело
Deformable DETR, автори: SenseTime, ліцензія Apache-2.0. Стаття, джерело
Ліцензії
Код: Apache-2.0, ваги: Apache-2.0. Комерційне використання

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

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

bash
pip install libreyolo

Установлення libreyolo[hub-kernels] необов'язкове. Коли пакет kernels доступний, LibreYOLO під час виконання отримує скомпільоване ядро багатомасштабної деформовної уваги з Hugging Face Hub і використовує його замість ядра лише на PyTorch; LIBREYOLO_HUB_KERNELS=0 вимикає його.

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

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

Python
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreDeformableDETRr50.pt")result = model(SAMPLE_IMAGE, save=True) for box in result.boxes:    print(box.cls, box.conf, box.xyxy)
CLI
libreyolo predict model=LibreDeformableDETRr50.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=True

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

Deformable DETR у LibreYOLO призначена лише для інференсу. Початковий проєкт навчає зі зіставленням за угорським алгоритмом і фокальною функцією втрат класифікації. Цей рецепт тут не реалізовано, тому train() спричиняє NotImplementedError.

Варіанти

П'ять контрольних точок охоплюють випущені конфігурації, усі з однаковою вхідною роздільною здатністю. r50ss обмежує увагу одним масштабом ознак; r50ssdc5 додає до нього розширений етап C5 бекбона. r50 є типовою багатомасштабною конфігурацією, що семплює чотири рівні карт ознак. r50refine додає ітеративне уточнення обмежувальних рамок у шарах декодера, а r50twostage створює початкові пропозиції областей із виходу енкодера замість навчених запитів.

Валідація

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

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreDeformableDETRr50.pt") # val() повертає звичайний словник, а не об'єктmetrics = model.val(data="my-dataset.yaml") print(metrics["metrics/mAP50-95"])print(metrics["metrics/mAP50"])print(metrics["metrics/precision"], metrics["metrics/recall"])
CLI
libreyolo val model=LibreDeformableDETRr50.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: не підтримується

Експортований артефакт знову завантажується через LibreYOLO() відповідно до суфікса файлу, тому файл .onnx або .engine поводиться як контрольна точка й повертає той самий об'єкт Results. У розділі експорту наведено аргументи, які приймає кожен формат.

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

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

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

ФайлВхід (пікс.)Ліцензія ваг
Detection
LibreDeformableDETRr50ss.pt800apache-2.0
LibreDeformableDETRr50ssdc5.pt800apache-2.0
LibreDeformableDETRr50.pt800apache-2.0
LibreDeformableDETRr50twostage.pt800apache-2.0
LibreDeformableDETRr50refine.pt800apache-2.0

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

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

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

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

Оригінальна робота
Deformable DETR, SenseTime
Ліцензія першоджерела
Apache-2.0
Джерело першоджерела
github.com/fundamentalvision/Deformable-DETR
Код LibreYOLO
MIT
Ваги
Apache-2.0, повторно опубліковано на huggingface.co/LibreYOLO
Тлумачення
Apache-2.0 is a permissive license, so these weights can be used in commercial and closed-source products. It asks you to keep its license text and attribution notices with any copy of the weights you redistribute, and it grants a patent license. It places no obligation on your own application code, and weights you train yourself on your own data are yours. The five checkpoints are converted from SenseTime's own Hugging Face mirrors, each of which declares apache-2.0 in its model card; that declaration, not the original repository's Google Drive release links, is the redistribution basis.

Цитування

@article{zhu2020deformable,
  title={Deformable DETR: Deformable Transformers for End-to-End Object Detection},
  author={Zhu, Xizhou and Su, Weijie and Lu, Lewei and Li, Bin and Wang, Xiaogang and Dai, Jifeng},
  journal={arXiv preprint arXiv:2010.04159},
  year={2020}
}

Скопійовано з блоку цитування авторів на сторінці github.com/fundamentalvision/Deformable-DETR#citing-deformable-detr.

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