Ultralytics YOLO27:

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 convoluzioni e un encoder ibrido efficiente per ottenere velocità in tempo reale. RT-DETR elabora in modo efficiente le feature multiscala separando l'interazione intrascala dalla fusione interscala. Il modello è altamente adattabile e supporta la regolazione flessibile della velocità di inferenza utilizzando diversi layer del decoder senza dover ripetere l'addestramento. RT-DETR offre prestazioni eccellenti 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 le ultime tre fasi del backbone {S3, S4, S5} come input dell'encoder. L'encoder ibrido efficiente trasforma le feature multiscala in una sequenza di feature dell'immagine tramite l'interazione delle feature intrascala (AIFI) e il modulo di fusione delle feature interscala (CCFM). La selezione delle query consapevole dell'IoU viene utilizzata per selezionare un numero fisso di feature dell'immagine da usare come query iniziali degli oggetti per il decoder. Infine, il decoder con le head di predizione ausiliarie ottimizza iterativamente le query degli oggetti per generare box e punteggi di confidenza (fonte).

Funzionalità principali#

  • Encoder ibrido efficiente: RT-DETR di Baidu utilizza un encoder ibrido efficiente che elabora le feature multiscala separando l'interazione intrascala dalla fusione interscala. Questo esclusivo design basato su Vision Transformer riduce i costi computazionali e consente il rilevamento degli oggetti in tempo reale.
  • Selezione delle query consapevole dell'IoU: RT-DETR di Baidu migliora l'inizializzazione delle query degli oggetti utilizzando la selezione delle query consapevole dell'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 layer del decoder senza dover ripetere l'addestramento. Questa adattabilità facilita l'applicazione pratica in vari scenari di rilevamento degli oggetti in tempo reale.
  • Framework senza NMS: Basato su DETR, RT-DETR elimina la necessità del post-processing di soppressione non massima, semplificando la pipeline di rilevamento e migliorando potenzialmente l'efficienza.
  • Rilevamento senza anchor: Essendo un rilevatore senza anchor, RT-DETR semplifica il processo di rilevamento e può migliorare la generalizzazione su dataset diversi.

Modelli pre-addestrati#

L'API Python di Ultralytics fornisce modelli RT-DETR pretrained di PaddlePaddle 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 a luglio 2024, migliorando ulteriormente l'architettura originale con metriche prestazionali superiori.

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 della documentazione Predict, Train, Val ed 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")
Addestramento deterministico

Imposta deterministic=False quando addestri RT-DETR su CUDA con PyTorch 2.0 o versioni successive. La sua attention deformabile utilizza F.grid_sample, che non dispone di un backward CUDA deterministico; pertanto, deterministic=True non può rendere la sessione riproducibile e può ridurre il throughput dell'addestramento. seed continua a controllare l'inizializzazione dei pesi, l'ordine dei dati e il campionamento delle augmentation.

Compromessi per un'inferenza più veloce

I pesi pretrained di RT-DETR supportano due impostazioni in fase di inferenza per ridurre la latenza senza ripetere l'addestramento:

  • eval_idx: interrompe anticipatamente il decoding. Per il decoder predefinito a 6 layer, usa un indice a base zero (05). eval_idx=5 utilizza tutti i layer; eval_idx=3 ne utilizza 4. 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 layer.
  • num_queries: riduce il numero di query degli oggetti (predefinito: 300). Riducendolo a 100 si possono raggiungere 7.4 ms / 51.7 mAP su COCO nella stessa configurazione. Sui dataset con meno oggetti per immagine, la diminuzione di mAP è in genere più contenuta, ma mantieni il valore al di sopra del numero massimo previsto di oggetti per immagine.

Entrambe le impostazioni possono ridurre mAP: valuta il compromesso sul tuo dataset prima del deployment.

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)

Attività e modalità supportate#

Questa tabella presenta i tipi di modello, i pesi preaddestrati specifici, i compiti supportati da ciascun modello e le varie modalità (Train, Val, Predict, Export) supportate, indicate dalle emoji ✅.

Tipo di modelloPesi preaddestratiAttività supportateAddestramentoConvalidaInferenzaEsportazione
RT-DETR Largertdetr-l.ptRilevamento degli oggetti
RT-DETR Extra-Largertdetr-x.ptRilevamento degli oggetti
Varianti con la sola architettura

