DINO-DETR
DINO-DETR, опублікована IDEA Research як DINO, поєднує контрастивне навчання з усуненням шуму та змішаний вибір запитів поверх розрідженої уваги Deformable DETR. LibreYOLO постачає три розміри для виявлення лише в режимі інференсу.
- Задачі
- detection
- Розміри
- r50, r50s5, swinl at 800 px
- Встановлення
pip install libreyolo- Рівень підтримки
- Лише інференс, починаючи з v. Лише передбачення, валідація та експорт. Функції навчання не застосовуються.
- Ліцензії
- Код: Apache-2.0, ваги: Apache-2.0. Комерційне використання
Встановлення
DINO-DETR не потребує додаткових залежностей. Усе, що вона імпортує, входить до базового встановлення й використовує те саме ядро багатомасштабної деформовної уваги лише на PyTorch, що й сімейство Deformable DETR у LibreYOLO.
pip install libreyoloУстановлення libreyolo[hub-kernels] необов'язкове. Коли пакет kernels
доступний, LibreYOLO під час виконання отримує скомпільоване ядро
багатомасштабної деформовної уваги з Hugging Face Hub і використовує його
замість ядра лише на PyTorch; LIBREYOLO_HUB_KERNELS=0 вимикає його.
Передбачення
Під час першого використання ваги завантажуються з Hugging Face і кешуються локально.
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreDINODETRr50.pt")result = model(SAMPLE_IMAGE, save=True) for box in result.boxes: print(box.cls, box.conf, box.xyxy)libreyolo predict model=LibreDINODETRr50.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=TrueПовернений об'єкт Results є однаковим для всіх сімейств, тому заміна
детектора потребує зміни одного рядка. conf і max_det фільтрують вибір
запитів; iou приймається для узгодженості API, але не впливає на результат,
оскільки декодер передбачає множину без етапу NMS. Типи джерел, потокове
передбачення та обробку результатів описано в розділі
передбачення.
DINO-DETR у LibreYOLO призначена лише для інференсу. Початковий проєкт навчає
з контрастивним усуненням шуму та зіставленням за угорським алгоритмом. Цей
рецепт тут не реалізовано, тому train() спричиняє
NotImplementedError.
Варіанти
Доступні три контрольні точки, усі з однаковою вхідною роздільною здатністю.
r50 і r50s5 мають спільний бекбон ResNet-50 і відрізняються кількістю
масштабів карт ознак, що подаються до декодера: чотири проти п'яти. swinl
замінює бекбон на Swin-L і також семплює п'ять масштабів.
Валідація
val() повертає словник ключів metrics/ із точністю, повнотою, mAP 50 та
mAP 50-95, виміряними на будь-якому датасеті у форматі, на якому проводилося
навчання.
from libreyolo import LibreYOLO model = LibreYOLO("LibreDINODETRr50.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"])libreyolo val model=LibreDINODETRr50.pt data=my-dataset.yamlЕкспорт
| Задача | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Detection | Detection 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. У розділі
експорту наведено аргументи, які приймає кожен формат.
from libreyolo import LibreYOLO model = LibreYOLO("LibreDINODETRr50.pt")model.export(format="onnx", imgsz=800)model.export(format="tensorrt", imgsz=800, half=True)libreyolo export model=LibreDINODETRr50.pt format=onnx imgsz=800libreyolo export model=LibreDINODETRr50.pt format=tensorrt imgsz=800 half=Truefrom libreyolo import LibreYOLO, SAMPLE_IMAGE # Фабрика маршрутизує за суфіксом файлу, тому експортований артефакт# завантажується як будь-яка контрольна точка й повертає той самий об'єкт Results.model = LibreYOLO("LibreDINODETRr50.onnx")result = model(SAMPLE_IMAGE) print(result.boxes.xyxy)Контрольні точки
Усі опубліковані файли ваг цього сімейства.
| Файл | Вхід (пікс.) | Ліцензія ваг |
|---|---|---|
| Detection | ||
| LibreDINODETRr50.pt | 800 | apache-2.0 |
| LibreDINODETRr50s5.pt | 800 | apache-2.0 |
| LibreDINODETRswinl.pt | 800 | apache-2.0 |
Кожен наведений вище файл уже доступний у організації LibreYOLO і завантажується під час першого використання.
Ліцензування
Перевіряйте ліцензію в репозиторії Hugging Face конкретних ваг, які завантажуєте. Кожна контрольна точка в організації LibreYOLO має ліцензію, і вона не завжди однакова для всього сімейства. Цей репозиторій є авторитетним джерелом, а наведене нижче резюме описує умови на момент останньої перевірки сторінки.
Це опис відповідних ліцензій, а не юридична консультація. Якщо відповідь має комерційне значення, самостійно прочитайте ліцензії та зверніться по юридичну консультацію.
- Оригінальна робота
- DINO-DETR, IDEA Research
- Ліцензія першоджерела
- Apache-2.0
- Джерело першоджерела
- github.com/IDEA-Research/DINO
- Код 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 three checkpoints come from the authors' Google Drive release rather than a Hugging Face model card, and the upstream repository does not attach a license to the checkpoint files individually, so the redistribution basis is the repository-level Apache-2.0 declaration rather than a checkpoint-specific grant.
Три офіційні контрольні точки походять із папки релізу авторів на Google Drive, а не з картки моделі Hugging Face. Початковий репозиторій оголошує Apache-2.0 на рівні репозиторію, але не додає файл ліцензії чи метадані ліцензії до самих контрольних точок. Тому підставою для розповсюдження є ця заява на рівні репозиторію, а не окремий дозвіл для контрольної точки. Кожне дзеркало LibreYOLO постачає дослівний текст початкової Apache-2.0 разом із пояснювальним повідомленням.
Цитування
@misc{zhang2022dino,
title={DINO: DETR with Improved DeNoising Anchor Boxes for End-to-End Object Detection},
author={Hao Zhang and Feng Li and Shilong Liu and Lei Zhang and Hang Su and Jun Zhu and Lionel M. Ni and Heung-Yeung Shum},
year={2022},
eprint={2203.03605},
archivePrefix={arXiv},
primaryClass={cs.CV}
}
@inproceedings{li2022dn,
title={Dn-detr: Accelerate detr training by introducing query denoising},
author={Li, Feng and Zhang, Hao and Liu, Shilong and Guo, Jian and Ni, Lionel M and Zhang, Lei},
booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition},
pages={13619--13627},
year={2022}
}
@inproceedings{
liu2022dabdetr,
title={{DAB}-{DETR}: Dynamic Anchor Boxes are Better Queries for {DETR}},
author={Shilong Liu and Feng Li and Hao Zhang and Xiao Yang and Xianbiao Qi and Hang Su and Jun Zhu and Lei Zhang},
booktitle={International Conference on Learning Representations},
year={2022},
url={https://openreview.net/forum?id=oMI9PjOb9Jl}
}Скопійовано з блоку цитування авторів на сторінці github.com/IDEA-Research/DINO#bibtex.