টেনসরফ্লো লাইট গুগল প্লে সার্ভিসে সি এপিআই (বিটা)

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 এপিআই অ্যাক্সেস করার কোড কার্যকর করার আগে সম্পূর্ণ হয়েছে তা নিশ্চিত করতে 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-এর নির্দিষ্ট ফাংশনগুলি ব্যবহার করতে পারেন।