इस पेज का अनुवाद Cloud Translation API से किया गया है.
Switch to English

Android क्विकस्टार्ट

Android पर TensorFlow Lite के साथ शुरुआत करने के लिए, हम निम्नलिखित उदाहरण की खोज करने की सलाह देते हैं।

Android छवि वर्गीकरण उदाहरण

स्रोत कोड की व्याख्या के लिए TensorFlow Lite Android छवि वर्गीकरण पढ़ें।

यह उदाहरण ऐप डिवाइस के रियर-फेसिंग कैमरे से जो कुछ भी देखता है, उसे लगातार वर्गीकृत करने के लिए इमेज वर्गीकरण का उपयोग करता है । एप्लिकेशन डिवाइस या एमुलेटर पर चल सकता है।

TensorFlow Lite Java API और TensorFlow Lite एंड्रॉइड सपोर्ट लाइब्रेरी का उपयोग करके इंट्रेंस का प्रदर्शन किया जाता है। डेमो ऐप वास्तविक समय में फ़्रेम को वर्गीकृत करता है, जो सबसे अधिक संभावित वर्गीकरण को प्रदर्शित करता है। यह उपयोगकर्ता को फ़्लोटिंग पॉइंट या क्वांटाइज़्ड मॉडल के बीच चयन करने की अनुमति देता है, थ्रेड काउंट का चयन करता है, और यह तय करता है कि CPU, GPU, या NNAPI के माध्यम से चलाया जाए

Android Studio में बनाएँ

एंड्रॉइड स्टूडियो में उदाहरण बनाने के लिए, README.md में दिए गए निर्देशों का पालन करें।

अपना खुद का एंड्रॉइड ऐप बनाएं

अपने खुद के एंड्रॉइड कोड को जल्दी से लिखना शुरू करने के लिए, हम शुरुआती बिंदु के रूप में अपने एंड्रॉइड इमेज वर्गीकरण उदाहरण का उपयोग करने की सलाह देते हैं।

निम्नलिखित अनुभागों में Android पर TensorFlow Lite के साथ काम करने के लिए कुछ उपयोगी जानकारी है।

TensorFlow Lite एंड्रॉइड सपोर्ट लाइब्रेरी का उपयोग करें

TensorFlow Lite एंड्रॉइड सपोर्ट लाइब्रेरी आपके मॉडल को अपने एप्लिकेशन में एकीकृत करना आसान बनाता है। यह उच्च-स्तरीय एपीआई प्रदान करता है जो कच्चे इनपुट डेटा को मॉडल द्वारा आवश्यक रूप में बदलने में मदद करता है, और आवश्यक बॉयलरप्लेट कोड की मात्रा को कम करते हुए मॉडल के आउटपुट की व्याख्या करता है।

यह इमेजेस और एरेज़ सहित इनपुट्स और आउटपुट के लिए सामान्य डेटा फॉर्मेट्स का समर्थन करता है। यह पूर्व और बाद की प्रसंस्करण इकाइयाँ भी प्रदान करता है जो छवि को आकार देने और क्रॉप करने जैसे कार्य करते हैं।

आरंभ करने के लिए, TensorFlow Lite एंड्रॉइड सपोर्ट लाइब्रेरी README.md में दिए गए निर्देशों का पालन करें।

JCenter से TensorFlow Lite AAR का उपयोग करें

अपने Android ऐप में TensorFlow Lite का उपयोग करने के लिए, हम JCenter में होस्ट किए गए TensorFlow Lite AAR का उपयोग करने की सलाह देते हैं।

आप इसे अपने build.gradle निर्भरता में निम्नानुसार निर्दिष्ट कर सकते हैं:

dependencies {
    implementation 'org.tensorflow:tensorflow-lite:0.0.0-nightly'
}

इस AAR में सभी Android ABI के लिए बायनेरी शामिल हैं। आप अपने आवेदन के बाइनरी के आकार को केवल एबीआई को शामिल करके कम कर सकते हैं जिसे आपको समर्थन करने की आवश्यकता है।

