Google Play পরিষেবায় টেনসরফ্লো লাইট রানটাইম আপনাকে আপনার অ্যাপে টেনসরফ্লো লাইট লাইব্রেরিগুলিকে স্ট্যাটিক্যালি বান্ডিল না করে মেশিন লার্নিং (ML) মডেলগুলি চালানোর অনুমতি দেয়। এই নির্দেশিকাটি Google Play পরিষেবাগুলির জন্য C API গুলি কীভাবে ব্যবহার করতে হয় তার নির্দেশাবলী প্রদান করে৷
Google Play পরিষেবা C API-এ TensorFlow Lite-এর সাথে কাজ করার আগে, নিশ্চিত করুন যে আপনার কাছে CMake বিল্ড টুল ইনস্টল করা আছে।
আপনার বিল্ড কনফিগারেশন আপডেট করুন
TensorFlow Lite-এর জন্য Play পরিষেবা API অ্যাক্সেস করতে আপনার অ্যাপ প্রোজেক্ট কোডে নিম্নলিখিত নির্ভরতা যোগ করুন:
implementation "com.google.android.gms:play-services-tflite-java:16.2.0-beta02"
তারপর, আপনার মডিউলের build.gradle ফাইলের অ্যান্ড্রয়েড ব্লক আপডেট করে আপনার CMake স্ক্রিপ্ট থেকে C API অ্যাক্সেস করতে Prefab বৈশিষ্ট্যটি সক্ষম করুন:
buildFeatures {
prefab = true
}
আপনাকে অবশেষে আপনার CMake স্ক্রিপ্টে নির্ভরতা হিসাবে AAR থেকে আমদানি করা প্যাকেজ tensorflowlite_jni_gms_client
যোগ করতে হবে:
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)
TensorFlow Lite রানটাইম শুরু করুন
TensorFlow Lite Native API কল করার আগে আপনাকে অবশ্যই আপনার Java/Kotlin কোডে TfLiteNative
রানটাইম শুরু করতে হবে।
জাভা
Task tfLiteInitializeTask = TfLiteNative.initialize(context);
কোটলিন
val tfLiteInitializeTask: Task= TfLiteNative.initialize(context)
Google Play পরিষেবাগুলি টাস্ক API ব্যবহার করে, TfLiteNative.initialize
অ্যাসিঙ্ক্রোনাসভাবে Google Play পরিষেবাগুলি থেকে আপনার অ্যাপ্লিকেশনের রানটাইম প্রক্রিয়াতে TFLite রানটাইম লোড করে৷ TfLite.initialize()
টাস্কটি TensorFlow Lite API-এ অ্যাক্সেস করার কোড কার্যকর করার আগে সম্পূর্ণ হয়েছে তা নিশ্চিত করতে addOnSuccessListener()
ব্যবহার করুন। একবার কাজটি সফলভাবে সম্পন্ন হলে, আপনি সমস্ত উপলব্ধ TFLite Native API-গুলিকে আহ্বান করতে পারেন৷
নেটিভ কোড বাস্তবায়ন
আপনার নেটিভ কোড সহ Google Play পরিষেবাগুলিতে TensorFlow Lite ব্যবহার করতে, আপনি নিম্নলিখিতগুলির মধ্যে একটি করতে পারেন:
- আপনার জাভা কোড থেকে নেটিভ ফাংশন কল করতে নতুন JNI ফাংশন ঘোষণা করুন
- আপনার বিদ্যমান নেটিভ সি কোড থেকে TensorFlow Lite Native API কল করুন।
JNI ফাংশন:
আপনি একটি নতুন JNI ফাংশন ঘোষণা করতে পারেন যাতে জাভা/কোটলিনে ঘোষিত TensorFlow Lite রানটাইম অনুসরণ করে আপনার নেটিভ কোডে অ্যাক্সেসযোগ্য হয়:
জাভা
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); }
কোটলিন
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 }
নিম্নলিখিত loadModel
এবং runInference
নেটিভ ফাংশনগুলির সাথে মেলে:
#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
তারপরে আপনি আপনার জাভা/কোটলিন কোড থেকে আপনার সি ফাংশনগুলিকে কল করতে পারেন:
জাভা
tfLiteHandleTask.onSuccessTask(unused -> { TfLiteJni jni = new TfLiteJni(); jni.loadModel(getAssets(), "add.bin"); //... });
কোটলিন
tfLiteHandleTask.onSuccessTask { val jni = TfLiteJni() jni.loadModel(assets, "add.bin") // ... }
C কোডে TensorFlow Lite
Google Play পরিষেবা API-এর সাথে TfLite অন্তর্ভুক্ত করতে উপযুক্ত API হেডার ফাইল অন্তর্ভুক্ত করুন:
#include "tensorflow/lite/c/c_api.h"
তারপরে আপনি নিয়মিত TensorFlow Lite C API ব্যবহার করতে পারেন:
auto model = TfLiteModelCreate(model_asset, model_asset_length);
// ...
auto options = TfLiteInterpreterOptionsCreate();
// ...
auto interpreter = TfLiteInterpreterCreate(model, options);
Google Play পরিষেবাগুলির সাথে TensorFlow Lite নেটিভ API শিরোনামগুলি নিয়মিত TensorFlow Lite C API- এর মতো একই API প্রদান করে, বাদ দেওয়া বা পরীক্ষামূলক বৈশিষ্ট্যগুলি বাদ দিয়ে৷ আপাতত c_api.h
, c_api_types.h
এবং common.h
হেডার থেকে ফাংশন এবং প্রকারগুলি উপলব্ধ। অনুগ্রহ করে মনে রাখবেন যে c_api_experimental.h
হেডার থেকে ফাংশন সমর্থিত নয়। ডকুমেন্টেশন অনলাইন পাওয়া যাবে.
আপনি tflite.h
অন্তর্ভুক্ত করে Google Play পরিষেবাগুলির সাথে TensorFlow Lite-এর নির্দিষ্ট ফাংশনগুলি ব্যবহার করতে পারেন।