İçeriğe geç

YOLO11 Modelleri için TensorRT Dışa Aktarımı

Bilgisayar görüşü modellerini yüksek performanslı ortamlarda dağıtmak, hızı ve verimliliği en üst düzeye çıkaran bir format gerektirebilir. Bu, özellikle modelinizi NVIDIA GPU'larda dağıtırken geçerlidir.

TensorRT dışa aktarma formatını kullanarak, Ultralytics YOLO11 modellerinizi NVIDIA donanımında hızlı ve verimli çıkarım için geliştirebilirsiniz. Bu kılavuz, dönüştürme süreci için kolayca izlenebilir adımlar sunacak ve derin öğrenme projelerinizde NVIDIA'nın gelişmiş teknolojisinden en iyi şekilde yararlanmanıza yardımcı olacaktır.

TensorRT

TensorRT'ye Genel Bakış

TensorRT, NVIDIA tarafından geliştirilen, yüksek hızlı derin öğrenme çıkarımı için tasarlanmış gelişmiş bir yazılım geliştirme kitidir (SDK). Nesne algılama gibi gerçek zamanlı uygulamalar için çok uygundur.

Bu araç seti, derin öğrenme modellerini NVIDIA GPU'lar için optimize eder ve daha hızlı ve daha verimli işlemlerle sonuçlanır. TensorRT modelleri, katman birleştirme, hassasiyet kalibrasyonu (INT8 ve FP16), dinamik tensör bellek yönetimi ve çekirdek otomatik ayarlama gibi teknikleri içeren TensorRT optimizasyonundan geçer. Derin öğrenme modellerini TensorRT biçimine dönüştürmek, geliştiricilerin NVIDIA GPU'ların potansiyelini tam olarak gerçekleştirmelerini sağlar.

TensorRT, TensorFlow, PyTorch ve ONNX dahil olmak üzere çeşitli model formatlarıyla uyumluluğu ile bilinir ve geliştiricilere farklı çerçevelerden modelleri entegre etmek ve optimize etmek için esnek bir çözüm sunar. Bu çok yönlülük, çeşitli donanım ve yazılım ortamlarında verimli model dağıtımını sağlar.

TensorRT Modellerinin Temel Özellikleri

TensorRT modelleri, yüksek hızlı derin öğrenme çıkarımında verimliliklerine ve etkinliklerine katkıda bulunan bir dizi temel özellik sunar:

  • Hassas Kalibrasyon: TensorRT, modellerin belirli doğruluk gereksinimleri için ince ayar yapılmasına olanak tanıyan hassas kalibrasyonu destekler. Bu, kabul edilebilir doğruluk seviyelerini korurken çıkarım hızını daha da artırabilen INT8 ve FP16 gibi azaltılmış hassasiyet formatları için desteği içerir.

  • Katman Birleştirme (Layer Fusion): TensorRT optimizasyon süreci, bir sinir ağının birden çok katmanının tek bir işlemde birleştirildiği katman birleştirmeyi içerir. Bu, bellek erişimini ve hesaplamayı en aza indirerek hesaplama yükünü azaltır ve çıkarım hızını artırır.

TensorRT Katman Birleştirme

  • Dinamik Tensor Bellek Yönetimi: TensorRT, çıkarım sırasında tensor bellek kullanımını verimli bir şekilde yönetir, bellek yükünü azaltır ve bellek tahsisini optimize eder. Bu, daha verimli bir GPU bellek kullanımına yol açar.

  • Otomatik Çekirdek Ayarlama: TensorRT, modelin her katmanı için en optimize edilmiş GPU çekirdeğini seçmek üzere otomatik çekirdek ayarlaması uygular. Bu uyarlanabilir yaklaşım, modelin GPU'ların işlem gücünden tam olarak yararlanmasını sağlar.

TensorRT'de Dağıtım Seçenekleri

YOLO11 modellerini TensorRT biçimine aktarma koduna bakmadan önce, TensorRT modellerinin normalde nerede kullanıldığını anlayalım.

TensorRT, çeşitli dağıtım seçenekleri sunar ve her seçenek, entegrasyon kolaylığı, performans optimizasyonu ve esnekliği farklı şekilde dengeler:

  • TensorFlow içinde Dağıtım: Bu yöntem, TensorRT'yi TensorFlow'a entegre ederek optimize edilmiş modellerin tanıdık bir TensorFlow ortamında çalışmasını sağlar. TF-TRT bunları verimli bir şekilde işleyebildiğinden, desteklenen ve desteklenmeyen katmanların bir karışımına sahip modeller için kullanışlıdır.

