TensorFlow Lite בשירותי Google Play (ביטא)

TensorFlow Lite זמין ב-Google Play Services API כגרסת ביטא ציבורית בכל מכשירי אנדרואיד המריצים את הגרסה הנוכחית של שירותי Play, החל מ-17 בפברואר 2022. API זה מאפשר לך להפעיל מודלים של למידה חישובית מבלי לאגד באופן סטטי ספריות TensorFlow Lite באפליקציה שלך, המאפשר לך:

  • הקטן את גודל האפליקציה שלך
  • השג ביצועים משופרים מהגרסה העדכנית והיציבה של TensorFlow Lite

דף זה מספק סקירה קצרה כיצד להשתמש ב-TensorFlow Lite החדש בממשקי API של שירותי Google Play באפליקציית Android שלך.

למידע נוסף על שירותי Google Play, עיין באתר שירותי Google Play .

הוסף את TensorFlow Lite לאפליקציה שלך

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

1. הוסף תלות בפרויקט

הוסף את התלות הבאות לקוד פרויקט האפליקציה שלך כדי לגשת ל-Play Services API עבור TensorFlow Lite:

dependencies {
...
    // Tensorflow Lite dependencies for Google Play services
    implementation 'com.google.android.gms:play-services-tflite-java:16.0.0-beta02'
    // Optional: include Tensorflow Lite Support Library
    implementation 'com.google.android.gms:play-services-tflite-support:16.0.0-beta02'
...
}

2. הוסף אתחול של TensorFlow Lite

אתחל את רכיב TensorFlow Lite של ה-API של שירותי Google Play לפני השימוש בממשקי ה-API של TensorFlow Lite:

קוטלין

val initializeTask: Task<Void> by lazy { TfLite.initialize(this) }

Java

Task<Void> initializeTask = TfLite.initialize(context);

3. צור מתורגמן והגדר אפשרות זמן ריצה

צור מתורגמן באמצעות InterpreterApi.create() והגדר אותו לשימוש בזמן ריצה של שירותי Google Play, על ידי קריאה ל- InterpreterApi.Options.setRuntime() , כפי שמוצג בקוד הדוגמה הבא:

קוטלין

import org.tensorflow.lite.InterpreterApi
import org.tensorflow.lite.InterpreterApi.Options.TfLiteRuntime
...
private lateinit var interpreter: InterpreterApi
...
initializeTask.addOnSuccessListener {
  val interpreterOption =
    InterpreterApi.Options().setRuntime(TfLiteRuntime.FROM_SYSTEM_ONLY)
  interpreter = InterpreterApi.create(
    modelBuffer,
    interpreterOption
  )}
  .addOnFailureListener { e ->
    Log.e("Interpreter", "Cannot initialize interpreter", e)
  }

Java

import org.tensorflow.lite.InterpreterApi
import org.tensorflow.lite.InterpreterApi.Options.TfLiteRuntime
...
private InterpreterApi interpreter;
...
initializeTask.addOnSuccessListener(a -> {
    interpreter = InterpreterApi.create(modelBuffer,
      new InterpreterApi.Options().setRuntime(TfLiteRuntime.FROM_SYSTEM_ONLY));
  })
  .addOnFailureListener(e -> {
    Log.e("Interpreter", String.format("Cannot initialize interpreter: %s",
          e.getMessage()));
  });

עליך להשתמש ביישום שלמעלה מכיוון שהוא נמנע מחסימת שרשור ממשק המשתמש של אנדרואיד. אם אתה צריך לנהל את ביצוע השרשור מקרוב יותר, אתה יכול להוסיף קריאה Tasks.await() ליצירת המתורגמן:

קוטלין

import androidx.lifecycle.lifecycleScope
...
lifecycleScope.launchWhenStarted { // uses coroutine
  initializeTask.await()
}

Java

@BackgroundThread
InterpreterApi initializeInterpreter() {
    Tasks.await(initializeTask);
    return InterpreterApi.create(...);
}

4. הפעל מסקנות

באמצעות אובייקט interpreter שיצרת, קרא למתודה run() כדי ליצור הסקה.

קוטלין

interpreter.run(inputBuffer, outputBuffer)

Java

interpreter.run(inputBuffer, outputBuffer);

TensorFlow Lite בשירותי Google Play

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

הגירה מ- Standalone TensorFlow Lite

אם אתה מתכנן להעביר את האפליקציה שלך מ-TensorFlow Lite העצמאי ל-Play Services API, עיין בהנחיות הנוספות הבאות לעדכון קוד פרויקט האפליקציה שלך:

  1. עיין בסעיף ההגבלות בדף זה כדי לוודא שהמקרה של השימוש שלך נתמך.
  2. לפני עדכון הקוד שלך, בצע בדיקות ביצועים ודיוק עבור הדגמים שלך, במיוחד אם אתה משתמש בגרסאות של TensorFlow Lite מוקדמות יותר מגרסה 2.1, כך שיש לך קו בסיס להשוואה מול היישום החדש.
  3. אם העברת את כל הקוד שלך לשימוש ב-Play Services API עבור TensorFlow Lite, עליך להסיר את התלויות הקיימות של ספריית זמן הריצה של TensorFlow Lite (ערכים עם org.tensorflow: tensorflow-lite :* ) מקובץ build.gradle שלך ​​כדי שתוכל יכול להקטין את גודל האפליקציה שלך.
  4. זהה את כל המופעים של יצירת אובייקט new Interpreter בקוד שלך, ושנה אותו כך שישתמש בקריאה InterpreterApi.create() . ה-API החדש הזה הוא אסינכרוני, מה שאומר שברוב המקרים הוא לא תחליף ל-Drop-in, ואתה חייב לרשום מאזין למועד השיחה. עיין בקטע הקוד בקוד שלב 3 .
  5. הוסף import org.tensorflow.lite.InterpreterApi; import org.tensorflow.lite.InterpreterApi.Options.TfLiteRuntime; לקבצי מקור כלשהם באמצעות org.tensorflow.lite.Interpreter או org.tensorflow.lite.InterpreterApi .
  6. אם לאחת מהקריאות שהתקבלו ל- InterpreterApi.create() יש רק ארגומנט בודד, הוסף new InterpreterApi.Options() לרשימת הארגומנטים.
  7. הוסף .setRuntime(TfLiteRuntime.FROM_SYSTEM_ONLY) לארגומנט האחרון של כל קריאות ל- InterpreterApi.create() .
  8. החלף את כל המופעים האחרים של המחלקה org.tensorflow.lite.Interpreter ב- org.tensorflow.lite.InterpreterApi .

