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

ใช้รุ่น TensorFlow Lite แบบกำหนดเองกับ Flutter

หากแอปของคุณใช้ โมเดล TensorFlow Lite ที่กำหนดเอง คุณสามารถใช้ Firebase ML เพื่อทำให้โมเดลใช้งานได้ การนำโมเดลไปใช้งานด้วย Firebase ทำให้คุณลดขนาดการดาวน์โหลดเริ่มต้นของแอปและอัปเดตโมเดล ML ของแอปได้โดยไม่ต้องเผยแพร่แอปเวอร์ชันใหม่ และด้วยการกำหนดค่าระยะไกลและการทดสอบ A/B คุณสามารถให้บริการแบบจำลองต่างๆ แบบไดนามิกแก่ผู้ใช้กลุ่มต่างๆ

รุ่น TensorFlow Lite

รุ่น TensorFlow Lite เป็นรุ่น ML ที่ได้รับการปรับแต่งให้ทำงานบนอุปกรณ์เคลื่อนที่ ในการรับรุ่น TensorFlow Lite:

ก่อนจะเริ่ม

  1. ติดตั้งและเริ่มต้น Firebase SDK สำหรับ 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 ใช้ประเภทการดาวน์โหลดนี้หากคุณไม่สนใจที่จะตรวจสอบการอัปเดตรุ่น ตัวอย่างเช่น คุณกำลังใช้การกำหนดค่าระยะไกลเพื่อดึงชื่อโมเดล และคุณอัปโหลดโมเดลโดยใช้ชื่อใหม่เสมอ (แนะนำ)
localModelUpdateInBackground รับโมเดลในพื้นที่จากอุปกรณ์และเริ่มอัปเดตโมเดลในเบื้องหลัง หากไม่มีโมเดลในเครื่อง การทำงานนี้จะเป็นเหมือน latestModel
latestModel รับรุ่นล่าสุด. หากโมเดลโลคัลเป็นเวอร์ชันล่าสุด ให้ส่งคืนโมเดลโลคัล มิฉะนั้น ดาวน์โหลดรุ่นล่าสุด ลักษณะการทำงานนี้จะบล็อกจนกว่าจะดาวน์โหลดเวอร์ชันล่าสุด (ไม่แนะนำ) ใช้ลักษณะการทำงานนี้เฉพาะในกรณีที่คุณต้องการเวอร์ชันล่าสุดอย่างชัดเจน

คุณควรปิดใช้งานฟังก์ชันที่เกี่ยวข้องกับโมเดล เช่น สีเทาหรือซ่อนส่วนหนึ่งของ UI ของคุณ จนกว่าคุณจะยืนยันว่าดาวน์โหลดโมเดลแล้ว

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 จะจัดเก็บโมเดลเหล่านี้ไว้ในรูปแบบโปรโตบัฟแบบอนุกรมมาตรฐานในที่จัดเก็บในเครื่อง

ตามทฤษฎีแล้ว นี่หมายความว่าใครๆ ก็สามารถคัดลอกแบบจำลองของคุณได้ อย่างไรก็ตาม ในทางปฏิบัติ โมเดลส่วนใหญ่มีความเฉพาะเจาะจงกับแอปพลิเคชันและทำให้สับสนโดยการปรับให้เหมาะสม ซึ่งความเสี่ยงนั้นใกล้เคียงกับของคู่แข่งในการถอดแยกชิ้นส่วนและนำโค้ดของคุณมาใช้ซ้ำ อย่างไรก็ตาม คุณควรตระหนักถึงความเสี่ยงนี้ก่อนที่คุณจะใช้โมเดลแบบกำหนดเองในแอปของคุณ