हम अनुशंसा करते हैं कि अधिकांश डेवलपर्स x86 , x86_64 और arm32 छोड़ arm32 । यह निम्नलिखित ग्रैगल कॉन्फ़िगरेशन के साथ प्राप्त किया जा सकता है, जिसमें विशेष रूप से केवल armeabi-v7a और arm64-v8a , जो कि अधिकांश आधुनिक एंड्रॉइड डिवाइसों को कवर करना चाहिए।

android {
    defaultConfig {
        ndk {
            abiFilters 'armeabi-v7a', 'arm64-v8a'
        }
    }
}

abiFilters बारे में अधिक जानने के लिए, NdkOptions में NdkOptions देखें।

TensorFlow Lite का निर्माण स्थानीय स्तर पर करें

कुछ मामलों में, आप TensorFlow Lite के स्थानीय निर्माण का उपयोग करना चाह सकते हैं। उदाहरण के लिए, आप एक कस्टम बाइनरी का निर्माण कर सकते हैं जिसमें TensorFlow से चयनित ऑपरेशन शामिल हैं, या आप TensorFlow Lite में स्थानीय परिवर्तन करना चाह सकते हैं।

डॉकर का उपयोग करके बिल्ड पर्यावरण सेट करें

  • डॉकर फ़ाइल डाउनलोड करें। डॉकर फ़ाइल डाउनलोड करके, आप सहमत हैं कि सेवा की निम्नलिखित शर्तें आपके उपयोग को नियंत्रित करती हैं:

स्वीकार करने के लिए क्लिक करके, आप एतद्द्वारा सहमत हैं कि एंड्रॉइड स्टूडियो और एंड्रॉइड नेटिव डेवलपमेंट किट के सभी उपयोग https://developer.android.com/studio/terms पर उपलब्ध एंड्रॉइड सॉफ्टवेयर डेवलपमेंट किट लाइसेंस एग्रीमेंट द्वारा शासित होंगे (ऐसा URL हो सकता है) Google द्वारा समय-समय पर अद्यतन या परिवर्तित किया जाता है)।

आपको फ़ाइल डाउनलोड करने के लिए सेवा की शर्तों को स्वीकार करना होगा। स्वीकार करें

  • आप एंड्रॉइड एसडीके या एनडीके संस्करण को वैकल्पिक रूप से बदल सकते हैं। डाउनलोड की गई डॉक फ़ाइल को एक खाली फ़ोल्डर में रखें और चलाकर अपनी डॉक छवि बनाएँ:
docker build . -t tflite-builder -f tflite-android.Dockerfile
  • अपने वर्तमान फ़ोल्डर को कंटेनर के अंदर / tmp में बढ़ते हुए अंतःक्रियात्मक कंटेनर को प्रारंभ करें (ध्यान दें कि / tanorflow_src कंटेनर के अंदर TensorFlow repository है):
docker run -it -v $PWD:/tmp tflite-builder bash

यदि आप Windows पर PowerShell का उपयोग करते हैं, तो "$ PWD" को "pwd" से बदलें।

यदि आप होस्ट पर TensorFlow रिपॉजिटरी का उपयोग करना चाहते हैं, तो इसके बजाय (-v hostDir: / tmp) होस्ट निर्देशिका को माउंट करें।

  • एक बार जब आप कंटेनर के अंदर होते हैं, तो आप अतिरिक्त एंड्रॉइड टूल और लाइब्रेरी डाउनलोड करने के लिए निम्नलिखित चला सकते हैं (ध्यान दें कि आपको लाइसेंस स्वीकार करने की आवश्यकता हो सकती है):
android update sdk --no-ui -a --filter tools,platform-tools,android-${ANDROID_API_LEVEL},build-tools-${ANDROID_BUILD_TOOLS_VERSION}

अब आप "बिल्ड और इंस्टॉल" अनुभाग पर आगे बढ़ सकते हैं। आपके द्वारा लाइब्रेरीज़ बनाने के बाद, आप उन्हें कंटेनर के अंदर / tmp में कॉपी कर सकते हैं ताकि आप उन्हें होस्ट पर एक्सेस कर सकें।

