Google Play Hizmetleri çalışma zamanındaki LiteRT, makineyi çalıştırmanıza olanak tanır LiteRT kitaplıklarını statik olarak en iyi şekilde yararlanabilirsiniz. Bu kılavuzda, Google için C API'lerinin nasıl kullanılacağıyla ilgili talimatlar yer almaktadır. Play Hizmetleri.
Google Play hizmetleri C API'sinde LiteRT ile çalışmaya başlamadan önce CMake derleme aracı yüklü olmalıdır.
Derleme yapılandırmanızı güncelleme
Play'e erişmek için aşağıdaki bağımlılıkları uygulama proje kodunuza ekleyin LiteRT için hizmetler API'si:
implementation "com.google.android.gms:play-services-tflite-java:16.2.0-beta02"
Ardından, Prefabetik özelliğini kullanarak, android bloğunu güncelleyerek CMake komut dosyanızdan C API'ye erişebilirsiniz. yüklemeniz gerekir:
buildFeatures {
prefab = true
}
Son olarak, içe aktarılan tensorflowlite_jni_gms_client
paketini eklemeniz gerekir
CMake komut dosyanızdaki bir bağımlılık olarak AAR'dan kaldırmanız gerekir:
find_package(tensorflowlite_jni_gms_client REQUIRED CONFIG)
target_link_libraries(tflite-jni # your JNI lib target
tensorflowlite_jni_gms_client::tensorflowlite_jni_gms_client
android # other deps for your target
log)
# Also add -DTFLITE_IN_GMSCORE -DTFLITE_WITH_STABLE_ABI
# to the C/C++ compiler flags.
add_compile_definitions(TFLITE_IN_GMSCORE)
add_compile_definitions(TFLITE_WITH_STABLE_ABI)
LiteRT çalışma zamanını başlatma
LiteRT Native API'yi çağırmadan önce
Java/Kotlin kodunuzda TfLiteNative
çalışma zamanı.
Java
Task tfLiteInitializeTask = TfLiteNative.initialize(context);
Kotlin
val tfLiteInitializeTask: Task= TfLiteNative.initialize(context)
TfLiteNative.initialize
, Google Play Hizmetleri Görev API'sini kullanarak
TFLite çalışma zamanını Google Play Hizmetleri'nden uygulamanıza eşzamansız olarak yükler
çalışma zamanı sürecini
anlatacağım. addOnSuccessListener()
kullanarak
Erişim yapan kod yürütülmeden önce TfLite.initialize()
görev tamamlandı
LiteRT API'leri Görev başarıyla tamamlandıktan sonra,
mevcut tüm TFLite Yerel API'leri.
Yerel kod uygulaması
Google Play Hizmetleri'nde LiteRT'i yerel kodunuzla kullanmak için şunları yapabilirsiniz: şunlardan biri:
- Java kodunuzdan yerel işlevleri çağırmak için yeni JNI işlevleri bildirme
- Mevcut yerel C kodunuzdan LiteRT Native API'yi çağırın.
JNI işlevleri:
LiteRT çalışma zamanını beyan etmek için yeni bir JNI işlevi tanımlayabilirsiniz. aşağıdaki gibi yerel kodunuz tarafından erişilebilen Java/Kotlin'de bulabilirsiniz:
Java
package com.google.samples.gms.tflite.c; public class TfLiteJni { static { System.loadLibrary("tflite-jni"); } public TfLiteJni() { /**/ }; public native void loadModel(AssetManager assetManager, String assetName); public native float[] runInference(float[] input); }
Kotlin
package com.google.samples.gms.tflite.c class TfLiteJni() { companion object { init { System.loadLibrary("tflite-jni") } } external fun loadModel(assetManager: AssetManager, assetName: String) external fun runInference(input: FloatArray): FloatArray }
Aşağıdaki loadModel
ve runInference
yerel işlevleri eşleşiyor:
#ifdef __cplusplus
extern "C" {
#endif
void Java_com_google_samples_gms_tflite_c_loadModel(
JNIEnv *env, jobject tflite_jni, jobject asset_manager, jstring asset_name){
//...
}
jfloatArray Java_com_google_samples_gms_tflite_c_TfLiteJni_runInference(
JNIEnv* env, jobject tfliteJni, jfloatArray input) {
//...
}
#ifdef __cplusplus
} // extern "C".
#endif
Ardından, C işlevlerinizi Java/Kotlin kodunuzdan çağırabilirsiniz:
Java
tfLiteHandleTask.onSuccessTask(unused -> { TfLiteJni jni = new TfLiteJni(); jni.loadModel(getAssets(), "add.bin"); //... });
Kotlin
tfLiteHandleTask.onSuccessTask { val jni = TfLiteJni() jni.loadModel(assets, "add.bin") // ... }
C kodu cinsinden LiteRT
Google Play ile TfLite'ı dahil etmek için uygun API başlığı dosyasını ekleyin hizmetler API'si:
#include "tensorflow/lite/c/c_api.h"
Daha sonra normal LiteRT C API'yi kullanabilirsiniz:
auto model = TfLiteModelCreate(model_asset, model_asset_length);
// ...
auto options = TfLiteInterpreterOptionsCreate();
// ...
auto interpreter = TfLiteInterpreterCreate(model, options);
Google Play Hizmetleri ile LiteRT Yerel API başlıkları,
normal API ile aynı API
LiteRT C API, hariç
desteği sonlandırılmış veya deneysel özellikler içerir. Şimdilik fonksiyonlar ve türler
c_api.h
, c_api_types.h
ve common.h
üstbilgileri mevcut. Lütfen
c_api_experimental.h
başlığındaki işlevlerin desteklenmediğini unutmayın.
LiteRT'e özel işlevleri Google Play Hizmetleri ile şu şekilde kullanabilirsiniz:
tflite.h
dahil.