כלי פיתוח ל-Android

TensorFlow Lite מספק כמה כלים לשילוב מודלים באפליקציות ל-Android. בדף זה מתוארים כלי פיתוח לשימוש בבניית אפליקציות באמצעות Kotlin, Java ו-C++ , וגם תמיכה בפיתוח TensorFlow Lite ב-Android Studio.

כלים לבנייה עם Kotlin ו-Java

בקטעים הבאים מתוארים כלי הפיתוח של TensorFlow Lite שמשתמשים בשפות Kotlin וב-Java.

ספריית TensorFlow Lite

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

אפשר לציין זאת ביחסי התלות של build.gradle באופן הבא:

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

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

ה-AAR הזה כולל קבצים בינאריים לכל גרסאות ה-ABI של Android. אתם יכולים לצמצם את הגודל של הקובץ הבינארי של האפליקציה על ידי הכללת ממשקי ה-ABI שבהם אתם צריכים תמיכה בלבד.

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

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

מידע נוסף על abiFilters זמין במאמר Android ABIs במסמכי התיעוד של Android NDK.

ספריית התמיכה ב-TensorFlow Lite

בעזרת ספריית התמיכה ב-Android ב-TensorFlow Lite אפשר לשלב בקלות מודלים באפליקציה. הוא מספק ממשקי API ברמה גבוהה שעוזרים להפוך נתוני קלט גולמיים לצורה שנדרשת על ידי המודל, ולפרש את הפלט של המודל, וכך להפחית את כמות הקוד הסטנדרטי (boilerplate).

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

כדי להשתמש בספריית התמיכה באפליקציה ל-Android, צריך לכלול את Support Library AAR שמתארח ב-MavenCentral ב-TensorFlow Lite.

אפשר לציין זאת ביחסי התלות של build.gradle באופן הבא:

dependencies {
    implementation 'org.tensorflow:tensorflow-lite-support:+'
}

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

להוראות איך להתחיל, עיין בספריית התמיכה ב-TensorFlow Lite ל-Android.

גרסאות מינימליות של Android SDK לספריות

ספרייה minSdkVersion דרישות מכשיר
tensorflow-lite 21 -
tensorflow-lite-gpu 21 GLES 3.1 או OpenCL (בדרך כלל זמין רק ב-API 21 ואילך)
tensorflow-lite-support 21 -
tensorflow-lite-metadata 21 -

באמצעות Android Studio

בנוסף לספריות הפיתוח שמתוארות למעלה, ב-Android Studio יש גם תמיכה בשילוב מודלים של TensorFlow Lite, כפי שמתואר בהמשך.

קישור מודלים של Android Studio ML

התכונה של קישור מודלים של ML ב-Android Studio 4.1 ואילך מאפשרת לייבא קובצי מודלים של .tflite לאפליקציה הקיימת ל-Android וליצור מחלקות ממשק כדי שיהיה קל יותר לשלב את הקוד עם מודל.

כדי לייבא מודל TensorFlow Lite (TFLite):

  1. לוחצים לחיצה ימנית על המודול שבו רוצים להשתמש במודל TFLite, או לוחצים על File > New > Other > TensorFlow Lite Model.

  2. בוחרים את המיקום של הקובץ ב-TensorFlow Lite. שימו לב שהכלים מגדירים את התלות של המודול באמצעות קישור של ML Model, ומוסיף באופן אוטומטי את כל יחסי התלות הנדרשים לקובץ build.gradle של מודול Android שלכם.

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

  4. כדי להתחיל להשתמש במודל, בוחרים ב-Kotlin או ב-Java, מעתיקים ומדביקים את הקוד בקטע Sample Code.

אפשר לחזור למסך של פרטי המודל על ידי לחיצה כפולה על מודל TensorFlow Lite בספרייה ml ב-Android Studio. למידע נוסף על השימוש בתכונה Modle Binding של Android Studio, קראו את נתוני הגרסה של Android Studio. לסקירה כללית על השימוש בקישור בין מודלים ב-Android Studio, ראו instructions לקוד.

כלים לבנייה עם C ו-C++

ספריות C ו-C++ של TensorFlow Lite מיועדות בעיקר למפתחים שמשתמשים ב-Android Native Development Kit (NDK) כדי לבנות את האפליקציות שלהם. אם בונים אפליקציה עם NDK, יש שתי דרכים להשתמש ב-TFLite דרך C++:

ממשק API של TFLite C

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

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

ממשק API של TFLite C++

אם רוצים להשתמש ב-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 ומ-Abseil.