Ultralytics YOLO27:
Get Started

YOLO26 Modelleri için TensorRT Dışa Aktarımı#

Bilgisayarlı görü modellerini yüksek performanslı ortamlara dağıtmak, hızı ve verimliliği en üst düzeye çıkaran bir biçim gerektirebilir. Modelini NVIDIA GPU'larında dağıtırken bu özellikle önemlidir.

TensorRT dışa aktarma biçimini kullanarak Ultralytics YOLO26 modellerini NVIDIA donanımında hızlı ve verimli çıkarım için geliştirebilirsin. Bu kılavuz, dönüştürme sürecini kolayca uygulayabileceğin adımlarla açıklar ve derin öğrenme projelerinde NVIDIA'nın gelişmiş teknolojisinden en iyi şekilde yararlanmana yardımcı olur.

TensorRT#

NVIDIA TensorRT optimization workflow

NVIDIA tarafından geliştirilen TensorRT, 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 oldukça uygundur.

Bu araç takımı, derin öğrenme modellerini NVIDIA GPU'ları için optimize ederek daha hızlı ve verimli işlemler sağlar. TensorRT modelleri; katman birleştirme, hassasiyet kalibrasyonu (INT8 ve FP16), dinamik tensör bellek yönetimi ve çekirdek otomatik ayarı gibi teknikleri içeren TensorRT optimizasyonundan geçer. Derin öğrenme modellerini TensorRT biçimine dönüştürmek, geliştiricilerin NVIDIA GPU'larının potansiyelinden tam olarak yararlanmasını sağlar.

TensorRT; TensorFlow, PyTorch ve ONNX gibi çeşitli model biçimleriyle uyumluluğuyla bilinir ve geliştiricilere farklı çerçevelerdeki modelleri entegre edip 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ı sağlar.

TensorRT motorları donanıma ve çalışma ortamına özeldir

TensorRT, motoru derleme GPU'sunda profiller ve ayarlar. Dağıtım GPU'sunun mimarisi için derleme yap ve TensorRT/CUDA çalışma ortamını eşleştir; .engine dosyasını taşınabilir bir model biçimi olarak değerlendirme. Uç dağıtımı için Ultralytics Platform, sekiz Jetson hedef seçeneği sunar ve her biri için fiziksel derleme ve doğrulama durumunu belgeler; alternatif olarak hedef cihazda yerel olarak dışa aktarabilirsin.

TensorRT Modellerinin Temel Özellikleri#

TensorRT modelleri, yüksek hızlı derin öğrenme çıkarımındaki verimlilik ve etkililiklerine katkıda bulunan çeşitli temel özellikler sunar:

  • Hassasiyet Kalibrasyonu: TensorRT, modellerin belirli doğruluk gereksinimlerine göre ince ayarını yapmaya olanak tanıyan hassasiyet kalibrasyonunu destekler. Buna, kabul edilebilir doğruluk düzeylerini korurken çıkarım hızını daha da artırabilen INT8 ve FP16 gibi düşük hassasiyetli biçimler de dahildir.

  • Katman Birleştirme: 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 hesaplama miktarını en aza indirerek hesaplama yükünü azaltır ve çıkarım hızını artırır.

TensorRT neural network layer fusion optimization

  • Dinamik Tensör Bellek Yönetimi: TensorRT, çıkarım sırasında tensör belleği kullanımını verimli biçimde yöneterek bellek yükünü azaltır ve bellek ayırmayı optimize eder. Böylece GPU belleği daha verimli kullanılır.

  • Otomatik Çekirdek Ayarı: TensorRT, modelin her katmanı için en iyi duruma getirilmiş GPU çekirdeğini seçmek üzere otomatik çekirdek ayarı uygular. Bu uyarlanabilir yaklaşım, modelin GPU'nun hesaplama gücünden tam olarak yararlanmasını sağlar.

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

YOLO26 modellerini TensorRT biçimine dışa aktarma koduna bakmadan önce, TensorRT modellerinin genellikle nerelerde kullanıldığını anlayalım.

