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):
לוחצים לחיצה ימנית על המודול שבו רוצים להשתמש במודל TFLite, או לוחצים על File > New > Other > TensorFlow Lite Model.
בוחרים את המיקום של הקובץ ב-TensorFlow Lite. שימו לב שהכלים מגדירים את התלות של המודול באמצעות קישור של ML Model, ומוסיף באופן אוטומטי את כל יחסי התלות הנדרשים לקובץ
build.gradle
של מודול Android שלכם.לוחצים על
Finish
כדי להתחיל את תהליך הייבוא. בסיום הייבוא מוצג בכלי מסך שמתאר את המודל, כולל מקטעי הקלט והפלט שלו.כדי להתחיל להשתמש במודל, בוחרים ב-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.