Deformable DETR

Deformable DETR zastępuje gęstą uwagę krzyżową DETR rzadkim, wieloskalowym próbkowaniem wokół każdego punktu odniesienia, co sprawiło, że trenowanie detektorów transformatorowych stało się praktyczne. LibreYOLO oferuje pięć rozmiarów do detekcji, tylko do inferencji.

Zadania
detection
Rozmiary
r50ss, r50ssdc5, r50, r50refine, r50twostage at 800 px
Instalacja
pip install libreyolo
Poziom obsługi
Tylko inferencja, od wersji v. Tylko predykcja, walidacja i eksport. Funkcje trenowania nie mają zastosowania.
Projekt źródłowy
Deformable DETR, autorzy: SenseTime, licencja: Apache-2.0. Publikacja, kod źródłowy
Licencje
Kod: Apache-2.0, wagi: Apache-2.0. Użycie komercyjne

Instalacja

Deformowalny DETR nie wymaga żadnych dodatkowych opcji. Wszystko, co importuje, znajduje się w podstawowej instalacji, korzystając z rdzenia uwagi wieloskalowej deformowalnej pure-PyTorch.

bash
pip install libreyolo

Instalacja libreyolo[hub-kernels] jest opcjonalna. Gdy pakiet kernels jest obecny, LibreYOLO pobiera skompilowane jądro wieloskalowej deformowalnej uwagi z Hugging Face Hub w czasie wykonywania i używa go zamiast czystego rdzenia PyTorch; LIBREYOLO_HUB_KERNELS=0 wyłącza je ponownie.

Predykcja

Wagi są pobierane z Hugging Face przy pierwszym użyciu i są przechowywane w pamięci lokalnej.

Python
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreDeformableDETRr50.pt")result = model(SAMPLE_IMAGE, save=True) for box in result.boxes:    print(box.cls, box.conf, box.xyxy)
CLI
libreyolo predict model=LibreDeformableDETRr50.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=True

Zwracany obiekt Results jest taki sam dla każdej rodziny, dlatego zamiana detektora wymaga zmiany jednego wiersza. Argumenty conf i max_det filtrują wybór zapytań. Argument iou jest akceptowany dla zgodności API, ale nie ma wpływu na wynik, ponieważ dekoder jest predyktorem zbioru bez etapu NMS. Zobacz stronę predykcji, aby poznać źródła, streaming i obsługę wyników.

Deformable DETR służy w LibreYOLO wyłącznie do inferencji. Model upstream jest trenowany z dopasowaniem węgierskim i ogniskową funkcją straty klasyfikacji. Tego przepisu nie zaimplementowano tutaj, dlatego train() zgłasza NotImplementedError.

Warianty

Pięć checkpointów obejmuje wszystkie opublikowane konfiguracje i korzysta z tej samej rozdzielczości wejściowej. r50ss skupia uwagę na jednej skali cech, a r50ssdc5 dodaje do niego etap C5 backbone z dylatacją. r50 jest domyślną konfiguracją wieloskalową, która próbkuje cztery poziomy map cech. r50refine dodaje iteracyjne udoskonalanie ramek między warstwami dekodera, a r50twostage tworzy początkowe propozycje regionów z wyjścia enkodera zamiast z wyuczonych zapytań.

Walidacja

val() zwraca słownik kluczy metrics/ obejmujących precyzję, czułość, mAP 50 oraz mAP 50-95, mierzone względem dowolnego zbioru danych w formacie, na którym trenowałeś.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreDeformableDETRr50.pt") # val() zwraca zwykły słownik, a nie obiektmetrics = model.val(data="my-dataset.yaml") print(metrics["metrics/mAP50-95"])print(metrics["metrics/mAP50"])print(metrics["metrics/precision"], metrics["metrics/recall"])
CLI
libreyolo val model=LibreDeformableDETRr50.pt data=my-dataset.yaml

Eksport

ZadanieONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
DetectionDetection to ONNX: obsługiwaneDetection to TorchScript: obsługiwaneDetection to ExecuTorch: obsługiwaneDetection to TensorRT: obsługiwaneDetection to OpenVINO: obsługiwaneDetection to Paddle: brak obsługiDetection to MNN: brak obsługiDetection to RKNN: brak obsługiDetection to ncnn: brak obsługiDetection to TFLite: brak obsługiDetection to CoreML: brak obsługiDetection to Core AI: brak obsługi

Eksportowany artefakt ładuje się z powrotem przez LibreYOLO() na podstawie jego rozszerzenia pliku, więc plik .onnx lub .engine zachowuje się jak checkpoint i zwraca ten sam Results. Eksport wymienia argumenty akceptowane przez każdy format.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreDeformableDETRr50.pt")model.export(format="onnx", imgsz=800)model.export(format="tensorrt", imgsz=800, half=True)
CLI
libreyolo export model=LibreDeformableDETRr50.pt format=onnx imgsz=800libreyolo export model=LibreDeformableDETRr50.pt format=tensorrt imgsz=800 half=True
Użyj wyeksportowanego pliku
from libreyolo import LibreYOLO, SAMPLE_IMAGE # Fabryka kieruje na podstawie rozszerzenia pliku, więc eksportowany artefakt się ładuje# jak każdy checkpoint i zwraca ten sam obiekt Results.model = LibreYOLO("LibreDeformableDETRr50.onnx")result = model(SAMPLE_IMAGE) print(result.boxes.xyxy)

Checkpointy

Wszystkie opublikowane pliki wag dla tej rodziny.

PlikWejście (px)Licencja wag
Detection
LibreDeformableDETRr50ss.pt800apache-2.0
LibreDeformableDETRr50ssdc5.pt800apache-2.0
LibreDeformableDETRr50.pt800apache-2.0
LibreDeformableDETRr50twostage.pt800apache-2.0
LibreDeformableDETRr50refine.pt800apache-2.0

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
Deformable DETR, SenseTime
Licencja projektu źródłowego
Apache-2.0
Kod LibreYOLO
MIT
Wagi
Apache-2.0, ponownie opublikowane w huggingface.co/LibreYOLO
Interpretacja
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 five checkpoints are converted from SenseTime's own Hugging Face mirrors, each of which declares apache-2.0 in its model card; that declaration, not the original repository's Google Drive release links, is the redistribution basis.

Cytowanie

@article{zhu2020deformable,
  title={Deformable DETR: Deformable Transformers for End-to-End Object Detection},
  author={Zhu, Xizhou and Su, Weijie and Lu, Lewei and Li, Bin and Wang, Xiaogang and Dai, Jifeng},
  journal={arXiv preprint arXiv:2010.04159},
  year={2020}
}

Skopiowano z bloku cytowania autorów w github.com/fundamentalvision/Deformable-DETR#citing-deformable-detr.

Zweryfikowano z LibreYOLO v1.5.0. Tabele obsługi, checkpointy i wyniki benchmarków na tej stronie są generowane na podstawie wydanej biblioteki i opublikowanych wag, a nie wpisywane ręcznie.