YOLO26 Modelleri için TensorRT Dışa Aktarma#
Bilgisayarlı görü modellerini yüksek performanslı ortamlarda dağıtmak, hız ve verimliliği en üst düzeye çıkaran bir format gerektirebilir. Bu, özellikle modelini NVIDIA GPU'larında dağıtırken geçerlidir.
TensorRT dışa aktarma formatını 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 işlemi için takip etmesi kolay adımlar sunar ve derin öğrenme projelerinde NVIDIA'nın gelişmiş teknolojisinden en iyi şekilde yararlanmana yardımcı olur.
TensorRT#
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 tespiti gibi gerçek zamanlı uygulamalar için oldukça uygundur.
Bu araç seti, derin öğrenme modellerini NVIDIA GPU'ları için optimize eder ve daha hızlı, daha verimli işlemler sağlar. 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 formatına dönüştürmek, geliştiricilerin NVIDIA GPU'larının potansiyelinden tam olarak yararlanmasını sağlar.
TensorRT; TensorFlow, PyTorch ve ONNX dahil olmak üzere çeşitli model formatlarıyla uyumluluğuyla bilinir ve geliştiricilere farklı çerçevelerdeki modelleri entegre etmek ve optimize etmek için esnek bir çözüm sunar. Bu çok yönlülük, farklı donanım ve yazılım ortamlarında verimli model dağıtımını mümkün kılar.
TensorRT, bir motoru oluşturulduğu GPU üzerinde profiller ve ayarlar. Dağıtım GPU'su mimarisi için derleme yap ve TensorRT/CUDA çalışma zamanını eşleştir; .engine dosyasını taşınabilir bir model formatı olarak değerlendirme. Uç dağıtımı için Ultralytics Platform, her biri için fiziksel derleme ve doğrulama durumu belgelenmiş sekiz Jetson hedef seçimi sunar veya hedef cihazda yerel olarak dışa aktarım yapabilirsin.
TensorRT Modellerinin Temel Özellikleri#
TensorRT modelleri, yüksek hızlı derin öğrenme çıkarımındaki verimliliklerine ve etkililiklerine katkıda bulunan çeşitli temel özellikler sunar:
-
Hassasiyet Kalibrasyonu: TensorRT, modellerin belirli doğruluk gereksinimleri için ince ayarlanmasına olanak tanıyan hassasiyet kalibrasyonunu destekler. Buna INT8 ve FP16 gibi azaltılmış hassasiyet formatları da dahildir; bu formatlar kabul edilebilir doğruluk düzeylerini korurken çıkarım hızını daha da artırabilir.
-
Katman Birleştirme: TensorRT optimizasyon süreci, bir sinir ağının birden fazla 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.
-
Dinamik Tensör Bellek Yönetimi: TensorRT, çıkarım sırasında tensör belleği kullanımını verimli bir şekilde yöneterek bellek yükünü azaltır ve bellek tahsisini optimize eder. Bunun sonucunda GPU belleği daha verimli kullanılır.
-
Otomatik Çekirdek Ayarlama: TensorRT, modelin her katmanı için en iyi duruma getirilmiş GPU çekirdeğini seçmek üzere otomatik çekirdek ayarlaması uygular. Bu uyarlamalı 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 formatına dışa aktarmak için kullanılan koda bakmadan önce TensorRT modellerinin normalde nerelerde 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ı biçimlerde 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 desteklenen ve desteklenmeyen katmanların bir karışımını verimli bir şekilde işleyebildiğinden, bu tür modeller için kullanışlıdır.
-
Bağımsız TensorRT Runtime API: Performans açısından kritik uygulamalar için ideal olan ayrıntılı denetim sunar. Daha karmaşıktır ancak desteklenmeyen operatörlerin özel olarak uygulanmasına olanak tanır.
-
NVIDIA Triton Inference Server: Çeşitli çerçevelerdeki modelleri destekleyen bir seçenektir. Özellikle bulut veya uç çıkarımı için uygundur ve eş zamanlı model çalıştırma ile model analizi gibi özellikler sunar.
Desteklenen Görevler#
TensorRT dışa aktarımı, yedi Ultralytics görevinin tamamını destekler. Anlamsal segmentasyon ve derinlik tahmini yalnızca bu başlıkları sunan tek aile olan YOLO26 ile kullanılabilir.
| Görev | YOLOv8 | YOLO11 | YOLO26 |
|---|---|---|---|
| Algılama | ✅ | ✅ | ✅ |
| Segmentasyon | ✅ | ✅ | ✅ |
| Semantik | ❌ | ❌ | ✅ |
| Derinlik | ❌ | ❌ | ✅ |
| Sınıflandırma | ✅ | ✅ | ✅ |
| Poz | ✅ | ✅ | ✅ |
| OBB | ✅ | ✅ | ✅ |
YOLO26 Modellerini TensorRT'ye Dışa Aktarma#
YOLO26 modellerini TensorRT formatına dönüştürerek yürütme verimliliğini artırabilir ve performansı optimize edebilirsin.
Kurulum#
Gerekli paketi yüklemek için şunu çalıştır:
# Install the required package for YOLO26
pip install ultralyticsYükleme süreciyle ilgili ayrıntılı talimatlar ve en iyi uygulamalar için YOLO26 Yükleme kılavuzumuza bak. YOLO26 için gerekli paketleri yüklerken herhangi bir sorunla karşılaşırsan çözümler ve ipuçları için Yaygın Sorunlar kılavuzumuza başvur.
Kullanım#
Kullanım talimatlarına geçmeden önce Ultralytics tarafından sunulan YOLO26 modellerine göz atmayı unutma. Bu, proje gereksinimlerin için en uygun modeli seçmene yardımcı olur.
TensorRT formatı 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.
from ultralytics import YOLO
# Load a YOLO26 model
model = YOLO("yolo26n.pt")
# Export the model to TensorRT format
model.export(format="engine") # creates 'yolo26n.engine'from ultralytics import YOLO
# Load the exported TensorRT model
model = YOLO("yolo26n.engine")
# Run inference
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Load the exported TensorRT model
model = YOLO("yolo26n.engine")
# Validate accuracy on the COCO8 dataset
metrics = model.val(data="coco8.yaml")Dışa Aktarma Bağımsız Değişkenleri#
| Bağımsız değişken | Tür | Varsayılan | Açıklama |
|---|---|---|---|
format | str | 'engine' | Dışa aktarılan model için hedef formatı belirtir ve çeşitli dağıtım ortamlarıyla uyumluluğu tanımlar. |
imgsz | int veya tuple | 640 | Model girdisi için istenen görüntü boyutu. Kare görüntüler için bir tam sayı veya belirli boyutlar için (height, width) tuple'ı olabilir. |
quantize | int veya str | None | Niceelik hassasiyeti: 16 (FP16) veya 8 (INT8/PTQ; data/fraction kalibrasyonu gerektirir); 32/belirtilmemişse FP32'dir. quantize=8 ile eğitilmiş bir kontrol noktası (checkpoint), kalibrasyona gerek duymadan, taşıdığı aralıklardan her zaman INT8 dışa aktarımı yapar. Kullanımdan kaldırılan half/int8 bayraklarının (flags) yerini alır. |
dynamic | bool | False | Dinamik giriş boyutlarına izin vererek farklı görüntü boyutlarının işlenmesinde esnekliği artırır. |
simplify | bool | True | onnxslim ile model grafiğini sadeleştirir; bu da performansı ve uyumluluğu potansiyel olarak artırabilir. |
opset | int | None | Ara ONNX grafiği için ONNX opset sürümünü belirtir. Ayarlanmazsa desteklenen en son sürüm kullanılır. |
workspace | float veya None | None | TensorRT optimizasyonları için GiB cinsinden maksimum çalışma alanı boyutunu belirler; bellek kullanımı ile performansı dengeler. TensorRT'nin cihazın maksimumuna kadar otomatik tahsis yapması için None kullan. |
nms | bool, isteğe bağlı | None | Ham çıktıyı (None, varsayılan), gömülü NMS'yi (True) veya NMS'siz kafayı (False) seç. |
batch | int | 1 | Dışa aktarma modelinin toplu çıkarım boyutunu veya dışa aktarılan modelin predict modunda eşzamanlı olarak işleyeceği maksimum görüntü sayısını belirtir. |
data | str | None | Niceelik için gerekli olan veri kümesi YAML dosyasına giden yol; sınıflandırma ise bunun yerine bir veri kümesi dizini veya yerleşik bir veri kümesi adı alır. quantize=8 ile belirtilmediğinde, Ultralytics model görevi için varsayılan kalibrasyon veri kümesini seçer; quantize=8 ile eğitilmiş bir kontrol noktası (checkpoint) buna ihtiyaç duymaz. |
fraction | float, int veya list | 1.0 | Oran, görüntü sayısı veya [train, val, test] oranları/sayıları olarak kalibrasyon alt kümesi. İki öğeli listelerde test tam bırakılırken 0 atlanır. |
device | str | None | Dışa aktarma cihazını belirtir: GPU (device=0), NVIDIA Jetson için DLA (device=dla:0 veya device=dla:1). |
TensorRT'ye dışa aktarırken CUDA destekli bir GPU kullandığından emin ol.
JetPack, TensorRT 11.2.1 sürümünü desteklemez; Thor dahildir ve JetPack sürümünün desteklediği TensorRT 10.x çalışma zamanını kullan. device=dla:0 veya device=dla:1 için NVIDIA, DLA desteğine sahip son sürüm olarak TensorRT 10.7 sürümünü tanımlar. TensorRT 11.0, 11.1 ve 11.2 sürümleri DLA desteği sunmaz.
Dışa aktarma süreci hakkında daha fazla ayrıntı için Ultralytics'in dışa aktarma dokümantasyonu sayfasını ziyaret et.
INT8 Niceleme ile TensorRT'ye Dışa Aktarma#
TensorRT ve INT8 hassasiyeti kullanarak Ultralytics YOLO modellerini dışa aktarmak, eğitim sonrası niceleme (PTQ) işlemini gerçekleştirir. TensorRT, eğitim sonrası niceleme (PTQ) için, YOLO modeli temsili girdi verileri üzerinde çıkarım (inference) gerçekleştirirken her bir aktivasyon tensöründeki aktivasyonların dağılımını ölçen kalibrasyonu kullanır ve ardından her bir tensör için ölçek değerlerini tahmin etmek üzere bu dağılımı kullanır. Niceleme adayı olan her aktivasyon tensörünün, kalibrasyon süreciyle çıkarılan ilişkili bir ölçeği vardır. quantize=8 ile niceleme bilincine sahip eğitim (quantization-aware training) üzerinden ince ayar (fine-tune) yapılmış bir kontrol noktası (checkpoint) halihazırda kendi INT8 aralıklarını taşır, bu nedenle bu kontrol noktasının dışa aktarımı bu aralıkları kullanır ve kalibrasyonu atlar.
TensorRT 11, örtük nicelemeyi ve IInt8Calibrator arayüzünü kaldırmıştır. TensorRT 11 ve daha yeni sürümlerde Ultralytics, güçlü tür denetimine sahip bir motor oluşturmadan önce ONNX grafiğine Q/DQ düğümleri ekleyen NVIDIA ModelOpt açık nicelemesiyle INT8 nicelemesi gerçekleştirir; 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 aşağıda açıklanan eski kalibratör kullanılır.
Örtük olarak niceleştirilmiş 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ışıyor ve veri girişleri ile çıkışlarında atanmış niceleme ölçeklerine sahipse, bu katmana INT8 hassasiyetinde bir çekirdek atanır; aksi takdirde TensorRT, söz konusu katman için daha hızlı yürütme süresi sağlayan seçeneğe göre çekirdek için FP32 veya FP16 hassasiyetini seçer.
Dağıtım sırasında TensorRT model ağırlıklarını kullanacak cihazın, INT8 hassasiyetiyle dışa aktarma işleminde de kullanılmasını sağlamak kritiktir; çünkü kalibrasyon sonuçları cihazlar arasında değişebilir.
INT8 Dışa Aktarımını Yapılandırma#
Bir Ultralytics YOLO modeli için dışa aktarma sırasında sağlanan bağımsız değişkenler, dışa aktarılan modelin performansını büyük ölçüde etkiler. Bununla birlikte bunların kullanılabilir cihaz kaynaklarına göre seçilmesi gerekir; varsayılan bağımsız değişkenler çoğu Ampere (veya daha yeni) NVIDIA ayrık GPU'sunda çalışmalıdır. Kullanılan kalibrasyon algoritması GPU dışa aktarımları için "MINMAX_CALIBRATION", NVIDIA Jetson üzerindeki DLA dışa aktarımları için ise "ENTROPY_CALIBRATION_2" olur. Kullanılabilir seçenekler hakkında daha fazla ayrıntıyı TensorRT Developer Guide'da okuyabilirsin. Ultralytics testleri, GPU dışa aktarımları için "MINMAX_CALIBRATION" seçeneğinin en iyi tercih olduğunu ortaya koymuştur ve algoritma dışa aktarma cihazına göre otomatik olarak seçilir.
-
workspace: Model ağırlıkları dönüştürülürken cihaz belleği tahsisinin boyutunu (GiB cinsinden) denetler.-
workspacedeğerini kalibrasyon gereksinimlerine ve kaynakların kullanılabilirliğine göre ayarla. Daha büyük birworkspacekalibrasyon süresini artırabilse de TensorRT'nin daha geniş bir optimizasyon taktikleri aralığını incelemesine olanak tanır ve model performansını ve doğruluğunu potansiyel olarak artırır. Buna karşılık daha küçük birworkspacekalibrasyon süresini azaltabilir ancak optimizasyon stratejilerini sınırlayarak niceleştirilmiş modelin kalitesini etkileyebilir. -
Varsayılan değer
workspace=None'dır; bu, TensorRT'nin belleği otomatik olarak tahsis etmesini sağlar. Manuel yapılandırmada, kalibrasyon çökerse (uyarı vermeden çıkarsa) bu değerin artırılması gerekebilir. -
workspacedeğeri cihazda kullanılabilir bellekten büyükse TensorRT dışa aktarma sırasındaUNSUPPORTED_STATEbildirir; bu daworkspacedeğerinin düşürülmesi veyaNoneolarak ayarlanması gerektiği anlamına gelir. -
workspacemaksimum değere ayarlanmışsa ve kalibrasyon başarısız olur veya çökerse otomatik tahsis içinNonekullanmayı ya da bellek gereksinimlerini azaltmak üzereimgszvebatchdeğerlerini düşürmeyi düşün. -
INT8 kalibrasyonunun her cihaza özgü olduğunu unutma; 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ım için kullanılacak maksimum batch boyutudur. Çıkarım sırasında daha küçük batch'ler kullanılabilir, ancak çıkarım belirtilen değerden daha büyük batch'leri kabul etmez.
Küçük batch'ler kullanmak, INT8 kalibrasyonu sırasında hatalı ölçeklemeye yol açabilir. Bunun nedeni, işlemin gördüğü verilere göre ayarlanmasıdır. Küçük batch'ler değerlerin tamamını kapsamayabilir ve bu da son kalibrasyonda sorunlara yol açabilir. Daha büyük bir batch boyutu kullanmak, daha temsili kalibrasyon sonuçlarının elde edilmesine yardımcı olur.
NVIDIA tarafından yapılan deneyler, INT8 niceleme kalibrasyonu ile modelinize ait verileri temsil eden en az 500 kalibrasyon görüntüsü kullanmanızı önermelerine yol açmıştır. Bu bir kılavuz ilkedir ve kesin bir gereklilik değildir, veri kümeniz için iyi bir performans elde etmek amacıyla neyin gerekli olduğu konusunda deney yapmanız gerekecektir. Kalibrasyon verileri TensorRT ile INT8 kalibrasyonu için gerekli olduğundan, TensorRT için quantize=8 konumunda quantize=8 (eğitim sonrası niceleme) ile eğitilmemiş bir kontrol noktası (checkpoint) dışa aktarılırken data argümanını kullandığınızdan emin olun ve kalibrasyon yapmak için doğrulama görüntülerinden yararlanacak olan data="my_dataset.yaml" argümanını kullanın. quantize=8 ile eğitilmiş bir kontrol noktası (checkpoint) kalibrasyonu atlar, bu nedenle bu kontrol noktası için data argümanını atlayın. INT8 niceleme ile TensorRT'ye dışa aktarımda data için hiçbir değer iletilmediğinde, bir hata fırlatmak yerine model görevine dayalı "küçük" örnek veri kümelerinden biri varsayılan olarak kullanılacaktır.
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)!
)
# Load the exported TensorRT INT8 model
model = YOLO("yolo26n.engine", task="detect")
# Run inference
result = model.predict("https://ultralytics.com/images/bus.jpg")- Dinamik eksenlerle dışa aktarımlar; açıkça ayarlanmadığı sürece
dynamic,Falseolarak kalır. Ek bilgi için dışa aktarma argümanlarına bakın. - Dışa aktarılan model ve INT8 kalibrasyonu için maksimum batch boyutunu 8 olarak ayarlar.
- Dönüştürme işlemi için cihazın tamamını tahsis etmek yerine 4 GiB bellek tahsis eder.
- Kalibrasyon için COCO veri kümesini, özellikle doğrulama için kullanılan görüntüleri (toplam 5.000) kullanır.
Kalibrasyon Önbelleği
TensorRT, aynı verileri kullanan gelecekteki model ağırlıklarının dışa aktarımını hızlandırmak için yeniden kullanılabilecek bir kalibrasyon .cache dosyası oluşturur; ancak veriler büyük ölçüde farklıysa veya batch değeri ciddi ölçüde değiştirilirse bu durum düşük kalibrasyona yol açabilir. Bu koşullarda mevcut .cache yeniden adlandırılmalı ve farklı bir dizine taşınmalı ya da tamamen silinmelidir.
YOLO'yu TensorRT INT8 ile Kullanmanın Avantajları#
-
Azaltılmış model boyutu: FP32'den INT8'e niceleme, model boyutunu diskte veya bellekte 4 kat azaltabilir. Bu da daha hızlı indirme süreleri, daha düşük depolama gereksinimleri ve model dağıtılırken daha küçük bellek ayak izi sağlar.
-
Daha düşük güç tüketimi: INT8 ile dışa aktarılan YOLO modellerindeki azaltılmış hassasiyetli işlemler, özellikle pille çalışan cihazlarda FP32 modellere kıyasla daha az güç tüketebilir.
-
Geliştirilmiş çıkarım hızları: TensorRT modeli hedef donanım için optimize eder ve bu da GPU'larda, gömülü cihazlarda ve hızlandırıcılarda potansiyel olarak daha yüksek çıkarım hızları sağlar.
Çı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ştirildiğinde de oluşabilir; özellikle imgsz, dışa aktarma sırasında belirtilenle 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,Recallveya model performansını değerlendirmek için kullanılan diğer metriklerin bir miktar daha kötü olabileceği anlamına gelir. Sigmoid katmanları skor kalibrasyonunu korumak için daha yüksek hassasiyette tutulur; ancak INT8 yine de güven değerlerini değiştirebilir. Bu nedenle çalışma eşiğini INT8 modelinin kendi F1 eğrisinden seç. INT8 ile dışa aktarırken çeşitli cihazlardan alınan küçük örneklerdemAP50vemAP50-95farklarını karşılaştırmak için Performans sonuçları bölümüne bak. -
Artan geliştirme süreleri: Veri kümesi ve cihaz için INT8 kalibrasyonundaki "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ı daha az taşınabilir hale gelir.
Ultralytics YOLO TensorRT Dışa Aktarma Performansı#
NVIDIA A100#
Ubuntu 22.04.3 LTS, python 3.10.12, ultralytics==8.2.4, tensorrt==8.6.1.post1 ile test edilmiştir
80 önceden eğitilmiş sınıf içeren COCO üzerinde eğitilmiş bu modellerle ilgili kullanım örnekleri için Algılama Belgeleri sayfasına bak.
Her test için ö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
| Precision | Değerlendirme testi | ortalama (ms) | min | maks. (ms) | mAPval 50(B) | mAPval 50-95(B) | batch | boyut (piksel) |
|---|---|---|---|---|---|---|---|
| FP32 | Tahmin | 0.52 | 0.51 | 0.56 | 8 | 640 | ||
| FP32 | COCOval | 0.52 | 0.52 | 0.37 | 1 | 640 | |
| FP16 | Tahmin | 0.34 | 0.34 | 0.41 | 8 | 640 | ||
| FP16 | COCOval | 0.33 | 0.52 | 0.37 | 1 | 640 | |
| INT8 | Tahmin | 0.28 | 0.27 | 0.31 | 8 | 640 | ||
| INT8 | COCOval | 0.29 | 0.47 | 0.33 | 1 | 640 |
Tüketici GPU'ları#
Windows 10.0.19045, python 3.10.9, ultralytics==8.2.4, tensorrt==10.0.0b6 ile test edilmiştir
Her test için ö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
| Precision | Değerlendirme testi | ortalama (ms) | min | maks. (ms) | mAPval 50(B) | mAPval 50-95(B) | batch | boyut (piksel) |
|---|---|---|---|---|---|---|---|
| FP32 | Tahmin | 1.06 | 0.75 | 1.88 | 8 | 640 | ||
| FP32 | COCOval | 1.37 | 0.52 | 0.37 | 1 | 640 | |
| FP16 | Tahmin | 0.62 | 0.75 | 1.13 | 8 | 640 | ||
| FP16 | COCOval | 0.85 | 0.52 | 0.37 | 1 | 640 | |
| INT8 | Tahmin | 0.52 | 0.38 | 1.00 | 8 | 640 | ||
| INT8 | COCOval | 0.74 | 0.47 | 0.33 | 1 | 640 |
Gömülü Cihazlar#
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 edilmiştir
Her test için ö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
| Precision | Değerlendirme testi | ortalama (ms) | min | maks. (ms) | mAPval 50(B) | mAPval 50-95(B) | batch | boyut (piksel) |
|---|---|---|---|---|---|---|---|
| FP32 | Tahmin | 6.11 | 6.10 | 6.29 | 8 | 640 | ||
| FP32 | COCOval | 6.17 | 0.52 | 0.37 | 1 | 640 | |
| FP16 | Tahmin | 3.18 | 3.18 | 3.20 | 8 | 640 | ||
| FP16 | COCOval | 3.19 | 0.52 | 0.37 | 1 | 640 | |
| INT8 | Tahmin | 2.30 | 2.29 | 2.35 | 8 | 640 | ||
| INT8 | COCOval | 2.32 | 0.46 | 0.32 | 1 | 640 |
Kurulum ve yapılandırma hakkında daha fazla bilgi edinmek için NVIDIA Jetson'da Ultralytics YOLO ile ilgili hızlı başlangıç kılavuzumuza bak.
Kurulum ve yapılandırma hakkında daha fazla bilgi edinmek için NVIDIA DGX Spark'ta Ultralytics YOLO ile ilgili 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şkenleri hakkında 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)
# 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, 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, # batch=8 of the same image
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", # COCO, ImageNet, or DOTAv1 for appropriate model task
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ıktan sonra artık bunları dağıtmaya hazırsın. TensorRT modellerini çeşitli ortamlarda dağıtmayla ilgili ayrıntılı talimatlar için aşağıdaki kaynaklara göz at:
-
Ultralytics'i Triton Server ile Dağıtma: NVIDIA'nın Triton Inference (eski adıyla TensorRT Inference) Server'ını özellikle Ultralytics YOLO modelleriyle kullanmaya yönelik kılavuzumuz.
-
NVIDIA TensorRT ile Derin Sinir Ağlarını Dağıtma: Bu makale, derin sinir ağlarını GPU tabanlı dağıtım platformlarında verimli bir şekilde dağıtmak için NVIDIA TensorRT'nin nasıl kullanılacağını açıklar.
-
NVIDIA Tabanlı Bilgisayarlar için Uçtan Uca Yapay Zekâ: NVIDIA TensorRT Dağıtımı: Bu blog yazısı, NVIDIA tabanlı bilgisayarlarda yapay zekâ modellerini optimize etmek ve dağıtmak için NVIDIA TensorRT'nin kullanımını açıklar.
-
NVIDIA TensorRT için GitHub Deposu: Bu, NVIDIA TensorRT için kaynak kodunu ve belgeleri içeren resmi GitHub deposudur.
Ö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ırarak onları çeşitli dağıtım ortamlarında daha etkili ve 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.
Ek Ultralytics YOLO26 entegrasyonlarını merak ediyorsan entegrasyon kılavuzu sayfamız, kapsamlı ve bilgilendirici kaynaklar ile içgörüler sunar.
SSS#
Optimize edilmiş NVIDIA GPU çıkarımı için Ultralytics YOLO26 modellerini TensorRT biçimine dönüştürmek üzere şu adımları izle:
-
Gerekli paketi yükle:
pip install ultralytics -
YOLO26 modelini dışa aktar:
from ultralytics import YOLO model = YOLO("yolo26n.pt") model.export(format="engine") # creates 'yolo26n.engine' # Run inference model = YOLO("yolo26n.engine") results = model("https://ultralytics.com/images/bus.jpg")
Daha fazla ayrıntı için YOLO26 Kurulum kılavuzunu ve dışa aktarma belgelerini ziyaret et.
-
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 kalibrasyonunu (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 çok katmanı tek işlemlerde birleştirerek hesaplama karmaşıklığını azaltır.
- Çekirdek Otomatik Ayarlama: Her model katmanı için optimize edilmiş GPU çekirdeklerini otomatik olarak seçerek maksimum performans sağlar.
Daha fazla bilgi edinmek için NVIDIA'nın resmî TensorRT belgelerini ve ayrıntılı TensorRT genel bakışımızı incele.
Evet, YOLO26 modellerini INT8 niceleme ile TensorRT kullanarak dışa aktarabilirsiniz. Bu süreç, kontrol noktası (checkpoint)
quantize=8(niceleme bilincine sahip eğitim) ile eğitilmemişse eğitim sonrası niceleme (PTQ) ve kalibrasyonu içerir; bu durumda kontrol noktasının taşıdığı aralıklar kalibrasyon olmadan dışa aktarılır:-
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") -
Çı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 INT8 niceleme ile TensorRT dışa aktarma bölümüne başvur.
-
YOLO26 TensorRT modellerini NVIDIA Triton Inference Server üzerinde dağıtmak için aşağıdaki kaynakları kullanabilirsin:
- Ultralytics YOLO26'yı Triton Server ile Dağıtma: Triton Inference Server'ı kurma ve kullanma konusunda adım adım rehberlik.
- NVIDIA TensorRT ile Derin Sinir Ağlarını Dağıtma: Ayrıntılı dağıtım seçenekleri ve yapılandırmaları için derin öğrenme modellerini TensorRT ile dağıtmaya yönelik NVIDIA kılavuzu.
Bu kılavuzlar, YOLO26 modellerini çeşitli dağıtım ortamlarına verimli bir şekilde entegre etmene yardımcı olur.
TensorRT ile elde edilen performans iyileştirmeleri kullanılan donanıma göre değişebilir. İşte bazı tipik karşılaştırma sonuçları:
-
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 hassasiyetiyle mAP'de hafif bir düşüş, ancak hızda önemli bir iyileşme görülür.
-
Tüketici GPU'ları (ör. 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 karşılaştırmaları performans bölümünde bulunabilir.
TensorRT performansı hakkında daha kapsamlı bilgiler için Ultralytics belgelerine ve performans analiz raporlarımıza başvur.
-