डॉकर के बिना बिल्ड पर्यावरण स्थापित करें

Bazel और Android आवश्यक शर्तें स्थापित करें

Bazel TensorFlow के लिए प्राथमिक बिल्ड सिस्टम है। इसके साथ निर्माण करने के लिए, आपके पास यह होना चाहिए और आपके सिस्टम पर Android NDK और SDK स्थापित होना चाहिए।

  1. Bazel बिल्ड सिस्टम का नवीनतम संस्करण स्थापित करें।
  2. Android NDK को देशी (C / C ++) TensorFlow Lite कोड बनाने की आवश्यकता है। वर्तमान अनुशंसित संस्करण 17 सी है, जो यहां पाया जा सकता है
  3. एंड्रॉइड एसडीके और बिल्ड टूल यहां प्राप्त किए जा सकते हैं , या वैकल्पिक रूप से एंड्रॉइड स्टूडियो के हिस्से के रूप में। बिल्ड टूल्स API> = 23 TensorFlow Lite के निर्माण के लिए अनुशंसित संस्करण है।
कॉन्फ़िगर कार्यों और .bazelrc

मूल TensorFlow चेकआउट निर्देशिका में ./configure स्क्रिप्ट चलाएं, और जब स्क्रिप्ट इंटरएक्टिव रूप से कॉन्फ़िगर करने के लिए पूछती है तो "हां" का जवाब ./WORKSPACE for Android ./WORKSPACE । स्क्रिप्ट निम्नलिखित पर्यावरण चर का उपयोग करके सेटिंग्स को कॉन्फ़िगर करने का प्रयास करेगी:

  • ANDROID_SDK_HOME
  • ANDROID_SDK_API_LEVEL
  • ANDROID_NDK_HOME
  • ANDROID_NDK_API_LEVEL

यदि ये चर सेट नहीं होते हैं, तो उन्हें स्क्रिप्ट प्रॉम्प्ट में अंतःक्रियात्मक रूप से प्रदान किया जाना चाहिए। सफल कॉन्फ़िगरेशन को मूल फ़ोल्डर में .tf_configure.bazelrc फ़ाइल के समान प्रविष्टियों का उत्पादन करना चाहिए:

build --action_env ANDROID_NDK_HOME="/usr/local/android/android-ndk-r17c"
build --action_env ANDROID_NDK_API_LEVEL="21"
build --action_env ANDROID_BUILD_TOOLS_VERSION="28.0.3"
build --action_env ANDROID_SDK_API_LEVEL="23"
build --action_env ANDROID_SDK_HOME="/usr/local/android/android-sdk-linux"

निर्माण और स्थापित करें

एक बार जब Bazel ठीक से कॉन्फ़िगर हो जाता है, तो आप TensorFlow Lite AAR को रूट चेकआउट निर्देशिका से निम्नानुसार बना सकते हैं:

bazel build -c opt --fat_apk_cpu=x86,x86_64,arm64-v8a,armeabi-v7a \
  --host_crosstool_top=@bazel_tools//tools/cpp:toolchain \
  //tensorflow/lite/java:tensorflow-lite

यह bazel-bin/tensorflow/lite/java/ में AAR फ़ाइल उत्पन्न करेगा। ध्यान दें कि यह कई अलग-अलग आर्किटेक्चर के साथ "वसा" एएआर बनाता है; यदि आपको उन सभी की आवश्यकता नहीं है, तो अपने परिनियोजन वातावरण के लिए उपयुक्त सबसेट का उपयोग करें।

bash tensorflow/lite/tools/build_aar.sh \
  --input_models=model1,model2 \
  --target_archs=x86,x86_64,arm64-v8a,armeabi-v7a

