از یک مدل سفارشی TensorFlow Lite با Flutter استفاده کنید

اگر برنامه شما از مدل‌های سفارشی TensorFlow Lite استفاده می‌کند، می‌توانید از Firebase ML برای استقرار مدل‌های خود استفاده کنید. با استقرار مدل‌ها با Firebase، می‌توانید حجم اولیه دانلود برنامه خود را کاهش داده و مدل‌های ML برنامه خود را بدون انتشار نسخه جدید برنامه خود به‌روزرسانی کنید. و با Remote Config و A/B Testing، می‌توانید مدل‌های مختلف را به صورت پویا به مجموعه‌های مختلف کاربران ارائه دهید.

مدل‌های TensorFlow Lite

مدل‌های TensorFlow Lite مدل‌های یادگیری ماشینی هستند که برای اجرا روی دستگاه‌های تلفن همراه بهینه شده‌اند. برای دریافت یک مدل TensorFlow Lite:

توجه داشته باشید که در صورت عدم وجود کتابخانه TensorFlow Lite برای Dart، باید آن را با کتابخانه بومی TensorFlow Lite برای پلتفرم‌های خود ادغام کنید. این ادغام در اینجا مستند نشده است.

قبل از اینکه شروع کنی

  1. اگر قبلاً SDK های Firebase را برای Flutter نصب و مقداردهی اولیه نکرده‌اید، این کار را انجام دهید.

  2. از دایرکتوری ریشه پروژه Flutter خود، دستور زیر را برای نصب افزونه دانلودکننده مدل ML اجرا کنید:

    flutter pub add firebase_ml_model_downloader
    
  3. پروژه خود را بازسازی کنید:

    flutter run
    

۱. مدل خود را مستقر کنید

مدل‌های سفارشی TensorFlow خود را با استفاده از کنسول Firebase یا Firebase Admin Python و Node.js SDK مستقر کنید. به بخش استقرار و مدیریت مدل‌های سفارشی مراجعه کنید.

پس از افزودن یک مدل سفارشی به پروژه Firebase خود، می‌توانید با استفاده از نامی که مشخص کرده‌اید، به مدل در برنامه‌های خود ارجاع دهید. در هر زمان، می‌توانید با فراخوانی getModel() (به پایین مراجعه کنید)، یک مدل جدید TensorFlow Lite را مستقر کرده و مدل جدید را روی دستگاه‌های کاربران دانلود کنید.

۲. مدل را روی دستگاه دانلود کنید و یک مفسر 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;

      // ...
    });

بسیاری از برنامه‌ها وظیفه دانلود را در کد مقداردهی اولیه خود شروع می‌کنند، اما شما می‌توانید این کار را در هر زمانی قبل از نیاز به استفاده از مدل انجام دهید.

۳. انجام استنتاج روی داده‌های ورودی

اکنون که فایل مدل خود را روی دستگاه دارید، می‌توانید از آن با مفسر TensorFlow Lite برای انجام استنتاج استفاده کنید. در صورت عدم وجود کتابخانه TensorFlow Lite برای Dart، باید آن را با کتابخانه‌های بومی TensorFlow Lite برای iOS و اندروید ادغام کنید.

پیوست: امنیت مدل

صرف نظر از اینکه چگونه مدل‌های TensorFlow Lite خود را در دسترس Firebase ML قرار می‌دهید، Firebase ML آنها را با فرمت استاندارد سریالیزه شده protobuf در حافظه محلی ذخیره می‌کند.

در تئوری، این بدان معناست که هر کسی می‌تواند مدل شما را کپی کند. با این حال، در عمل، اکثر مدل‌ها آنقدر مختص به یک برنامه هستند و با بهینه‌سازی‌ها مبهم شده‌اند که خطر آن مشابه خطر جداسازی و استفاده مجدد از کد شما توسط رقبا است. با این وجود، قبل از استفاده از یک مدل سفارشی در برنامه خود، باید از این خطر آگاه باشید.