TensorRT çeşitli dağıtım seçenekleri sunar ve her seçenek entegrasyon kolaylığı, performans optimizasyonu ve esneklik arasında farklı bir denge kurar:

  • TensorFlow İçinde Dağıtım: Bu yöntem TensorRT'yi TensorFlow ile entegre ederek optimize edilmiş modellerin tanıdık bir TensorFlow ortamında çalışmasını sağlar. TF-TRT desteklenen ve desteklenmeyen katmanların bir karışımını verimli biçimde işleyebildiğinden, bu yöntem bu tür modeller için yararlıdır.

NVIDIA TensorRT optimization workflow

  • Bağımsız TensorRT Çalışma Zamanı API'si: Ayrıntılı denetim sağlar ve performans açısından kritik uygulamalar için idealdir. Daha karmaşıktır ancak desteklenmeyen işleçler için özel uygulamalara olanak tanır.

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

Desteklenen Görevler#

TensorRT dışa aktarımı, Ultralytics'in yedi görevinin tümünü destekler. Anlamsal bölümleme ve derinlik tahmini yalnızca bu başlıklara sahip tek aile olan YOLO26 ile kullanılabilir.

GörevYOLOv8YOLO11YOLO26
Algılama✅✅✅
Segmentasyon✅✅✅
Anlamsal❌❌✅
Derinlik❌❌✅
Sınıflandırma✅✅✅
Poz✅✅✅
OBB✅✅✅

YOLO26 Modellerini TensorRT'ye Dışa Aktarma#

YOLO26 modellerini TensorRT biçimine dönüştürerek yürütme verimliliğini artırabilir ve performansı optimize edebilirsin.

Kurulum#

Gerekli paketi yüklemek için şu komutu çalıştır:

Kurulum
# Install the required package for YOLO26
pip install ultralytics

Kurulum sürecine ilişkin ayrıntılı talimatlar ve en iyi uygulamalar için YOLO26 Kurulum kılavuzumuza göz at. YOLO26 için gerekli paketleri yüklerken sorun yaşarsan çözüm ve ipuçları için Yaygın Sorunlar kılavuzumuza başvur.

Kullanım#

Kullanım yönergelerine geçmeden önce Ultralytics'in sunduğu YOLO26 model çeşitlerine göz at. Bu, proje gereksinimlerine en uygun modeli seçmene yardımcı olur.

TensorRT biçimi Dışa Aktar, Tahmin ve Doğrula modlarını destekler. Çıkarım ve doğrulama için NVIDIA GPU gerekir. Modelini dışa aktar, ardından çıkarım yapmak veya doğruluğunu doğrulamak için dışa aktarılan modeli yükle.

Dışa aktar
from ultralytics import YOLO

# YOLO26 modelini yükle
model = YOLO("yolo26n.pt")

# Modeli TensorRT biçimine aktar
model.export(format="engine")  # 'yolo26n.engine' oluşturur
Tahmin
from ultralytics import YOLO

# Dışa aktarılan TensorRT modelini yükle
model = YOLO("yolo26n.engine")

# Çıkarımı çalıştır
results = model("https://ultralytics.com/images/bus.jpg")
Doğrula
from ultralytics import YOLO

# Dışa aktarılan TensorRT modelini yükle
model = YOLO("yolo26n.engine")

# COCO8 veri kümesinde doğruluğu doğrula
metrics = model.val(data="coco8.yaml")

Dışa Aktarma Bağımsız Değişkenleri#

