TensorRT YOLOv8 Modelleri için Dışa Aktarma
Bilgisayarla görme modellerini yüksek performanslı ortamlarda dağıtmak, hızı ve verimliliği en üst düzeye çıkaran bir biçim gerektirebilir. Bu durum özellikle modelinizi NVIDIA GPU'larda kullanırken geçerlidir.
TensorRT dışa aktarma formatını kullanarak Ultralytics YOLOv8 NVIDIA donanımında hızlı ve verimli çıkarım için modeller. Bu kılavuz size dönüştürme işlemi için izlemesi kolay adımlar sunacak ve derin öğrenme projelerinizde NVIDIA'nın gelişmiş teknolojisinden en iyi şekilde yararlanmanıza yardımcı olacaktır.
TensorRT
TensorRTNVIDIA 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 füzyonu, hassas kalibrasyon (INT8 ve FP16), dinamik tensor bellek yönetimi ve çekirdek otomatik ayarlama gibi teknikleri içeren TensorRT optimizasyonundan geçer. Derin öğrenme modellerinin TensorRT formatına dönüştürülmesi, geliştiricilerin NVIDIA GPU'ların potansiyelinden tam olarak yararlanmasını sağlar.
TensorRT TensorFlow, ve 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ı sağlar. PyTorch ONNX
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 hassas kalibrasyonu destekleyerek modellerin belirli doğruluk gereksinimleri için hassas bir şekilde ayarlanmasını sağlar. 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 destek içerir.
-
Katman Füzyonu: TensorRT optimizasyon süreci, bir sinir ağının birden fazla katmanının tek bir işlemde birleştirildiği katman füzyonunu 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 Tensor Bellek Yönetimi: TensorRT , çıkarım sırasında tensor bellek kullanımını verimli bir şekilde yöneterek bellek ek yükünü azaltır ve bellek tahsisini optimize eder. Bu da GPU belleğinin daha verimli kullanılmasını sağlar.
-
Otomatik Çekirdek Ayarlama: TensorRT , modelin her katmanı için en optimize GPU çekirdeğini seçmek üzere otomatik çekirdek ayarlama uygular. Bu uyarlanabilir yaklaşım, modelin GPU'nun hesaplama gücünden tam olarak yararlanmasını sağlar.
Dağıtım Seçenekleri TensorRT
YOLOv8 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ğıtma: Bu yöntem TensorRT 'u TensorFlow içine entegre ederek optimize edilmiş modellerin tanıdık bir TensorFlow ortamında çalışmasını sağlar. Desteklenen ve desteklenmeyen katmanların bir karışımına sahip modeller için kullanışlıdır, çünkü TF-TRT bunları verimli bir şekilde işleyebilir.
-
Bağımsız TensorRT Runtime API: Granüler kontrol sunar, performans açısından kritik uygulamalar için idealdir. Daha karmaşıktır ancak desteklenmeyen operatörlerin özel olarak uygulanmasına izin verir.
-
NVIDIA Triton Çıkarım Sunucusu: Çeşitli çerçevelerden modelleri destekleyen bir seçenek. Özellikle bulut veya uç çıkarımı için uygun olan bu seçenek, eş zamanlı model yürütme ve model analizi gibi özellikler sağlar.
YOLOv8 Modellerini Dışa Aktarma TensorRT
YOLOv8 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 çalıştırın:
Kurulum süreciyle ilgili ayrıntılı talimatlar ve en iyi uygulamalar için YOLOv8 Kurulum kılavuzumuza göz atın. YOLOv8 için gerekli paketleri yüklerken herhangi bir zorlukla karşılaşırsanız, çözümler ve ipuçları için Ortak Sorunlar kılavuz umuza başvurun.
Kullanım
Kullanım talimatlarına geçmeden önce, Ultralytics tarafından sunulanYOLOv8 model yelpazesine göz attığınızdan emin olun. Bu, proje gereksinimleriniz için en uygun modeli seçmenize yardımcı olacaktır.
Kullanım
from ultralytics import YOLO
# Load the YOLOv8 model
model = YOLO('yolov8n.pt')
# Export the model to TensorRT format
model.export(format='engine') # creates 'yolov8n.engine'
# Load the exported TensorRT model
tensorrt_model = YOLO('yolov8n.engine')
# Run inference
results = tensorrt_model('https://ultralytics.com/images/bus.jpg')
Dışa aktarma işlemi hakkında daha fazla bilgi için, dışa aktarma ile ilgiliUltralytics dokümantasyon sayfasını ziyaret edin.
INT8 Niceleme ile TensorRT Dışa Aktarma
Ultralytics YOLO modellerinin TensorRT kullanılarak INT8 hassasiyetiyle dışa aktarılması, eğitim sonrası niceleme (PTQ) işlemini yürütür. TensorRT , YOLO modeli temsili girdi verileri üzerinde çıkarım yaparken her bir tensor aktivasyonu içindeki aktivasyonların dağılımını ölçen ve ardından bu dağılımı her bir tensor için ölçek değerlerini tahmin etmek için kullanan PTQ için kalibrasyon kullanır. Niceleme için aday olan her aktivasyon tensor bir kalibrasyon süreci ile çıkarılan ilişkili bir ölçeğe sahiptir.
Ö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şleri ve çıkışları üzerinde atanmış niceleme ölçekleri varsa, o katmana INT8 hassasiyetine sahip bir çekirdek atanır, aksi takdirde TensorRT , çekirdek için FP32 veya FP16 hassasiyetinden hangisinin o katman için daha hızlı yürütme süresiyle sonuçlandığına bağlı olarak bir hassasiyet seçer.
İpucu
Kalibrasyon sonuçları cihazlar arasında farklılık gösterebileceğinden, dağıtım için TensorRT model ağırlıklarını kullanacak olan aynı cihazın INT8 hassasiyetiyle dışa aktarma için kullanıldığından emin olmak çok önemlidir.
INT8 Dışa Aktarmayı Yapılandırma
Kullanırken sağlanan argümanlar ihracat bir Ultralytics YOLO modeli için büyük ölçüde dışa aktarılan modelin performansını etkiler. Bunların ayrıca mevcut cihaz kaynaklarına göre seçilmesi gerekecektir, ancak varsayılan argümanlar gerekir çoğu için çalışmak Amper (veya daha yeni) NVIDIA ayrık GPU'lar. Kullanılan kalibrasyon algoritması "ENTROPY_CALIBRATION_2"
ve mevcut seçenekler hakkında daha fazla ayrıntı okuyabilirsiniz TensorRT Geliştirici Kılavuzu'nda. Ultralytics testleri şunu bulmuştur "ENTROPY_CALIBRATION_2"
en iyi seçimdir ve ihracat bu algoritmayı kullanmaya sabitlenmiştir.
-
workspace
: Model ağırlıklarını dönüştürürken cihaz bellek tahsisinin boyutunu (GiB cinsinden) kontrol eder.-
Kullanmayı hedefleyin minimum
workspace
değeri gereklidir, çünkü bu daha fazla değer gerektiren algoritmaların test edilmesini engeller.workspace
TensorRT kurucusu tarafından dikkate alınmasını engeller. İçin daha yüksek bir değer belirlemekworkspace
alabilir önemli ölçüde daha uzun kalibre etmek ve dışa aktarmak için. -
Varsayılan değer
workspace=4
(GiB), kalibrasyon çökerse (uyarı vermeden çıkarsa) bu değerin artırılması gerekebilir. -
TensorRT rapor edecek
UNSUPPORTED_STATE
için değer varsa dışa aktarma sırasındaworkspace
değerinin cihaz için kullanılabilir bellekten daha büyük olduğu anlamına gelir.workspace
düşürülmelidir. -
Eğer
workspace
maksimum değere ayarlandığında ve kalibrasyon başarısız olduğunda/çöktüğünde, aşağıdaki değerleri azaltmayı düşününimgsz
vebatch
bellek gereksinimlerini azaltmak için. -
INT8 için kalibrasyonun her cihaza özgü olduğunuunutmayın, 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 neden olabilir.
-
-
batch
: Çıkarım için kullanılacak maksimum yığın boyutu. Çıkarım sırasında daha küçük gruplar kullanılabilir, ancak çıkarım belirtilenden daha büyük grupları kabul etmeyecektir.Not
Kalibrasyon sırasında, iki kez
batch
sağlanan boyut kullanılacaktır. Küçük partilerin kullanılması kalibrasyon sırasında yanlış ölçeklendirmeye yol açabilir. Bunun nedeni sürecin gördüğü verilere göre ayarlama yapmasıdır. Küçük partiler tüm değer aralığını yakalayamayabilir, bu da nihai kalibrasyonda sorunlara yol açabilir, bu nedenlebatch
boyutu otomatik olarak iki katına çıkarılır. Toplu iş boyutu belirtilmezsebatch=1
'de kalibrasyon ç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çmıştır. Bu bir kılavuzdur ve bir sert gerekliliği ve veri kümeniz için iyi performans göstermesi için neyin gerekli olduğunu denemeniz gerekecektir. INT8 kalibrasyonu için TensorRT adresinde kalibrasyon verileri gerektiğinden, bu verileri kullandığınızdan emin olun. data
argümanı ne zaman int8=True
TensorRT ve kullanım için data="my_dataset.yaml"
'deki görüntüleri kullanacak olan doğrulama ile kalibre etmek için. için herhangi bir değer geçilmediğinde data
INT8 niceleme ile TensorRT adresine aktarıldığında, varsayılan olarak model görevine dayalı "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)!
)
model = YOLO("yolov8n.engine", task="detect") # load the model
- Dinamik eksenlerle dışa aktarma yaparken bu özellik varsayılan olarak etkinleştirilecektir.
int8=True
açıkça ayarlanmamış olsa bile. Bkz. dışa aktarma argümanları ek bilgi için. - ile kalibre eden dışa aktarılan model için maksimum parti boyutunu 8 olarak ayarlar.
batch = 2 *×* 8
kalibrasyon sırasında ölçekleme hatalarını önlemek için. - Dönüştürme işlemi için tüm aygıtı ayırmak yerine 4 GiB bellek ayırır.
- Kalibrasyon için COCO veri setini, özellikle de doğrulama için kullanılan görüntüleri (toplam 5.000) kullanır.
Kalibrasyon Önbelleği
TensorRT bir kalibrasyon oluşturacaktır .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 bu, veriler çok farklı olduğunda veya batch
değeri büyük ölçüde değiştirilir. Bu durumlarda, mevcut .cache
yeniden adlandırılmalı ve farklı bir dizine taşınmalı veya tamamen silinmelidir.
YOLO ile TensorRT INT8 kullanmanın avantajları
-
Azaltılmış model boyutu: FP32'den INT8'e kuantizasyon, model boyutunu 4 kat azaltabilir (diskte veya bellekte), bu da daha hızlı indirme sürelerine yol açar. daha düşük depolama gereksinimleri ve bir modeli dağıtırken daha az bellek ayak izi.
-
Daha düşük güç tüketimi: INT8 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 potansiyel olarak daha yüksek çıkarım hızlarına yol açar.
Çıkarım Hızları Hakkında Not
TensorRT INT8 adresine 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 durum ayrıca şu değişikliklerde de ortaya çıkabilir imgsz
çıkarım sırasında, özellikle imgsz
dışa aktarma sırasında belirtilenle aynı değildir (dışa aktarma imgsz
TensorRT "optimal" profil olarak ayarlanmıştır).
YOLO ile TensorRT INT8 kullanmanın dezavantajları
-
Değerlendirme ölçütlerinde düşüşler: Daha düşük bir hassasiyet 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. Bakınız Performans sonuçları bölümü farklılıkları karşılaştırmak içinmAP50
vemAP50-95
çeşitli cihazların küçük bir örneğinde INT8 ile dışa aktarırken. -
Artan geliştirme süreleri: INT8 kalibrasyonu için veri seti ve cihaza yönelik "en uygun" ayarları bulmak önemli miktarda test gerektirebilir.
-
Donanım bağımlılığı: Kalibrasyon ve performans kazanımları yüksek oranda donanıma bağlı olabilir ve model ağırlıkları daha az aktarılabilir.
Ultralytics YOLO TensorRT İhracat 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
Önceden eğitilmiş 80 sınıf içeren COCO üzerinde eğitilen bu modellerle kullanım örnekleri için Algılama Dokümanları 'na bakın.
Not
Çıkarım süreleri şunlar için gösterilmiştir mean
, min
(en hızlı) ve max
(en yavaş) önceden eğitilmiş ağırlıkları kullanarak her test için yolov8n.engine
Hassasiyet | 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 |
Önceden eğitilmiş 80 sınıf içeren COCO üzerinde eğitilen bu modellerle kullanım örnekleri için Segmentasyon Dokümanları 'na bakın.
Not
Çıkarım süreleri şunlar için gösterilmiştir mean
, min
(en hızlı) ve max
(en yavaş) önceden eğitilmiş ağırlıkları kullanarak her test için yolov8n-seg.engine
Hassasiyet | 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 |
Önceden eğitilmiş 1000 sınıf içeren ImageNet üzerinde eğitilen bu modellerle kullanım örnekleri için Classification Docs bölümüne bakın.
Not
Çıkarım süreleri şunlar için gösterilmiştir mean
, min
(en hızlı) ve max
(en yavaş) önceden eğitilmiş ağırlıkları kullanarak her test için yolov8n-cls.engine
Hassasiyet | Değerlendirme testi | ortalama (ms) |
min | maks (ms) |
üst-1 | ilk 5 | batch |
boyut (piksel) |
---|---|---|---|---|---|---|---|
FP32 | Tahmin Et | 0.26 | 0.25 | 0.28 | 0.35 | 0.61 | 8 | 640 |
FP32 | ImageNetval | 0.26 | 1 | 640 | |||
FP16 | Tahmin Et | 0.18 | 0.17 | 0.19 | 0.35 | 0.61 | 8 | 640 |
FP16 | ImageNetval | 0.18 | 1 | 640 | |||
INT8 | Tahmin Et | 0.16 | 0.15 | 0.57 | 0.32 | 0.59 | 8 | 640 |
INT8 | ImageNetval | 0.15 | 1 | 640 |
Önceden eğitilmiş 1 sınıf olan "kişi" içeren COCO üzerinde eğitilmiş bu modellerle kullanım örnekleri için Poz Tahmini Dokümanlarına bakın.
Not
Çıkarım süreleri şunlar için gösterilmiştir mean
, min
(en hızlı) ve max
(en yavaş) önceden eğitilmiş ağırlıkları kullanarak her test için yolov8n-pose.engine
Hassasiyet | 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 |
Önceden eğitilmiş 15 sınıf içeren DOTAv1 üzerinde eğitilen bu modellerle kullanım örnekleri için Yönlendirilmiş Algılama Dokümanları 'na bakın.
Not
Çıkarım süreleri şunlar için gösterilmiştir mean
, min
(en hızlı) ve max
(en yavaş) önceden eğitilmiş ağırlıkları kullanarak her test için yolov8n-obb.engine
Hassasiyet | 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
Çıkarım süreleri şunlar için gösterilmiştir mean
, min
(en hızlı) ve max
(en yavaş) önceden eğitilmiş ağırlıkları kullanarak her test için yolov8n.engine
Hassasiyet | 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
Çıkarım süreleri şunlar için gösterilmiştir mean
, min
(en hızlı) ve max
(en yavaş) önceden eğitilmiş ağırlıkları kullanarak her test için yolov8n.engine
Hassasiyet | 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
Çıkarım süreleri şunlar için gösterilmiştir mean
, min
(en hızlı) ve max
(en yavaş) önceden eğitilmiş ağırlıkları kullanarak her test için yolov8n.engine
Hassasiyet | 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 5.1.3 (L4T 35.5.0) Ubuntu 20.04.6 ile test edilmiştir, python 3.8.10
, ultralytics==8.2.4
, tensorrt==8.5.2.2
Not
Çıkarım süreleri şunlar için gösterilmiştir mean
, min
(en hızlı) ve max
(en yavaş) önceden eğitilmiş ağırlıkları kullanarak her test için yolov8n.engine
Hassasiyet | Değerlendirme testi | ortalama (ms) |
min | maks (ms) |
mAPval 50(B) |
mAPval 50-95(B) |
batch |
boyut (piksel) |
---|---|---|---|---|---|---|---|
FP32 | Tahmin Et | 6.90 | 6.89 | 6.93 | 8 | 640 | ||
FP32 | COCOval | 6.97 | 0.52 | 0.37 | 1 | 640 | |
FP16 | Tahmin Et | 3.36 | 3.35 | 3.39 | 8 | 640 | ||
FP16 | COCOval | 3.39 | 0.52 | 0.37 | 1 | 640 | |
INT8 | Tahmin Et | 2.32 | 2.32 | 2.34 | 8 | 640 | ||
INT8 | COCOval | 2.33 | 0.47 | 0.33 | 1 | 640 |
Bilgi
Kurulum ve yapılandırma hakkında daha fazla bilgi edinmek için Ultralytics YOLO adresindeki NVIDIA Jetson ile ilgili 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.
Konfigürasyonları dışa aktarma
Dışa aktarma yapılandırma argümanlarıyla ilgili ayrıntılar için bkz.
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
out = model.export(
format="engine",
imgsz:640,
dynamic:True,
verbose:False,
batch:8,
workspace:2,
int8=True,
data:"data.yaml" # COCO, ImageNet, or DOTAv1 for appropriate model task
)
Döngüyü tahmin et
Ek bilgi için tahmin moduna bakın.
Doğrulama yapılandırması
Bkz. val
modu doğrulama yapılandırma argümanları hakkında daha fazla bilgi edinmek için.
Dışa Aktarılan YOLOv8 TensorRT Modellerini Dağıtma
Ultralytics YOLOv8 modellerinizi TensorRT biçimine başarıyla aktardıktan sonra artık bunları dağıtmaya hazırsınız. TensorRT modellerinizi çeşitli ortamlarda dağıtmaya ilişkin ayrıntılı talimatlar için aşağıdaki kaynaklara göz atın:
-
Ultralytics adresini bir Triton Sunucusu ile dağıtın: Özellikle Ultralytics YOLO modelleriyle kullanılmak üzere NVIDIA'nın Triton Inference (eski adıyla TensorRT Inference) Sunucusunun nasıl kullanılacağına ilişkin kılavuzumuz.
-
NVIDIA ile Derin Sinir Ağlarını Dağıtma TensorRT: Bu makalede, GPU tabanlı dağıtım platformlarında derin sinir ağlarını verimli bir şekilde dağıtmak için NVIDIA TensorRT 'un nasıl kullanılacağı açıklanmaktadır.
-
NVIDIA Tabanlı Bilgisayarlar için Uçtan Uca Yapay Zeka: NVIDIA TensorRT Dağıtım: Bu blog gönderisinde, NVIDIA tabanlı bilgisayarlarda yapay zeka modellerini optimize etmek ve dağıtmak için NVIDIA TensorRT 'un kullanımı açıklanmaktadır.
-
NVIDIA için GitHub Deposu TensorRT:: Bu, NVIDIA TensorRT için kaynak kodu ve belgeleri içeren resmi GitHub deposudur.
Özet
Bu kılavuzda, Ultralytics YOLOv8 modellerini NVIDIA'nın TensorRT model biçimine dönüştürmeye odaklandık. Bu dönüştürme adımı, YOLOv8 modellerinin verimliliğini ve hızını artırarak onları daha etkili ve çeşitli dağıtım ortamlarına uygun hale getirmek için çok önemlidir.
Kullanım detayları hakkında daha fazla bilgi için TensorRT resmi belgelerine göz atın.
Ek Ultralytics YOLOv8 entegrasyonları hakkında merak ettikleriniz varsa, entegrasyon kılavuzu sayfamızda kapsamlı bir bilgilendirici kaynak ve içgörü seçkisi bulunmaktadır.
Oluşturuldu 2024-01-28, Güncellendi 2024-05-08
Yazarlar: Burhan-Q (1), glenn-jocher (1), abirami-vina (1)