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

Android के लिए TensorFlow Lite बनाएँ

यह दस्तावेज़ बताता है कि अपने दम पर TensorFlow Lite एंड्रॉइड लाइब्रेरी का निर्माण कैसे करें। आम तौर पर, आपको स्थानीय रूप से TensorFlow Lite Android लाइब्रेरी बनाने की आवश्यकता नहीं होती है। यदि आप इसे उपयोग करना चाहते हैं, तो जेसेन्टर में होस्ट किए गए TensorFlow Lite AAR का उपयोग करना सबसे आसान तरीका है। अपने Android प्रोजेक्ट्स में उनका उपयोग कैसे करें, इस बारे में अधिक जानकारी के लिए Android क्विकस्टार्ट देखें।

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

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

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

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

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

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

  • आप वैकल्पिक रूप से Android SDK या NDK संस्करण बदल सकते हैं। डाउनलोड की गई डॉक फ़ाइल को एक खाली फ़ोल्डर में रखें और चलाकर अपनी डॉक छवि बनाएँ:
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 फ़ाइल उत्पन्न करेगी। अधिक जानकारी के लिए, कृपया TensorFlow Lite बाइनरी आकार अनुभाग को कम करें

प्रोजेक्ट में सीधे 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 ops का समर्थन है:

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

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

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