LiteRT CompiledModel Kotlin API

LiteRT CompiledModel API は Kotlin で利用でき、Android デベロッパーに、高度な API を使用したシームレスなアクセラレータ ファーストのエクスペリエンスを提供します。例については、画像セグメンテーションの Kotlin アプリをご覧ください。

次のガイドでは、CompiledModel Kotlin API の基本的な CPU 推論について説明します。高度なアクセラレーション機能については、GPU アクセラレーションNPU アクセラレーションに関するガイドをご覧ください。

Maven パッケージを追加する

LiteRT Maven パッケージを Android プロジェクトに追加します。

dependencies {
  ...
  implementation `com.google.ai.edge.litert:litert:2.1.0`
}

CompiledModel を作成します

モデルと選択したハードウェア アクセラレーションを使用してランタイムを初期化します。

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

入力バッファと出力バッファを作成する

推論のためにモデルに渡す入力データと、モデルが推論の実行後に生成する出力データを保持するために必要なデータ構造(バッファ)を作成します。

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

CPU メモリを使用している場合は、最初の入力バッファにデータを直接書き込んで入力を入力します。

inputBuffers[0].writeFloat(FloatArray(data_size) { data_value /* your data */ })

モデルを呼び出す

入力バッファと出力バッファを指定して、モデルを実行します。

model.run(inputBuffers, outputBuffers)

出力を取得する

メモリからモデル出力を直接読み取って、出力を取得します。

val outputFloatArray = outputBuffers[0].readFloat()

TensorBuffer を使用する

LiteRT は、Tensor Buffer API(TensorBuffer)を使用して CompiledModel との間でデータの流れを処理することで、I/O バッファの相互運用性を組み込みでサポートします。Tensor Buffer API を使用すると、バッファの書き込み(Write<T>())、読み取り(Read<T>())、ロックを行うことができます。

Tensor Buffer API の実装方法の詳細については、TensorBuffer.kt のソースコードをご覧ください。