Geliştiriciler LiteRT meta verilerini kullanarak sarmalayıcı kodu kullanabilirsiniz. Çoğu geliştirici için Android Studio ML Model Bağlama'nın grafik arayüzü en kolay yöntem budur. Daha fazla özelleştirmeye ihtiyacınız varsa veya komut satırı kullanıyorsanız LiteRT Codegen aracı da mevcuttur.
Android Studio ML Model Bağlamayı Kullanma
Meta veriler ile geliştirilmiş LiteRT modelleri için
geliştiriciler, otomatik olarak yapılandırmak için Android Studio ML Model Binding'i kullanabilir.
ve modele göre sarmalayıcı sınıfları oluşturabilirsiniz.
meta verilerdir. Sarmalayıcı kodu, doğrudan
ByteBuffer
Geliştiriciler bunun yerine LiteRT modeliyle etkileşime geçebilir
Bitmap
ve Rect
gibi yazılan nesnelerle.
Android Studio'da LiteRT modelini içe aktarma
TFLite modelini kullanmak istediğiniz modülü sağ tıklayın veya
File
, ardındanNew
>Other
LiteRT Model
TFLite dosyanızın konumunu seçin. Aracın ML Modeli bağlama ile modülün bağımlılığını sizin yerinize yapılandırın ve tüm bağımlılıkları otomatik olarak Android modülünüzün
build.gradle
dosyası yükleyin.İsteğe bağlı: Aşağıdaki durumlarda TensorFlow GPU'yu içe aktarmak için ikinci onay kutusunu işaretleyin GPU hızlandırmayı kullanmak istiyorsunuz.
Finish
simgesini tıklayın.İçe aktarma işlemi başarılı olduktan sonra aşağıdaki ekran görünür. Başlamak için kodu kopyalayın ve Kotlin veya Java'yı seçin. Kodu kopyalayıp
Sample Code
bölümü. Çift tıklayarak bu ekrana dönebilirsiniz TFLite modelini Android Studio'daml
dizininde bulabilirsiniz.
Model çıkarımını hızlandırma
Makine Öğrenimi Model Bağlaması, geliştiricilerin ve yetki verilmiş kullanıcı kullanımını ve ileti dizisi sayısını dikkate alın.
1. Adım: build.gradle
modülü dosyasının aşağıdaki bilgileri içerdiğini kontrol edin
bağımlılık:
dependencies {
...
// TFLite GPU delegate 2.3.0 or above is required.
implementation 'com.google.ai.edge.litert:litert-gpu:2.3.0'
}
2. adım: Cihazda çalışan GPU'nun TensorFlow GPU ile uyumlu olup olmadığını algılar modeli birden çok CPU iş parçacığı kullanarak çalıştırın:
Kotlin
import org.tensorflow.lite.gpu.CompatibilityList import org.tensorflow.lite.gpu.GpuDelegate val compatList = CompatibilityList() val options = if(compatList.isDelegateSupportedOnThisDevice) { // if the device has a supported GPU, add the GPU delegate Model.Options.Builder().setDevice(Model.Device.GPU).build() } else { // if the GPU is not supported, run on 4 threads Model.Options.Builder().setNumThreads(4).build() } // Initialize the model as usual feeding in the options object val myModel = MyModel.newInstance(context, options) // Run inference per sample code
Java
import org.tensorflow.lite.support.model.Model import org.tensorflow.lite.gpu.CompatibilityList; import org.tensorflow.lite.gpu.GpuDelegate; // Initialize interpreter with GPU delegate Model.Options options; CompatibilityList compatList = CompatibilityList(); if(compatList.isDelegateSupportedOnThisDevice()){ // if the device has a supported GPU, add the GPU delegate options = Model.Options.Builder().setDevice(Model.Device.GPU).build(); } else { // if the GPU is not supported, run on 4 threads options = Model.Options.Builder().setNumThreads(4).build(); } MyModel myModel = new MyModel.newInstance(context, options); // Run inference per sample code
LiteRT kod oluşturucuyla model arayüzleri oluşturma
Meta veriler ile geliştirilmiş LiteRT modeli için
geliştiriciler, aşağıdakini oluşturmak için LiteRT Android sarmalayıcı kod oluşturma aracı
sarmalayıcı kodu kullanabilirsiniz. Sarmalayıcı kodu, etkileşime geçme ihtiyacını ortadan kaldırır
doğrudan ByteBuffer
ile iletişime geçebilirsiniz. Bunun yerine, geliştiriciler TensorFlow ile
Bitmap
ve Rect
gibi yazılan nesneleri içeren basit model.
Kod oluşturucunun yararlı olup olmadığı
LiteRT modelinin meta veri girişi. <Codegen usage>
bölümüne bakın
alakalı alanların altına
metadata_schema.fbs,
kod oluşturma aracının her alanı nasıl ayrıştırdığını görebilirsiniz.
Sarmalayıcı Kodu oluştur
Terminalinize aşağıdaki araçları yüklemeniz gerekir:
pip install tflite-support
İşlem tamamlandıktan sonra kod oluşturma aracı şu söz dizimi kullanılarak kullanılabilir:
tflite_codegen --model=./model_with_metadata/mobilenet_v1_0.75_160_quantized.tflite \
--package_name=org.tensorflow.lite.classify \
--model_class_name=MyClassifierModel \
--destination=./classify_wrapper
Bu işlem sonucunda elde edilen kod hedef dizinde bulunur. Şu durumda: Google Colab veya başka bir uzaktan kumanda kullanarak sonuçları zip arşivinde sıkıştırmak ve indirmek bunu Android Studio projenize ekleyin:
# Zip up the generated code
!zip -r classify_wrapper.zip classify_wrapper/
# Download the archive
from google.colab import files
files.download('classify_wrapper.zip')
Oluşturulan kodu kullanma
1. Adım: Oluşturulan kodu içe aktarın
Gerekirse oluşturulan kodu bir dizin yapısı halinde açın. Kök
oluşturulan kodun SRC_ROOT
olduğu varsayılır.
LiteRT'yi kullanmak istediğiniz Android Studio projesini açın.
modelini oluşturun ve oluşturulan modülü şu şekilde içe aktarın: Ve Dosya -> Yeni -> Modülü İçe Aktar ->
SRC_ROOT
seç
Yukarıdaki örneğe göre, içe aktarılan dizin ve modül
classify_wrapper
2. Adım: Uygulamanın build.gradle
dosyasını güncelleyin
Oluşturulan kitaplık modülünü kullanacak uygulama modülünde:
Android bölümünün altına aşağıdakileri ekleyin:
aaptOptions {
noCompress "tflite"
}
Bağımlılıklar bölümünün altına aşağıdakileri ekleyin:
implementation project(":classify_wrapper")
3. Adım: Modeli kullanma
// 1. Initialize the model
MyClassifierModel myImageClassifier = null;
try {
myImageClassifier = new MyClassifierModel(this);
} catch (IOException io){
// Error reading the model
}
if(null != myImageClassifier) {
// 2. Set the input with a Bitmap called inputBitmap
MyClassifierModel.Inputs inputs = myImageClassifier.createInputs();
inputs.loadImage(inputBitmap));
// 3. Run the model
MyClassifierModel.Outputs outputs = myImageClassifier.run(inputs);
// 4. Retrieve the result
Map<String, Float> labeledProbability = outputs.getProbability();
}
Model çıkarımını hızlandırma
Oluşturulan kod, geliştiricilere kod yazma sürecini hızlandırma olanağı sunar yetki verilmiş kullanıcı sayısı ve kullanıcı sayısı ileti dizileri. Bunlar, model nesnesi başlatılırken parametre:
Context
: Android Etkinliği veya Hizmeti'nden bağlam- (İsteğe bağlı)
Device
: TFLite hızlandırma yetkisi. Örnek: GPUDelegate - (İsteğe bağlı)
numThreads
: Modeli çalıştırmak için kullanılan iş parçacığı sayısı - varsayılan değer birdir.
Örneğin, bir GPU yetkisi ve en fazla üç iş parçacığı kullanmak için model şöyle olur:
try {
myImageClassifier = new MyClassifierModel(this, Model.Device.GPU, 3);
} catch (IOException io){
// Error reading the model
}
Sorun giderme
'Java.io.FileNotFoundException: Bu dosya dosya açıklayıcı; muhtemelen sıkıştırılmıştır' hatasını almak için aşağıdaki satırları ekleyin uygulama modülünün kitaplık modülünü kullanan Android bölümünün altında:
aaptOptions {
noCompress "tflite"
}