查看 2022 年 Google I/O 大会上介绍的 Firebase 新动态。了解详情

השתמש בדגם TensorFlow Lite מותאם אישית עם Flutter

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

דגמי TensorFlow Lite

דגמי TensorFlow Lite הם דגמי ML המותאמים להפעלה במכשירים ניידים. כדי להשיג דגם TensorFlow Lite:

לפני שאתה מתחיל

  1. התקן ואתחל את ערכות ה-SDK של Firebase עבור Flutter אם עדיין לא עשית זאת.

  2. מספריית השורש של פרויקט Flutter שלך, הפעל את הפקודה הבאה כדי להתקין את הפלאגין של הורדת מודל ML:

    flutter pub add firebase_ml_model_downloader
    
  3. בנה מחדש את הפרויקט שלך:

    flutter run
    

1. פרוס את הדגם שלך

פרוס את דגמי TensorFlow המותאמים אישית שלך באמצעות קונסולת Firebase או Firebase Admin Python ו-SDKs Node.js. ראה פריסה וניהול מודלים מותאמים אישית .

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

2. הורד את הדגם למכשיר ואתחל מתורגמן TensorFlow Lite

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

כדי להתחיל את הורדת המודל, קרא getModel() של הורדת המודלים, ציין את השם שהקצית לדגם כשהעלית אותו, האם ברצונך להוריד תמיד את הדגם העדכני ביותר, והתנאים שבהם ברצונך לאפשר הורדה.

אתה יכול לבחור מתוך שלוש התנהגויות הורדה:

סוג הורדה תיאור
localModel קבל את הדגם המקומי מהמכשיר. אם אין דגם מקומי זמין, זה מתנהג כמו latestModel . השתמש בסוג הורדה זה אם אינך מעוניין לחפש עדכוני דגם. לדוגמה, אתה משתמש ב-Remote Config כדי לאחזר שמות של דגמים ואתה תמיד מעלה דגמים בשמות חדשים (מומלץ).
localModelUpdateInBackground קבל את הדגם המקומי מהמכשיר והתחיל לעדכן את הדגם ברקע. אם אין דגם מקומי זמין, זה מתנהג כמו latestModel .
latestModel קבל את הדגם העדכני ביותר. אם הדגם המקומי הוא הגרסה העדכנית ביותר, מחזיר את הדגם המקומי. אחרת, הורד את הדגם העדכני ביותר. התנהגות זו תיחסם עד להורדת הגרסה העדכנית ביותר (לא מומלץ). השתמש בהתנהגות זו רק במקרים שבהם אתה זקוק במפורש לגרסה העדכנית ביותר.

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

FirebaseModelDownloader.instance
    .getModel(
        "yourModelName",
        FirebaseModelDownloadType.localModel,
        FirebaseModelDownloadConditions(
          iosAllowsCellularAccess: true,
          iosAllowsBackgroundDownloading: false,
          androidChargingRequired: false,
          androidWifiRequired: false,
          androidDeviceIdleRequired: false,
        )
    )
    .then((customModel) {
      // Download complete. Depending on your app, you could enable the ML
      // feature, or switch from the local model to the remote model, etc.

      // The CustomModel object contains the local path of the model file,
      // which you can use to instantiate a TensorFlow Lite interpreter.
      final localModelPath = customModel.file;

      // ...
    });

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

3. בצע הסקה על נתוני קלט

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

נספח: אבטחת דגם

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

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