RT-DETR di Baidu: Un rivelatore di oggetti in tempo reale basato su Transformer visivo#
Panoramica#
Real-Time Detection Transformer (RT-DETR), sviluppato da Baidu, è un rivelatore di oggetti end-to-end all'avanguardia che offre prestazioni in tempo reale mantenendo un'elevata precision. Si basa sul concetto di DETR (il framework privo di NMS), introducendo nel contempo un backbone basato su convoluzione e un efficiente codificatore ibrido per ottenere una velocità in tempo reale. RT-DETR elabora in modo efficiente le funzionalità multi-scala disaccoppiando l'interazione intra-scala e la fusione inter-scala. Il modello è altamente adattabile e supporta la regolazione flessibile della velocità di inferenza utilizzando diversi livelli del decoder senza necessità di riaddestramento. RT-DETR eccelle su backend accelerati come CUDA con TensorRT, superando molti altri rivelatori di oggetti in tempo reale.
Watch: How to Use Baidu's RT-DETR for Object Detection | Inference and Benchmarking with Ultralytics 🚀
Panoramica di RT-DETR di Baidu. Il diagramma dell'architettura del modello RT-DETR mostra le ultime tre fasi del backbone {S3, S4, S5} come input per il codificatore. L'efficiente codificatore ibrido trasforma le funzionalità multi-scala in una sequenza di caratteristiche dell'immagine attraverso l'interazione delle caratteristiche intra-scala (AIFI) e il modulo di fusione delle caratteristiche inter-scala (CCFM). La selezione delle query basata su IoU viene impiegata per selezionare un numero fisso di caratteristiche dell'immagine che fungono da query di oggetti iniziali per il decoder. Infine, il decoder con teste di previsione ausiliarie ottimizza iterativamente le query degli oggetti per generare riquadri e punteggi di confidenza (source).
Caratteristiche principali#
- Codificatore ibrido efficiente: L'RT-DETR di Baidu utilizza un codificatore ibrido efficiente che elabora le caratteristiche multi-scala disaccoppiando l'interazione intra-scala e la fusione inter-scala. Questo design unico basato su Vision Transformers riduce i costi di calcolo e consente il rilevamento di oggetti in tempo reale.
- Selezione della query basata su IoU: L'RT-DETR di Baidu migliora l'inizializzazione della query dell'oggetto utilizzando la selezione della query basata su IoU. Ciò consente al modello di concentrarsi sugli oggetti più rilevanti nella scena, migliorando la precisione del rilevamento.
- Velocità di inferenza adattabile: L'RT-DETR di Baidu supporta regolazioni flessibili della velocità di inferenza utilizzando diversi strati del decoder senza la necessità di riaddestramento. Questa adattabilità facilita l'applicazione pratica in vari scenari di rilevamento di oggetti in tempo reale.
- Framework privo di NMS: Basato su DETR, RT-DETR elimina la necessità del post-processing di non-maximum suppression, semplificando la pipeline di rilevamento e potenzialmente migliorando l'efficienza.
- Rilevamento senza ancore: Come rivelatore senza ancore, RT-DETR semplifica il processo di rilevamento e può migliorare la generalizzazione su diversi dataset.
Modelli pre-addestrati#
L'API Python di Ultralytics fornisce modelli RT-DETR PaddlePaddle preaddestrati con diverse scale:
- RT-DETR-L: 53,0% AP su COCO val2017, 114 FPS su GPU T4
- RT-DETR-X: 54,8% AP su COCO val2017, 74 FPS su GPU T4
Inoltre, Baidu ha rilasciato RTDETRv2 nel luglio 2024, che migliora ulteriormente l'architettura originale con metriche di prestazione potenziate.
Esempi di Utilizzo#
Questo esempio fornisce semplici esempi di addestramento e inferenza per RT-DETR. Per la documentazione completa su queste e altre modalità, consulta le pagine di documentazione di Predict, Train, Val e Export. I modelli possono anche essere addestrati su GPU cloud tramite Ultralytics Platform.
from ultralytics import RTDETR
# Load a COCO-pretrained RT-DETR-l model
model = RTDETR("rtdetr-l.pt")
# Display model information (optional)
model.info()
# Train the model on the COCO8 example dataset for 100 epochs
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# Run inference with the RT-DETR-l model on the 'bus.jpg' image
results = model("path/to/bus.jpg")Imposta deterministic=False quando addestri RT-DETR su CUDA con PyTorch 2.0 o versioni successive. La sua attenzione deformabile utilizza F.grid_sample, che non ha un backward CUDA deterministico, quindi deterministic=True non può rendere l'esecuzione riproducibile e può ridurre la velocità di addestramento. seed controlla comunque l'inizializzazione dei pesi, l'ordine dei dati e il campionamento delle aumentazioni.
I pesi preaddestrati di RT-DETR supportano due impostazioni durante l'inferenza per ridurre la latenza senza riaddestramento:
eval_idx: Interrompi la decodifica in anticipo. Per il decoder predefinito a 6 livelli, usa un indice basato su zero (0–5).eval_idx=5utilizza tutti i livelli;eval_idx=3utilizza 4 livelli. Su una GPU T4 con TensorRT v10.11, RT-DETR-L passa da 8.0 ms / 52.7 mAP a 7.4 ms / 52.5 mAP con 4 livelli.num_queries: Riduci le query degli oggetti (predefinito: 300). Riducendo a 100 puoi raggiungere 7.4 ms / 51.7 mAP su COCO nella stessa configurazione. Sui dataset con meno oggetti per immagine il calo di mAP è tipicamente inferiore, ma mantieni il valore al di sopra del numero massimo previsto di oggetti per immagine.
Entrambe le impostazioni possono ridurre l'mAP: convalida il compromesso sul tuo set di dati prima della distribuzione.
from ultralytics import RTDETR
rtdetr = RTDETR("rtdetr-l.pt")
head = rtdetr.model.model[-1]
# Choose one or both settings after validating the speed/accuracy trade-off.
head.decoder.eval_idx = 3 # Use 4 of 6 decoder layers.
head.num_queries = 100 # Use fewer object queries.
results = rtdetr("path/to/image.jpg")
# Export uses the same decoder and query settings, including TensorRT exports.
rtdetr.export(format="engine", device=0, quantize=16)Compiti e modalità supportati#
Questa tabella presenta i tipi di modello, i pesi preaddestrati specifici, le attività supportate da ciascun modello e le varie modalità (Train , Val, Predict, Export) supportate, indicate dalle emoji ✅.
| Tipo di modello | Pesi pre-addestrati | Attività supportate | Addestramento | Validazione | Inferenza | Esportazione |
|---|---|---|---|---|---|---|
| RT-DETR Large | rtdetr-l.pt | Rilevamento di oggetti | ✅ | ✅ | ✅ | ✅ |
| RT-DETR Extra-Large | rtdetr-x.pt | Rilevamento di oggetti | ✅ | ✅ | ✅ | ✅ |
rtdetr-resnet50.yaml e rtdetr-resnet101.yaml vengono forniti solo come architetture YAML. Ultralytics rilascia pesi preaddestrati solo per rtdetr-l e rtdetr-x. Istanzia le varianti ResNet da YAML (ad esempio, RTDETR("rtdetr-resnet50.yaml")) e addestravale o effettua il fine-tuning secondo necessità.
Casi d'uso ideali#
RT-DETR è particolarmente adatto per applicazioni che richiedono sia un'elevata precisione che prestazioni in tempo reale:
- Guida autonoma: Per una percezione ambientale affidabile nei sistemi a guida autonoma in cui sia la velocità che la precisione sono fondamentali. Scopri di più sull'IA nelle auto a guida autonoma.
- Robotica avanzata: Consente ai robot di eseguire attività complesse che richiedono un riconoscimento accurato degli oggetti e un'interazione in ambienti dinamici. Esplora il ruolo dell'IA nella robotica.
- Imaging medico: Per applicazioni nel settore sanitario in cui la precisione nel rilevamento degli oggetti può essere cruciale per la diagnostica. Scopri l'IA nella sanità.
- Sistemi di sorveglianza: Per applicazioni di sicurezza che richiedono un monitoraggio in tempo reale con elevata precisione di rilevamento. Scopri i sistemi di allarme di sicurezza.
- Analisi di immagini satellitari: Per un'analisi dettagliata di immagini ad alta risoluzione in cui la comprensione del contesto globale è importante. Leggi sulla visione artificiale nelle immagini satellitari.
Citazioni e riconoscimenti#
Se usi RT-DETR di Baidu nella tua ricerca o nel tuo lavoro di sviluppo, cita il paper originale:
@misc{lv2023detrs,
title={DETRs Beat YOLOs on Real-time Object Detection},
author={Wenyu Lv and Shangliang Xu and Yian Zhao and Guanzhong Wang and Jinman Wei and Cheng Cui and Yuning Du and Qingqing Dang and Yi Liu},
year={2023},
eprint={2304.08069},
archivePrefix={arXiv},
primaryClass={cs.CV}
}Per RTDETRv2, puoi citare il paper del 2024:
@misc{lv2024rtdetrv2,
title={RTDETRv2: All-in-One Detection Transformer Beats YOLO and DINO},
author={Wenyu Lv and Yian Zhao and Qinyao Chang and Kui Huang and Guanzhong Wang and Yi Liu},
year={2024},
eprint={2407.17140},
archivePrefix={arXiv},
primaryClass={cs.CV}
}Desideriamo ringraziare Baidu e il team di PaddlePaddle per aver creato e mantenuto questa preziosa risorsa per la comunità della visione artificiale. Il loro contributo al campo con lo sviluppo del rilevatore di oggetti in tempo reale basato su Vision Transformers, RT-DETR, è molto apprezzato.
FAQ#
RT-DETR di Baidu (Real-Time Detection Transformer) è un avanzato rilevatore di oggetti in tempo reale costruito sull'architettura Vision Transformer. Elabora in modo efficiente le funzionalità multi-scala disaccoppiando l'interazione intra-scala e la fusione inter-scala attraverso il suo efficiente codificatore ibrido. Impiegando la selezione delle query consapevole di IoU, il modello si concentra sugli oggetti più rilevanti, migliorando la precisione del rilevamento. La sua velocità di inferenza adattiva, ottenuta regolando i livelli del decoder senza riaddestramento, rende RT-DETR adatto a vari scenari di rilevamento di oggetti in tempo reale. Scopri di più sulle caratteristiche di RT-DETR nel paper Arxiv di RT-DETR.
Puoi sfruttare l'API Python di Ultralytics per utilizzare i modelli RT-DETR PaddlePaddle preaddestrati. Ad esempio, per caricare un modello RT-DETR-l preaddestrato su COCO val2017 e ottenere FPS elevati su GPU T4, puoi utilizzare il seguente esempio:
Esempiofrom ultralytics import RTDETR # Load a COCO-pretrained RT-DETR-l model model = RTDETR("rtdetr-l.pt") # Display model information (optional) model.info() # Train the model on the COCO8 example dataset for 100 epochs results = model.train(data="coco8.yaml", epochs=100, imgsz=640) # Run inference with the RT-DETR-l model on the 'bus.jpg' image results = model("path/to/bus.jpg")L'RT-DETR di Baidu si distingue grazie al suo efficiente codificatore ibrido e alla selezione delle query consapevole di IoU, che riducono drasticamente i costi di calcolo mantenendo un'elevata precisione. La sua capacità unica di regolare la velocità di inferenza utilizzando diversi livelli del decoder senza richiedere il riaddestramento aggiunge una flessibilità significativa. Ciò lo rende particolarmente vantaggioso per le applicazioni che richiedono prestazioni in tempo reale su backend accelerati come CUDA con TensorRT, superando molti altri rilevatori di oggetti in tempo reale. L'architettura transformer fornisce anche una migliore comprensione del contesto globale rispetto ai tradizionali rilevatori basati su CNN.
RT-DETR di Baidu consente regolazioni flessibili della velocità di inferenza utilizzando diversi livelli del decoder senza richiedere il riaddestramento. Questa adattabilità è fondamentale per scalare le prestazioni su varie attività di rilevamento di oggetti in tempo reale. Che tu abbia bisogno di un'elaborazione più rapida per esigenze di precisione inferiori o di rilevamenti più lenti e accurati, RT-DETR può essere personalizzato per soddisfare i tuoi requisiti specifici. Questa funzione è particolarmente preziosa quando si distribuiscono modelli su dispositivi con capacità di calcolo variabili.
No. Per RT-DETR,
max_detlimita il numero di previsioni restituite dopo l'inferenza, ma non aumenta il numero di query di oggetti prodotte dal decoder. I checkpoint preaddestrati di Ultralytics RT-DETR utilizzano 300 query di oggetti, quindi non possono restituire più di 300 rilevamenti per immagine anche se impostimax_detsu un valore superiore.Usa
max_detper ridurre i rilevamenti restituiti, ad esempiomax_det=100, quando hai bisogno solo di un minor numero di previsioni ad alta confidenza. Se il tuo dataset può contenere più di 300 oggetti per immagine, addestra un modello RT-DETR personalizzato con un conteggio di query del decoder più elevato (nq) nel YAML del modello; modificare questo valore su un checkpoint preaddestrato dopo l'addestramento non è equivalente e richiede il riaddestramento per apprendere le query aggiuntive.Sì, i modelli RT-DETR sono compatibili con varie modalità di Ultralytics, tra cui addestramento, validazione, previsione ed esportazione. Puoi fare riferimento alla rispettiva documentazione per istruzioni dettagliate su come utilizzare queste modalità: Train, Val, Predict e Export. Ciò garantisce un flusso di lavoro completo per lo sviluppo e la distribuzione delle tue soluzioni di rilevamento di oggetti. Il framework Ultralytics fornisce un'API coerente tra diverse architetture di modelli, rendendo facile lavorare con i modelli RT-DETR.