Dome-DETR
Спеціалізована модель для крихітних об'єктів на основі D-FINE: голова щільності визначає розташування об'єктів, увага кодера обмежується вікнами, що їх містять, а кількість запитів визначається за цією щільністю, а не фіксується. LibreYOLO підтримує її для виявлення.
- Задачі
- detection
- Розміри
- s, m, l at 800 px
- Встановлення
pip install libreyolo- Рівень підтримки
- Підтримуваний, починаючи з v1.5.0. Додаткові придатні до навчання моделі: тести CI підтримують справними, а функції додають за нагоди.
- Першоджерело
- Dome-DETR, автори: The Dome-DETR Authors, ліцензія Apache-2.0 code; academic-research-only weights. Стаття, джерело
- Ліцензії
- Код: Apache-2.0, ваги: Apache-2.0 code; academic-research-only weights. Комерційне використання
Встановлення
Dome-DETR не потребує додаткових пакетів. Усі його імпорти входять до базового встановлення.
pip install libreyoloПередбачення
Шість конвертованих контрольних точок завантажуються автоматично з дзеркал LibreYOLO. Їхні вихідні умови обмежують використання академічними дослідженнями.
from libreyolo import LibreYOLO, SAMPLE_IMAGE # Попередньо навчені ваги дозволено лише для академічних досліджень.model = LibreYOLO("LibreDOMEDETRs-visdrone.pt", device="cpu")print(model(SAMPLE_IMAGE).boxes)Повертається той самий об'єкт Results, що й для кожного сімейства, тому для
заміни детектора достатньо змінити один рядок. Параметри conf і max_det
фільтрують вибір запитів; iou приймається для сумісності API, але не впливає
на результат, оскільки декодер є множинним предиктором без етапу NMS. Джерела,
потокове оброблення та роботу з результатами описано на сторінці
передбачення.
Для цього сімейства вимкнено дві можливості. Захоплення графа CUDA вимкнено, оскільки кількість запитів PAQI залежить від даних, а отже, форма прямого проходу змінюється від зображення до зображення, чого захоплення графа саме й не може підтримати. Аугментація під час тестування працює з одним фіксованим квадратним розміром, тому запит багатомасштабної TTA нічого не змінює.
Варіанти
Доступні три розміри, s, m та l, усі для 800 на 800. Розмір вибирає бекбон, а датасет походження ваг визначає глибину декодера й бюджет запитів, тому самого коду розміру недостатньо для ідентифікації графа. Ваги AI-TOD-V2 вибирають від 300 до 1500 запитів на зображення, ваги VisDrone від 250 до 500, а велика модель виконує чотири шари декодера на AI-TOD-V2 і шість на VisDrone.
Dome-DETR є моделлю D-FINE із трьома доповненнями. DeFE передбачає карту щільності. MWAS використовує цю карту, щоб обмежити увагу кодера вікнами, які справді містять об'єкти, замість уваги до всього. PAQI визначає розмір набору запитів за тією самою щільністю замість декодування фіксованих 300. Перевага зосереджується на найменших об'єктах і звужується зі збільшенням їхнього розміру: у власній абляції першоджерела AP для дуже крихітних об'єктів зростає з 14.0 до 17.8, тоді як AP для середніх об'єктів лише з 45.4 до 46.4. Розглядайте її як доповнення до D-FINE для аерофотознімків, зображень із дронів і даних дистанційного зондування, а не як заміну.
Для цього сімейства не записано результатів бенчмарку Vision Analysis.
Навчання
Dome-DETR можна навчати. Навчання виконує повну цільову функцію першоджерела: функції втрат D-FINE разом із наглядом за щільністю та кількістю DeFE, причому доповнені запити вилучаються з членів класифікації за допомогою маски, а окремі для кожного зображення маски уваги знешумлення не дають доповненню одного зображення впливати на інше.
from libreyolo import LibreYOLO model = LibreYOLO("LibreDOMEDETRs-visdrone.pt")model.train(data="my-dataset.yaml", epochs=160, imgsz=800, batch=4, lr0=2e-4)libreyolo train model=LibreDOMEDETRs-visdrone.pt data=my-dataset.yaml \ epochs=160 imgsz=800 batch=4 lr0=2e-4libreyolo train model=LibreDOMEDETRs-visdrone.pt data=my-dataset.yaml \ epochs=160 device=0,1 batch=4Конфігурація успадковує рецепт D-FINE і змінює те, що потрібно MWAS. imgsz
дорівнює 800, lr0 дорівнює 2e-4, група параметрів бекбона масштабується через
backbone_lr_mult=0.1, а multi_scale примусово вимкнено, оскільки вікна MWAS
потребують, щоб розмір вхідних даних залишався кратним кроку 8. Типове значення
batch дорівнює 4 замість 16 у D-FINE: PAQI доповнює кожен батч до його
найширшого елемента, тому споживання пам'яті визначається найбільш насиченим
зображенням батча, а не середнім.
Є одне важливе застереження щодо правильності. Першоджерело навчає протягом 160
епох із MultiStepLR(milestones=[80, 120], gamma=0.8), а ці типові налаштування
виконують плаский косинусний розклад D-FINE протягом тих самих 160 епох. Цей
розклад тут не відтворено, як і значення AP зі статті, тому сприймайте їх як
результати авторів першоджерела, а не обіцянку, що цей рецепт їх досягне. Якщо
метою є відтворення статті, задайте розклад із першоджерела.
Датасети, аугментацію, кілька GPU та системи журналювання описано на сторінці навчання.
Валідація
Метод val() повертає словник із ключами за назвами метрик і виводить результати
для кожного класу, якщо verbose залишається ввімкненим.
from libreyolo import LibreYOLO model = LibreYOLO("LibreDOMEDETRs-visdrone.pt")metrics = model.val(data="my-dataset.yaml") print(metrics["metrics/mAP50-95"])print(metrics["metrics/mAP50"])libreyolo val model=LibreDOMEDETRs-visdrone.pt data=my-dataset.yamlВалідація виконується на вашому датасеті у форматі, який використовувався для навчання. Шлюз валідації COCO у бібліотеці тут не застосовується, оскільки для цього сімейства немає контрольної точки COCO, з якою можна виконати вимірювання.
Експорт
Експорт не підтримується в жодному форматі, а його запит спричиняє помилку замість створення файлу.
Причина полягає в PAQI. Він визначає кількість запитів для кожного зображення за відфільтрованими за щільністю пропозиціями та жадібним циклом адаптивного до щільності пригнічення, тому довжина виходу декодера визначається вхідними даними, а не графом. Трасування фіксує кількість, яку випадково створило зображення для трасування, внаслідок чого артефакт непомітно повертає неправильні результати для кожного іншого зображення. Статичне формулювання мало б розгорнути це пригнічення для всіх 250-1500 кандидатів, а зведення до фіксованого top-k усунуло б саме ту повноту крихітних об'єктів, заради якої існує сімейство. Якщо потрібен придатний до експорту трансформер виявлення, використовуйте D-FINE.
Контрольні точки
| Файл | Ліцензія ваг |
|---|---|
| Detection | |
| LibreDOMEDETRs-aitod.pt | other |
| LibreDOMEDETRm-aitod.pt | other |
| LibreDOMEDETRl-aitod.pt | other |
| LibreDOMEDETRs-visdrone.pt | other |
| LibreDOMEDETRm-visdrone.pt | other |
| LibreDOMEDETRl-visdrone.pt | other |
Кожен наведений вище файл уже доступний у організації LibreYOLO і завантажується під час першого використання.
Ліцензування
Перевіряйте ліцензію в репозиторії Hugging Face конкретних ваг, які завантажуєте. Кожна контрольна точка в організації LibreYOLO має ліцензію, і вона не завжди однакова для всього сімейства. Цей репозиторій є авторитетним джерелом, а наведене нижче резюме описує умови на момент останньої перевірки сторінки.
Це опис відповідних ліцензій, а не юридична консультація. Якщо відповідь має комерційне значення, самостійно прочитайте ліцензії та зверніться по юридичну консультацію.
- Оригінальна робота
- Dome-DETR, The Dome-DETR Authors
- Ліцензія першоджерела
- Apache-2.0 code; academic-research-only weights
- Джерело першоджерела
- github.com/RicePasteM/Dome-DETR
- Код LibreYOLO
- MIT
- Ваги
- Apache-2.0 code; academic-research-only weights, повторно опубліковано на huggingface.co/LibreYOLO
- Тлумачення
- The upstream source is Apache-2.0. Six mirrored checkpoints retain the publisher academic-research-only restriction.
Шість дзеркал зберігають вихідне обмеження використання лише для академічних досліджень. Код ліцензується окремо. Вихідний репозиторій має ліцензію Apache-2.0, порт LibreYOLO має MIT, а ваги, які ви навчаєте самостійно на власних даних, належать вам.