DINO-DETR

DINO-DETR, opublikowany przez IDEA Research jako DINO, łączy kontrastowe trenowanie denoisingowe z mieszanym wyborem zapytań na wierzchu rzadkiej uwagi Deformowalnego DETR. LibreYOLO jest dostępny w trzech rozmiarach do detekcji, tylko do inferencji.

Zadania
detection
Rozmiary
r50, r50s5, swinl 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
DINO-DETR, autorzy: IDEA Research, licencja: Apache-2.0. Publikacja, kod źródłowy
Licencje
Kod: Apache-2.0, wagi: Apache-2.0. Użycie komercyjne

Instalacja

DINO-DETR nie wymaga żadnych dodatkowych opcji. Wszystko, co importuje, znajduje się w instalacji bazowej, używając tego samego czystego jądra uwagi wieloskalowej odkształcalnej PyTorch co rodzina Deformable DETR LibreYOLO.

bash
pip install libreyolo

Instalacja libreyolo[hub-kernels] jest opcjonalna. Gdy pakiet kernels jest obecny, LibreYOLO pobiera skompilowane jądro uwagi wieloskalowej zdeformowanej 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("LibreDINODETRr50.pt")result = model(SAMPLE_IMAGE, save=True) for box in result.boxes:    print(box.cls, box.conf, box.xyxy)
CLI
libreyolo predict model=LibreDINODETRr50.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=True

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.

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

Warianty

Trzy checkpointy korzystają z tej samej rozdzielczości wejściowej. Warianty r50 i r50s5 współdzielą backbone ResNet-50, a różni je liczba skal map cech zasilających dekoder: odpowiednio cztery i pięć. Wariant swinl zastępuje backbone modelem Swin-L i również próbkuje pięć skal.

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.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreDINODETRr50.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=LibreDINODETRr50.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("LibreDINODETRr50.pt")model.export(format="onnx", imgsz=800)model.export(format="tensorrt", imgsz=800, half=True)
CLI
libreyolo export model=LibreDINODETRr50.pt format=onnx imgsz=800libreyolo export model=LibreDINODETRr50.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("LibreDINODETRr50.onnx")result = model(SAMPLE_IMAGE) print(result.boxes.xyxy)

Checkpointy

Każdy opublikowany plik wag dla tej rodziny.

PlikWejście (px)Licencja wag
Detection
LibreDINODETRr50.pt800apache-2.0
LibreDINODETRr50s5.pt800apache-2.0
LibreDINODETRswinl.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
DINO-DETR, IDEA Research
Licencja projektu źródłowego
Apache-2.0
Kod źródłowy projektu
github.com/IDEA-Research/DINO
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 three checkpoints come from the authors' Google Drive release rather than a Hugging Face model card, and the upstream repository does not attach a license to the checkpoint files individually, so the redistribution basis is the repository-level Apache-2.0 declaration rather than a checkpoint-specific grant.

Trzy oficjalne checkpointy pochodzą z folderu wydania Google Drive autorów, a nie z karty modelu Hugging Face. Repozytorium upstream deklaruje Apache-2.0 na poziomie repozytorium, ale nie załącza pliku licencji ani metadanych licencji do samych checkpointów, więc podstawa do redystrybucji opiera się na deklaracji na poziomie repozytorium, a nie na udzieleniu licencji dla konkretnego checkpointu. Każde lustrzane repozytorium LibreYOLO dostarcza dokładny tekst licencji upstream Apache-2.0 wraz z powiadomieniem objaśniającym to.

Cytowanie

@misc{zhang2022dino,
      title={DINO: DETR with Improved DeNoising Anchor Boxes for End-to-End Object Detection}, 
      author={Hao Zhang and Feng Li and Shilong Liu and Lei Zhang and Hang Su and Jun Zhu and Lionel M. Ni and Heung-Yeung Shum},
      year={2022},
      eprint={2203.03605},
      archivePrefix={arXiv},
      primaryClass={cs.CV}
}

@inproceedings{li2022dn,
      title={Dn-detr: Accelerate detr training by introducing query denoising},
      author={Li, Feng and Zhang, Hao and Liu, Shilong and Guo, Jian and Ni, Lionel M and Zhang, Lei},
      booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition},
      pages={13619--13627},
      year={2022}
}

@inproceedings{
      liu2022dabdetr,
      title={{DAB}-{DETR}: Dynamic Anchor Boxes are Better Queries for {DETR}},
      author={Shilong Liu and Feng Li and Hao Zhang and Xiao Yang and Xianbiao Qi and Hang Su and Jun Zhu and Lei Zhang},
      booktitle={International Conference on Learning Representations},
      year={2022},
      url={https://openreview.net/forum?id=oMI9PjOb9Jl}
}

Skopiowano z bloku cytowania autorów w github.com/IDEA-Research/DINO#bibtex.

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.