LW-DETR

Transformer do detekcji oparty na zwykłym ViT, przedstawiony przez Baidu jako alternatywa czasu rzeczywistego dla detektorów YOLO. LibreYOLO udostępnia pięć rozmiarów do detekcji, wyłącznie do inferencji.

Zadania
detection
Rozmiary
t, s, m, l, x at 640 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
LW-DETR, autorzy: Baidu, licencja: Apache-2.0. Publikacja, kod źródłowy
Licencje
Kod: Apache-2.0, wagi: Apache-2.0. Użycie komercyjne

Instalacja

LW-DETR nie wymaga żadnego opcjonalnego dodatku. Wszystkie importowane elementy znajdują się w instalacji podstawowej.

bash
pip install libreyolo

Predykcja

Przy pierwszym użyciu wagi są pobierane z Hugging Face i zapisywane w lokalnej pamięci podręcznej.

Python
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreLWDETRt.pt")result = model(SAMPLE_IMAGE, save=True) for box in result.boxes:    print(box.cls, box.conf, box.xyxy)
CLI
libreyolo predict model=LibreLWDETRt.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, więc zmiana detektora wymaga zmiany jednego wiersza. Argumenty conf i max_det filtrują wybór zapytań. Argument iou jest przyjmowany dla zgodności API, ale nie ma wpływu na wynik, ponieważ dekoder jest predyktorem zbioru bez etapu NMS. Więcej informacji o źródłach, streamingu i obsłudze wyników zawiera strona predykcji.

W LibreYOLO model LW-DETR służy wyłącznie do inferencji. Implementacja źródłowa trenuje go z nadzorem jeden do wielu Group-DETR w wielu grupach zapytań i funkcją straty klasyfikacji uwzględniającą IoU. Ta procedura nie jest tutaj podłączona, dlatego train() zgłasza NotImplementedError.

Warianty

Dostępnych jest pięć rozmiarów, wszystkie ze wspólnym enkoderem zwykłego ViT, projektorem wieloskalowym i dekoderem deformable DETR oraz przy tej samej rozdzielczości wejściowej. Dwa najmniejsze mają tę samą szerokość enkodera, a różnią się głębokością bloków. Kolejne dwa mają wspólny szerszy enkoder i różnią się liczbą poziomów projektora zasilających dekoder. Największy używa najszerszego enkodera.

Walidacja

val() zwraca słownik kluczy metrics/, który obejmuje precision, recall, mAP 50 i mAP 50-95, zmierzone względem dowolnego zbioru danych w formacie użytym do trenowania.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreLWDETRt.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=LibreLWDETRt.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

Wyeksportowany artefakt jest ponownie ładowany przez LibreYOLO() na podstawie rozszerzenia pliku, więc plik .onnx lub .engine zachowuje się jak checkpoint i zwraca ten sam obiekt Results. Strona eksportu wymienia argumenty obsługiwane przez każdy format.

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

Checkpointy

Wszystkie opublikowane pliki wag dla tej rodziny.

PlikWejście (px)Licencja wag
Detection
LibreLWDETRt.pt640apache-2.0
LibreLWDETRs.pt640apache-2.0
LibreLWDETRm.pt640apache-2.0
LibreLWDETRl.pt640apache-2.0
LibreLWDETRx.pt640apache-2.0

Każdy z powyższych plików jest obecnie dostępny w organizacji LibreYOLO i pobierany przy pierwszym użyciu.

Licencja

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
LW-DETR, Baidu
Licencja projektu źródłowego
Apache-2.0
Kod źródłowy projektu
github.com/Atten4Vis/LW-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 published checkpoints are converted from the upstream Apache-2.0 Hugging Face release (xbsu/LW-DETR) and rehosted under the same license.

Cytowanie

@article{chen2024lw,
    title={LW-DETR: A Transformer Replacement to YOLO for Real-Time Detection},
    author={Chen, Qiang and Su, Xiangbo and Zhang, Xinyu and Wang, Jian and Chen, Jiahui and Shen, Yunpeng and Han, Chuchu and Chen, Ziliang and Xu, Weixiang and Li, Fanrong and others},
    journal={arXiv preprint arXiv:2406.03459},
    year={2024}
}

Skopiowano z bloku cytowania autorów w github.com/Atten4Vis/LW-DETR#10-citation.

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.