Dağıtım için TFLite Modeli Dışa Aktarma (Kullanımdan kaldırıldı)#
Ultralytics 8.4.83 sürümünden itibaren 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 ve artık mobil, gömülü, uç ve tarayıcı dağıtımını tek bir biçimde kapsayan aynı .tflite modelini dışa aktarır.
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ç cihazlarda veya gömülü cihazlarda dağıtmak, sorunsuz performans sağlayabilecek bir biçim gerektirir.
Önceki TensorFlow Lite veya TFLite dışa aktarma biçimi, Ultralytics YOLO26 modellerini uç uygulamalarda 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 aktarmalar için LiteRT kullan.
TFLite neden dışa aktarma için kullanılıyordu?#
Google tarafından Mayıs 2017'de TensorFlow çatısının bir parçası olarak tanıtılan TensorFlow Lite, kısaca TFLite, uç bilişim olarak da bilinen cihaz üzerinde çıkarım için tasarlanmış açık kaynaklı bir derin öğrenme çatısıydı. Geliştiricilere eğitilmiş modelleri mobil, gömülü ve IoT cihazlarının yanı sıra geleneksel bilgisayarlarda çalıştırma araçları sağladı.
TensorFlow Lite; gömülü Linux, Android, iOS ve mikrodenetleyiciler (MCU'lar) dâhil olmak üzere çok çeşitli platformları destekliyordu. TFLite dışa aktarmaları, 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 öğrenmesini mümkün kılan çok çeşitli temel özellikler sunar:
-
Cihaz Üzerinde Optimizasyon: TFLite, cihaz üzerinde makine öğrenmesi için optimizasyon yapar; verileri yerel olarak işleyerek gecikmeyi azaltır, kişisel verileri aktarmayarak gizliliği artırır ve yer kazanmak için model boyutunu küçültür.
-
Birden Çok Platform Desteği: TFLite, Android, iOS, gömülü Linux ve mikrodenetleyicileri destekleyerek geniş platform uyumluluğu sunar.
-
Çeşitli Dil Desteği: TFLite; Java, Swift, Objective-C, C++ ve Python dâhil 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şe dönük)#
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 kullanılarak 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, geçiş sırasında değerlendirilen eski onnx2tf INT8 TFLite varlıkları ile aday
litert-torch dışa aktarmalarını karşılaştırır. Sürüm varlıklarının üzerine daha sonra standartlaştırılmış dışa aktarmalar yazıldığından bu sayılar mevcut v0.6.6 varlığının baytlarını tanımlamaz. Güncel ölçümler için
LiteRT performans tablolarına bak.
Her iki biçim de gösterilen giriş boyutlarında aynı arka arkaya GPU taramasında çalıştırıldı. Her hücre, toplam süreyi
(ön işleme + çıkarım + son işleme) ve altında aşama başına ayrımı gösterir; yerel günlükler her iki biçimin de tam grafiği Adreno GPU üzerindeki LiteRT OpenCL'e (LITERT_CL) devrettiğini 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 | Semantic | 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ı geçiş çalışması YOLO26n algılama niceleme biçimlerini de karşılaştırdı. Karşılaştırılabilir ve biçime bağlı metrik çıkarımdır:
| Android biçimi | GPU çıkarımı (ms) | GPU derlemeleri |
|---|---|---|
| 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ıştırmada w8a16, GPU biçimlerindeki yaklaşık 17 ms'ye kıyasla toplamda yaklaşık 660 ms ile CPU'ya geri döndü. Bu sonuçlar w8a32 sürümünün gönderilmesine yol açtı; ancak delege uyumluluğu ve performansı cihaza ve çalışma zamanı sürümüne bağlıdır.
Hedef cihazı kıyasla ve hızlandırıcının çalışma zamanı günlüklerindeki yerleşimini doğrula.
TFLite'ta Dağıtım Seçenekleri#
LiteRT yerine geçen dışa aktarma örneğine bakmadan önce TFLite modellerinin normalde nasıl kullanıldığını anlayalım.
TFLite, makine öğrenmesi modelleri için aşağıdakiler dâhil olmak üzere çeşitli cihaz üzerinde dağıtım seçenekleri sunar:
- Android ve iOS ile Dağıtım: TFLite kullanan hem Android hem de iOS uygulamaları, nesneleri algılamak ve tanımlamak için uç tabanlı kamera akışlarını ve sensörleri analiz edebilir. TFLite ayrıca Swift ve Objective-C ile yazılmış yerel iOS kitaplıkları sunar. Aşağıdaki mimari diyagram, TensorFlow Lite kullanarak eğitilmiş bir modelin Android ve iOS platformlarına dağıtılma sürecini gösterir.
-
Gömülü Linux ile Uygulama: Ultralytics Kılavuzu kullanarak bir Raspberry Pi üzerinde çıkarım çalıştırmak kullanım alanının 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ı bir Arm Cortex M3 üzerinde yalnızca 16 KB'a sığar 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 Aktarmayı LiteRT ile Değiştirme#
Yeni dışa aktarmalar için modelini LiteRT biçimine 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 herhangi bir zorlukla karşılaşırsan çözüm ve ipuçları için Yaygın Sorunlar kılavuzumuza başvur.
Kullanım#
Tüm Ultralytics YOLO26 modelleri, kutudan çıktığı hâliyle dışa aktarmayı destekleyecek şekilde tasarlanmıştır; böylece bunları tercih ettiğin dağıtım iş akışına kolayca entegre edebilirsin. Uygulaman için en iyi kurulumu seçmek üzere desteklenen dışa aktarma biçimlerinin ve yapılandırma seçeneklerinin tam listesini görüntüleyebilirsin.
LiteRT yerine geçen biçim Dışa Aktar, Tahmin ve Doğrula 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", imgsz=640) # use imgsz=224 for classificationfrom 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")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 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 | Niceleme 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 gerekmez) veya 32/ayarlanmamış (FP32). FP16 ayrı olarak dışa aktarılmaz — bir FP32 modeli GPU delegelerinde otomatik olarak FP16 ile çalışır. Kullanımdan kaldırılan half/int8 işaretlerinin yerini alır. |
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 | Kuantizasyon için gerekli olan veri kümesi YAML dosyasının yolu; sınıflandırma için 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 bırakılırken 0 atlanır. |
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 ayrıntı için Ultralytics'in dışa aktarma dokümantasyonu 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. TFLite modelini çalıştırmanın birincil ve önerilen ilk adımı, önceki kullanım kodu parçacığında gösterildiği gibi YOLO("model.tflite") yöntemini kullanmaktır. Ancak TFLite modellerini diğer çeşitli ortamlarda dağıtmaya ilişkin ayrıntılı talimatlar için aşağıdaki kaynaklara göz at:
-
Android: TensorFlow Lite'ı Android uygulamalarına entegre etmek için kurulum ve makine öğrenmesi modellerini çalıştırmaya yönelik kolayca izlenebilen adımlar sunan hızlı başlangıç kılavuzu.
-
iOS: TensorFlow Lite modellerini iOS uygulamalarına entegre etme ve dağıtma konusunda geliştiricilere yönelik bu ayrıntılı kılavuzda adım adım talimatlar ve kaynaklar bulabilirsin.
-
Uçtan Uca Örnekler: Bu sayfa, geliştiricilerin mobil ve uç cihazlardaki makine öğrenmesi projelerinde TensorFlow Lite uygulamasına yardımcı olmak için tasarlanmış pratik uygulamaları ve öğreticileri sergileyen çeşitli TensorFlow Lite örneklerine genel bir bakış sunar.
Özet#
Bu kılavuz eski TFLite dağıtım iş akışını korur. 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 birçok yararlı bilgi ve içgörü bulacaksın.
SSS#
Yeni bir dışa aktarma için LiteRT biçimini kullan. Önce gerekli paketi şunu kullanarak 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", imgsz=640) # use imgsz=224 for classificationCLI kullanıcıları bunu şu şekilde gerçekleştirebilir:
yolo export model=yolo26n.pt format=litert imgsz=640 # use imgsz=224 for classificationDaha fazla ayrıntı 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. Temel faydaları şunlardır:
- Cihaz üzerinde 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ı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 üzerinde çalıştırabilirsin. Önce modelini yukarıda açıklandığı gibi LiteRT biçimine dışa aktar. Ardından modeli Raspberry Pi üzerinde ç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.
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 hesaplama gücü ve belleği sınırlı cihazlara dağıtım için uygun kılar.
Başlamak için Mikrodenetleyiciler için TFLite Micro kılavuzunu ziyaret et.
TensorFlow Lite, YOLO26 modellerini aşağıdakiler dâhil olmak üzere çok çeşitli cihazlara dağıtmana olanak tanıyan geniş platform uyumluluğu sunar:
- 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'e dışa aktarırken hatalarla karşılaşırsan yaygın çözümler şunlardır:
- Paket uyumluluğunu kontrol et: Uyumluluk gösteren Ultralytics,
litert-torchveai-edge-litertsürümlerini kullandığından emin ol. Kurulum kılavuzumuza bak. - Model desteği: Ultralytics dışa aktarma belgeleri sayfasını kontrol ederek belirli YOLO26 modelinin LiteRT dışa aktarmasını desteklediğini doğrula.
- Niceleme sorunları: INT8 nicelemesi kullanırken veri kümesi yolunun
dataparametresinde doğru şekilde belirtildiğinden emin ol.
Ek sorun giderme ipuçları için Yaygın Sorunlar kılavuzumuzu ziyaret et.
- Paket uyumluluğunu kontrol et: Uyumluluk gösteren Ultralytics,