OWLv2
OWLv2 — детектор с открытым словарём от Google Research, который оценивает области изображения по текстовым эмбеддингам из энкодера в стиле CLIP. LibreYOLO подключает его как семейство только для предсказания на своём уровне детекторов с открытым словарём.
- Задачи
- detection
- Размеры
- b16, l14 at 960 to 1008 px
- Установка
pip install libreyolo- Уровень поддержки
- Смежный уровень, начиная с v. Отдельная часть продукта со своей фабрикой и контрактом.
- Исходный проект
- OWLv2 от Google Research, Apache-2.0. Статья, исходный код
- Лицензии
- Код: MIT, веса: Apache-2.0. Коммерческое использование
Установка
OWLv2 загружается через уровень детекторов с открытым словарём в LibreYOLO,
которому нужен extra openvocab:
pip install "libreyolo[openvocab]"Этот extra подтягивает transformers и timm — библиотеки Hugging Face, к
которым обращается этот уровень.
Предсказание
OWLv2 — не тот чекпойнт, который LibreYOLO загружает через LibreYOLO(). Он
загружается через соседнюю фабрику LibreOpenVocab: она скачивает снапшот с
Hugging Face при первом запуске и кэширует его в weights/.
from libreyolo import LibreOpenVocab, SAMPLE_IMAGE model = LibreOpenVocab("owlv2-b16")model.set_classes(["person", "dog", "skateboard"]) result = model.predict(SAMPLE_IMAGE, conf=0.1)for box in result.boxes: print(box.cls, box.conf, box.xyxy)from libreyolo import LibreOpenVocab, SAMPLE_IMAGE # Если не вызывать set_classes(), останется стандартный словарь COCO-80 этого уровня.model = LibreOpenVocab("owlv2-l14")result = model.predict(SAMPLE_IMAGE, conf=0.1)print(result.names)set_classes() задаёт постоянный текстовый словарь: вызовите его ещё раз,
чтобы заменить список, или не вызывайте вовсе, чтобы остались стандартные
метки COCO-80. Каждая метка оборачивается в фиксированный шаблон промпта,
прежде чем попасть в текстовую башню, — так же, как обучался
Owlv2ForObjectDetection из transformers.
У OWLv2 нет порога по текстовым токенам: детекции фильтрует только conf, а
передача text_threshold приводит к ошибке. iou принимается ради
совместимости API, но выдаёт предупреждение и ничего не делает, потому что
подавления немаксимумов здесь нет. imgsz и augment=True отклоняются сразу:
изменением размера занимается процессор transformers, а аугментация на этапе
предсказания выходит за рамки этого уровня. predict() на одном изображении
возвращает один Results, а не список; чтобы получить несколько, передайте
директорию, список изображений или stream=True для видеоисточника. CLI-пути
у этого семейства нет, libreyolo predict загружает только чекпойнты .pt
через LibreYOLO(), поэтому семейства LibreOpenVocab запускаются из Python.
Про типы источников и стриминг см. предсказание.
Варианты
Два чекпойнта, b16 (base, размер патча 16) и l14 (large, размер патча 14).
b16 — размер по умолчанию для этого уровня, когда ничего не задано. Оба
повторяют официальный релиз Google Research через Owlv2ForObjectDetection из
transformers и один раз скачиваются в размещённый LibreYOLO снапшот
Hugging Face, где сохранены исходные файлы. Ни точности, ни задержек для этого
семейства пока не опубликовано.
Обучение, валидация на датасете и экспорт выходят за рамки этого уровня:
train(), val() и export() безусловно вызывают NotImplementedError.
Это обёртка только для предсказания вокруг опубликованного чекпойнта.
Чекпойнты
Все опубликованные файлы весов этого семейства.
| Файл | Вход (пикс.) | Лицензия весов |
|---|---|---|
| Detection | ||
| LibreOWLv2b16.pt | 960 | apache-2.0 |
| LibreOWLv2l14.pt | 1008 | apache-2.0 |
Все перечисленные выше файлы уже доступны в организации LibreYOLO и скачиваются при первом использовании.
Лицензирование
Проверяйте лицензию в репозитории конкретных весов на Hugging Face. Она указана для каждого чекпойнта в организации LibreYOLO и может различаться даже внутри одного семейства. Этот репозиторий считается авторитетным источником, а сводка ниже описывает условия на момент последней проверки страницы.
Это описание соответствующих лицензий, а не юридическая консультация. Если ответ важен для коммерческого использования, прочитайте лицензии самостоятельно и проконсультируйтесь с юристом.
- Оригинальная работа
- OWLv2, Google Research
- Лицензия исходного проекта
- Apache-2.0
- Исходный код проекта
- github.com/google-research/scenic/tree/main/scenic/projects/owl_vit
- Код LibreYOLO
- MIT
- Веса
- Apache-2.0, повторно опубликованы на huggingface.co/LibreYOLO
- Толкование
- Apache-2.0 is a permissive license, so these checkpoints 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 OWLv2 model source of its own: LibreOWLv2 calls the Apache-2.0 `transformers` implementation, `Owlv2ForObjectDetection`, directly, and downloads the official checkpoints into a LibreYOLO-hosted mirror repository that preserves the upstream snapshot files.
Цитирование
@article{minderer2023scaling,
title={Scaling Open-Vocabulary Object Detection},
author={Matthias Minderer, Alexey Gritsenko, Neil Houlsby},
journal={NeurIPS},
year={2023},
}Скопировано из блока цитирования авторов на странице github.com/google-research/scenic/blob/main/scenic/projects/owl_vit/README.md#references.