Dağıtım için TFLite Modeli Dışa Aktarma (Kullanımdan Kaldırıldı)#
Ultralytics 8.4.83 itibarıyla, bağımsız tflite dışa aktarma biçimi kaldırıldı ve birleşik Google LiteRT biçimiyle değiştirildi. LiteRT (Lite Runtime), TensorFlow Lite'ın yeni nesli ve yeni adıdır; aynı .tflite modeli dışa aktarır — artık mobil, gömülü, uç ve tarayıcı dağıtımını tek bir biçimde destekler.
format="tflite" hâlâ çalışır ancak kullanımdan kaldırılma uyarısı verir ve bunun yerine bir LiteRT modeli dışa aktarır. Bundan sonra format="litert" kullan; güncel dışa aktarma talimatları ve seçenekleri için LiteRT dışa aktarma kılavuzuna bak.
Bilgisayarlı görü modellerini uç cihazlara veya gömülü cihazlara dağıtmak, sorunsuz performansı güvence altına alabilecek bir biçim gerektirir.
Önceki TensorFlow Lite veya TFLite dışa aktarma biçimi, Ultralytics YOLO26 modellerini uç uygulamalardaki nesne algılama ve görüntü sınıflandırma gibi görevler için optimize ediyordu. Bu kılavuz, eski TFLite dağıtım bağlamını korur; yeni dışa aktarımlar için LiteRT kullan.
Dışa Aktarma için Neden TFLite Kullanıldı?#
Google tarafından Mayıs 2017'de TensorFlow çatılarının bir parçası olarak sunulan TensorFlow Lite, kısaca TFLite, cihaz üzerinde çıkarım için tasarlanmış ve uç bilişim olarak da bilinen açık kaynaklı bir derin öğrenme çatısıydı. Geliştiricilere eğitilmiş modelleri mobil, gömülü ve IoT cihazlarında, ayrıca geleneksel bilgisayarlarda çalıştırmak için araçlar sundu.
TensorFlow Lite; gömülü Linux, Android, iOS ve mikrodenetleyiciler (MCU'lar) dahil olmak üzere çok çeşitli platformları destekliyordu. TFLite dışa aktarımları, uygulamaların modelleri yerel olarak ve çevrimdışı çalıştırmasını sağlıyordu.
TFLite Modellerinin Temel Özellikleri#
TFLite modelleri, geliştiricilerin modellerini mobil, gömülü ve uç cihazlarda çalıştırmasına yardımcı olarak cihaz üzerinde makine öğrenimini mümkün kılan çok çeşitli temel özellikler sunar:
-
Cihaz Üzerinde Optimizasyon: TFLite, cihaz üzerinde makine öğrenimi için optimizasyon yapar; verileri yerel olarak işleyerek gecikmeyi azaltır, kişisel verileri aktarmayarak gizliliği artırır ve yerden tasarruf etmek için model boyutunu küçültür.
-
Birden Fazla Platform Desteği: TFLite; Android, iOS, gömülü Linux ve mikrodenetleyicileri destekleyerek geniş bir platform uyumluluğu sunar.
-
Çeşitli Programlama Dili 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 sayesinde üstün performans sağlar.
Ölçülen Performans (geçmiş veriler)#
Bu sonuçlar, Android 16/API 36 üzerinde, 12 GB LPDDR5X belleğe sahip bir Xiaomi 17 cihazında Ultralytics Flutter eklentisi 0.6.8 ve LiteRT 2.1.5 ile kaydedildi. 3 nm'lik Snapdragon 8 Elite Gen 5 (SM8850), 8 çekirdekli Qualcomm Oryon CPU'ya (4,6 GHz'e kadar çalışan 2 Prime çekirdeği ve 3,62 GHz'e kadar çalışan 6 Performance çekirdeği), Adreno GPU'ya ve Hexagon NPU'ya sahiptir. Bu tablolar, eski onnx2tf INT8 TFLite varlıklarını taşıma sırasında değerlendirilen litert-torch dışa aktarma adaylarıyla karşılaştırır. Sürüm varlıklarının üzerine daha sonra standartlaştırılmış dışa aktarımlar yazıldı; dolayısıyla bu sayılar mevcut v0.6.6 varlık baytlarını yansıtmaz. Güncel ölçümler için LiteRT performans tablolarına bak.
Her iki biçim de gösterilen giriş boyutlarında art arda aynı GPU taramasında çalıştı. Her hücre toplam süreyi (ön işleme + çıkarım + son işleme), altında ise aşama bazında süre dağılımını gösterir; yerel günlükler her iki biçimin de tüm grafiği Adreno GPU üzerinde LiteRT OpenCL (LITERT_CL) üzerinden çalıştırdığını doğruladı.
| Model | Görev | boyut (piksel) | Eski onnx2tf INT8 TFLite (ms) | Aday w8a32 LiteRT (ms) |
|---|---|---|---|---|
| YOLO26n | Detect | 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ırma | 224 | 3.5 0.9 / 2.2 / 0.4 | 3.2 1.0 / 2.2 / 0.1 |
| YOLO26n-pose | Poz | 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 |
Aynı taşıma çalışmasında YOLO26n detect nicemleme biçimleri de karşılaştırıldı. Biçime bağlı olduğu için karşılaştırılabilir ölçüt çıkarım süresidir:
| Android biçimi | GPU çıkarımı (ms) | GPU'da derleniyor |
|---|---|---|
| onnx2tf INT8 (eski TFLite) | 8.6 | evet |
| LiteRT w8a32 (aday) | 8.4 | evet |
LiteRT INT8 (quantize=8) | 11.0 | evet |
| LiteRT FP32 | 8.8 | evet |
LiteRT w8a16 (quantize="w8a16") | CPU'ya geri dönüş | hayır |
Bu çalışmada w8a16, yaklaşık 660 ms toplam süreyle CPU'ya geri dönerken GPU biçimleri yaklaşık 17 ms sürdü. Bu sonuçlar w8a32 biçiminin dağıtıma alınmasını sağladı; ancak delege uyumluluğu ve performansı cihaza ve çalışma zamanı sürümüne bağlıdır. Hedef cihazı kıyaslama testine tabi tut ve hızlandırıcının kullanıldığını çalışma zamanı günlüklerinden doğrula.
TFLite'da Dağıtım Seçenekleri#
LiteRT ile değiştirilmiş 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 dahil çeşitli cihaz üzerinde dağıtım seçenekleri sunar:
- Android ve iOS ile Dağıtım: TFLite kullanan Android ve iOS uygulamaları, uç tabanlı kamera akışlarını ve sensörleri analiz ederek nesneleri algılayabilir ve tanımlayabilir. TFLite ayrıca Swift ve Objective-C ile yazılmış yerel iOS kitaplıkları da sunar. Aşağıdaki mimari diyagramı, TensorFlow Lite kullanarak eğitilmiş bir modelin Android ve iOS platformlarına dağıtım sürecini gösterir.
-
Gömülü Linux ile Uygulama: Bir Raspberry Pi üzerinde çıkarım çalıştırmak için Ultralytics Kılavuzu kullanmak senin kullanım senaryonun 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ırabilirsin.
-
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ı, Arm Cortex M3 üzerinde yalnızca 16 KB yer kaplar ve birçok temel modeli çalıştırabilir. İşletim sistemi desteği, standart C veya C++ kitaplıkları ya da dinamik bellek ayırma gerektirmez.
TFLite Dışa Aktarımını LiteRT ile Değiştir#
Yeni dışa aktarımlar için modelini LiteRT'ye dönüştür. Ortaya çıkan model, .tflite dosya uzantısını korur.
Kurulum#
Gerekli paketleri yüklemek için şunu çalıştır:
# Install the required package for YOLO26
pip install ultralyticsKurulum süreciyle ilgili ayrıntılı talimatlar ve en iyi uygulamalar için Ultralytics Kurulum kılavuzumuza göz at. YOLO26 için gerekli paketleri yüklerken zorluk yaşarsan çözüm ve ipuçları için Yaygın Sorunlar kılavuzumuza başvur.
Kullanım#
Tüm Ultralytics YOLO26 modelleri, kutudan çıktığı gibi dışa aktarmayı destekleyecek şekilde tasarlanmıştır; bu sayede tercih ettiğin dağıtım iş akışına kolayca entegre edebilirsin. Uygulaman için en uygun kurulumu seçmek üzere desteklenen dışa aktarma biçimlerinin ve yapılandırma seçeneklerinin tam listesini görüntüleyebilirsin.
LiteRT ile değiştirilmiş biçim Dışa Aktar, Tahmin ve Doğrula modlarını destekler. Modelini dışa aktar, ardından çıkarım yapmak veya doğruluğunu doğrulamak için dışa aktarılan .tflite modelini yükle.
from ultralytics import YOLO
# YOLO26 modelini yükle
model = YOLO("yolo26n.pt")
# Modeli LiteRT biçimine aktar
model.export(format="litert", imgsz=640) # sınıflandırma için imgsz=224 kullanfrom ultralytics import YOLO
# Dışa aktarılan TFLite modelini yükle
model = YOLO("yolo26n.tflite")
# Çıkarımı çalıştır
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Dışa aktarılan TFLite modelini yükle
model = YOLO("yolo26n.tflite")
# 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 | 'litert' | 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: 8 (statik INT8, int8 ağırlıklar + int8 aktivasyonlar; kalibrasyon için data/fraction gerekir), 'w8a16' (statik, int8 ağırlıklar + int16 aktivasyonlar; kalibrasyon için data/fraction gerekir), 'w8a32' (dinamik INT8, int8 ağırlıklar + FP32 aktivasyonlar; kalibrasyon gerekmez) veya 32/ayarlanmamış (FP32). FP16 ayrı olarak dışa aktarılmaz; FP32 modeli GPU temsilcilerinde otomatik olarak FP16 biçiminde ç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 predict kipinde eşzamanlı işleyeceği en fazla görüntü sayısını belirtir. |
data | str | None | Veri kümesinin YAML dosyasının yolu; niceleme için gereklidir. Sınıflandırma görevinde bunun yerine bir veri kümesi dizini veya yerleşik veri kümesi adı kullanılır. quantize=8 veya 'w8a16' ile birlikte belirtilmezse Ultralytics, model görevi için varsayılan kalibrasyon veri kümesini seçer. |
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 cihazını belirtir: CPU (device=cpu), Apple silicon için MPS (device=mps). |
Dışa aktarma süreci hakkında daha fazla bilgi için Ultralytics dışa aktarma belgeleri sayfasını ziyaret et.
Dışa Aktarılan YOLO26 TFLite Modellerini Dağıtma#
Ultralytics YOLO26 modelini LiteRT biçimine dışa aktardıktan sonra ortaya çıkan .tflite modelini dağıtabilirsin. Bir TFLite modeli çalıştırırken önerilen ilk adım, önceki kullanım kodu örneğinde açıklandığı gibi YOLO("model.tflite") yöntemini kullanmaktır. Ancak TFLite modellerini başka çeşitli ortamlarda dağıtmaya ilişkin ayrıntılı talimatlar için aşağıdaki kaynaklara göz at:
-
Android: Android uygulamalarına TensorFlow Lite'ı entegre etmek, makine öğrenimi modellerini kurmak ve çalıştırmak için kolayca izleyebileceğin adımlar sunan bir hızlı başlangıç kılavuzu.
-
iOS: TensorFlow Lite modellerini iOS uygulamalarına entegre etme ve dağıtma konusunda adım adım talimatlar ve kaynaklar sunan bu ayrıntılı geliştirici kılavuzuna göz at.
-
Uçtan Uca Örnekler: Bu sayfada, TensorFlow Lite'ı mobil ve uç cihazlardaki makine öğrenimi projelerinde uygulamana yardımcı olmak için tasarlanmış pratik uygulamalar ve eğitimlerle çeşitli TensorFlow Lite örneklerine genel bir bakış sunulur.
Özet#
Bu kılavuz, eski TFLite dağıtım iş akışını korur. Yeni dışa aktarımlar için uç bilişim ortamlarına yönelik .tflite modelleri oluşturmak üzere LiteRT kullan.
Kullanımla ilgili daha fazla ayrıntı için TFLite'ın 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 faydalı bilgi ve ipucu bulabilirsin.
Sık Sorulan Sorular#
Yeni bir dışa aktarım için LiteRT biçimini kullan. Önce gerekli paketi şu komutla yükle:
pip install ultralyticsArdından modelini dışa aktarmak için aşağıdaki kod parçacığını kullan:
from ultralytics import YOLO # YOLO26 modelini yükle model = YOLO("yolo26n.pt") # Modeli LiteRT biçimine aktar model.export(format="litert", imgsz=640) # sınıflandırma için imgsz=224 kullanCLI kullanıyorsan bunu şu komutla yapabilirsin:
yolo export model=yolo26n.pt format=litert imgsz=640 # use imgsz=224 for classificationDaha fazla bilgi için Ultralytics dışa aktarma kılavuzunu ziyaret et.
TensorFlow Lite (TFLite), cihaz üzerinde çıkarım için tasarlanmış açık kaynaklı bir derin öğrenme çatısıdır; bu da onu YOLO26 modellerini mobil, gömülü ve IoT cihazlarına dağıtmak için ideal kılar. Başlıca faydaları şunlardır:
- Cihaz üzerinde optimizasyon: Verileri yerel olarak işleyerek gecikmeyi azalt ve gizliliği artır.
- Platform uyumluluğu: Android, iOS, gömülü Linux ve MCU'ları destekler.
- Performans: Model hızını ve verimliliğini optimize etmek için donanım hızlandırmadan yararlanır.
Daha fazla bilgi edinmek için TFLite kılavuzuna göz at.
Evet, çıkarım hızlarını artırmak için YOLO26 TFLite modellerini Raspberry Pi'de çalıştırabilirsin. Önce yukarıda açıklandığı gibi modelini LiteRT biçimine dışa aktar. Ardından modeli Raspberry Pi'de çalıştırmak 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.
TFLite, kaynakları kısıtlı mikrodenetleyicilere dağıtımı destekler: temel çalışma zamanı Arm Cortex M3 üzerinde yalnızca 16 KB bellek gerektirir ve birçok temel modeli çalıştırabilir. Ancak YOLO26 modelleri genellikle mikrodenetleyicilerdeki tipik bellek sınırlarını aşacak kadar büyüktür; bu nedenle tek kartlı bilgisayarlar, mobil cihazlar veya özel hızlandırıcılar YOLO26 için daha uygun hedeflerdir.
Başlamak için Mikrodenetleyiciler için TFLite Micro kılavuzunu ziyaret et.
TensorFlow Lite geniş platform uyumluluğu sunar ve YOLO26 modellerini aşağıdakiler dahil çok çeşitli cihazlara dağıtmana olanak tanır:
- Android ve iOS: TFLite Android ve iOS kitaplıkları aracılığıyla yerel destek.
- Gömülü Linux: Raspberry Pi gibi tek kartlı bilgisayarlar için idealdir.
- Mikrodenetleyiciler: Kaynakları kısıtlı 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.
YOLO26 modellerini LiteRT'ye dışa 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: Ultralytics dışa aktarma belgeleri sayfasını kontrol ederek ilgili YOLO26 modelinin LiteRT'ye dışa aktarmayı desteklediğini doğrula.
- Niceleme sorunları: INT8 nicelemesi 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.
- Paket uyumluluğunu kontrol et: Ultralytics,