TensorRT'ye Genel Bakış

  • Bağımsız TensorRT Çalışma Zamanı API'si: Performans açısından kritik uygulamalar için ideal olan ayrıntılı kontrol sunar. Daha karmaşıktır ancak desteklenmeyen operatörlerin özel olarak uygulanmasına olanak tanır.

  • NVIDIA Triton Inference Server: Çeşitli çerçevelerden modelleri destekleyen bir seçenek. Özellikle bulut veya uç çıkarımı için uygundur; eşzamanlı model yürütme ve model analizi gibi özellikler sağlar.

YOLO11 Modellerini TensorRT'ye Aktarma

YOLO11 modellerini TensorRT formatına dönüştürerek yürütme verimliliğini artırabilir ve performansı optimize edebilirsiniz.

Kurulum

Gerekli paketi yüklemek için şunu çalıştırın:

Kurulum

# Install the required package for YOLO11
pip install ultralytics

Kurulum süreciyle ilgili ayrıntılı talimatlar ve en iyi uygulamalar için YOLO11 Kurulum kılavuzumuza göz atın. YOLO11 için gerekli paketleri kurarken herhangi bir zorlukla karşılaşırsanız, çözümler ve ipuçları için Sık Karşılaşılan Sorunlar kılavuzumuza başvurun.

Kullanım

Kullanım talimatlarına geçmeden önce, Ultralytics tarafından sunulan YOLO11 modelleri yelpazesine göz atmayı unutmayın. Bu, proje gereksinimleriniz için en uygun modeli seçmenize yardımcı olacaktır.

Kullanım

from ultralytics import YOLO

# Load the YOLO11 model
model = YOLO("yolo11n.pt")

# Export the model to TensorRT format
model.export(format="engine")  # creates 'yolo11n.engine'

# Load the exported TensorRT model
tensorrt_model = YOLO("yolo11n.engine")

# Run inference
results = tensorrt_model("https://ultralytics.com/images/bus.jpg")
# Export a YOLO11n PyTorch model to TensorRT format
yolo export model=yolo11n.pt format=engine # creates 'yolo11n.engine''

# Run inference with the exported model
yolo predict model=yolo11n.engine source='https://ultralytics.com/images/bus.jpg'

Dışa Aktarma Argümanları

Argüman Tür Varsayılan Açıklama
format str 'engine' Çeşitli dağıtım ortamlarıyla uyumluluğu tanımlayan, dışa aktarılan modelin hedef formatı.
imgsz int veya tuple 640 Model girişi için istenen görüntü boyutu. Kare görüntüler için bir tamsayı veya bir demet olabilir (height, width) belirli boyutlar için.
half bool False FP16 (yarı duyarlıklı) nicelemeyi etkinleştirir, model boyutunu küçültür ve desteklenen donanımda çıkarımı potansiyel olarak hızlandırır.
int8 bool False INT8 nicelemesini etkinleştirir, modeli daha da sıkıştırır ve öncelikle uç cihazlar için minimum doğruluk kaybıyla çıkarımı hızlandırır.
dynamic bool False Değişken görüntü boyutlarını işlemede esnekliği artırarak dinamik giriş boyutlarına olanak tanır.
simplify bool True Model grafiğini şunlarla basitleştirir: onnxslim, potansiyel olarak performansı ve uyumluluğu artırır.
workspace float veya None None TensorRT optimizasyonları için maksimum çalışma alanı boyutunu GiB cinsinden ayarlar, bellek kullanımı ve performansı dengeler; şunu kullanın: None TensorRT tarafından cihazın maksimumuna kadar otomatik tahsis için.
nms bool False Doğru ve verimli algılama sonrası işleme için gerekli olan Non-Maximum Suppression (NMS) ekler.
batch int 1 Dışa aktarma modeli toplu çıkarım boyutunu veya dışa aktarılan modelin aynı anda işleyeceği maksimum görüntü sayısını belirtir. predict modu.
data str 'coco8.yaml' Şuraya giden yol: veri kümesi yapılandırma dosyası (varsayılan: coco8.yaml), niceleme için önemlidir.
fraction float 1.0 Veri kümesinin INT8 niceleme kalibrasyonu için kullanılacak kısmını belirtir. Tam veri kümesinin bir alt kümesi üzerinde kalibrasyon yapılmasına olanak tanır, bu da deneyler için veya kaynaklar sınırlı olduğunda kullanışlıdır. INT8 etkinleştirilmişse belirtilmezse, tam veri kümesi kullanılır.
device str None Dışa aktarma için cihazı belirtir: GPU (device=0), NVIDIA Jetson için DLA (device=dla:0 veya device=dla:1).

