LiteRT Next API'leri Kotlin'de kullanılabilir. Bu API'ler, Android geliştiricilerine üst düzey API'lere erişerek sorunsuz bir geliştirme deneyimi sunar.
Kotlin'de LiteRT Next uygulaması örneği için Kotlin ile görüntü segmentasyonu demo başlıklı makaleyi inceleyin.
Başlayın
Android uygulamanıza LiteRT Next'i eklemek için aşağıdaki adımları uygulayın.
Maven paketi ekleme
LiteRT Next bağımlılığını uygulamanıza ekleyin:
dependencies {
...
implementation `com.google.ai.edge.litert:litert:2.0.0-alpha`
}
Derlenmiş modeli oluşturma
CompiledModel
API'yi kullanarak çalışma zamanını bir model ve donanım hızlandırma seçeneğiyle başlatın:
val model =
CompiledModel.create(
context.assets,
"mymodel.tflite",
CompiledModel.Options(Accelerator.CPU),
env,
)
Giriş ve Çıkış Arabellekleri Oluşturma
Tahmin için modele aktaracağınız giriş verilerini ve modelin tahmin çalıştırdıktan sonra ürettiği çıkış verilerini tutacak gerekli veri yapılarını (arabellekler) oluşturun.
val inputBuffers = model.createInputBuffers()
val outputBuffers = model.createOutputBuffers()
CPU belleği kullanıyorsanız verileri doğrudan ilk giriş arabelleğine yazarak girişleri doldurun.
inputBuffers[0].writeFloat(FloatArray(data_size) { data_value /* your data */ })
Modeli çağırma
Giriş ve çıkış arabelleklerini sağlayarak derlenmiş modeli çalıştırın.
model.run(inputBuffers, outputBuffers)
Çıkışları alma
Model çıkışını doğrudan bellekten okuyarak çıkışları alın.
val outputFloatArray = outputBuffers[0].readFloat()
Temel kavramlar ve bileşenler
LiteRT Next Kotlin API'lerinin temel kavramları ve bileşenleri hakkında bilgi edinmek için aşağıdaki bölümlere bakın.
Temel Çıkarma (CPU)
Aşağıda, LiteRT Next ile çıkarım yapmanın sıkıştırılmış ve basitleştirilmiş bir uygulaması verilmiştir.
// Load model and initialize runtime
val model =
CompiledModel.create(
context.assets,
"mymodel.tflite"
)
// Preallocate input/output buffers
val inputBuffers = model.createInputBuffers()
val outputBuffers = model.createOutputBuffers()
// Fill the first input
inputBuffers[0].writeFloat(FloatArray(data_size) { data_value /* your data */ })
// Invoke
model.run(inputBuffers, outputBuffers)
// Read the output
val outputFloatArray = outputBuffers[0].readFloat()
// Clean up buffers and model
inputBuffers.forEach { it.close() }
outputBuffers.forEach { it.close() }
model.close()
Derlenmiş Model (CompiledModel)
Derlenmiş Model API'si (CompiledModel
), model yükleme, donanım hızlandırma uygulama, çalışma zamanını örnekleme, giriş ve çıkış arabellekleri oluşturma ve çıkarım çalıştırma işlemlerinden sorumludur.
Aşağıdaki basitleştirilmiş kod snippet'inde, Derlenmiş Model API'sinin bir LiteRT modelini (.tflite
) nasıl alıp çıkarım yapmaya hazır bir derlenmiş model oluşturduğu gösterilmektedir.
val model =
CompiledModel.create(
context.assets,
"mymodel.tflite"
)
Aşağıdaki basitleştirilmiş kod snippet'inde, CompiledModel
API'nin nasıl bir giriş ve çıkış arabelleği aldığı ve derlenmiş modelle çıkarım yürüttüğü gösterilmektedir.
// Preallocate input/output buffers
val inputBuffers = model.createInputBuffers()
val outputBuffers = model.createOutputBuffers()
// Fill the first input
inputBuffers[0].writeFloat(FloatArray(data_size) { data_value /* your data */ })
// Invoke
model.run(inputBuffers, outputBuffers)
// Read the output
val outputFloatArray = outputBuffers[0].readFloat()
// Clean up buffers and model
inputBuffers.forEach { it.close() }
outputBuffers.forEach { it.close() }
model.close()
CompiledModel
API'sinin nasıl uygulandığına dair daha kapsamlı bir görünüm için Model.kt dosyasında bulunan kaynak kodu inceleyin.
Tensor Tamponu (TensorBuffer)
LiteRT Next, CompiledModel
'a gelen ve CompiledModel
'dan çıkan veri akışını işlemek için TensorFlow Buffer API'yi (TensorBuffer
) kullanarak G/Ç arabelleği birlikte çalışabilirliği için yerleşik destek sağlar. Tensor Buffer API, yazma (Write<T>()
) ve okuma (Read<T>()
) ve arabellekleri kilitleme olanağı sağlar.
Tensor Buffer API'nin nasıl uygulandığına dair daha kapsamlı bir görünüm için TensorBuffer.kt adresindeki kaynak kodu inceleyin.