Kotlin ile Android'de LiteRT Compiled Model API'yi çalıştırma

LiteRT Compiled Model API, Kotlin'de kullanılabilir. Bu API, Android geliştiricilere üst düzey API'lerle sorunsuz ve hızlandırıcı öncelikli bir deneyim sunar.

Kotlin'de LiteRT uygulaması örneği için Kotlin ile görüntü segmentasyonu demosu bölümüne bakın.

Başlayın

LiteRT Compiled Model API'yi Android uygulamanıza eklemek için aşağıdaki adımları uygulayın.

Maven paketi ekleme

Derlenmiş Model API'si ile LiteRT 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ğinizle başlatın:

val  model =
  CompiledModel.create(
    context.assets,
    "mymodel.tflite",
    CompiledModel.Options(Accelerator.CPU),
    env,
  )

Giriş ve Çıkış Arabellekleri Oluşturma

Çıkarım için modele besleyeceğiniz giriş verilerini ve modelin çıkarım çalıştırdıktan sonra ürettiği çıkış verilerini tutmak üzere gerekli veri yapılarını (arabellekler) oluşturun.

val inputBuffers = model.createInputBuffers()
val outputBuffers = model.createOutputBuffers()

CPU belleği kullanıyorsanız girişleri doğrudan ilk giriş arabelleğine veri yazarak 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ı alma.

val outputFloatArray = outputBuffers[0].readFloat()

Temel kavramlar ve bileşenler

LiteRT Kotlin Compiled Model API'lerinin temel kavramları ve bileşenleri hakkında bilgi edinmek için aşağıdaki bölümlere bakın.

Temel çıkarım (CPU)

Aşağıda, LiteRT Next ile çıkarım işleminin basitleştirilmiş ve kısaltılmış bir uygulaması yer almaktadır.

// 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) bir modeli yüklemek, donanım hızlandırmayı uygulamak, çalışma zamanını başlatmak, giriş ve çıkış arabellekleri oluşturmak ve çıkarım çalıştırmaktan sorumludur.

Aşağıdaki basitleştirilmiş kod snippet'i, Compiled Model API'nin nasıl bir LiteRT modeli (.tflite) aldığını ve çıkarım çalıştırmaya hazır bir derlenmiş model oluşturduğunu gösterir.

val  model =
  CompiledModel.create(
    context.assets,
    "mymodel.tflite"
  )

Aşağıdaki basitleştirilmiş kod snippet'inde, CompiledModel API'sinin nasıl giriş ve çıkış arabelleği aldığı ve derlenmiş modelle çıkarımlar yaptığı 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'nin nasıl uygulandığına dair daha kapsamlı bir görünüm için Model.kt adresindeki kaynak koduna bakın.

Tensor arabelleği (TensorBuffer)

LiteRT, CompiledModel'ye veri akışını ve CompiledModel'den veri akışını işlemek için Tensor Buffer API'yi (TensorBuffer) kullanarak G/Ç arabellek birlikte çalışabilirliği için yerleşik destek sağlar. Tensor Buffer API, arabellekleri yazma (Write<T>()), okuma (Read<T>()) ve 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 koduna bakın.