דף זה תורגם על ידי Cloud Translation API.
Switch to English

התחל מהיר של אנדרואיד

כדי להתחיל עם TensorFlow Lite באנדרואיד, אנו ממליצים לבחון את הדוגמה הבאה.

דוגמה לסיווג תמונות אנדרואיד

קרא את סיווג התמונות של אנדרואיד TensorFlow Lite להסבר על קוד המקור.

אפליקציה דוגמה זו משתמשת בסיווג תמונות כדי לסווג באופן רציף את כל מה שהיא רואה מהמצלמה הפונה לאחור של המכשיר. היישום יכול להריץ מכשיר או אמולטור.

ההפרעה מבוצעת באמצעות ממשק ה- API TensorFlow Lite Java ובספריית התמיכה אנדרואיד TensorFlow Lite . אפליקציית ההדגמה מסווגת מסגרות בזמן אמת ומציגה את הסיווגים המובילים ביותר. זה מאפשר למשתמש לבחור בין נקודה צפה או מודל כמותי , לבחור את ספירת החוטים ולהחליט אם לרוץ על מעבד, GPU או באמצעות NNAPI .

בניית סטודיו אנדרואיד

כדי לבנות את הדוגמה ב- Android Studio, עקוב אחר ההוראות ב README.md .

צור אפליקציית אנדרואיד משלך

כדי להתחיל במהירות לכתוב קוד Android משלך, אנו ממליצים להשתמש בדוגמה של סיווג תמונות אנדרואיד כנקודת התחלה.

החלקים הבאים מכילים מידע שימושי לעבודה עם TensorFlow Lite באנדרואיד.

השתמש בספריית התמיכה TensorFlow Lite אנדרואיד

ספריית התמיכה TensorFlow Lite אנדרואיד מקלה על שילוב הדגמים ביישום שלך. הוא מספק ממשקי API ברמה גבוהה המסייעים להפוך נתוני קלט גולמיים לטופס הנדרש על ידי המודל, ומפרש את תפוקת הדגם, תוך הפחתת כמות קוד לוח הדוד הנדרש.

הוא תומך בפורמטים נפוצים של נתונים עבור כניסות ויציאות, כולל תמונות ומערכים. הוא גם מספק יחידות לפני העיבוד והפוסט-עיבוד שמבצעות משימות כמו שינוי גודל הגודל והחיתוך.

כדי להתחיל, עקוב אחר ההוראות בספריית התמיכה של אנדרואיד TensorFlow Lite README.md .

השתמש ב- TensorFlow Lite AAR מבית JCenter

כדי להשתמש ב TensorFlow Lite באפליקציית Android שלך, אנו ממליצים להשתמש ב- TensorFlow Lite AAR המתארח ב- JCenter .

אתה יכול לציין זאת בתלות build.gradle שלך באופן הבא:

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

AAR זה כולל בינריות לכל ABIs Android . אתה יכול לצמצם את גודל הבינארי של היישום שלך על ידי הכללת ABIs שאתה צריך רק לתמיכה.

אנו ממליצים לרוב המפתחים להשמיט את arm32 x86 , x86_64 ו- arm32 . ניתן להשיג זאת באמצעות תצורת Gradle הבאה, הכוללת ספציפית רק armeabi-v7a ו- arm64-v8a , שאמורים לכסות את רוב מכשירי האנדרואיד המודרניים.

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

למידע נוסף על abiFilters , עיין ב- NdkOptions בתיעוד Android Gradle.

בנה TensorFlow Lite באופן מקומי

במקרים מסוימים, ייתכן שתרצה להשתמש במבנה מקומי של TensorFlow Lite. לדוגמה, יתכן שאתה בונה בינארי מותאם אישית הכולל פעולות שנבחרו מ- TensorFlow , או שתרצה לבצע שינויים מקומיים ב- TensorFlow Lite.

הגדר סביבת לבנות באמצעות Docker

  • הורד את קובץ ה- Docker. על ידי הורדת קובץ ה- Docker, אתה מסכים שתנאי השירות הבאים קובעים את השימוש שלך בו:

בלחיצה על אישור אתה מסכים בזאת כי כל השימוש בערכת האנדרואיד ו- Kit לפיתוח תוכנה אנדרואיד ייעשה תחת הסכם הרישיון של ערכת פיתוח תוכנה לאנדרואיד הזמין בכתובת https://developer.android.com/studio/terms (כתובת URL כזו עשויה להיות יעודכן או ישתנה על ידי Google מעת לעת).