İpucu

TensorRT'ye aktarırken lütfen CUDA destekli bir GPU kullandığınızdan emin olun.

Dışa aktarma süreci hakkında daha fazla bilgi için Ultralytics'in dışa aktarma hakkındaki dokümantasyon sayfasını ziyaret edin.

INT8 Kuantalama ile TensorRT Dışa Aktarımı

Ultralytics YOLO modellerini INT8 hassasiyetiyle TensorRT kullanarak dışa aktarmak, eğitim sonrası niceleme (PTQ) uygular. TensorRT, PTQ için kalibrasyon kullanır; bu, YOLO modelinin temsili girdi verileri üzerinde çıkarım yaparken her bir aktivasyon tensörü içindeki aktivasyonların dağılımını ölçer ve ardından her bir tensör için ölçek değerlerini tahmin etmek için bu dağılımı kullanır. Kuantalama için aday olan her aktivasyon tensörünün, bir kalibrasyon süreciyle elde edilen ilişkili bir ölçeği vardır.

Örtük olarak nicelenmiş ağları işlerken TensorRT, katman yürütme süresini optimize etmek için fırsatçı bir şekilde INT8 kullanır. Bir katman INT8'de daha hızlı çalışıyorsa ve veri girişlerinde ve çıkışlarında nicemleme ölçekleri atanmışsa, o katmana INT8 hassasiyetine sahip bir çekirdek atanır, aksi takdirde TensorRT, o katman için daha hızlı yürütme süresiyle sonuçlanan FP32 veya FP16 hassasiyetini seçer.

İpucu

TensorRT model ağırlıklarını dağıtım için kullanacak aynı cihazın, INT8 hassasiyetiyle dışa aktarma için kullanıldığından emin olmak kritiktir, çünkü kalibrasyon sonuçları cihazlar arasında değişiklik gösterebilir.

INT8 Dışa Aktarımını Yapılandırma

Kullanırken sağlanan argümanlar export bir Ultralytics YOLO modeli için büyük ölçüde dışa aktarılan modelin performansını etkiler. Ayrıca, mevcut cihaz kaynaklarına göre de seçilmeleri gerekecektir, ancak varsayılan argümanlar gerekir çoğu için işe yarar Ampere (veya daha yeni) NVIDIA ayrık GPU'lar. Kullanılan kalibrasyon algoritması şudur: "MINMAX_CALIBRATION" ve mevcut seçenekler hakkında daha fazla ayrıntı okuyabilirsiniz TensorRT Geliştirici Kılavuzu'ndaUltralytics testleri şunu buldu: "MINMAX_CALIBRATION" en iyi seçimdi ve dışa aktarımlar bu algoritmayı kullanacak şekilde düzeltildi.

  • workspace : Model ağırlıklarını dönüştürürken cihaz belleği ayırmanın boyutunu (GiB cinsinden) kontrol eder.

    • Şunu ayarla: workspace kalibrasyon ihtiyaçlarınıza ve kaynak kullanılabilirliğinize göre değer. Daha büyük bir workspace kalibrasyon süresini artırabilir, ancak TensorRT'nin daha geniş bir optimizasyon taktikleri yelpazesini keşfetmesine olanak tanıyarak model performansını potansiyel olarak artırır ve doğruluğu. Aksine, daha küçük bir workspace kalibrasyon süresini kısaltabilir ancak optimizasyon stratejilerini sınırlayarak nicelenmiş modelin kalitesini etkileyebilir.

    • Varsayılan: workspace=None, bu, TensorRT'nin belleği otomatik olarak ayırmasına olanak tanır, manuel olarak yapılandırırken, kalibrasyon çökerse (uyarı vermeden çıkarsa) bu değerin artırılması gerekebilir.

    • TensorRT şunu raporlayacaktır UNSUPPORTED_STATE için değer workspace cihazın kullanabileceği bellekten daha büyük, bu da şu anlama geliyor: workspace düşürülmeli veya şu değere ayarlanmalıdır: None.

    • Eğer workspace maksimum değere ayarlanır ve kalibrasyon başarısız olur/çökerse, şunu kullanmayı düşünün None otomatik tahsis için veya değerleri azaltarak imgsz ve batch bellek gereksinimlerini azaltmak için.

    • Unutmayın INT8 için kalibrasyon her cihaza özeldir, kalibrasyon için "üst düzey" bir GPU kullanmak, çıkarım başka bir cihazda çalıştırıldığında düşük performansa neden olabilir.

  • batch : Çıkarım için kullanılacak maksimum toplu iş boyutudur. Çıkarım sırasında daha küçük toplu işler kullanılabilir, ancak çıkarım belirtilenden daha büyük toplu işleri kabul etmeyecektir.