rtdetr-resnet50.yaml e rtdetr-resnet101.yaml vengono fornite solo come architetture YAML. Ultralytics rilascia pesi pretrained solo per rtdetr-l e rtdetr-x. Istanzia le varianti ResNet dal file YAML (ad esempio, RTDETR("rtdetr-resnet50.yaml")) e addestrale o esegui il fine-tuning secondo necessità.

Casi d'uso ideali#

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

Citazioni e ringraziamenti#

Se utilizzi RT-DETR di Baidu nel tuo lavoro di ricerca o sviluppo, cita il paper 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 paper 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}
}

Desideriamo ringraziare Baidu e il team di PaddlePaddle per aver creato e mantenuto questa preziosa risorsa per la community della computer vision. Il loro contributo al settore, con lo sviluppo del rilevatore di oggetti in tempo reale basato su Vision Transformer, RT-DETR, è molto apprezzato.

FAQ#

  • RT-DETR di Baidu (Real-Time Detection Transformer) è un rilevatore di oggetti avanzato in tempo reale basato sull'architettura Vision Transformer. Elabora in modo efficiente le feature multiscala separando l'interazione intrascala dalla fusione interscala attraverso il suo encoder ibrido efficiente. Utilizzando la selezione delle query consapevole dell'IoU, il modello si concentra sugli oggetti più rilevanti, migliorando l'accuratezza del rilevamento. La sua velocità di inferenza adattabile, ottenuta regolando i layer del decoder senza ripetere l'addestramento, rende RT-DETR adatto a vari scenari di rilevamento degli oggetti in tempo reale. Scopri di più sulle funzionalità di RT-DETR nel paper Arxiv di RT-DETR.

  • Puoi utilizzare l'API Python di Ultralytics per usare i modelli RT-DETR pretrained di PaddlePaddle. Ad esempio, per caricare un modello RT-DETR-l pretrained su COCO val2017 e ottenere un FPS elevato su una 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")
  • RT-DETR di Baidu si distingue per il suo encoder ibrido efficiente e la selezione delle query consapevole dell'IoU, che riducono drasticamente i costi computazionali mantenendo un'elevata accuratezza. La sua capacità esclusiva di regolare la velocità di inferenza utilizzando diversi layer del decoder senza ripetere l'addestramento offre una notevole flessibilità. 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. Anche l'architettura Transformer offre una migliore comprensione del contesto globale rispetto ai rilevatori tradizionali basati su CNN.

  • RT-DETR di Baidu consente regolazioni flessibili della velocità di inferenza utilizzando diversi layer del decoder senza richiedere un nuovo addestramento. Questa adattabilità è fondamentale per scalare le prestazioni in vari task di rilevamento degli oggetti in tempo reale. Che tu abbia bisogno di un'elaborazione più rapida per requisiti di precisione inferiori o di rilevamenti più lenti e accurati, RT-DETR può essere configurato in base alle tue esigenze specifiche. Questa funzionalità è particolarmente preziosa quando si implementano modelli su dispositivi con capacità computazionali diverse.

  • No. Per RT-DETR, max_det limita il numero di predizioni restituite dopo l'inferenza, ma non aumenta il numero di query degli oggetti generate dal decoder. I checkpoint pretrained RT-DETR di Ultralytics utilizzano 300 query degli oggetti, quindi non possono restituire più di 300 rilevamenti per immagine anche se imposti max_det su un valore maggiore.

    Usa max_det per ridurre i rilevamenti restituiti, ad esempio max_det=100, quando ti servono solo meno predizioni ad alta confidenza. Se il tuo dataset può contenere più di 300 oggetti per immagine, addestra un modello RT-DETR personalizzato con un numero maggiore di query del decoder (nq) nel YAML del modello; modificare questo valore in un checkpoint pretrained dopo l'addestramento non è equivalente e richiede un nuovo addestramento affinché il modello impari le query aggiuntive.

  • Sì, i modelli RT-DETR sono compatibili con diverse modalità Ultralytics, tra cui addestramento, validazione, predizione ed esportazione. Puoi consultare la documentazione corrispondente per istruzioni dettagliate su come utilizzare queste modalità: Train, Val, Predict ed Export. Questo garantisce un workflow completo per sviluppare e implementare le tue soluzioni di rilevamento degli oggetti. Il framework Ultralytics fornisce un'API coerente tra diverse architetture di modello, semplificando l'utilizzo dei modelli RT-DETR.

Commenti