Dome-DETR
Specjalista od bardzo małych obiektów zbudowany na D-FINE: głowica gęstości decyduje, gdzie znajdują się obiekty, uwaga enkodera jest ograniczona do okien, które je zawierają, a liczba zapytań jest ustalana na podstawie tej gęstości zamiast być stała. LibreYOLO obsługuje to dla detekcji.
- Zadania
- detection
- Rozmiary
- s, m, l at 800 px
- Instalacja
pip install libreyolo- Poziom obsługi
- Obsługiwany, od wersji v1.5.0. Dodatkowe trenowalne modele: testy CI pozostają zielone, a funkcje są dodawane w miarę możliwości.
- Projekt źródłowy
- Dome-DETR, autorzy: The Dome-DETR Authors, licencja: Apache-2.0 code; academic-research-only weights. Publikacja, kod źródłowy
- Licencje
- Kod: Apache-2.0, wagi: Apache-2.0 code; academic-research-only weights. Użycie komercyjne
Instalacja
Dome-DETR nie potrzebuje żadnych dodatkowych opcji. Wszystko, co importuje, znajduje się w instalacji bazowej.
pip install libreyoloPredykcja
Sześć przekonwertowanych checkpointów pobiera się automatycznie z kopii w repozytoriach LibreYOLO. Warunki projektu źródłowego ograniczają ich użycie do badań akademickich.
from libreyolo import LibreYOLO, SAMPLE_IMAGE # Wstępnie wytrenowane wagi są ograniczone do badań akademickich.model = LibreYOLO("LibreDOMEDETRs-visdrone.pt", device="cpu")print(model(SAMPLE_IMAGE).boxes)Zwrócony obiekt Results jest tym, który zwraca każda rodzina, więc zamiana na inny detektor to zmiana jednej linii. conf i max_det filtrują wybór zapytania; iou jest akceptowany dla zgodności z API, ale nie ma efektu, ponieważ dekoder jest przewidującym zestaw, który nie ma kroku NMS. Zobacz predykcja dla źródeł, streaming i obsługi wyników.
Dwie funkcje są wyłączone dla tej rodziny. Przechwytywanie grafu CUDA jest wyłączone, ponieważ liczba zapytań PAQI zależy od danych, a przekaz w przód zmienia kształt w zależności od obrazu, co dokładnie jest tym, czego przechwytywanie grafu nie może obsłużyć. Augmentacja w czasie testu działa przy jednym ustalonym kwadratowym rozmiarze, więc żądanie wieloskalowe TTA nie ma efektu.
Warianty
Trzy rozmiary, s, m i l, wszystkie w wymiarach 800 na 800. Rozmiar wybiera backbone, a zbiór danych, z którego pochodzą wagi, wybiera głębokość dekodera i budżet zapytań, więc sam kod rozmiaru nie identyfikuje wykresu. Wagi AI-TOD-V2 wybierają między 300 a 1500 zapytań na obraz, wagi VisDrone między 250 a 500, a duży model uruchamia cztery warstwy dekodera na AI-TOD-V2 w porównaniu do sześciu na VisDrone.
Dome-DETR to D-FINE z trzema dodatkami. DeFE przewiduje mapę gęstości. MWAS używa tej mapy, aby ograniczyć uwagę enkodera do okien, które faktycznie zawierają obiekty, zamiast zwracać uwagę wszędzie. PAQI dobiera rozmiar zestawu zapytań z tej samej gęstości zamiast dekodować stałe 300. Zysk koncentruje się tam, gdzie obiekty są najmniejsze, i zawęża się w miarę ich wzrostu: własna ablacja upstream przesuwa AP na bardzo małych obiektach z 14,0 do 17,8, podczas gdy AP na średnich obiektach przesuwa się tylko z 45,4 do 46,4. Traktuj to jako uzupełnienie do D-FINE dla obrazów lotniczych, z dronów i zdalnego wykrywania, a nie jako jego zamiennik.
Dla tej rodziny nie zapisano wyników benchmarków Vision Analysis.
Trenowanie
Dome-DETR jest możliwy do trenowania. Trening uruchamia pełny cel upstream: straty D-FINE plus nadzór nad gęstością i liczbą DeFE, z zapytaniami wypełniającymi wyłączonymi z terminów klasyfikacji oraz maskami uwagi do odszumiania na obraz, tak aby wypełnienie jednego obrazu nie przenikało do innego.
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=4Konfiguracja dziedziczy przepis D-FINE i zmienia to, czego wymaga MWAS. imgsz wynosi 800, lr0 to 2e-4, grupa parametrów backbone jest skalowana przez backbone_lr_mult=0.1, a multi_scale jest wyłączone, ponieważ okna MWAS potrzebują, aby wejście pozostało podzielne przez krok 8. batch domyślnie wynosi 4, a nie 16 jak w D-FINE: PAQI dopełnia każdą partię do najszerszego elementu, tak aby pamięć śledziła najbardziej zajętą grafikę w partii, a nie przeciętną.
Jedno szczere zastrzeżenie dotyczące dokładności. Pociągi w górę trenują przez 160 epok na MultiStepLR(milestones=[80, 120], gamma=0.8), podczas gdy te domyślne ustawienia uruchamiają harmonogram flat-cosine D-FINE przez te same 160 epok. Ten harmonogram nie został tutaj odtworzony, a liczby z AP z artykułu również nie zostały odtworzone, więc należy je traktować jako wyniki autorów upstream, a nie jako obietnicę, że ta receptura je osiąga. Dostarcz harmonogram upstream, jeśli celem jest dopasowanie się do artykułu.
Zobacz trenowanie dotyczące zbiorów danych, augmentacji, multi-GPU i loggerów.
Walidacja
val() zwraca słownik kluczowany nazwą metryki i drukuje wyniki dla każdej klasy, gdy verbose jest włączony.
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.yamlWalidacja odbywa się na twoim własnym zbiorze danych w formacie, na którym trenowałeś. Bramka walidacyjna COCO biblioteki nie ma tutaj zastosowania, ponieważ nie istnieje żaden checkpoint COCO dla tej rodziny, względem którego można by dokonać pomiaru.
Eksport
Eksport nie jest obsługiwany dla żadnego formatu, a jego żądanie powoduje błąd zamiast wygenerowania pliku.
Powodem jest PAQI. Decyduje on o liczbie zapytań na obraz, na podstawie propozycji przefiltrowanych pod względem gęstości oraz zachłannej pętli tłumienia adaptacyjnego do gęstości, więc długość wyjścia dekodera jest cechą danych wejściowych, a nie samego grafu. Śledzenie wprasowuje w to liczbę, którą wygenerował obraz śledzenia, co powoduje artefakt, który cicho zwraca błędne wyniki dla każdego innego obrazu. Formulacja statyczna musiałaby rozwijać to tłumienie dla wszystkich 250 do 1500 kandydatów, a sprowadzenie do stałego top-k usunęłoby dokładnie ten malutki obiekt recall, dla którego rodzina istnieje. Jeśli potrzebujesz eksportowalnego transformera detekcji, D-FINE jest tym, do którego warto sięgnąć.
Checkpointy
| Plik | Licencja wag |
|---|---|
| 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 |
Każdy z powyższych plików jest obecnie dostępny w organizacji LibreYOLO i pobierany przy pierwszym użyciu.
Licencjonowanie
Sprawdź licencję w repozytorium konkretnych pobieranych wag na Hugging Face. Każdy checkpoint w organizacji LibreYOLO ma licencję, która nie zawsze jest taka sama w całej rodzinie. To repozytorium jest źródłem rozstrzygającym, a poniższe podsumowanie opisuje stan z chwili ostatniej weryfikacji tej strony.
To opis obowiązujących licencji, a nie porada prawna. Jeśli odpowiedź ma znaczenie komercyjne, przeczytaj licencje i zasięgnij własnej porady prawnej.
- Oryginalna praca
- Dome-DETR, The Dome-DETR Authors
- Licencja projektu źródłowego
- Apache-2.0 code; academic-research-only weights
- Kod źródłowy projektu
- github.com/RicePasteM/Dome-DETR
- Kod LibreYOLO
- MIT
- Wagi
- Apache-2.0 code; academic-research-only weights, ponownie opublikowane w huggingface.co/LibreYOLO
- Interpretacja
- The upstream source is Apache-2.0. Six mirrored checkpoints retain the publisher academic-research-only restriction.
Sześć kopii zachowuje ograniczenie projektu źródłowego do badań akademickich. Kod podlega osobnej licencji. Repozytorium źródłowe ma licencję Apache-2.0, port LibreYOLO ma licencję MIT, a wagi wytrenowane samodzielnie na własnych danych należą do ich autora.