Not

Kalibrasyon sırasında, iki katı batch sağlanan boyut kullanılacaktır. Küçük kümeler kullanmak, kalibrasyon sırasında yanlış ölçeklemeye yol açabilir. Bunun nedeni, işlemin gördüğü verilere göre ayarlanmasıdır. Küçük kümeler, değerlerin tüm aralığını yakalayamayabilir ve bu da son kalibrasyonla ilgili sorunlara yol açabilir, bu nedenle batch boyut otomatik olarak ikiye katlanır. Eğer yoksa yığın boyutu belirtilir batch=1, kalibrasyon şu konumda çalıştırılacaktır: batch=1 * 2 kalibrasyon ölçekleme hatalarını azaltmak için.

NVIDIA tarafından yapılan deneyler, INT8 niceleme kalibrasyonu ile modeliniz için verileri temsil eden en az 500 kalibrasyon görüntüsü kullanılmasını önermelerine yol açtı. Bu bir kılavuzdur ve bir zor gereksinim ve veri kümeniz için iyi performans göstermek için neyin gerekli olduğunu denemeniz gerekecek. TensorRT ile INT8 kalibrasyonu için kalibrasyon verileri gerektiğinden, şunu kullandığınızdan emin olun: data argümanı ne zaman int8=True TensorRT için ve şunu kullanın: data="my_dataset.yaml", şu konumdaki resimleri kullanır: doğrulama ile kalibre etmek için. İçin herhangi bir değer geçirilmediğinde data INT8 nicelemesiyle TensorRT'ye aktarma ile varsayılan olarak şunlardan biri kullanılacaktır: model görevi temel alınarak oluşturulmuş "küçük" örnek veri kümeleri hata vermek yerine.

Örnek

from ultralytics import YOLO

model = YOLO("yolov8n.pt")
model.export(
    format="engine",
    dynamic=True,  # (1)!
    batch=8,  # (2)!
    workspace=4,  # (3)!
    int8=True,
    data="coco.yaml",  # (4)!
)

# Load the exported TensorRT INT8 model
model = YOLO("yolov8n.engine", task="detect")

# Run inference
result = model.predict("https://ultralytics.com/images/bus.jpg")
  1. Dinamik eksenlerle dışa aktarmalar, ile dışa aktarırken varsayılan olarak etkinleştirilecektir int8=True açıkça ayarlanmamış olsa bile. Bkz. dışa aktarma argümanları ek bilgi için.
  2. Dışa aktarılan model için maksimum toplu iş boyutunu 8 olarak ayarlar, bu değer ile kalibre edilir batch = 2 * 8 kalibrasyon sırasında ölçekleme hatalarından kaçınmak için.
  3. Dönüştürme işlemi için cihazın tamamını ayırmak yerine 4 GiB bellek ayırır.
  4. Kalibrasyon için COCO veri kümesini, özellikle de doğrulama için kullanılan görüntüleri (toplam 5.000) kullanır.
# Export a YOLO11n PyTorch model to TensorRT format with INT8 quantization
yolo export model=yolo11n.pt format=engine batch=8 workspace=4 int8=True data=coco.yaml # creates 'yolov8n.engine''

# Run inference with the exported TensorRT quantized model
yolo predict model=yolov8n.engine source='https://ultralytics.com/images/bus.jpg'
Kalibrasyon Önbelleği

TensorRT bir kalibrasyon üretecektir .cache aynı verileri kullanarak gelecekteki model ağırlıklarının dışa aktarımını hızlandırmak için yeniden kullanılabilir, ancak veriler çok farklı olduğunda veya batch değer önemli ölçüde değişir. Bu gibi durumlarda, mevcut .cache yeniden adlandırılmalı ve farklı bir dizine taşınmalı veya tamamen silinmelidir.

YOLO'nun TensorRT INT8 ile Kullanımının Avantajları

  • Azaltılmış model boyutu: FP32'den INT8'e niceleme, model boyutunu 4 kat azaltabilir (disk üzerinde veya bellekte), bu da daha hızlı indirme sürelerine, daha düşük depolama gereksinimlerine ve bir model dağıtırken azaltılmış bellek ayak izine yol açar.

  • Daha düşük güç tüketimi: INT8 olarak dışa aktarılan YOLO modelleri için azaltılmış hassasiyet işlemleri, özellikle pille çalışan cihazlar için FP32 modellerine kıyasla daha az güç tüketebilir.

  • Geliştirilmiş çıkarım hızları: TensorRT, modeli hedef donanım için optimize ederek GPU'larda, gömülü cihazlarda ve hızlandırıcılarda daha hızlı çıkarım hızlarına yol açabilir.

