RT-DETR di Baidu: un rilevatore di oggetti in tempo reale basato su Vision Transformer

Panoramica

Real-Time Detection Transformer (RT-DETR), sviluppato da Baidu, è un rilevatore di oggetti end-to-end all'avanguardia che offre prestazioni in tempo reale mantenendo un'elevata accuratezza. Si basa sull'idea di DETR (il framework senza NMS), introducendo al contempo un backbone basato su convoluzione e un efficiente encoder ibrido per ottenere velocità in tempo reale. RT-DETR elabora in modo efficiente le funzionalità multiscala disaccoppiando l'interazione intra-scala e la fusione cross-scala. Il modello è altamente adattabile e supporta una regolazione flessibile della velocità di inferenza utilizzando diversi strati del decoder senza necessità di riaddestramento. RT-DETR eccelle su backend accelerati come CUDA con TensorRT, superando molti altri rilevatori di oggetti in tempo reale.



Watch: How to Use Baidu's RT-DETR for Object Detection | Inference and Benchmarking with Ultralytics 🚀

Panoramica dell'architettura del modello Baidu RT-DETR Panoramica di RT-DETR di Baidu. Il diagramma dell'architettura del modello RT-DETR mostra gli ultimi tre stadi del backbone {S3, S4, S5} come input per l'encoder. L'efficiente encoder ibrido trasforma le funzionalità multiscala in una sequenza di funzionalità dell'immagine attraverso l'interazione delle funzionalità intra-scala (AIFI) e il modulo di fusione delle funzionalità cross-scala (CCFM). La selezione delle query basata su IoU viene utilizzata per selezionare un numero fisso di funzionalità dell'immagine che fungono da query iniziali dell'oggetto per il decoder. Infine, il decoder con teste di predizione ausiliarie ottimizza iterativamente le query dell'oggetto per generare box e punteggi di confidenza (source).

Caratteristiche principali

  • Efficiente Encoder Ibrido: RT-DETR di Baidu utilizza un efficiente encoder ibrido che elabora le funzionalità multiscala disaccoppiando l'interazione intra-scala e la fusione cross-scala. Questo design unico basato su Vision Transformers riduce i costi computazionali e consente il rilevamento di oggetti in tempo reale.
  • Selezione delle Query basata su IoU: RT-DETR di Baidu migliora l'inizializzazione delle query degli oggetti utilizzando la selezione delle query basata su IoU. Ciò consente al modello di concentrarsi sugli oggetti più rilevanti nella scena, migliorando l'accuratezza del rilevamento.
  • Velocità di Inferenza Adattabile: 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 senza NMS: Basato su DETR, RT-DETR elimina la necessità del post-processing tramite non-maximum suppression, semplificando la pipeline di rilevamento e potenzialmente migliorando l'efficienza.
  • Rilevamento Anchor-Free: Come rilevatore anchor-free, RT-DETR semplifica il processo di rilevamento e può migliorare la generalizzazione su diversi set di dati.

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 performance potenziate.

Esempi di utilizzo

Questo esempio fornisce semplici esempi di addestramento e inferenza con RT-DETR. Per la documentazione completa su queste e altre modalità, consulta le pagine dei documenti Predict, Train, Val e Export. I modelli possono anche essere addestrati su GPU cloud tramite Ultralytics Platform.

Esempio
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")
Compromessi per un'inferenza più rapida

I pesi preaddestrati di RT-DETR supportano due impostazioni in fase di inferenza per ridurre la latenza senza riaddestramento:

  • eval_idx: Interrompi la decodifica in anticipo. Per il decoder predefinito a 6 strati, utilizza un indice a base zero (05). eval_idx=5 utilizza tutti gli strati; eval_idx=3 utilizza 4 strati. Su una GPU T4 con TensorRT v10.11, RT-DETR-L migliora da 8.0 ms / 52.7 mAP a 7.4 ms / 52.5 mAP con 4 strati.
  • num_queries: Riduci le query degli oggetti (predefinito: 300). Abbassando il valore a 100 è possibile raggiungere 7.4 ms / 51.7 mAP su COCO nella stessa configurazione. Sui set di dati con meno oggetti per immagine, il calo di mAP è solitamente minore, ma mantieni il valore al di sopra del massimo previsto di oggetti per immagine.

Entrambe le impostazioni possono ridurre il 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, half=True)

Attività e modalità supportate

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 modelloPesi preaddestratiAttività supportateInferenza (Inference)ValidazioneAddestramentoExport
RT-DETR Largertdetr-l.ptRilevamento oggetti
RT-DETR Extra-Largertdetr-x.ptRilevamento oggetti
Varianti solo architettura

rtdetr-resnet50.yaml e rtdetr-resnet101.yaml sono distribuiti 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 addestrale o effettua il fine-tuning come necessario.

Casi d'uso ideali

RT-DETR è particolarmente adatto per applicazioni che richiedono sia un'elevata accuratezza che prestazioni in tempo reale:

Citazioni e ringraziamenti

Se utilizzi RT-DETR di Baidu nel tuo lavoro di ricerca o sviluppo, ti preghiamo di citare il documento originale:

Citazione
@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 documento del 2024:

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

Vorremmo ringraziare Baidu e il team di PaddlePaddle per aver creato e mantenuto questa preziosa risorsa per la comunità di 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

Cos'è il modello RT-DETR di Baidu e come funziona?

RT-DETR (Real-Time Detection Transformer) di Baidu è un rilevatore di oggetti in tempo reale avanzato costruito sull'architettura Vision Transformer. Elabora in modo efficiente le funzionalità multiscala disaccoppiando l'interazione intra-scala e la fusione cross-scala attraverso il suo efficiente encoder ibrido. Impiegando la selezione delle query basata su IoU, il modello si concentra sugli oggetti più rilevanti, migliorando l'accuratezza del rilevamento. La sua velocità di inferenza adattabile, ottenuta regolando gli strati del decoder senza riaddestramento, rende RT-DETR adatto a vari scenari di rilevamento di oggetti in tempo reale. Scopri di più sulle funzionalità di RT-DETR nel documento Arxiv di RT-DETR.

Come posso utilizzare i modelli RT-DETR preaddestrati forniti da Ultralytics?

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:

Esempio
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")

Perché dovrei scegliere RT-DETR di Baidu rispetto ad altri rilevatori di oggetti in tempo reale?

RT-DETR di Baidu si distingue per il suo efficiente encoder ibrido e la selezione delle query basata su IoU, che riducono drasticamente i costi computazionali mantenendo un'elevata accuratezza. La sua capacità unica di regolare la velocità di inferenza utilizzando diversi strati del decoder senza 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.

In che modo RT-DETR supporta una velocità di inferenza adattabile per diverse applicazioni in tempo reale?

RT-DETR di Baidu consente regolazioni flessibili della velocità di inferenza utilizzando diversi strati del decoder senza richiedere 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 adattato per soddisfare i tuoi requisiti specifici. Questa funzionalità è particolarmente preziosa quando si distribuiscono modelli su dispositivi con capacità computazionali variabili.

Posso utilizzare i modelli RT-DETR con altre modalità Ultralytics, come addestramento, validazione ed esportazione?

Sì, i modelli RT-DETR sono compatibili con varie modalità Ultralytics tra cui addestramento, validazione, previsione ed esportazione. Puoi fare riferimento alla documentazione relativa 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 oggetti. Il framework Ultralytics fornisce un'API coerente tra diverse architetture di modelli, facilitando l'utilizzo dei modelli RT-DETR.

Commenti