Bağımsız değişkenTürVarsayılanAçıklama
formatstr'engine'Dışa aktarılan modelin hedef biçimi; çeşitli dağıtım ortamlarıyla uyumluluğu tanımlar.
imgszint veya tuple640Model girişi için istenen görüntü boyutu. Kare görüntüler için bir tam sayı, belirli boyutlar içinse (height, width) demeti kullanılabilir.
quantizeint veya strNoneNiceleme hassasiyeti: 16 (FP16) veya 8 (INT8/PTQ; kalibrasyon için data/fraction gerekir); 32/ayarlanmamış değer FP32'dir. quantize=8 ile eğitilmiş bir kontrol noktası, kalibrasyon olmadan taşıdığı aralıklardan her zaman INT8 olarak dışa aktarılır. Kullanımdan kaldırılan half/int8 işaretlerinin yerini alır.
dynamicboolFalseDinamik giriş boyutlarına izin vererek farklı görüntü boyutlarını işleme esnekliğini artırır.
simplifyboolTrueModel grafiğini onnxslim ile sadeleştirerek performansı ve uyumluluğu artırabilir.
opsetintNoneAra ONNX grafiği için ONNX opset sürümünü belirtir. Ayarlanmazsa desteklenen en son sürüm kullanılır.
workspacefloat veya NoneNoneTensorRT optimizasyonları için maksimum çalışma alanı boyutunu GiB cinsinden ayarlar; bellek kullanımı ile performansı dengeler. TensorRT'nin cihazın maksimum kapasitesine kadar otomatik bellek ayırması için None kullan.
nmsbool, isteğe bağlıNoneHam çıktıyı (None, varsayılan), gömülü NMS'yi (True) veya NMS'siz başlığı (False) seç.
batchint1Dışa aktarılan modelin toplu çıkarım boyutunu veya predict kipinde eşzamanlı işleyeceği en fazla görüntü sayısını belirtir.
datastrNoneNiceleme için gerekli olan veri kümesi YAML dosyasının yolu; sınıflandırma için bunun yerine veri kümesi dizini veya yerleşik veri kümesi adı kullanılır. quantize=8 ile birlikte verilmezse Ultralytics, model görevi için varsayılan kalibrasyon veri kümesini seçer; quantize=8 ile eğitilmiş bir kontrol noktası için veri kümesi gerekmez.
fractionfloat, int veya list1.0Oran, görüntü sayısı veya [train, val, test] oranları/sayıları olarak kalibrasyon alt kümesi. İki öğeli listelerde test tam kalır; 0 ise onu atlar.
devicestrNoneDışa aktarma için kullanılacak cihazı belirtir: GPU (device=0), NVIDIA Jetson için DLA (device=dla:0 veya device=dla:1).
İpucu

TensorRT'ye dışa aktarırken CUDA destekli bir GPU kullandığından emin ol.

JetPack ve DLA Uyumluluğu

TensorRT 11.2.1, Thor dahil JetPack'i desteklemez; JetPack sürümünün desteklediği TensorRT 10.x çalışma ortamını kullan. device=dla:0 veya device=dla:1 için NVIDIA, DLA desteği sunan son sürümün TensorRT 10.7 olduğunu belirtiyor. TensorRT 11.0, 11.1 ve 11.2 DLA'yı desteklemez.

Dışa aktarma süreci hakkında daha fazla bilgi için Ultralytics dışa aktarma belgeleri sayfasını ziyaret et.

INT8 Niceleme ile TensorRT'ye Dışa Aktarma#

Ultralytics YOLO modellerini TensorRT kullanarak INT8 hassasiyetinde dışa aktarmak, eğitim sonrası niceleme (PTQ) uygular. TensorRT, PTQ için kalibrasyon kullanır; bu işlem, YOLO modeli temsili giriş verileri üzerinde çıkarım yaparken her etkinleştirme tensöründeki etkinleştirme dağılımını ölçer ve ardından bu dağılımı her tensör için ölçek değerlerini tahmin etmekte kullanır. Niceleme adayı olan her etkinleştirme tensörünün kalibrasyon süreciyle çıkarılan bir ölçeği bulunur. Niceleme farkındalıklı eğitim aracılığıyla quantize=8 ile ince ayar yapılmış bir kontrol noktası, INT8 aralıklarını zaten içerir; bu nedenle dışa aktarma sırasında bu aralıklar kullanılır ve kalibrasyon atlanır.

TensorRT 11'de niceleme