עליכם להכיר בתנאי השירות להורדת הקובץ. הכרה

  • באפשרותך לשנות את גרסת ה- SDK או ה- NDK של Android. שים את קובץ ה- Docker שהורדת בתיקיה ריקה ובנה את תמונת הדוקר שלך על ידי הפעלה:
docker build . -t tflite-builder -f tflite-android.Dockerfile
  • התחל את מיכל הדוקר באופן אינטראקטיבי על ידי הרכבת התיקיה הנוכחית ל- / tmp בתוך המיכל (שים לב ש / tensorflow_src הוא מאגר TensorFlow בתוך המיכל):
docker run -it -v $PWD:/tmp tflite-builder bash

אם אתה משתמש ב- PowerShell במערכת Windows, החלף את "$ 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 בתוך המיכל כך שתוכל לגשת אליהם במארח.

הגדר סביבת לבנות ללא Docker

התקן דרישות קדם של בזל ואנדרואיד

Bazel היא מערכת הבנייה הראשית של TensorFlow. כדי לבנות איתו, עליך להתקין את המערכת ואת ה- NDK ו- SDK אנדרואיד במערכת שלך.

  1. התקן את הגרסה האחרונה של מערכת Bazel build .
  2. Android NDK נדרש לבנות את קוד ה- TensorFlow Lite המקורי (C / C ++). הגרסה המומלצת הנוכחית היא 17c, אשר ניתן למצוא כאן .
  3. ניתן להשיג כאן את כלי ה- SDK והבנייה של אנדרואיד, או לחילופין כחלק מ- Android Studio . API לבניית כלים> = 23 הוא הגרסה המומלצת לבניית TensorFlow Lite.
קבע את התצורה של WORKSPACE ו- .Bazelrc

הפעל את ./configure התסריט בספרייה לקופה שורש TensorFlow, ואת התשובה "כן" כאשר התסריט מבקש להגדיר את אינטראקטיבי ./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

זה יפיק קובץ AAR ב- bazel-bin/tensorflow/lite/java/ . שים לב כי זה בונה AAR "שמן" עם כמה ארכיטקטורות שונות; אם אינך זקוק לכולם, השתמש בקבוצת המשנה המתאימה לסביבת הפריסה שלך.

549687487 ב

מעל הסקריפט יפיק את הקובץ tensorflow-lite.aar ובאופן אופציונלי את הקובץ tensorflow-lite-select-tf-ops.aar אם אחד מהדגמים משתמש ב- ops Tensorflow.

הוסף AAR ישירות לפרויקט

העבר את קובץ tensorflow-lite.aar לספרייה שנקראת libs בפרויקט שלך. שנה את קובץ build.gradle של האפליקציה שלך כדי להתייחס לספרייה החדשה ולהחליף את התלות TensorFlow Lite הקיימת בספריה המקומית החדשה, למשל:

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

dependencies {
    compile(name:'tensorflow-lite', ext:'aar')
}
התקן 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 המקומי, אתה יכול להשתמש בממשקי ה- API של ה- TensorFlow Lite רגילים ב- Java בקוד האפליקציה שלך.

בניית אפליקציית אנדרואיד באמצעות C ++

יש שתי דרכים להשתמש ב- TFLite דרך C ++ אם אתה בונה את האפליקציה שלך עם ה- NDK:

השתמש בממשק ה- API של TFLite C

זו הגישה המומלצת . הורד את TensorFlow Lite AAR המתארח ב- JCenter , שנה את שמו ל- tensorflow-lite-*.zip , tensorflow-lite-*.zip אותו. עליכם לכלול את ארבעת קבצי headers/tensorflow/lite/ ו- headers/tensorflow/lite/c/ תיקיה ואת הספרייה הדינמית הרלוונטית libtensorflowlite_jni.so בתיקייה jni/ folder בפרויקט NDK שלכם.

קובץ הכותרת c_api.h מכיל תיעוד בסיסי אודות השימוש בממשק ה- API של TFLite C.

השתמש ב- TFLite C ++ API

אם ברצונך להשתמש ב- TFLite דרך ממשק API של +++ C, אתה יכול לבנות את הספריות המשותפות C ++:

32bit armeabi-v7a:

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

64bit arm64-v8a:

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

נכון לעכשיו, אין דרך ישירה לחלץ את כל קבצי הכותרות הדרושים, ולכן עליכם לכלול את כל קבצי הכותרות tensorflow/lite/ ממאגר TensorFlow. בנוסף, תצטרך קבצי הכותרת מ FlatBuffers ו וגולשים .