यदि स्क्रिप्ट में से कोई एक मॉडल Tensorflow op का उपयोग कर रहा है, तो इसके बाद के संस्करण की स्क्रिप्ट tensorflow-lite.aar फ़ाइल और वैकल्पिक रूप से tensorflow-lite-select-tf-ops.aar फ़ाइल उत्पन्न करेगी।

प्रोजेक्ट में सीधे AAR जोड़ें

अपनी परियोजना में libs नामक एक निर्देशिका में tensorflow-lite.aar फ़ाइल को स्थानांतरित करें। नई निर्देशिका को संदर्भित करने के लिए अपने एप्लिकेशन की build.gradle फ़ाइल को संशोधित करें और मौजूदा TensorFlow Lite की निर्भरता को नए स्थानीय पुस्तकालय के साथ बदलें, जैसे:

allprojects {
    repositories {
        jcenter()
        flatDir {
            dirs 'libs'
        }
    }
}

dependencies {
    compile(name:'tensorflow-lite', ext:'aar')
}
स्थानीय मावेन भंडार में एएआर स्थापित करें

अपनी रूट चेकआउट निर्देशिका से निम्न आदेश निष्पादित करें:

mvn install:install-file \
  -Dfile=bazel-bin/tensorflow/lite/java/tensorflow-lite.aar \
  -DgroupId=org.tensorflow \
  -DartifactId=tensorflow-lite -Dversion=0.1.100 -Dpackaging=aar

अपने ऐप के build.gradle , सुनिश्चित करें कि आपके पास mavenLocal() निर्भरता है और मानक TensorFlow Lite की निर्भरता को उसी के साथ बदलें, जिसमें चुनिंदा TensorFlow op का समर्थन है:

allprojects {
    repositories {
        jcenter()
        mavenLocal()
    }
}

dependencies {
    implementation 'org.tensorflow:tensorflow-lite:0.1.100'
}

ध्यान दें कि 0.1.100 संस्करण यहाँ विशुद्ध रूप से परीक्षण / विकास के लिए है। स्‍थानीय AAR के साथ, आप अपने ऐप कोड में मानक TensorFlow Lite Java इंट्रेंस API का उपयोग कर सकते हैं।

C ++ का उपयोग करके Android ऐप बनाएं

यदि आप NDK के साथ अपना ऐप बनाते हैं तो C ++ के माध्यम से TFLite का उपयोग करने के दो तरीके हैं:

TFLite C API का उपयोग करें

यह अनुशंसित दृष्टिकोण है। JCenter में होस्ट किए गए TensorFlow Lite AAR को डाउनलोड करें, इसे tensorflow-lite-*.zip नाम बदलें tensorflow-lite-*.zip , और इसे अनज़िप करें। आपको headers/tensorflow/lite/ headers/tensorflow/lite/c/ और headers/tensorflow/lite/c/ फोल्डर में चार हेडर फाइल और अपने libtensorflowlite_jni.so में jni/ फोल्डर में संबंधित libtensorflowlite_jni.so डायनामिक लाइब्रेरी को शामिल करना होगा।

c_api.h हेडर फ़ाइल में TFLite C API का उपयोग करने के बारे में बुनियादी दस्तावेज हैं।

TFLite C ++ API का उपयोग करें

यदि आप C ++ API के माध्यम से TFLite का उपयोग करना चाहते हैं, तो आप C ++ साझा लाइब्रेरी का निर्माण कर सकते हैं:

32 बिट आर्मेबी-वी 7 ए:

bazel build -c opt --config=android_arm //tensorflow/lite:libtensorflowlite.so

64 बिट आर्म 64-वी 8 ए:

bazel build -c opt --config=android_arm64 //tensorflow/lite:libtensorflowlite.so

वर्तमान में, आवश्यक सभी हेडर फ़ाइलों को निकालने का कोई सीधा तरीका नहीं है, इसलिए आपको tensorflow/lite/ टेन्सरफ्लो रिपॉजिटरी से सभी हेडर फ़ाइलों को शामिल करना होगा। साथ ही, आप से हेडर फाइल की आवश्यकता होगी FlatBuffers और abseil