Baidu'nun RT-DETR'si: Vision Transformer Tabanlı Gerçek Zamanlı Nesne Algılayıcı#
Genel Bakış#
Baidu tarafından geliştirilen Gerçek Zamanlı Algılama Transformer'ı (RT-DETR), yüksek doğruluğu korurken gerçek zamanlı performans sunan, son teknoloji ürünü uçtan uca bir nesne algılayıcıdır. DETR (NMS içermeyen çerçeve) fikrini temel alırken gerçek zamanlı hız elde etmek için evrişim tabanlı bir omurga ve verimli bir hibrit kodlayıcı kullanır. RT-DETR, ölçek içi etkileşimi ölçekler arası birleştirmeden ayırarak çok ölçekli özellikleri verimli biçimde işler. Model, yeniden eğitim gerektirmeden farklı kod çözücü katmanları kullanılarak çıkarım hızının esnek biçimde ayarlanmasını destekler. RT-DETR, TensorRT ile CUDA gibi hızlandırılmış arka uçlarda üstün performans göstererek diğer birçok gerçek zamanlı nesne algılayıcıyı geride bırakır.
İzle: Nesne Algılama İçin Baidu'nun RT-DETR Modeli Nasıl Kullanılır | Ultralytics ile Çıkarım ve Benchmark 🚀
Baidu'nun RT-DETR modeline genel bakış. RT-DETR model mimarisi şeması, omurganın son üç aşamasını {S3, S4, S5} kodlayıcı girdisi olarak gösterir. Verimli hibrit kodlayıcı, ölçek içi özellik etkileşimi (AIFI) ve ölçekler arası özellik birleştirme modülü (CCFM) aracılığıyla çok ölçekli özellikleri bir görüntü özellikleri dizisine dönüştürür. Kod çözücü için ilk nesne sorguları olarak kullanılacak sabit sayıda görüntü özelliğini seçmek amacıyla IoU farkındalıklı sorgu seçimi kullanılır. Son olarak, yardımcı tahmin başlıklarına sahip kod çözücü, kutular ve güven puanları oluşturmak için nesne sorgularını yinelemeli olarak optimize eder (kaynak).
Temel Özellikler#
- Verimli Hibrit Kodlayıcı: Baidu'nun RT-DETR'si, ölçek içi etkileşimi ölçekler arası birleştirmeden ayırarak çok ölçekli özellikleri işleyen verimli bir hibrit kodlayıcı kullanır. Vision Transformer tabanlı bu özgün tasarım, hesaplama maliyetlerini düşürür ve gerçek zamanlı nesne algılamayı mümkün kılar.
- IoU Farkındalıklı Sorgu Seçimi: Baidu'nun RT-DETR'si, IoU farkındalıklı sorgu seçimi kullanarak nesne sorgularının başlatılma biçimini iyileştirir. Böylece model sahnedeki en ilgili nesnelere odaklanarak algılama doğruluğunu artırır.
- Uyarlanabilir Çıkarım Hızı: Baidu'nun RT-DETR'si, yeniden eğitim gerektirmeden farklı kod çözücü katmanları kullanarak çıkarım hızının esnek biçimde ayarlanmasını destekler. Bu uyarlanabilirlik, çeşitli gerçek zamanlı nesne algılama senaryolarında pratik uygulamaları kolaylaştırır.
- NMS İçermeyen Çerçeve: DETR'yi temel alan RT-DETR, maksimum olmayan değer bastırma son işlemesine duyulan ihtiyacı ortadan kaldırarak algılama işlem hattını basitleştirir ve verimliliği artırabilir.
- Çapasız Algılama: Çapasız bir algılayıcı olan RT-DETR, algılama sürecini basitleştirir ve farklı veri kümelerine genellemeyi iyileştirebilir.
Önceden Eğitilmiş Modeller#
Ultralytics Python API, farklı ölçeklerde önceden eğitilmiş PaddlePaddle RT-DETR modelleri sunar:
- RT-DETR-L: COCO val2017'de %53.0 AP, T4 GPU'da 114 FPS
- RT-DETR-X: COCO val2017'de %54.8 AP, T4 GPU'da 74 FPS
Ayrıca Baidu, Temmuz 2024'te özgün mimariyi daha da geliştiren ve performans ölçütlerini iyileştiren RTDETRv2'yi yayımladı.
Kullanım Örnekleri#
Bu örnekte RT-DETR eğitimi ve çıkarımı için basit örnekler sunulmaktadır. Bu ve diğer modların tüm belgeleri için Tahmin, Eğitim, Doğrulama ve Dışa Aktarma belgelerine bak. Modeller, Ultralytics Platform aracılığıyla bulut GPU'larında da eğitilebilir.
from ultralytics import RTDETR
# COCO üzerinde önceden eğitilmiş RT-DETR-l modelini yükle
model = RTDETR("rtdetr-l.pt")
# Model bilgilerini görüntüle (isteğe bağlı)
model.info()
# Modeli COCO8 örnek veri kümesinde 100 dönem boyunca eğit
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)
# 'bus.jpg' görüntüsünde RT-DETR-l modeliyle çıkarım yap
results = model("path/to/bus.jpg")PyTorch 2.0 veya sonraki sürümlerle CUDA üzerinde RT-DETR eğitirken deterministic=False değerini ayarla. Deformable attention özelliği F.grid_sample kullanır; bu işlemde deterministik CUDA geri yayılımı bulunmadığından deterministic=True çalıştırmayı tekrarlanabilir hâle getiremez ve eğitim verimini düşürebilir. seed ise ağırlık başlatmayı, veri sırasını ve artırma örneklemesini kontrol etmeye devam eder.
RT-DETR'nin önceden eğitilmiş ağırlıkları, yeniden eğitim yapmadan gecikmeyi azaltmak için çıkarım sırasında iki ayarı destekler:
eval_idx: Kod çözmeyi erkenden durdur. Varsayılan 6 katmanlı kod çözücü için sıfır tabanlı bir dizin kullan (0–5).eval_idx=5tüm katmanları,eval_idx=3ise 4 katmanı kullanır. TensorRT v10.11 ile T4 GPU'da RT-DETR-L, 8.0 ms / 52.7 mAP değerinden 4 katmanla 7.4 ms / 52.5 mAP değerine ulaşır.num_queries: Nesne sorgularının sayısını azalt (varsayılan: 300). Bu sayıyı 100'e düşürmek aynı kurulumda COCO üzerinde 7.4 ms / 51.7 mAP değerine ulaşabilir. Görüntü başına daha az nesne içeren veri kümelerinde mAP düşüşü genellikle daha az olur; ancak değeri görüntü başına beklenen en yüksek nesne sayısının üzerinde tut.
Her iki ayar da mAP değerini düşürebilir; dağıtıma almadan önce bu ödünleşimi kendi veri kümen üzerinde doğrula.
from ultralytics import RTDETR
rtdetr = RTDETR("rtdetr-l.pt")
head = rtdetr.model.model[-1]
# Hız/doğruluk ödünleşimini doğruladıktan sonra ayarlardan birini veya ikisini seç.
head.decoder.eval_idx = 3 # 6 kod çözücü katmanından 4'ünü kullan.
head.num_queries = 100 # Daha az nesne sorgusu kullan.
results = rtdetr("path/to/image.jpg")
# Dışa aktarma işlemi, TensorRT dışa aktarımları da dâhil olmak üzere aynı kod çözücü ve sorgu ayarlarını kullanır.
rtdetr.export(format="engine", device=0, quantize=16)Desteklenen Görevler ve Modlar#
Bu tabloda model türleri, belirli önceden eğitilmiş ağırlıklar, her modelin desteklediği görevler ve desteklenen çeşitli modlar (Eğitim, Doğrulama, Tahmin, Dışa Aktarma) gösterilir; desteklenen modlar ✅ emojisiyle belirtilir.
| Model Türü | Önceden Eğitilmiş Ağırlıklar | Desteklenen Görevler | Eğitim | Doğrulama | Çıkarım | Dışa aktar |
|---|---|---|---|---|---|---|
| RT-DETR Büyük | rtdetr-l.pt | Nesne Algılama | ✅ | ✅ | ✅ | ✅ |
| RT-DETR Ekstra Büyük | rtdetr-x.pt | Nesne Algılama | ✅ | ✅ | ✅ | ✅ |
rtdetr-resnet50.yaml ve rtdetr-resnet101.yaml yalnızca YAML mimarileri olarak sunulur. Ultralytics, önceden eğitilmiş ağırlıkları yalnızca rtdetr-l ve rtdetr-x için yayımlar. ResNet varyantlarını YAML'den örneğin RTDETR("rtdetr-resnet50.yaml") ile oluşturup gerektiği şekilde eğit veya ince ayar yap.
İdeal Kullanım Alanları#
RT-DETR, özellikle hem yüksek doğruluk hem de gerçek zamanlı performans gerektiren uygulamalar için uygundur:
- Otonom Sürüş: Hızın ve doğruluğun kritik olduğu sürücüsüz sistemlerde güvenilir çevresel algılama için. Sürücüsüz araçlarda yapay zekâ hakkında daha fazla bilgi edin.
- İleri Robotik: Robotların dinamik ortamlarda doğru nesne tanıma ve etkileşim gerektiren karmaşık görevleri yerine getirmesini sağlar. Robotikte yapay zekânın rolünü keşfet.
- Tıbbi Görüntüleme: Nesne algılama doğruluğunun tanı için kritik olabileceği sağlık uygulamalarında kullanılır. Sağlıkta yapay zekâyı keşfet.
- Gözetim Sistemleri: Yüksek algılama doğruluğuyla gerçek zamanlı izleme gerektiren güvenlik uygulamaları için. Güvenlik alarm sistemleri hakkında bilgi edin.
- Uydu Görüntüsü Analizi: Küresel bağlamı anlamanın önemli olduğu yüksek çözünürlüklü görüntülerin ayrıntılı analizi için. Uydu görüntülerinde bilgisayarlı görü hakkında bilgi edin.
Atıflar ve Teşekkürler#
Baidu'nun RT-DETR'sini araştırma veya geliştirme çalışmalarında kullanıyorsan lütfen özgün makaleye atıfta bulun:
@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}
}RTDETRv2 için 2024 tarihli makaleye atıfta bulunabilirsin:
@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}
}Bu değerli kaynağı bilgisayarlı görü topluluğu için oluşturup sürdüren Baidu'ya ve PaddlePaddle ekibine teşekkür ederiz. Vision Transformer tabanlı gerçek zamanlı nesne algılayıcı RT-DETR'yi geliştirerek bu alana yaptıkları katkı için kendilerine minnettarız.
Sık Sorulan Sorular#
Baidu'nun Gerçek Zamanlı Algılama Transformer'ı (RT-DETR), Vision Transformer mimarisini temel alan gelişmiş bir gerçek zamanlı nesne algılayıcıdır. Verimli hibrit kodlayıcısı aracılığıyla ölçek içi etkileşimi ölçekler arası birleştirmeden ayırarak çok ölçekli özellikleri verimli biçimde işler. IoU farkındalıklı sorgu seçimini kullanarak en ilgili nesnelere odaklanır ve algılama doğruluğunu artırır. Kod çözücü katmanlarını yeniden eğitim yapmadan ayarlayarak elde edilen uyarlanabilir çıkarım hızı, RT-DETR'yi çeşitli gerçek zamanlı nesne algılama senaryolarına uygun hâle getirir. RT-DETR özellikleri hakkında RT-DETR arXiv makalesinden daha fazla bilgi edin.
Önceden eğitilmiş PaddlePaddle RT-DETR modellerini kullanmak için Ultralytics Python API'den yararlanabilirsin. Örneğin, COCO val2017 üzerinde önceden eğitilmiş bir RT-DETR-l modelini yüklemek ve T4 GPU'da yüksek FPS elde etmek için aşağıdaki örneği kullanabilirsin:
Örnekfrom ultralytics import RTDETR # COCO üzerinde önceden eğitilmiş RT-DETR-l modelini yükle model = RTDETR("rtdetr-l.pt") # Model bilgilerini görüntüle (isteğe bağlı) model.info() # Modeli COCO8 örnek veri kümesinde 100 dönem boyunca eğit results = model.train(data="coco8.yaml", epochs=100, imgsz=640) # 'bus.jpg' görüntüsünde RT-DETR-l modeliyle çıkarım yap results = model("path/to/bus.jpg")Baidu'nun RT-DETR'si, yüksek doğruluğu korurken hesaplama maliyetlerini önemli ölçüde azaltan verimli hibrit kodlayıcısı ve IoU farkındalıklı sorgu seçimiyle öne çıkar. Farklı kod çözücü katmanlarını yeniden eğitim yapmadan kullanarak çıkarım hızını ayarlayabilmesi önemli bir esneklik sağlar. Bu özellikleri, TensorRT ile CUDA gibi hızlandırılmış arka uçlarda gerçek zamanlı performans gerektiren uygulamalarda RT-DETR'yi özellikle avantajlı kılar ve diğer birçok gerçek zamanlı nesne algılayıcıyı geride bırakmasını sağlar. Transformer mimarisi, geleneksel CNN tabanlı algılayıcılara kıyasla küresel bağlamı daha iyi anlamayı da sağlar.
Baidu'nun RT-DETR'si, yeniden eğitim gerektirmeden farklı kod çözücü katmanları kullanarak çıkarım hızının esnek biçimde ayarlanmasını sağlar. Bu uyarlanabilirlik, çeşitli gerçek zamanlı nesne algılama görevlerinde performansı ölçeklendirmek için kritik öneme sahiptir. Daha düşük hassasiyet gerektiren ihtiyaçlar için daha hızlı işlemeye ya da daha yavaş fakat daha doğru algılamalara ihtiyaç duysan da RT-DETR'yi belirli gereksinimlerine göre uyarlayabilirsin. Bu özellik, modelleri farklı hesaplama kapasitelerine sahip cihazlarda dağıtırken özellikle değerlidir.
Hayır. RT-DETR'de
max_det, çıkarım sonrasında döndürülen tahmin sayısını sınırlar; ancak kod çözücünün ürettiği nesne sorgularının sayısını artırmaz. Ultralytics'in önceden eğitilmiş RT-DETR kontrol noktaları 300 nesne sorgusu kullanır; bu nedenlemax_detdeğerini daha yüksek ayarlasan bile görüntü başına 300'den fazla algılama döndüremezler.Yalnızca daha az sayıda, güven düzeyi yüksek tahmine ihtiyaç duyduğunda döndürülen algılamaları azaltmak için örneğin
max_det=100değerini kullanarakmax_detayarını yap. Veri kümen görüntü başına 300'den fazla nesne içerebiliyorsa model YAML dosyasındaki daha yüksek bir kod çözücü sorgu sayısıyla (nq) özel bir RT-DETR modeli eğit. Eğitimden sonra önceden eğitilmiş bir kontrol noktasında bu değeri değiştirmek aynı sonucu vermez; ek sorguların öğrenilmesi için yeniden eğitim gerekir.Evet, RT-DETR modelleri eğitim, doğrulama, tahmin ve dışa aktarma dâhil çeşitli Ultralytics modlarıyla uyumludur. Bu modları kullanmaya ilişkin ayrıntılı yönergeler için ilgili belgelere bakabilirsin: Eğitim, Doğrulama, Tahmin ve Dışa Aktarma. Böylece nesne algılama çözümlerini geliştirip dağıtmak için kapsamlı bir iş akışı elde edersin. Ultralytics çerçevesi, farklı model mimarilerinde tutarlı bir API sunarak RT-DETR modelleriyle çalışmayı kolaylaştırır.