TensorRT 11, örtük nicelemeyi ve IInt8Calibrator arayüzünü kaldırdı. TensorRT 11 ve sonraki sürümlerde Ultralytics, güçlü tür denetimine sahip bir motor derlemeden önce ONNX grafiğine Q/DQ düğümleri ekleyen NVIDIA ModelOpt açık nicelemesiyle INT8 nicelemesi yapar; FP16 ise ModelOpt AutoCast karma hassasiyet dönüşümüyle uygulanır. quantize=8, quantize=16 ve data bağımsız değişkenleri aynı şekilde çalışır; ModelOpt ilk kullanımda otomatik olarak yüklenir. TensorRT 7-10'da bunun yerine aşağıda açıklanan eski kalibratör kullanılır.

Örtük olarak niceleme yapılmış ağları işlerken TensorRT, katman yürütme süresini optimize etmek için INT8'i fırsatçı biçimde kullanır. Bir katman INT8'de daha hızlı çalışıyorsa ve giriş ile çıkış verilerine niceleme ölçekleri atanmışsa o katmana INT8 hassasiyetinde bir çekirdek atanır; aksi durumda TensorRT, katman için daha hızlı yürütme süresi sağlayana göre FP32 veya FP16 hassasiyetinde bir çekirdek seçer.

İpucu

INT8 hassasiyetinde dışa aktarım yaparken, TensorRT model ağırlıklarını dağıtımda kullanacak cihazın aynısını kullandığından kritik önem taşır; çünkü kalibrasyon sonuçları cihazlar arasında farklılık gösterebilir.

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

Ultralytics YOLO modelini dışa aktarırken sağlanan bağımsız değişkenler, dışa aktarılan modelin performansını büyük ölçüde etkiler. Kullanılabilir cihaz kaynaklarına göre seçilmeleri gerekir; ancak varsayılan bağımsız değişkenler çoğu Ampere (veya daha yeni) NVIDIA ayrık GPU'sunda işe yaramalıdır. GPU dışa aktarımlarında kullanılan kalibrasyon algoritması "MINMAX_CALIBRATION", NVIDIA Jetson'daki DLA dışa aktarımlarında ise "ENTROPY_CALIBRATION_2" olur. Kullanılabilir seçenekler hakkında daha fazla ayrıntıyı TensorRT Geliştirici Kılavuzu'nda bulabilirsin. Ultralytics testleri, GPU dışa aktarımları için "MINMAX_CALIBRATION" seçeneğinin en iyi olduğunu gösterdi; algoritma dışa aktarma cihazına göre otomatik seçilir.

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

    • workspace değerini kalibrasyon gereksinimlerine ve kullanılabilir kaynaklara göre ayarla. Daha büyük bir workspace kalibrasyon süresini artırabilir ancak TensorRT'nin daha geniş bir optimizasyon taktikleri yelpazesini keşfetmesini sağlayarak model performansını ve doğruluğunu artırabilir. Buna karşılık daha küçük bir workspace kalibrasyon süresini kısaltabilir ancak optimizasyon stratejilerini sınırlayarak niceleme uygulanmış modelin kalitesini etkileyebilir.

    • Varsayılan değer workspace=None şeklindedir ve TensorRT'nin belleği otomatik ayırmasını sağlar. Elle yapılandırıldığında kalibrasyon başarısız olursa (uyarı vermeden kapanırsa) bu değerin artırılması gerekebilir.

    • workspace değeri cihazda kullanılabilir bellekten büyükse TensorRT, dışa aktarma sırasında UNSUPPORTED_STATE bildirir; bu, workspace değerinin düşürülmesi veya None olarak ayarlanması gerektiği anlamına gelir.

    • workspace en yüksek değere ayarlanmışsa ve kalibrasyon başarısız oluyor ya da çöküyorsa, otomatik bellek ayırma için None kullanmayı veya bellek gereksinimlerini azaltmak için imgsz ve batch değerlerini düşürmeyi dene.

    • Unutma INT8 kalibrasyonu her cihaza özeldir; kalibrasyon için "üst düzey" bir GPU ödünç almak, çıkarım başka bir cihazda çalıştırıldığında düşük performansa yol açabilir.

  • batch : Çıkarımda kullanılacak maksimum toplu iş boyutudur. dynamic=True ile çıkarım sırasında daha küçük gruplar kullanılabilir ancak çıkarım, belirtilenden daha büyük grupları kabul etmez.