Çıkarım Hızları Hakkında Not

TensorRT INT8'e aktarılan bir modelle yapılan ilk birkaç çıkarım çağrısının, normalden daha uzun ön işleme, çıkarım ve/veya son işleme sürelerine sahip olması beklenebilir. Bu, aynı zamanda değiştirirken de meydana gelebilir. imgsz çıkarım sırasında, özellikle imgsz dışa aktarma sırasında belirtilenle aynı değil (dışa aktarma imgsz TensorRT "optimal" profili olarak ayarlanmıştır).

YOLO'yu TensorRT INT8 ile kullanmanın dezavantajları

  • Değerlendirme metriklerindeki azalmalar: Daha düşük bir duyarlılık kullanmak şu anlama gelecektir: mAP, Precision, Recall veya herhangi bir model performansını değerlendirmek için kullanılan diğer metrik biraz daha kötü olması muhtemeldir. Şuna bakın: Performans sonuçları bölümü farklılıkları karşılaştırmak için mAP50 ve mAP50-95 çeşitli cihazların küçük bir örneğinde INT8 ile dışa aktarırken.

  • Artan geliştirme süreleri: Veri kümesi ve cihaz için INT8 kalibrasyonu için "en uygun" ayarları bulmak önemli miktarda test gerektirebilir.

  • Donanım bağımlılığı: Kalibrasyon ve performans kazanımları büyük ölçüde donanıma bağımlı olabilir ve model ağırlıkları daha az aktarılabilir.

Ultralytics YOLO TensorRT Dışa Aktarma Performansı

NVIDIA A100

Performans

Ubuntu 22.04.3 LTS ile test edilmiştir, python 3.10.12, ultralytics==8.2.4, tensorrt==8.6.1.post1

COCO üzerinde eğitilmiş ve 80 adet önceden eğitilmiş sınıfı içeren bu modellerle ilgili kullanım örnekleri için Algılama Belgelerine bakın.

Not

İçin gösterilen çıkarım süreleri mean, min (en hızlı) ve max Önceden eğitilmiş ağırlıklar kullanılarak her test için (en yavaş) yolov8n.engine

Kesinlik Değerlendirme testi ortalama
(ms)
min | maks
(ms)
mAPval
50(B)
mAPval
50-95(B)
batch boyut
(piksel)
FP32 Tahmin et 0.52 0.51 | 0.56 8 640
FP32 COCOval 0.52 0.52 0.37 1 640
FP16 Tahmin et 0.34 0.34 | 0.41 8 640
FP16 COCOval 0.33 0.52 0.37 1 640
INT8 Tahmin et 0.28 0.27 | 0.31 8 640
INT8 COCOval 0.29 0.47 0.33 1 640

80 önceden eğitilmiş sınıfı içeren COCO üzerinde eğitilmiş bu modellerle ilgili kullanım örnekleri için Segmentasyon Belgeleri'ne bakın.

Not

İçin gösterilen çıkarım süreleri mean, min (en hızlı) ve max Önceden eğitilmiş ağırlıklar kullanılarak her test için (en yavaş) yolov8n-seg.engine

Kesinlik Değerlendirme testi ortalama
(ms)
min | maks
(ms)
mAPval
50(B)
mAPval
50-95(B)
mAPval
50(M)
mAPval
50-95(M)
batch boyut
(piksel)
FP32 Tahmin et 0.62 0.61 | 0.68 8 640
FP32 COCOval 0.63 0.52 0.36 0.49 0.31 1 640
FP16 Tahmin et 0.40 0.39 | 0.44 8 640
FP16 COCOval 0.43 0.52 0.36 0.49 0.30 1 640
INT8 Tahmin et 0.34 0.33 | 0.37 8 640
INT8 COCOval 0.36 0.46 0.32 0.43 0.27 1 640

1000 önceden eğitilmiş sınıfı içeren ImageNet üzerinde eğitilmiş bu modellerle ilgili kullanım örnekleri için Sınıflandırma Belgeleri'ne bakın.

Not

İçin gösterilen çıkarım süreleri mean, min (en hızlı) ve max Önceden eğitilmiş ağırlıklar kullanılarak her test için (en yavaş) yolov8n-cls.engine

Kesinlik Değerlendirme testi ortalama
(ms)
min | maks
(ms)
en iyi-1 en iyi-5 batch boyut
(piksel)
FP32 Tahmin et 0.26 0.25 | 0.28 8 640
FP32 ImageNetval 0.26 0.35 0.61 1 640
FP16 Tahmin et 0.18 0.17 | 0.19 8 640
FP16 ImageNetval 0.18 0.35 0.61 1 640
INT8 Tahmin et 0.16 0.15 | 0.57 8 640
INT8 ImageNetval 0.15 0.32 0.59 1 640

