DETR
DETR to oryginalny transformator detekcji, przewidujący stały zestaw obiektów przy użyciu dekodera transformatora dopasowanego węgiersko, zamiast kotwic lub gęstej siatki. LibreYOLO oferuje cztery rozmiary do detekcji, tylko do inferencji.
- Zadania
- detection
- Rozmiary
- r50, r50dc5, r101, r101dc5 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
- DETR, autorzy: Meta AI (FAIR), licencja: Apache-2.0. Publikacja, kod źródłowy
- Licencje
- Kod: Apache-2.0, wagi: Apache-2.0. Użycie komercyjne
Instalacja
DETR nie potrzebuje żadnych dodatkowych opcji. Wszystko, co importuje, znajduje się w instalacji bazowej.
pip install libreyoloPredykcja
Wagi są pobierane z Hugging Face przy pierwszym użyciu i są przechowywane lokalnie w pamięci podręcznej.
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreDETRr50.pt")result = model(SAMPLE_IMAGE, save=True) for box in result.boxes: print(box.cls, box.conf, box.xyxy)libreyolo predict model=LibreDETRr50.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=TrueZwró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.
DETR jest tylko do inferencji w LibreYOLO. Wstępne trenowanie odbywa się przez 500 epok z dopasowaniem węgierskim; ta receptura nie jest tutaj zaimplementowana, więc train() generuje NotImplementedError.
Warianty
Cztery checkpointy łączą dwie głębokości backbone, ResNet-50 lub ResNet-101, z opcjonalnym etapem rozszerzonym C5: warianty DC5 zachowują ostatni etap backbone w pełnej rozdzielczości zamiast dalszego próbkowania w dół, dzięki czemu dekoder odczytuje dokładniejszą mapę cech z tego samego rozmiaru wejściowego. Wszystkie cztery dzielą 100 wyuczonych zapytań dotyczących obiektów oraz sześciowarstwowy enkoder-dekoder transformera, a wszystkie działają przy tej samej rozdzielczości wejściowej.
Walidacja
val() zwraca słownik kluczy metrics/ obejmujących dokładność, recall, mAP 50 i mAP 50-95, mierzone względem dowolnego zbioru danych w formacie, na którym byłeś trenowany.
from libreyolo import LibreYOLO model = LibreYOLO("LibreDETRr50.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=LibreDETRr50.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("LibreDETRr50.pt")model.export(format="onnx", imgsz=800)model.export(format="tensorrt", imgsz=800, half=True)libreyolo export model=LibreDETRr50.pt format=onnx imgsz=800libreyolo export model=LibreDETRr50.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("LibreDETRr50.onnx")result = model(SAMPLE_IMAGE) print(result.boxes.xyxy)Checkpointy
Każdy opublikowany plik wag dla tej rodziny.
| Plik | Wejście (px) | Licencja wag |
|---|---|---|
| Detection | ||
| LibreDETRr50dc5.pt | 800 | apache-2.0 |
| LibreDETRr50.pt | 800 | apache-2.0 |
| LibreDETRr101dc5.pt | 800 | apache-2.0 |
| LibreDETRr101.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
- DETR, Meta AI (FAIR)
- Licencja projektu źródłowego
- Apache-2.0
- Kod źródłowy projektu
- github.com/facebookresearch/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 four checkpoints are the official releases linked from the Apache-2.0 repository's model zoo, and the official Hugging Face DETR card independently declares the same license.