Not

Küçük gruplar kullanmak, INT8 kalibrasyonu sırasında hatalı ölçeklendirmeye yol açabilir. Bunun nedeni, sürecin gördüğü verilere göre ayarlanmasıdır. Küçük gruplar tüm değer aralığını kapsamayabilir ve bu da son kalibrasyonda sorunlara yol açabilir. Daha büyük bir toplu iş boyutu kullanmak, kalibrasyon sonuçlarının daha temsili olmasını sağlar.

NVIDIA'nın deneyleri, INT8 niceleme kalibrasyonu için modelinin verilerini temsil eden en az 500 kalibrasyon görüntüsü kullanılmasını öneriyor. Bu bir kılavuzdur, kesin bir gereklilik değildir ve veri kümen için iyi performans elde etmek üzere ne gerektiğini denemen gerekir. TensorRT ile INT8 kalibrasyonu için kalibrasyon verileri gerektiğinden, quantize=8 değerinde TensorRT'ye dışa aktarırken quantize=8 ile (eğitim sonrası niceleme) eğitilmemiş bir kontrol noktası için data bağımsız değişkenini kullandığından emin ol; kalibrasyon için doğrulama görüntülerini kullanacak olan data="my_dataset.yaml" değerini kullan. quantize=8 ile eğitilmiş bir kontrol noktası kalibrasyonu atlar; bu nedenle bu kontrol noktası için data değerini belirtme. INT8 niceleme ile TensorRT'ye dışa aktarırken data için değer verilmezse hata vermek yerine model görevine dayalı "küçük" örnek veri kümelerinden biri kullanılır.

Örnek
from ultralytics import YOLO

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

# Dışa aktarılan TensorRT INT8 modelini yükle
model = YOLO("yolo26n.engine", task="detect")

# Çıkarımı çalıştır
result = model.predict("https://ultralytics.com/images/bus.jpg")
  1. Dinamik eksenlerle dışa aktarır; giriş boyutları 32 pikselden dışa aktarma imgsz değerinin iki katına kadar olabilir. Açıkça ayarlanmadığı sürece dynamic, False olarak kalır. Daha fazla bilgi için dışa aktarma bağımsız değişkenlerine bak.
  2. Dışa aktarılan model ve INT8 kalibrasyonu için maksimum toplu iş boyutunu 8 olarak ayarlar.
  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 özellikle doğrulamada kullanılan görüntüler olmak üzere COCO veri kümesini kullanır (toplam 5.000 görüntü).

YOLO'yu TensorRT INT8 ile kullanmanın avantajları#

  • Model boyutunun küçülmesi: FP32'den INT8'e kuantizasyon, model boyutunu 4 kat azaltabilir (diskte veya bellekte); böylece indirme süreleri kısalır, depolama gereksinimleri azalır ve model dağıtılırken bellek kullanımı düşer.

  • Daha düşük güç tüketimi: INT8 olarak dışa aktarılan YOLO modellerinde düşük hassasiyetli işlemler, FP32 modellere kıyasla daha az güç tüketebilir; bu fark özellikle pille çalışan cihazlarda önemlidir.

  • Çıkarım hızlarının artması: TensorRT modeli hedef donanım için optimize eder; bu da GPU'larda, gömülü cihazlarda ve hızlandırıcılarda daha yüksek çıkarım hızları sağlayabilir.

Çıkarım hızları hakkında not

TensorRT INT8'e dışa aktarılan bir modelle yapılan ilk birkaç çıkarım çağrısında ön işleme, çıkarım ve/veya son işleme sürelerinin normalden uzun olması beklenebilir. Bu durum, çıkarım sırasında imgsz değiştirilirken de ortaya çıkabilir; özellikle imgsz, dışa aktarma sırasında belirtilen değerle aynı değilse (dışa aktarma imgsz, TensorRT "optimal" profili olarak ayarlanır).

