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 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, 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.
-
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.
-
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örev | YOLOv8 | YOLO11 | YOLO26 |
|---|---|---|---|
| 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:
# Install the required package for YOLO26
pip install ultralyticsKurulum 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.
from ultralytics import YOLO
# YOLO26 modelini yükle
model = YOLO("yolo26n.pt")
# Modeli TensorRT biçimine aktar
model.export(format="engine") # 'yolo26n.engine' oluştururfrom 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")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şken | Tür | Varsayılan | Açıklama |
|---|---|---|---|
format | str | 'engine' | Dışa aktarılan modelin hedef biçimi; çeşitli dağıtım ortamlarıyla uyumluluğu tanımlar. |
imgsz | int veya tuple | 640 | Model 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. |
quantize | int veya str | None | Niceleme 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. |
dynamic | bool | False | Dinamik giriş boyutlarına izin vererek farklı görüntü boyutlarını işleme esnekliğini artırır. |
simplify | bool | True | Model grafiğini onnxslim ile sadeleştirerek performansı ve uyumluluğu 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 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. |
nms | bool, isteğe bağlı | None | Ham çıktıyı (None, varsayılan), gömülü NMS'yi (True) veya NMS'siz başlığı (False) seç. |
batch | int | 1 | Dış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. |
data | str | None | Niceleme 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. |
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 kalır; 0 ise onu atlar. |
device | str | None | Dışa aktarma için kullanılacak cihazı 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.
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, ö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.
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.-
workspacedeğerini kalibrasyon gereksinimlerine ve kullanılabilir kaynaklara göre ayarla. Daha büyük birworkspacekalibrasyon 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 birworkspacekalibrasyon 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. -
workspacedeğeri cihazda kullanılabilir bellekten büyükse TensorRT, dışa aktarma sırasındaUNSUPPORTED_STATEbildirir; bu,workspacedeğerinin düşürülmesi veyaNoneolarak ayarlanması gerektiği anlamına gelir. -
workspaceen yüksek değere ayarlanmışsa ve kalibrasyon başarısız oluyor ya da çöküyorsa, otomatik bellek ayırma içinNonekullanmayı veya bellek gereksinimlerini azaltmak içinimgszvebatchdeğ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=Trueile çıkarım sırasında daha küçük gruplar kullanılabilir ancak çıkarım, belirtilenden daha büyük grupları kabul etmez.
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.
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")- Dinamik eksenlerle dışa aktarır; giriş boyutları 32 pikselden dışa aktarma
imgszdeğerinin iki katına kadar olabilir. Açıkça ayarlanmadığı sürecedynamic,Falseolarak kalır. Daha fazla bilgi için dışa aktarma bağımsız değişkenlerine bak. - Dışa aktarılan model ve INT8 kalibrasyonu için maksimum toplu iş boyutunu 8 olarak ayarlar.
- Dönüştürme işlemi için cihazın tamamını ayırmak yerine 4 GiB bellek ayırır.
- 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,Recallveya 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 yaparkenmAP50vemAP50-95farkları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#
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.
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
| Kesinlik | 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 edildi
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
| Kesinlik | 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 edildi
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
| Kesinlik | 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 Ultralytics YOLO ile NVIDIA Jetson hızlı başlangıç kılavuzumuza bak.
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:
-
Ultralytics'i Triton Server ile dağıtma: Özellikle Ultralytics YOLO modelleriyle kullanmak üzere NVIDIA Triton Inference (eski adıyla TensorRT Inference) Server'ın nasıl kullanılacağını anlatan kılavuzumuz.
-
NVIDIA TensorRT ile Derin Sinir Ağlarını Dağıtma: Bu makalede, GPU tabanlı dağıtım platformlarında derin sinir ağlarını verimli şekilde dağıtmak için NVIDIA TensorRT'nin nasıl kullanılacağı açıklanıyor.
-
NVIDIA Tabanlı Bilgisayarlar için Uçtan Uca Yapay Zekâ: NVIDIA TensorRT Dağıtımı: Bu blog yazısında NVIDIA tabanlı bilgisayarlarda yapay zekâ modellerini optimize etmek ve dağıtmak için NVIDIA TensorRT'nin kullanımı açıklanıyor.
-
NVIDIA TensorRT için GitHub Deposu: Bu, NVIDIA TensorRT'nin kaynak kodunu ve belgelerini içeren resmî 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ı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:
-
Gerekli paketi yükle:
pip install ultralytics -
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:-
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 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:
- Ultralytics YOLO26'yı Triton Server ile dağıtma: Triton Inference Server'ı kurma ve kullanma konusunda adım adım yönergeler.
- NVIDIA TensorRT ile Derin Sinir Ağlarını Dağıtma: Ayrıntılı dağıtım seçenekleri ve yapılandırmaları için NVIDIA'nın derin öğrenme modellerini TensorRT ile dağıtma kılavuzu.
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.
-