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.
pip install libreyoloInstalacja 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.
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)libreyolo predict model=LibreDeformableDETRr50.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=TrueZwracany 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ś.
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"])libreyolo val model=LibreDeformableDETRr50.pt data=my-dataset.yamlEksport
| Zadanie | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Detection | Detection to ONNX: obsługiwane | Detection to TorchScript: obsługiwane | Detection to ExecuTorch: obsługiwane | Detection to TensorRT: obsługiwane | Detection to OpenVINO: obsługiwane | Detection to Paddle: brak obsługi | Detection to MNN: brak obsługi | Detection to RKNN: brak obsługi | Detection to ncnn: brak obsługi | Detection to TFLite: brak obsługi | Detection to CoreML: brak obsługi | Detection 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.
from libreyolo import LibreYOLO model = LibreYOLO("LibreDeformableDETRr50.pt")model.export(format="onnx", imgsz=800)model.export(format="tensorrt", imgsz=800, half=True)libreyolo export model=LibreDeformableDETRr50.pt format=onnx imgsz=800libreyolo export model=LibreDeformableDETRr50.pt format=tensorrt imgsz=800 half=Truefrom 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.
| Plik | Wejście (px) | Licencja wag |
|---|---|---|
| Detection | ||
| LibreDeformableDETRr50ss.pt | 800 | apache-2.0 |
| LibreDeformableDETRr50ssdc5.pt | 800 | apache-2.0 |
| LibreDeformableDETRr50.pt | 800 | apache-2.0 |
| LibreDeformableDETRr50twostage.pt | 800 | apache-2.0 |
| LibreDeformableDETRr50refine.pt | 800 | apache-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 źródłowy projektu
- github.com/fundamentalvision/Deformable-DETR
- 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.