YOLO'yu TensorRT INT8 ile kullanmanın dezavantajları#

  • Değerlendirme metriklerinde düşüş: Daha düşük hassasiyet kullanmak, mAP, Precision, Recall veya model performansını değerlendirmek için kullanılan diğer metriklerden herhangi birinin muhtemelen bir miktar kötüleşmesi anlamına gelir. Skor kalibrasyonunu korumak için sigmoid katmanları daha yüksek hassasiyette tutulur; ancak INT8 güven değerlerini yine de değiştirebilir. Bu nedenle çalışma eşiğini INT8 modelinin kendi F1 eğrisinden seç. Çeşitli cihazlardan alınan küçük bir örnek üzerinde INT8 ile dışa aktarım yaparken mAP50 ve mAP50-95 farklarını karşılaştırmak için Performans sonuçları bölümüne bak.

  • Geliştirme süresinin artması: Veri kümesi ve cihaz için INT8 kalibrasyonunda "optimal" ayarları bulmak, önemli miktarda test gerektirebilir.

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

Ultralytics YOLO TensorRT dışa aktarım performansı#

NVIDIA A100#

Performans

Ubuntu 22.04.3 LTS, python 3.10.12, ultralytics==8.2.4, tensorrt==8.6.1.post1 ile test edildi

80 önceden eğitilmiş sınıf içeren ve COCO üzerinde eğitilmiş bu modellerin kullanım örnekleri için Algılama Belgeleri sayfasına bak.

Not

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

KesinlikDeğerlendirme testiortalama
(ms)
min | maks
(ms)
mAPval
50(B)
mAPval
50-95(B)
batchboyut
(piksel)
FP32Tahmin0.520.51 | 0.568640
FP32COCOval0.520.520.371640
FP16Tahmin0.340.34 | 0.418640
FP16COCOval0.330.520.371640
INT8Tahmin0.280.27 | 0.318640
INT8COCOval0.290.470.331640

Tüketici GPU'ları#

Nesne Tespiti Performansı (COCO)

Windows 10.0.19045, python 3.10.9, ultralytics==8.2.4, tensorrt==10.0.0b6 ile test edildi

Not

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

KesinlikDeğerlendirme testiortalama
(ms)
min | maks
(ms)
mAPval
50(B)
mAPval
50-95(B)
batchboyut
(piksel)
FP32Tahmin1.060.75 | 1.888640
FP32COCOval1.370.520.371640
FP16Tahmin0.620.75 | 1.138640
FP16COCOval0.850.520.371640
INT8Tahmin0.520.38 | 1.008640
INT8COCOval0.740.470.331640

Gömülü cihazlar#

Nesne Tespiti Performansı (COCO)

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

Not

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

KesinlikDeğerlendirme testiortalama
(ms)
min | maks
(ms)
mAPval
50(B)
mAPval
50-95(B)
batchboyut
(piksel)
FP32Tahmin6.116.10 | 6.298640
FP32COCOval6.170.520.371640
FP16Tahmin3.183.18 | 3.208640
FP16COCOval3.190.520.371640
INT8Tahmin2.302.29 | 2.358640
INT8COCOval2.320.460.321640
Bilgi

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

Bilgi

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

Değerlendirme yöntemleri#

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

Dışa aktarma yapılandırmaları

Dışa aktarma yapılandırması bağımsız değişkenleriyle ilgili ayrıntılar için dışa aktarma moduna bak.

from ultralytics import YOLO

