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

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

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

مدل های 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 و Node.js SDK اجرا کنید. به استقرار و مدیریت مدل‌های سفارشی مراجعه کنید.

پس از اینکه یک مدل سفارشی را به پروژه 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 آن‌ها را در قالب استاندارد protobuf سریالی در حافظه محلی ذخیره می‌کند.

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