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

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 з відкритим словником, для якого потрібен додатковий набір залежностей openvocab:

bash
pip install "libreyolo[openvocab]"

Цей набір установлює transformers і timm, бібліотеки Hugging Face, які використовує цей рівень.

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

Grounding DINO не є контрольною точкою, яку LibreYOLO завантажує через LibreYOLO(). Вона завантажується через споріднену фабрику LibreOpenVocab, яка під час першого використання отримує знімок із Hugging Face і кешує його в weights/.

Python
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.pt800apache-2.0
LibreGroundingDINOb.pt800apache-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.

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