COCO üzerinde eğitilmiş bu modellerle kullanım örnekleri için Poz Tahmini Belgelerine bakın; bu belgeler 1 adet önceden eğitilmiş "kişi" sınıfını içerir.

Not

İçin gösterilen çıkarım süreleri mean, min (en hızlı) ve max Önceden eğitilmiş ağırlıklar kullanılarak her test için (en yavaş) yolov8n-pose.engine

Kesinlik Değerlendirme testi ortalama
(ms)
min | maks
(ms)
mAPval
50(B)
mAPval
50-95(B)
mAPval
50(P)
mAPval
50-95(P)
batch boyut
(piksel)
FP32 Tahmin et 0.54 0.53 | 0.58 8 640
FP32 COCOval 0.55 0.91 0.69 0.80 0.51 1 640
FP16 Tahmin et 0.37 0.35 | 0.41 8 640
FP16 COCOval 0.36 0.91 0.69 0.80 0.51 1 640
INT8 Tahmin et 0.29 0.28 | 0.33 8 640
INT8 COCOval 0.30 0.90 0.68 0.78 0.47 1 640

DOTAv1 üzerinde eğitilmiş bu modellerle kullanım örnekleri için Yönlendirilmiş Algılama Belgelerine bakın; bu belgelere 15 adet önceden eğitilmiş sınıf dahildir.

Not

İçin gösterilen çıkarım süreleri mean, min (en hızlı) ve max Önceden eğitilmiş ağırlıklar kullanılarak her test için (en yavaş) yolov8n-obb.engine

Kesinlik Değerlendirme testi ortalama
(ms)
min | maks
(ms)
mAPval
50(B)
mAPval
50-95(B)
batch boyut
(piksel)
FP32 Tahmin et 0.52 0.51 | 0.59 8 640
FP32 DOTAv1val 0.76 0.50 0.36 1 640
FP16 Tahmin et 0.34 0.33 | 0.42 8 640
FP16 DOTAv1val 0.59 0.50 0.36 1 640
INT8 Tahmin et 0.29 0.28 | 0.33 8 640
INT8 DOTAv1val 0.32 0.45 0.32 1 640

Tüketici GPU'ları

Algılama Performansı (COCO)

Windows 10.0.19045 ile test edilmiştir, python 3.10.9, ultralytics==8.2.4, tensorrt==10.0.0b6

Not

İçin gösterilen çıkarım süreleri mean, min (en hızlı) ve max Önceden eğitilmiş ağırlıklar kullanılarak her test için (en yavaş) yolov8n.engine

Kesinlik Değerlendirme testi ortalama
(ms)
min | maks
(ms)
mAPval
50(B)
mAPval
50-95(B)
batch boyut
(piksel)
FP32 Tahmin et 1.06 0.75 | 1.88 8 640
FP32 COCOval 1.37 0.52 0.37 1 640
FP16 Tahmin et 0.62 0.75 | 1.13 8 640
FP16 COCOval 0.85 0.52 0.37 1 640
INT8 Tahmin et 0.52 0.38 | 1.00 8 640
INT8 COCOval 0.74 0.47 0.33 1 640

Windows 10.0.22631 ile test edilmiştir, python 3.11.9, ultralytics==8.2.4, tensorrt==10.0.1

Not

İçin gösterilen çıkarım süreleri mean, min (en hızlı) ve max Önceden eğitilmiş ağırlıklar kullanılarak her test için (en yavaş) yolov8n.engine

Kesinlik Değerlendirme testi ortalama
(ms)
min | maks
(ms)
mAPval
50(B)
mAPval
50-95(B)
batch boyut
(piksel)
FP32 Tahmin et 1.76 1.69 | 1.87 8 640
FP32 COCOval 1.94 0.52 0.37 1 640
FP16 Tahmin et 0.86 0.75 | 1.00 8 640
FP16 COCOval 1.43 0.52 0.37 1 640
INT8 Tahmin et 0.80 0.75 | 1.00 8 640
INT8 COCOval 1.35 0.47 0.33 1 640

Pop!_OS 22.04 LTS ile test edilmiştir, python 3.10.12, ultralytics==8.2.4, tensorrt==8.6.1.post1

Not

İçin gösterilen çıkarım süreleri mean, min (en hızlı) ve max Önceden eğitilmiş ağırlıklar kullanılarak her test için (en yavaş) yolov8n.engine

