LiteRT Next API tersedia di Kotlin, yang menawarkan pengalaman pengembangan yang lancar kepada developer Android dengan akses ke API tingkat tinggi.
Untuk contoh aplikasi LiteRT Next di Kotlin, lihat Demo segmentasi gambar dengan Kotlin.
Mulai
Gunakan langkah-langkah berikut untuk menambahkan LiteRT Next ke aplikasi Android Anda.
Menambahkan paket Maven
Tambahkan dependensi LiteRT Next ke aplikasi Anda:
dependencies {
...
implementation `com.google.ai.edge.litert:litert:2.0.0-alpha`
}
Membuat Model yang Dikompilasi
Dengan menggunakan CompiledModel
API, lakukan inisialisasi runtime dengan model dan
pilihan akselerasi hardware Anda:
val model =
CompiledModel.create(
context.assets,
"mymodel.tflite",
CompiledModel.Options(Accelerator.CPU),
env,
)
Membuat Buffer Input dan Output
Buat struktur data (buffer) yang diperlukan untuk menyimpan data input yang akan Anda masukkan ke dalam model untuk inferensi, dan data output yang dihasilkan model setelah menjalankan inferensi.
val inputBuffers = model.createInputBuffers()
val outputBuffers = model.createOutputBuffers()
Jika Anda menggunakan memori CPU, isi input dengan menulis data langsung ke buffer input pertama.
inputBuffers[0].writeFloat(FloatArray(data_size) { data_value /* your data */ })
Memanggil model
Menyediakan buffering input dan output, jalankan Model yang Dikompilasi.
model.run(inputBuffers, outputBuffers)
Mengambil Output
Ambil output dengan membaca output model secara langsung dari memori.
val outputFloatArray = outputBuffers[0].readFloat()
Konsep dan komponen utama
Lihat bagian berikut untuk mengetahui informasi tentang konsep dan komponen utama LiteRT Next Kotlin API.
Inferensi Dasar (CPU)
Berikut adalah implementasi inferensi yang ringkas dan disederhanakan dengan LiteRT Next.
// 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()
Model yang Dikompilasi (CompiledModel)
Compiled Model API (CompiledModel
) bertanggung jawab untuk memuat model,
menerapkan akselerasi hardware, membuat instance runtime, membuat buffering input dan
output, serta menjalankan inferensi.
Cuplikan kode sederhana berikut menunjukkan cara Compiled Model API mengambil model LiteRT (.tflite
) dan membuat model yang dikompilasi yang siap menjalankan inferensi.
val model =
CompiledModel.create(
context.assets,
"mymodel.tflite"
)
Cuplikan kode sederhana berikut menunjukkan cara CompiledModel
API mengambil buffer input dan output, serta menjalankan inferensi dengan model yang dikompilasi.
// 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()
Untuk melihat cara penerapan CompiledModel
API secara lebih lengkap, lihat
kode sumber di
Model.kt.
Buffer Tensor (TensorBuffer)
LiteRT Next menyediakan dukungan bawaan untuk interoperabilitas buffering I/O, menggunakan
Tensor Buffer API (TensorBuffer
) untuk menangani aliran data masuk dan keluar dari
CompiledModel
. Tensor Buffer API menyediakan kemampuan untuk menulis
(Write<T>()
) dan membaca (Read<T>()
), serta mengunci buffering.
Untuk melihat cara penerapan Tensor Buffer API secara lebih lengkap, lihat kode sumber di TensorBuffer.kt.