DINO-DETR

DINO-DETR, pubblicato da IDEA Research come DINO, unisce l'addestramento con denoising contrastivo alla mixed query selection, costruita sopra l'attenzione sparsa di Deformable DETR. LibreYOLO distribuisce tre dimensioni per il rilevamento di oggetti, solo in inferenza.

Task
detection
Dimensioni
r50, r50s5, swinl at 800 px
Installa
pip install libreyolo
Livello di supporto
Solo inferenza, dalla v. Solo predizione, validazione ed esportazione. Le funzionalità di addestramento non si applicano.
Origine
DINO-DETR di IDEA Research, Apache-2.0. Articolo, sorgente
Licenze
Codice Apache-2.0, pesi Apache-2.0. Uso commerciale

Installazione

DINO-DETR non richiede nessun extra opzionale. Tutto ciò che importa è già nell'installazione di base, e usa lo stesso core di attenzione deformabile multiscala in PyTorch puro della famiglia Deformable DETR di LibreYOLO.

bash
pip install libreyolo

Installare libreyolo[hub-kernels] è opzionale. Quando il pacchetto kernels è presente, LibreYOLO scarica a runtime un kernel compilato di attenzione deformabile multiscala dall'Hugging Face Hub e lo usa al posto del core in PyTorch puro; LIBREYOLO_HUB_KERNELS=0 lo disattiva di nuovo.

Predizione

I pesi vengono scaricati da Hugging Face al primo utilizzo e restano nella cache locale.

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

L'oggetto Results restituito è lo stesso che restituiscono tutte le famiglie, quindi passare a un altro detector è una modifica di una riga. conf e max_det filtrano la selezione delle query; iou è accettato per parità di API ma non ha effetto, perché il decoder è un predittore di insiemi senza passaggio di NMS. Vedi predizione per sorgenti, streaming e gestione dei risultati.

In LibreYOLO DINO-DETR è solo per l'inferenza. Upstream lo addestra con denoising contrastivo e matching ungherese; quella ricetta non è implementata qui, quindi train() solleva NotImplementedError.

Varianti

Tre checkpoint, tutti alla stessa risoluzione di input. r50 e r50s5 condividono un backbone ResNet-50 e differiscono per quante scale di feature map alimentano il decoder, quattro contro cinque. swinl sostituisce il backbone con Swin-L e campiona anch'esso cinque scale.

Validazione

val() restituisce un dizionario di chiavi metrics/ che coprono precisione, recall, mAP 50 e mAP 50-95, misurate su qualsiasi dataset nel formato con cui hai addestrato.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreDINODETRr50.pt") # val() restituisce un semplice dict, non un oggettometrics = 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

Esportazione

TaskONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
DetectionDetection to ONNX: supportatoDetection to TorchScript: supportatoDetection to ExecuTorch: supportatoDetection to TensorRT: supportatoDetection to OpenVINO: supportatoDetection to Paddle: non supportatoDetection to MNN: non supportatoDetection to RKNN: non supportatoDetection to ncnn: non supportatoDetection to TFLite: non supportatoDetection to CoreML: non supportatoDetection to Core AI: non supportato

Un artefatto esportato si ricarica con LibreYOLO() in base al suffisso del file, quindi un file .onnx o .engine si comporta come un checkpoint e restituisce lo stesso Results. Esportazione elenca gli argomenti accettati da ogni formato.

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
Usare il file esportato
from libreyolo import LibreYOLO, SAMPLE_IMAGE # La factory smista in base al suffisso del file, quindi un artefatto# esportato si carica come qualsiasi checkpoint e restituisce lo stesso# oggetto Results.model = LibreYOLO("LibreDINODETRr50.onnx")result = model(SAMPLE_IMAGE) print(result.boxes.xyxy)

Checkpoint

Tutti i file di pesi pubblicati per questa famiglia.

FileIngresso (px)Licenza dei pesi
Detection
LibreDINODETRr50.pt800apache-2.0
LibreDINODETRr50s5.pt800apache-2.0
LibreDINODETRswinl.pt800apache-2.0

Oggi tutti i file elencati sopra sono presenti nell<link>organizzazione LibreYOLO</link> e vengono scaricati al primo utilizzo.

Licenze

Controlla la licenza nel repository Hugging Face degli specifici pesi che scarichi. Ogni checkpoint nell<link>organizzazione LibreYOLO</link> ne include una e non è sempre la stessa per tutta la famiglia. Quel repository è la fonte autorevole; il riepilogo seguente descrive le condizioni applicabili al momento dellultima verifica di questa pagina.

Questa è una descrizione delle licenze coinvolte, non una consulenza legale. Se la risposta è importante a fini commerciali, leggi personalmente le licenze e chiedi una consulenza indipendente.

Lavoro originale
DINO-DETR, IDEA Research
Licenza upstream
Apache-2.0
Codice LibreYOLO
MIT
Pesi
Apache-2.0, ripubblicati su huggingface.co/LibreYOLO
Interpretazione
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.

I tre checkpoint ufficiali provengono dalla cartella di rilascio su Google Drive degli autori, non da una model card di Hugging Face. Il repository upstream dichiara Apache-2.0 a livello di repository, ma non allega ai checkpoint stessi né un file di licenza né metadati di licenza, quindi la base per la ridistribuzione è quella dichiarazione a livello di repository e non una concessione specifica per i checkpoint. Tutti i mirror di LibreYOLO includono il testo letterale della licenza Apache-2.0 di upstream insieme a un avviso che lo spiega.

Citazione

@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}
}

Copiato dal blocco di citazione degli autori disponibile su github.com/IDEA-Research/DINO#bibtex.

Verificato con LibreYOLO v1.5.0. Le tabelle di supporto, i checkpoint e i dati dei benchmark in questa pagina vengono generati dalla libreria rilasciata e dai pesi pubblicati, non scritti a mano.