Kesinlik Değerlendirme testi ortalama
(ms)
min | maks
(ms)
mAPval
50(B)
mAPval
50-95(B)
batch boyut
(piksel)
FP32 Tahmin et 2.84 2.84 | 2.85 8 640
FP32 COCOval 2.94 0.52 0.37 1 640
FP16 Tahmin et 1.09 1.09 | 1.10 8 640
FP16 COCOval 1.20 0.52 0.37 1 640
INT8 Tahmin et 0.75 0.74 | 0.75 8 640
INT8 COCOval 0.76 0.47 0.33 1 640

Gömülü Cihazlar

Algılama Performansı (COCO)

JetPack 6.0 (L4T 36.3) Ubuntu 22.04.4 LTS ile test edilmiştir, python 3.10.12, ultralytics==8.2.16, tensorrt==10.0.1

Not

İçin gösterilen çıkarım süreleri mean, min (en hızlı) ve max Önceden eğitilmiş ağırlıklar kullanılarak her test için (en yavaş) yolov8n.engine

Kesinlik Değerlendirme testi ortalama
(ms)
min | maks
(ms)
mAPval
50(B)
mAPval
50-95(B)
batch boyut
(piksel)
FP32 Tahmin et 6.11 6.10 | 6.29 8 640
FP32 COCOval 6.17 0.52 0.37 1 640
FP16 Tahmin et 3.18 3.18 | 3.20 8 640
FP16 COCOval 3.19 0.52 0.37 1 640
INT8 Tahmin et 2.30 2.29 | 2.35 8 640
INT8 COCOval 2.32 0.46 0.32 1 640

Bilgi

Kurulum ve yapılandırma hakkında daha fazla bilgi edinmek için Ultralytics YOLO ile NVIDIA Jetson'daki hızlı başlangıç kılavuzumuza bakın.

Değerlendirme yöntemleri

Bu modellerin nasıl dışa aktarıldığı ve test edildiği hakkında bilgi için aşağıdaki bölümleri genişletin.

Dışa aktarma yapılandırmaları

Dışa aktarma yapılandırma argümanları ile ilgili ayrıntılar için dışa aktarma moduna bakın.

from ultralytics import YOLO

model = YOLO("yolov8n.pt")

# TensorRT FP32
out = model.export(format="engine", imgsz=640, dynamic=True, verbose=False, batch=8, workspace=2)

# TensorRT FP16
out = model.export(format="engine", imgsz=640, dynamic=True, verbose=False, batch=8, workspace=2, half=True)

# TensorRT INT8 with calibration `data` (i.e. COCO, ImageNet, or DOTAv1 for appropriate model task)
out = model.export(
    format="engine", imgsz=640, dynamic=True, verbose=False, batch=8, workspace=2, int8=True, data="coco8.yaml"
)
Tahmin döngüsü

Ek bilgiler için tahmin moduna bakın.

import cv2

from ultralytics import YOLO

model = YOLO("yolov8n.engine")
img = cv2.imread("path/to/image.jpg")

for _ in range(100):
    result = model.predict(
        [img] * 8,  # batch=8 of the same image
        verbose=False,
        device="cuda",
    )
Doğrulama yapılandırması

Bkz. val modu doğrulama yapılandırma argümanları hakkında daha fazla bilgi edinmek için.

from ultralytics import YOLO

model = YOLO("yolov8n.engine")
results = model.val(
    data="data.yaml",  # COCO, ImageNet, or DOTAv1 for appropriate model task
    batch=1,
    imgsz=640,
    verbose=False,
    device="cuda",
)

Dışa Aktarılmış YOLO11 TensorRT Modellerini Dağıtma

Ultralytics YOLO11 modellerinizi TensorRT formatına başarıyla aktardıktan sonra, artık bunları dağıtmaya hazırsınız. TensorRT modellerinizi çeşitli ayarlarda dağıtma hakkında ayrıntılı talimatlar için aşağıdaki kaynaklara göz atın:

Özet

Bu kılavuzda, Ultralytics YOLO11 modellerini NVIDIA'nın TensorRT model formatına dönüştürmeye odaklandık. Bu dönüştürme adımı, YOLO11 modellerinin verimliliğini ve hızını artırmak, onları daha etkili ve çeşitli dağıtım ortamları için daha uygun hale getirmek açısından çok önemlidir.

Kullanım detayları hakkında daha fazla bilgi için TensorRT resmi belgelerine göz atın.

Ek Ultralytics YOLO11 entegrasyonları hakkında daha fazla bilgi edinmek isterseniz, entegrasyon kılavuzu sayfamız kapsamlı bir bilgilendirici kaynak ve içgörü seçimi sunar.

