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 не потребує додаткових пакетів. Усі його імпорти входять до базового встановлення.

bash
pip install libreyolo

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

Шість конвертованих контрольних точок завантажуються автоматично з дзеркал LibreYOLO. Їхні вихідні умови обмежують використання академічними дослідженнями.

Python
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, причому доповнені запити вилучаються з членів класифікації за допомогою маски, а окремі для кожного зображення маски уваги знешумлення не дають доповненню одного зображення впливати на інше.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreDOMEDETRs-visdrone.pt")model.train(data="my-dataset.yaml", epochs=160, imgsz=800, batch=4, lr0=2e-4)
CLI
libreyolo train model=LibreDOMEDETRs-visdrone.pt data=my-dataset.yaml \  epochs=160 imgsz=800 batch=4 lr0=2e-4
Кілька GPU
libreyolo 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 залишається ввімкненим.

Python
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"])
CLI
libreyolo val model=LibreDOMEDETRs-visdrone.pt data=my-dataset.yaml

Валідація виконується на вашому датасеті у форматі, який використовувався для навчання. Шлюз валідації COCO у бібліотеці тут не застосовується, оскільки для цього сімейства немає контрольної точки COCO, з якою можна виконати вимірювання.

Експорт

Експорт не підтримується в жодному форматі, а його запит спричиняє помилку замість створення файлу.

Причина полягає в PAQI. Він визначає кількість запитів для кожного зображення за відфільтрованими за щільністю пропозиціями та жадібним циклом адаптивного до щільності пригнічення, тому довжина виходу декодера визначається вхідними даними, а не графом. Трасування фіксує кількість, яку випадково створило зображення для трасування, внаслідок чого артефакт непомітно повертає неправильні результати для кожного іншого зображення. Статичне формулювання мало б розгорнути це пригнічення для всіх 250-1500 кандидатів, а зведення до фіксованого top-k усунуло б саме ту повноту крихітних об'єктів, заради якої існує сімейство. Якщо потрібен придатний до експорту трансформер виявлення, використовуйте D-FINE.

Контрольні точки

Кожен наведений вище файл уже доступний у організації 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, а ваги, які ви навчаєте самостійно на власних даних, належать вам.

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