Посмотреть как Markdown

OMDet-Turbo

OMDet-Turbo — детектор объектов с открытым словарём, работающий в реальном времени; он разработан в Om AI Lab и отделяет эмбеддинги классов от языкового промпта задачи. LibreYOLO подключает его как семейство только для предсказания на своём уровне детекторов с открытым словарём.

Задачи
detection
Размеры
t at 640 px
Установка
pip install libreyolo
Уровень поддержки
Смежный уровень, начиная с v. Отдельная часть продукта со своей фабрикой и контрактом.
Исходный проект
OMDet-Turbo от Om AI Lab, Apache-2.0. Статья, исходный код
Лицензии
Код: MIT, веса: Apache-2.0. Коммерческое использование

Установка

OMDet-Turbo загружается через уровень детекторов с открытым словарём в LibreYOLO, которому нужен extra openvocab:

bash
pip install "libreyolo[openvocab]"

Этот extra подтягивает transformers и timm — библиотеки Hugging Face, к которым обращается этот уровень; Swin-бэкбон OMDet-Turbo загружается через обёртку TimmBackbone из transformers.

Предсказание

OMDet-Turbo — не тот чекпойнт, который LibreYOLO загружает через LibreYOLO(). Он загружается через соседнюю фабрику LibreOpenVocab: она скачивает снапшот с Hugging Face при первом запуске и кэширует его в weights/.

Python
from libreyolo import LibreOpenVocab, SAMPLE_IMAGE model = LibreOpenVocab("omdet-turbo")model.set_classes(["person", "dog", "skateboard"]) result = model.predict(SAMPLE_IMAGE, conf=0.3)for box in result.boxes:    print(box.cls, box.conf, box.xyxy)
Свой порог NMS
from libreyolo import LibreOpenVocab, SAMPLE_IMAGE model = LibreOpenVocab("omdet-turbo")model.set_classes(["traffic light", "bicycle"]) # OMDet-Turbo — единственное семейство этого уровня, которое учитывает# iou=: его собственная постобработка принимает порог подавления как# аргумент, а если iou= не задан, берётся 0.5.result = model.predict(SAMPLE_IMAGE, conf=0.3, iou=0.7)print(result.names, len(result))

set_classes() задаёт постоянный текстовый словарь: вызовите его ещё раз, чтобы полностью заменить список, или не вызывайте вовсе, чтобы остались стандартные метки COCO-80, и пустой результат здесь — допустимый исход, а не ошибка. В отличие от Grounding DINO, OMDet-Turbo отделяет эмбеддинги классов от языкового промпта задачи, поэтому постобработка transformers возвращает метки, которые напрямую сопоставляются с запрошенным списком классов, без шага разрешения неоднозначности фраз.

Порога по текстовым токенам у OMDet-Turbo нет: детекции фильтрует только conf, а передача text_threshold вызывает ошибку. Это единственное семейство этого уровня, которое выполняет собственное подавление немаксимумов внутри post_process_grounded_object_detection, поэтому iou здесь учитывается, а не приводит к предупреждению. imgsz и augment=True отклоняются сразу: изменением размера занимается процессор transformers, а аугментация на этапе теста выходит за рамки этого уровня. predict() на одном изображении возвращает один Results, а не список; чтобы получить несколько, передайте директорию, список изображений или stream=True для видеоисточника. CLI-пути у этого семейства нет, libreyolo predict загружает только чекпойнты .pt через LibreYOLO(), поэтому семейства LibreOpenVocab запускаются из Python. Про типы источников и стриминг см. предсказание.

Варианты

Один чекпойнт, t, единственный размер на этом уровне. Он повторяет omlab/omdet-turbo-swin-tiny-hf на зафиксированной ревизии upstream через OmDetTurboForObjectDetection из transformers; файл весов в зеркале побайтово идентичен этому снапшоту upstream. Ни точности, ни задержек для этого семейства пока не опубликовано.

Обучение, валидация на датасете и экспорт выходят за рамки этого уровня: train(), val() и export() безусловно вызывают NotImplementedError. Это обёртка только для предсказания вокруг опубликованного чекпойнта.

Чекпойнты

Все опубликованные файлы весов этого семейства.

ФайлВход (пикс.)Лицензия весов
Detection
LibreOMDetTurbot.pt640apache-2.0

Все перечисленные выше файлы уже доступны в организации LibreYOLO и скачиваются при первом использовании.

Лицензирование

Проверяйте лицензию в репозитории конкретных весов на Hugging Face. Она указана для каждого чекпойнта в организации LibreYOLO и может различаться даже внутри одного семейства. Этот репозиторий считается авторитетным источником, а сводка ниже описывает условия на момент последней проверки страницы.

Это описание соответствующих лицензий, а не юридическая консультация. Если ответ важен для коммерческого использования, прочитайте лицензии самостоятельно и проконсультируйтесь с юристом.

Оригинальная работа
OMDet-Turbo, Om AI Lab
Лицензия исходного проекта
Apache-2.0
Исходный код проекта
github.com/om-ai-lab/OmDet
Код LibreYOLO
MIT
Веса
Apache-2.0, повторно опубликованы на huggingface.co/LibreYOLO
Толкование
Apache-2.0 is a permissive license, so this checkpoint can be used in commercial and closed-source products. It asks you to keep the license text and attribution notices with any copy of the weights you redistribute, and it grants a patent license. LibreYOLO vendors no OMDet-Turbo model source of its own: LibreOMDetTurbo calls the Apache-2.0 `transformers` implementation, `OmDetTurboForObjectDetection`, directly. The mirrored checkpoint is a byte-identical copy of `omlab/omdet-turbo-swin-tiny-hf` at a pinned upstream revision, verified against a recorded SHA-256 checksum before it is used.

Цитирование

@article{zhao2024real,
  title={Real-time Transformer-based Open-Vocabulary Detection with Efficient Fusion Head},
  author={Zhao, Tiancheng and Liu, Peng and He, Xuan and Zhang, Lu and Lee, Kyusong},
  journal={arXiv preprint arXiv:2403.06892},
  year={2024}
}

Скопировано из блока цитирования авторов на странице github.com/om-ai-lab/OmDet#citation.

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