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 のソースコードをご覧ください。