model = YOLO("yolo26n.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, quantize=16)

# Uygun model görevi için kalibrasyon `data` ile TensorRT INT8 (yani COCO, ImageNet veya DOTAv1)
out = model.export(
    format="engine", imgsz=640, dynamic=True, verbose=False, batch=8, workspace=2, quantize=8, data="coco8.yaml"
)
Tahmin döngüsü

Daha fazla bilgi için tahmin moduna bak.

import cv2

from ultralytics import YOLO

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

for _ in range(100):
    result = model.predict(
        [img] * 8,  # aynı görüntüden batch=8
        verbose=False,
        device="cuda",
    )
Doğrulama yapılandırması

Doğrulama yapılandırması bağımsız değişkenleri hakkında daha fazla bilgi edinmek için val moduna bak.

from ultralytics import YOLO

model = YOLO("yolo26n.engine")
results = model.val(
    data="data.yaml",  # Uygun model görevi için COCO, ImageNet veya DOTAv1
    batch=1,
    imgsz=640,
    verbose=False,
    device="cuda",
)

Dışa Aktarılan YOLO26 TensorRT Modellerini Dağıtma#

Ultralytics YOLO26 modellerini TensorRT biçimine başarıyla dışa aktardığına göre artık modelleri dağıtmaya hazırsın. TensorRT modellerini çeşitli ortamlarda dağıtma konusunda ayrıntılı talimatlar için şu kaynaklara göz at:

Özet#

Bu kılavuzda Ultralytics YOLO26 modellerini NVIDIA'nın TensorRT model biçimine dönüştürmeye odaklandık. Bu dönüştürme adımı, YOLO26 modellerinin verimliliğini ve hızını artırmak, böylece modelleri daha etkili ve çeşitli dağıtım ortamlarına daha uygun hâle getirmek için kritik öneme sahiptir.

Kullanım ayrıntıları hakkında daha fazla bilgi için TensorRT resmî belgelerine göz at.

Diğer Ultralytics YOLO26 entegrasyonlarını merak ediyorsan entegrasyon kılavuzu sayfamız, bilgilendirici kaynaklardan ve içgörülerden oluşan kapsamlı bir seçki sunuyor.

Sık Sorulan Sorular#

  • Ultralytics YOLO26 modellerini optimize edilmiş NVIDIA GPU çıkarımı için TensorRT biçimine dönüştürmek üzere şu adımları izle:

    1. Gerekli paketi yükle:

      pip install ultralytics
    2. YOLO26 modelini dışa aktar:

      from ultralytics import YOLO
      
      model = YOLO("yolo26n.pt")
      model.export(format="engine")  # 'yolo26n.engine' oluşturur
      
      # Çıkarımı çalıştır
      model = YOLO("yolo26n.engine")
      results = model("https://ultralytics.com/images/bus.jpg")

    Daha fazla ayrıntı için YOLO26 Kurulum kılavuzuna ve dışa aktarma belgelerine bak.

  • YOLO26 modellerini optimize etmek için TensorRT kullanmak çeşitli faydalar sağlar:

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

    Daha fazla bilgi edinmek için NVIDIA'nın resmî TensorRT belgelerini ve TensorRT'ye dair ayrıntılı incelememizi keşfet.

  • Evet, YOLO26 modellerini INT8 kuantizasyonuyla TensorRT kullanarak dışa aktarabilirsin. Bu işlem, kontrol noktası quantize=8 (kuantizasyon farkındalıklı eğitim) ile eğitilmediyse eğitim sonrası kuantizasyon (PTQ) ve kalibrasyon içerir. Kontrol noktası bu yöntemle eğitildiyse, kontrol noktasındaki aralıklar kalibrasyon yapılmadan dışa aktarılır:

    1. INT8 ile dışa aktar:

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

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

    Daha fazla ayrıntı için TensorRT'yi INT8 kuantizasyonuyla dışa aktarma bölümüne bak.

  • YOLO26 TensorRT modellerini NVIDIA Triton Inference Server'da dağıtmak için şu kaynaklardan yararlanabilirsin:

    Bu kılavuzlar, YOLO26 modellerini çeşitli dağıtım ortamlarına verimli şekilde entegre etmene yardımcı olur.

  • TensorRT ile elde edilen performans iyileştirmeleri, kullanılan modele ve donanıma göre değişebilir. Her hassasiyet düzeyinin göreli kazanımlarını gösteren, YOLOv8n ile ölçülmüş tipik kıyaslama sonuçları şöyle:

    • 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 biraz düşerken hız önemli ölçüde artar.
    • 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ına ilişkin ayrıntılı performans kıyaslamalarını performans bölümünde bulabilirsin.

    TensorRT performansına ilişkin daha kapsamlı bilgiler için Ultralytics belgelerine ve performans analiz raporlarımıza bak.

Yorumlar