SSS

YOLO11 modellerini TensorRT formatına nasıl dönüştürebilirim?

Ultralytics YOLO11 modellerinizi optimize edilmiş NVIDIA GPU çıkarımı için TensorRT biçimine dönüştürmek için şu adımları izleyin:

  1. Gerekli paketi yükleyin:

    pip install ultralytics
    
  2. YOLO11 modelinizi dışa aktarın:

    from ultralytics import YOLO
    
    model = YOLO("yolo11n.pt")
    model.export(format="engine")  # creates 'yolo11n.engine'
    
    # Run inference
    model = YOLO("yolo11n.engine")
    results = model("https://ultralytics.com/images/bus.jpg")
    

Daha fazla ayrıntı için YOLO11 Kurulum kılavuzunu ve dışa aktarma belgelerini ziyaret edin.

YOLO11 modelleri için TensorRT kullanmanın faydaları nelerdir?

YOLO11 modellerini optimize etmek için TensorRT kullanmak çeşitli avantajlar sunar:

  • Daha Hızlı Çıkarım Hızı: TensorRT, model katmanlarını optimize eder ve doğruluğu önemli ölçüde azaltmadan çıkarımı hızlandırmak için hassasiyet kalibrasyonu (INT8 ve FP16) kullanır.
  • Bellek Verimliliği: TensorRT, tensor belleğini dinamik olarak yönetir, ek yükü azaltır ve GPU bellek kullanımını iyileştirir.
  • Katman Birleştirme: Birden çok katmanı tek işlemlerde birleştirerek hesaplama karmaşıklığını azaltır.
  • Çekirdek Otomatik Ayarlama: Her model katmanı için otomatik olarak optimize edilmiş GPU çekirdeklerini seçerek maksimum performans sağlar.

Daha fazla bilgi edinmek için, NVIDIA'nın resmi TensorRT belgelerini ve derinlemesine TensorRT genel bakışımızı inceleyin.

YOLO11 modelleri için TensorRT ile INT8 nicelemesini kullanabilir miyim?

Evet, YOLO11 modellerini INT8 nicelemesi ile TensorRT kullanarak dışa aktarabilirsiniz. Bu işlem, eğitim sonrası nicelemeyi (PTQ) ve kalibrasyonu içerir:

  1. INT8 ile Dışa Aktar:

    from ultralytics import YOLO
    
    model = YOLO("yolov8n.pt")
    model.export(format="engine", batch=8, workspace=4, int8=True, data="coco.yaml")
    
  2. Çıkarım çalıştırma:

    from ultralytics import YOLO
    
    model = YOLO("yolov8n.engine", task="detect")
    result = model.predict("https://ultralytics.com/images/bus.jpg")
    

Daha fazla ayrıntı için INT8 nicelemesi ile TensorRT dışa aktarma bölümüne bakın.

Bir NVIDIA Triton Inference Sunucusunda YOLO11 TensorRT modellerini nasıl dağıtabilirim?

Bir NVIDIA Triton Inference Sunucusuna YOLO11 TensorRT modellerini dağıtmak için aşağıdaki kaynaklar kullanılabilir:

Bu kılavuzlar, YOLOv8 modellerini çeşitli dağıtım ortamlarına verimli bir şekilde entegre etmenize yardımcı olacaktır.

TensorRT'ye aktarılan YOLOv8 modelleriyle gözlemlenen performans iyileştirmeleri nelerdir?

TensorRT ile performans iyileştirmeleri, kullanılan donanıma bağlı olarak değişebilir. İşte bazı tipik kıyaslamalar:

  • NVIDIA A100:

    • FP32 Çıkarım: ~0.52 ms / görüntü
    • FP16 Çıkarım: ~0.34 ms / görüntü
    • INT8 Çıkarımı: ~0,28 ms / görüntü
    • INT8 hassasiyetinde mAP'de hafif azalma, ancak hızda önemli iyileşme.
  • Tüketici GPU'ları (örn. RTX 3080):

    • FP32 Çıkarım: ~1.06 ms / görüntü
    • FP16 Çıkarım: ~0.62 ms / görüntü
    • INT8 Çıkarımı: ~0,52 ms / görüntü

Farklı donanım yapılandırmaları için ayrıntılı performans kıyaslamaları performans bölümünde bulunabilir.

TensorRT performansı hakkında daha kapsamlı bilgiler için Ultralytics belgelerine ve performans analizi raporlarımıza bakın.



📅 1 yıl önce oluşturuldu ✏️ 19 gün önce güncellendi

Yorumlar