Link to this sectionDağıtım için TFLite Model Dışa Aktarma (Kullanımdan Kaldırıldı)#
Ultralytics 8.4.83 itibarıyla, bağımsız tflite dışa aktarma formatı kaldırılmış ve yerini birleşik Google LiteRT formatına bırakmıştır. LiteRT (Lite Runtime), TensorFlow Lite'ın yeni nesli ve yeni adıdır; mobil, gömülü, uç cihazlar ve tarayıcı dağıtımlarını tek bir formatta kapsayan aynı .tflite modelini dışa aktarır.
format="tflite" hâlâ çalışır durumdadır ancak bir kullanımdan kaldırma uyarısı verir ve bunun yerine bir LiteRT modeli dışa aktarır. Bundan sonra format="litert" kullan; mevcut dışa aktarma talimatları ve seçenekleri için LiteRT dışa aktarma rehberine göz at.
Bilgisayarlı görü modellerini uç cihazlarda veya gömülü cihazlarda dağıtmak, kesintisiz performans sağlayabilecek bir format gerektirir.
Eski TensorFlow Lite veya TFLite dışa aktarma formatı, Ultralytics YOLO26 modellerini nesne algılama ve görüntü sınıflandırma gibi görevler için uç uygulamalarda optimize ederdi. Bu kılavuz, eski TFLite dağıtım içeriğini korumaktadır; yeni dışa aktarmalar için LiteRT kullan.
Link to this sectionTFLite Neden Dışa Aktarma İçin Kullanılıyordu?#
Google tarafından Mayıs 2017'de TensorFlow çerçevelerinin bir parçası olarak tanıtılan TensorFlow Lite veya kısaca TFLite, uç bilişim olarak da bilinen cihaz üzerinde çıkarım için tasarlanmış açık kaynaklı bir derin öğrenme çerçevesiydi. Geliştiricilere mobil, gömülü, IoT cihazlarında ve geleneksel bilgisayarlarda eğitilmiş modelleri çalıştırmaları için araçlar sağladı.
TensorFlow Lite; gömülü Linux, Android, iOS ve mikrodenetleyiciler (MCU) dahil olmak üzere geniş bir platform yelpazesini destekliyordu. TFLite dışa aktarmaları, uygulamaların modelleri yerel olarak ve çevrimdışı çalıştırmasını sağladı.
Link to this sectionTFLite Modellerinin Temel Özellikleri#
TFLite modelleri, geliştiricilerin modellerini mobil, gömülü ve uç cihazlarda çalıştırmalarına yardımcı olarak cihaz üzerinde makine öğrenimini mümkün kılan çok çeşitli temel özellikler sunar:
-
Cihaz İçi Optimizasyon: TFLite, cihaz üzerinde makine öğrenimi için optimize edilmiştir; verileri yerel olarak işleyerek gecikmeyi azaltır, kişisel verileri iletmeyerek gizliliği artırır ve alan kazanmak için model boyutunu minimize eder.
-
Çoklu Platform Desteği: TFLite, Android, iOS, gömülü Linux ve mikrodenetleyicileri destekleyerek kapsamlı bir platform uyumluluğu sunar.
-
Çeşitli Dil Desteği: TFLite, Java, Swift, Objective-C, C++ ve Python dahil olmak üzere çeşitli programlama dilleriyle uyumludur.
-
Yüksek Performans: Donanım hızlandırma ve model optimizasyonu yoluyla üstün performans sağlar.
Link to this sectionÖlçülen Performans (tarihsel)#
Bu TFLite sayıları, onnx2tf-TFLite → LiteRT geçişi için tarihsel bir öncesi/sonrası kaydı olarak tutulmaktadır: aşağıdaki eski onnx2tf INT8 TFLite dışa aktarımı ile yeni LiteRT w8a32 dışa aktarımı (bkz. LiteRT Ölçülen Performans tablosu). Bunlar, yeni litert-torch formatının yerini aldığı formata kıyasla nerede geride kaldığını göstermek için Google LiteRT ekibiyle paylaşılmaktadır — aşağıda Format gerilemeleri kısmına bakın.
Per-task before/after on the Adreno GPU of a Xiaomi 17 (Qualcomm Snapdragon 8 Elite Gen 5, SM8850), measured through the Ultralytics Flutter plugin 0.6.8: the legacy onnx2tf INT8 TFLite assets (NHWC, input images) versus the new w8a32 LiteRT assets (NCHW, input args_0), both run on LiteRT 2.x in the same back-to-back sweep at the shipped Android imgsz. Each cell is the total time (preprocessing + inference + postprocessing) with the per-stage split beneath it; both formats compiled fully on the GPU.
| Model | Görev | boyut (piksel) | Önce onnx2tf INT8 TFLite (ms) | Sonra w8a32 LiteRT (ms) |
|---|---|---|---|---|
| YOLO26n | Algıla | 640 | 14.0 1.8 / 8.1 / 4.2 | 13.5 1.9 / 8.1 / 3.5 |
| YOLO26n-seg | Segment | 640 | 30.1 1.9 / 20.3 / 8.0 | 28.6 1.8 / 20.1 / 6.7 |
| YOLO26n-sem | Anlamsal | 640 | 26.4 1.9 / 16.4 / 8.1 | 32.9 1.8 / 23.0 / 8.2 |
| YOLO26n-cls | Sınıflandır | 224 | 3.5 0.9 / 2.2 / 0.4 | 3.2 1.0 / 2.2 / 0.1 |
| YOLO26n-pose | Pose | 640 | 17.4 2.4 / 9.9 / 5.1 | 14.0 1.9 / 9.3 / 2.8 |
| YOLO26n-obb | OBB | 640 | 13.9 3.0 / 8.3 / 2.7 | 13.0 2.9 / 7.9 / 2.3 |
w8a32 LiteRT, toplam gecikme süresi bakımından altı görevden beşinde eski onnx2tf INT8 formatını yakalıyor veya geçiyor. w8a32 NCHW logitleri, ön işleme temizliğinden sonra bile eski NHWC logitlerinden daha fazla çıkarım süresi gerektirdiğinden, anlamsal kısım format gerilemesi olarak kalıyor. Eski onnx2tf modelleri, yeni NCHW dışa aktarımlarının yanında LiteRT 2.x üzerinde değişiklik yapılmadan çalışır. Resmi Android LiteRT varlıkları yolo-flutter-app v0.6.6 sürümünde barındırılmakta olup, detaylı kıyaslama kaydı Flutter performans dokümanında mevcuttur.
Link to this sectionFormat gerilemeleri vs LiteRT#
Bir Xiaomi 17 cihazının Adreno GPU'su üzerinde aynı cihazda YOLO26n algılama — eski onnx2tf INT8 TFLite ile dört LiteRT niceleme formatı karşılaştırması, tamamı tek bir sürekli çalıştırmada ölçülmüştür (bu nedenle çıkarım, karşılaştırılabilir ve formata bağlı ölçümdür):
| Android formatı | GPU çıkarımı (ms) | GPU-derlemeleri |
|---|---|---|
| onnx2tf INT8 (eski TFLite) | 8.6 | evet |
| LiteRT w8a32 (yeni resmi) | 8.4 | evet |
LiteRT INT8 (quantize=8) | 11.0 | evet |
| LiteRT FP32 | 8.8 | evet |
LiteRT w8a16 (quantize="w8a16") | (CPU yedeği) | hayır — başarısız |
Üretimdeki Android varlıklarını onnx2tf TFLite'tan LiteRT'ye taşırken ortaya çıkan Google LiteRT / litert-torch ekibi için sorunlar:
- NCHW düzeni, tüketicileri düzen konusunda bilinçlendirir. litert-torch, PyTorch modelini izler ve float girdi ile NCHW
[1,3,H,W]çıktısı verir; oysa onnx2tf TFLite dışa aktarımı, kamera/bitmap düzeniyle eşleşen NHWC[1,H,W,3]formatındaydı. Mevcut Flutter eklentisi, RGB paketleme sırasında düzlemsel CHW'yi doğrudan yazar ve ayrı bir HWC→CHW transpozundan kaçınır, ancak daha basit tüketicilerin yine de ya doğrudan düzlemsel paketlemeye ya da fazladan bir transpoza ihtiyacı vardır. quantize="w8a16"GPU (OpenCL) delegesinde derlenmez ve sessizce yaklaşık 40 kat daha yavaş (~660 ms vs ~17 ms) olan bir CPU yoluna geri döner; bu da int16-aktivasyon formatını GPU dağıtımı için kullanılamaz hale getirir.- Statik INT8 (
quantize=8) en yavaş GPU formatıdır — eşdeğer eski onnx2tf INT8 modeli için ~8.6 ms'ye karşılık ~11 ms; yani LiteRT'nin kendi INT8 yolu, yerini aldığı formata göre gerileme göstermektedir. Dinamik aralıklı w8a32, eski INT8 hızına ulaşan tek LiteRT formatıdır ve bu nedenle artık sevkiyat yapılmaktadır. - Semantic modelleri, grafik içi ArgMax seçeneği olmaksızın ham NCHW logitleri olarak dışa aktarılır, bu da
[1, C, H, W]üzerinde önbellek dostu olmayan bir ana bilgisayar tarafı argmax'ını zorunlu kılar (her sınıf düzlemi tam bir H×W uzaklıktadır). onnx2tf, CoreML ve QNN yolları bunun yerine kompakt bir sınıf haritası yayabilir. - Çıktı tensörleri
output_0,output_1, … olarak yeniden adlandırıldı (onnx2tfIdentity,Identity_1, …'ye kıyasla), bu da tüketici yeni isimleri ekleyene kadar çalışma zamanı çıktı şekli aramasını sessizce bozdu.
İlgili LiteRT w8a32 sayıları (şu anda sevkiyatı yapılan format) LiteRT sayfasındadır.
Link to this sectionTFLite'daki Dağıtım Seçenekleri#
LiteRT ile değiştirmeye yönelik dışa aktarma örneğine bakmadan önce, TFLite modellerinin normalde nasıl kullanıldığını anlayalım.
TFLite, makine öğrenimi modelleri için aşağıdakiler de dahil olmak üzere çeşitli cihaz içi dağıtım seçenekleri sunar:
- Android ve iOS ile Dağıtım: TFLite kullanan hem Android hem de iOS uygulamaları, nesneleri tespit etmek ve tanımlamak için uç tabanlı kamera beslemelerini ve sensörlerini analiz edebilir. TFLite ayrıca Swift ve Objective-C dillerinde yazılmış yerel iOS kütüphaneleri de sunar. Aşağıdaki mimari şema, eğitilmiş bir modelin TensorFlow Lite kullanılarak Android ve iOS platformlarına dağıtılması sürecini göstermektedir.
-
Gömülü Linux ile Uygulama: Eğer bir Raspberry Pi üzerinde Ultralytics Kılavuzu kullanarak çıkarım yapıyorsan ve bu senin kullanım durumun için hız gereksinimlerini karşılamıyorsa, çıkarım sürelerini hızlandırmak için dışa aktarılmış bir TFLite modeli kullanabilirsin. Ayrıca, bir Coral Edge TPU cihazı kullanarak performansı daha da artırman mümkün.
-
Mikrodenetleyicilerle Dağıtım: TFLite modelleri, mikrodenetleyicilere ve yalnızca birkaç kilobayt belleğe sahip diğer cihazlara da dağıtılabilir. Temel çalışma zamanı (runtime), bir Arm Cortex M3 üzerinde sadece 16 KB yer kaplar ve birçok temel modeli çalıştırabilir. İşletim sistemi desteği, herhangi bir standart C veya C++ kütüphanesi ya da dinamik bellek tahsisi gerektirmez.
Link to this sectionTFLite Dışa Aktarmayı LiteRT ile Değiştir#
Yeni dışa aktarmalar için modelini LiteRT'ye dönüştür. Ortaya çıkan model .tflite dosya uzantısını korur.
Link to this sectionKurulum#
Gerekli paketleri kurmak için şunu çalıştır:
# Install the required package for YOLO26
pip install ultralyticsKurulum süreci ile ilgili ayrıntılı talimatlar ve en iyi uygulamalar için Ultralytics Kurulum kılavuzumuza göz at. YOLO26 için gerekli paketleri kurarken herhangi bir zorlukla karşılaşırsan, çözümler ve ipuçları için Yaygın Sorunlar kılavuzumuza başvur.
Link to this sectionKullanım#
Tüm Ultralytics YOLO26 modelleri, kutudan çıktığı gibi dışa aktarımı destekleyecek şekilde tasarlanmıştır, bu da onları tercih ettiğin dağıtım iş akışına entegre etmeyi kolaylaştırır. Uygulaman için en iyi kurulumu seçmek üzere desteklenen dışa aktarma formatlarının ve yapılandırma seçeneklerinin tam listesini görüntüleyebilirsin.
Yeni LiteRT formatı Dışa Aktarma, Tahmin ve Doğrulama modlarını destekler. Modelini dışa aktar, ardından çıkarım çalıştırmak veya doğruluğunu doğrulamak için dışa aktarılan .tflite modelini yükle.
from ultralytics import YOLO
# Load a YOLO26 model
model = YOLO("yolo26n.pt")
# Export the model to LiteRT format
model.export(format="litert") # creates 'yolo26n.tflite'from ultralytics import YOLO
# Load the exported TFLite model
model = YOLO("yolo26n.tflite")
# Run inference
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Load the exported TFLite model
model = YOLO("yolo26n.tflite")
# Validate accuracy on the COCO8 dataset
metrics = model.val(data="coco8.yaml")Link to this sectionDışa Aktarma Argümanları#
| Argüman | Tip | Varsayılan | Açıklama |
|---|---|---|---|
format | str | 'litert' | Çeşitli dağıtım ortamlarıyla uyumluluğu tanımlayan, dışa aktarılan model için hedef format. |
imgsz | int veya tuple | 640 | Model girişi için istenen görüntü boyutu. Kare görüntüler için bir tamsayı veya belirli boyutlar için (height, width) şeklinde bir demet olabilir. |
quantize | int veya str | None | Kuantizasyon hassasiyeti: 8 (statik INT8, int8 ağırlıklar + int8 aktivasyonlar; kalibrasyon data/fraction gerektirir), 'w8a16' (statik, int8 ağırlıklar + int16 aktivasyonlar; kalibrasyon data/fraction gerektirir), 'w8a32' (dinamik INT8, int8 ağırlıklar + FP32 aktivasyonlar; kalibrasyon gerektirmez) veya 32/ayarlanmamış (FP32). FP16 ayrı olarak dışa aktarılmaz — bir FP32 modeli, GPU temsilcilerinde otomatik olarak FP16'da çalışır. Kullanımdan kaldırılan half/int8 bayraklarının yerini alır. |
batch | int | 1 | Dışa aktarılan modelin 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 | 'coco8.yaml' | dataset yapılandırma dosyasına giden yol (varsayılan: coco8.yaml), nicelleştirme (quantization) için gereklidir. |
fraction | float | 1.0 | INT8 nicemleme kalibrasyonu için kullanılacak veri kümesi oranını belirtir. Deneyler veya kaynakların sınırlı olduğu durumlar için yararlı olan tam veri kümesinin bir alt kümesinde kalibrasyona izin verir. INT8 etkinleştirildiğinde belirtilmezse, veri kümesinin tamamı kullanılır. |
device | str | None | Dışa aktarma için cihazı belirtir: CPU (device=cpu), Apple silicon için MPS (device=mps). |
Dışa aktarma süreci hakkında daha fazla ayrıntı için dışa aktarma hakkındaki Ultralytics dokümantasyon sayfasına git.
Link to this sectionDışa Aktarılan YOLO26 TFLite Modellerini Dağıtma#
Ultralytics YOLO26 modelini LiteRT formatına aktardıktan sonra, elde edilen .tflite modelini dağıtabilirsin. Bir TFLite modelini çalıştırmak için birincil ve önerilen ilk adım, önceki kullanım kod parçacığında belirtildiği gibi YOLO("model.tflite") yöntemini kullanmaktır. Ancak, TFLite modellerini diğer çeşitli ortamlarda dağıtmayla ilgili ayrıntılı talimatlar için aşağıdaki kaynaklara göz at:
-
Android: TensorFlow Lite'ı Android uygulamalarına entegre etmek için hızlı bir başlangıç kılavuzu, makine öğrenimi modellerini kurmak ve çalıştırmak için takip etmesi kolay adımlar sunar.
-
iOS: Geliştiricilerin TensorFlow Lite modellerini iOS uygulamalarına entegre etmeleri ve dağıtmaları için bu ayrıntılı kılavuza göz at, adım adım talimatlar ve kaynaklar sunar.
-
Uçtan Uca Örnekler: Bu sayfa, çeşitli TensorFlow Lite örneklerine genel bir bakış sunar ve geliştiricilerin mobil ve uç cihazlardaki makine öğrenimi projelerinde TensorFlow Lite'ı uygulamalarına yardımcı olmak için tasarlanmış pratik uygulamaları ve eğitimleri sergiler.
Link to this sectionÖzet#
Bu kılavuz, eski TFLite dağıtım iş akışını korumaktadır. Yeni dışa aktarmalar için, uç bilişim ortamlarına yönelik .tflite modelleri oluşturmak üzere LiteRT kullan.
Kullanım hakkında daha fazla bilgi için TFLite resmi belgelerini ziyaret et.
Ayrıca, diğer Ultralytics YOLO26 entegrasyonlarını merak ediyorsan, entegrasyon kılavuzu sayfamıza göz at. Orada pek çok yararlı bilgi ve içgörü bulacaksın.
Link to this sectionSSS#
Link to this sectionTFLite dışa aktarmasını LiteRT ile nasıl değiştiririm?#
Yeni bir dışa aktarma için LiteRT formatını kullan. İlk olarak, gerekli paketi şununla yükle:
pip install ultralyticsArdından, modelini dışa aktarmak için aşağıdaki kod parçacığını kullan:
from ultralytics import YOLO
# Load a YOLO26 model
model = YOLO("yolo26n.pt")
# Export the model to LiteRT format
model.export(format="litert") # creates 'yolo26n.tflite'CLI kullanıcıları için bunu şununla başarabilirsin:
yolo export model=yolo26n.pt format=litert # creates 'yolo26n.tflite'Daha fazla ayrıntı için Ultralytics dışa aktarma kılavuzunu ziyaret et.
Link to this sectionYOLO26 model dağıtımı için TensorFlow Lite kullanmanın faydaları nelerdir?#
TensorFlow Lite (TFLite), cihaz üzerinde çıkarım için tasarlanmış açık kaynaklı bir derin öğrenme çerçevesidir ve YOLO26 modellerini mobil, gömülü ve IoT cihazlarında dağıtmak için idealdir. Temel faydaları şunlardır:
- Cihaz içi optimizasyon: Verileri yerel olarak işleyerek gecikmeyi en aza indirir ve gizliliği artırır.
- Platform uyumluluğu: Android, iOS, gömülü Linux ve MCU'yu destekler.
- Performans: Model hızını ve verimliliğini optimize etmek için donanım hızlandırmayı kullanır.
Daha fazla bilgi edinmek için TFLite kılavuzuna göz at.
Link to this sectionYOLO26 TFLite modellerini Raspberry Pi üzerinde çalıştırmak mümkün mü?#
Evet, çıkarım hızlarını artırmak için Raspberry Pi üzerinde YOLO26 TFLite modellerini çalıştırabilirsin. İlk olarak, yukarıda açıklandığı gibi modelini LiteRT formatına aktar. Ardından, modelini Raspberry Pi üzerinde yürütmek için TensorFlow Lite Interpreter gibi bir araç kullan.
Daha fazla optimizasyon için Coral Edge TPU kullanmayı düşünebilirsin. Ayrıntılı adımlar için Raspberry Pi dağıtım kılavuzumuza ve Edge TPU entegrasyon kılavuzuna bak.
Link to this sectionYOLO26 tahminleri için mikrodenetleyicilerde TFLite modellerini kullanabilir miyim?#
Evet, TFLite sınırlı kaynaklara sahip mikrodenetleyicilerde dağıtımı destekler. TFLite'ın temel çalışma zamanı, bir Arm Cortex M3 üzerinde yalnızca 16 KB bellek gerektirir ve temel YOLO26 modellerini çalıştırabilir. Bu, onu minimum hesaplama gücü ve belleğe sahip cihazlarda dağıtım için uygun hale getirir.
Başlamak için Mikrodenetleyiciler için TFLite Micro kılavuzunu ziyaret et.
Link to this sectionTFLite dışa aktarılmış YOLO26 modelleriyle hangi platformlar uyumludur?#
TensorFlow Lite, geniş bir platform uyumluluğu sağlayarak YOLO26 modellerini aşağıdakiler de dahil olmak üzere çok çeşitli cihazlarda dağıtmana olanak tanır:
- Android ve iOS: TFLite Android ve iOS kütüphaneleri aracılığıyla yerel destek.
- Gömülü Linux: Raspberry Pi gibi tek kartlı bilgisayarlar için idealdir.
- Mikrodenetleyiciler: Sınırlı kaynaklara sahip MCU'lar için uygundur.
Dağıtım seçenekleri hakkında daha fazla bilgi için ayrıntılı dağıtım kılavuzumuza bak.
Link to this sectionYOLO26 modelini LiteRT'ye aktarırken yaşanan yaygın sorunları nasıl gideririm?#
YOLO26 modellerini LiteRT'ye aktarırken hatalarla karşılaşırsan, yaygın çözümler şunlardır:
- Paket uyumluluğunu kontrol et: Ultralytics,
litert-torchveai-edge-litertsürümlerinin uyumlu olduğundan emin ol. Kurulum kılavuzumuza bak. - Model desteği: Belirli YOLO26 modelinin LiteRT dışa aktarmayı desteklediğini, Ultralytics dışa aktarma belgelendirme sayfasını kontrol ederek doğrula.
- Kuantizasyon sorunları: INT8 kuantizasyonu kullanırken, veri kümesi yolunun
dataparametresinde doğru belirtildiğinden emin ol.
Ek sorun giderme ipuçları için Yaygın Sorunlar kılavuzumuzu ziyaret et.