Grounding DINO
Grounding DINO — детектор с открытым множеством классов от IDEA Research, который сопоставляет изображение со свободным текстовым запросом вместо фиксированного списка классов. LibreYOLO подключает его как семейство только для предсказания на своём уровне детекторов с открытым словарём.
- Задачи
- detection
- Размеры
- t, b at 800 px
- Установка
pip install libreyolo- Уровень поддержки
- Смежный уровень, начиная с v. Отдельная часть продукта со своей фабрикой и контрактом.
- Исходный проект
- Grounding DINO от IDEA Research, Apache-2.0. Статья, исходный код
- Лицензии
- Код: MIT, веса: Apache-2.0. Коммерческое использование
Установка
Grounding DINO загружается через уровень детекторов с открытым словарём в
LibreYOLO, которому нужен extra openvocab:
pip install "libreyolo[openvocab]"Этот extra подтягивает transformers и timm — библиотеки Hugging Face, к
которым обращается этот уровень.
Предсказание
Grounding DINO — не тот чекпойнт, который LibreYOLO загружает через
LibreYOLO(). Он загружается через соседнюю фабрику LibreOpenVocab: она
скачивает снапшот с Hugging Face при первом запуске и кэширует его в
weights/.
from libreyolo import LibreOpenVocab, SAMPLE_IMAGE model = LibreOpenVocab("grounding-dino-t")model.set_classes(["person", "dog", "skateboard"]) result = model.predict(SAMPLE_IMAGE, conf=0.25)for box in result.boxes: print(box.cls, box.conf, box.xyxy)from libreyolo import LibreOpenVocab, SAMPLE_IMAGE model = LibreOpenVocab("grounding-dino-b")model.set_classes(["remote control", "school bus"]) # conf фильтрует по оценке рамки, а text_threshold — по оценке# токенов декодированной фразы. Если их не задавать, оба равны 0.25.result = model.predict(SAMPLE_IMAGE, conf=0.25, text_threshold=0.3)print(result.names)set_classes() задаёт постоянный текстовый словарь: вызовите его ещё раз,
чтобы заменить список, или не вызывайте вовсе, чтобы остались стандартные
метки COCO-80. Grounding DINO сам декодирует свободные фразы из своего
текстового выхода и сопоставляет их обратно с этим словарём, точное
нормализованное совпадение выигрывает, совпадение по целым токенам
принимается, а неоднозначная или несопоставленная фраза отбрасывается, а не
угадывается, поэтому school bus никогда не превратится в bus или в одно
только school. Словарь, который длиннее лимита токенов текстового энкодера,
разбивается на несколько запросов, прогоняется отдельными прямыми проходами и
снова сливается в один набор детекций, ограниченный max_det.
iou принимается ради совместимости API, но выдаёт предупреждение и ничего не
делает, потому что подавления немаксимумов здесь нет. imgsz и augment=True
отклоняются сразу: изменением размера занимается процессор transformers, а
аугментация на этапе предсказания выходит за рамки этого уровня. predict()
на одном изображении возвращает один Results, а не список; чтобы получить
несколько, передайте директорию, список изображений или stream=True для
видеоисточника. CLI-пути у этого семейства нет, libreyolo predict загружает
только чекпойнты .pt через LibreYOLO(), поэтому семейства
LibreOpenVocab запускаются из Python. Про типы источников и стриминг см.
предсказание.
Варианты
Два чекпойнта, t и b. t — размер по умолчанию для этого уровня, когда
ничего не задано. Оба повторяют официальный релиз IDEA Research через
GroundingDinoForObjectDetection из transformers и один раз скачиваются в
размещённый LibreYOLO снапшот Hugging Face, где сохранены исходные файлы. Ни
точности, ни задержек для этого семейства пока не опубликовано.
Обучение, валидация на датасете и экспорт выходят за рамки этого уровня:
train(), val() и export() безусловно вызывают NotImplementedError.
Это обёртка только для предсказания вокруг опубликованного чекпойнта.
Чекпойнты
Все опубликованные файлы весов этого семейства.
| Файл | Вход (пикс.) | Лицензия весов |
|---|---|---|
| Detection | ||
| LibreGroundingDINOt.pt | 800 | apache-2.0 |
| LibreGroundingDINOb.pt | 800 | apache-2.0 |
Все перечисленные выше файлы уже доступны в организации LibreYOLO и скачиваются при первом использовании.
Лицензирование
Проверяйте лицензию в репозитории конкретных весов на Hugging Face. Она указана для каждого чекпойнта в организации LibreYOLO и может различаться даже внутри одного семейства. Этот репозиторий считается авторитетным источником, а сводка ниже описывает условия на момент последней проверки страницы.
Это описание соответствующих лицензий, а не юридическая консультация. Если ответ важен для коммерческого использования, прочитайте лицензии самостоятельно и проконсультируйтесь с юристом.
- Оригинальная работа
- Grounding DINO, IDEA Research
- Лицензия исходного проекта
- Apache-2.0
- Исходный код проекта
- github.com/IDEA-Research/GroundingDINO
- Код 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 Grounding DINO model source of its own: LibreGroundingDINO calls the Apache-2.0 `transformers` implementation, `GroundingDinoForObjectDetection`, directly, and downloads the official checkpoint into a LibreYOLO-hosted mirror repository that preserves the upstream snapshot files.
Цитирование
@article{liu2023grounding,
title={Grounding dino: Marrying dino with grounded pre-training for open-set object detection},
author={Liu, Shilong and Zeng, Zhaoyang and Ren, Tianhe and Li, Feng and Zhang, Hao and Yang, Jie and Li, Chunyuan and Yang, Jianwei and Su, Hang and Zhu, Jun and others},
journal={arXiv preprint arXiv:2303.05499},
year={2023}
}Скопировано из блока цитирования авторов на странице github.com/IDEA-Research/GroundingDINO#black_nib-citation.