אם ברצונך להשתמש ב-TensorFlow Lite העצמאי וב-Play Services API זה לצד זה, עליך להשתמש TensorFlow Lite 2.9 (או מאוחר יותר). TensorFlow Lite 2.8 וגרסאות קודמות אינן תואמות לגרסת ה-API של שירותי Play.

אפליקציה לדוגמה

אתה יכול לסקור ולבדוק דוגמה ליישום של TensorFlow Lite בשירותי Google Play באפליקציה לדוגמה .

בדיקה

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

LoadingException: אין מודול מקובל

בזמן בדיקת האפליקציה שלך באמצעות סביבת פיתוח במהלך תקופת השקת הבטא, ייתכן שתקבל חריגה כאשר האפליקציה שלך תנסה לאתחל את המחלקה TensorFlow Lite ( TfLite.intialize(context) ):

com.google.android.gms.dynamite.DynamiteModule$LoadingException:
  No acceptable module com.google.android.gms.tflite_dynamite found.
  Local version is 0 and remote version is 0.

שגיאה זו פירושה שה-TensorFlow Lite ב-API של שירותי Google Play עדיין לא זמין במכשיר הבדיקה שלך. אתה יכול לפתור חריג זה על ידי הצטרפות לקבוצת Google tflite-play-services-beta-access עם חשבון המשתמש שבו אתה משתמש כדי לבדוק במכשיר שלך. לאחר שנוספת לקבוצת הגישה לביטא, חריג זה אמור להיפתר.

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

מגבלות

TensorFlow Lite בשירותי Google Play נמצא כעת בגרסת בטא ציבורית ויש לו את המגבלות הבאות:

  • רק נציג NNAPI נתמך כרגע על ידי שירותי Google Play. נציגי TensorFlow Lite אחרים, כולל GPU ו-Flex אינם נתמכים כעת.
  • גישה ל-TensorFlow Lite דרך ממשקי API מקוריים אינה נתמכת. רק ממשקי API של TensorFlow Lite Java זמינים דרך שירותי Google Play.
  • ממשקי API של TensorFlow Lite ניסיוניים או שהוצאו משימוש, כולל פעולות מותאמות אישית, אינם נתמכים.

תמיכה ומשוב

אתה יכול לספק משוב ולקבל תמיכה עבור תכונת גרסת בטא זו, דרך TensorFlow Issue Tracker. אנא דווח על בעיות ובקשות תמיכה באמצעות תבנית הבעיה עבור TensorFlow Lite בשירותי Google Play.

תנאים ומדיניות פרטיות

השימוש ב-TensorFlow Lite בשירותי Google Play כפוף לתנאים וההגבלות של Google APIs . שימו לב כי TensorFlow Lite בשירותי Google Play נמצא בגרסת בטא, וככזה, הפונקציונליות שלו כמו גם ממשקי ה-API המשויכים עשויים להשתנות ללא הודעה מוקדמת.

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

ה-TensorFlow Lite ב-API של שירותי Google Play עשוי ליצור קשר עם שרתי Google מעת לעת כדי לקבל דברים כמו תיקוני באגים, דגמים מעודכנים ומידע על תאימות מאיץ החומרה. ממשקי ה-API של TensorFlow Lite בשירותי Google Play שולחים ל-Google גם מדדים לגבי הביצועים והניצול של ממשקי ה-API באפליקציה שלך. Google משתמשת בנתונים של מדדים אלה כדי למדוד ביצועים, לנפות באגים, לתחזק ולשפר את ממשקי ה-API, ולאתר שימוש לרעה או ניצול לרעה, כמתואר בהמשך במדיניות הפרטיות שלנו.

אתה אחראי ליידע את המשתמשים באפליקציה שלך על העיבוד של Google של TensorFlow Lite בנתוני מדדי שירותי Google Play כנדרש על פי החוק החל.

הנתונים שאנו אוספים כוללים את הדברים הבאים:

  • מידע על המכשיר (כגון יצרן, דגם, גרסת מערכת הפעלה ומבנה) ומאיצי חומרה זמינים של ML (GPU ו-DSP). משמש לאבחון וניתוח שימוש.
  • מזהה מכשיר המשמש לאבחון וניתוח שימוש.
  • מידע על האפליקציה (שם החבילה, גרסת האפליקציה). משמש לאבחון וניתוח שימוש.
  • תצורת API (כגון אילו נציגים נמצאים בשימוש). משמש לאבחון וניתוח שימוש.
  • סוג אירוע (כגון יצירת מתורגמן, מסקנות). משמש לאבחון וניתוח שימוש.
  • קודי שגיאה. משמש לאבחון.
  • מדדי ביצועים. משמש לאבחון.

הצעדים הבאים

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