หากแอปของคุณใช้โมเดล TensorFlow Lite ที่กำหนดเอง คุณสามารถใช้ Firebase ML เพื่อปรับใช้โมเดลของคุณได้ เมื่อปรับใช้โมเดลกับ Firebase คุณจะลดขนาดการดาวน์โหลดเริ่มต้นของแอปและอัปเดตโมเดล ML ของแอปได้โดยไม่ต้องเปิดตัวแอปเวอร์ชันใหม่ และด้วยการกำหนดค่าระยะไกลและการทดสอบ A/B คุณสามารถให้บริการโมเดลต่างๆ แก่ผู้ใช้กลุ่มต่างๆ แบบไดนามิกได้
รุ่น TensorFlow Lite
รุ่น TensorFlow Lite คือรุ่น ML ที่ได้รับการปรับแต่งให้ทำงานบนอุปกรณ์เคลื่อนที่ วิธีรับโมเดล TensorFlow Lite:
- ใช้โมเดลที่สร้างไว้ล่วงหน้า เช่น หนึ่งใน โมเดล TensorFlow Lite อย่างเป็นทางการ
- แปลงโมเดล TensorFlow, โมเดล Keras หรือฟังก์ชันที่เป็นรูปธรรมเป็น TensorFlow Lite
โปรดทราบว่าหากไม่มีไลบรารี TensorFlow Lite ที่ได้รับการบำรุงรักษาสำหรับ Dart คุณจะต้องผสานรวมกับไลบรารี TensorFlow Lite ดั้งเดิมสำหรับแพลตฟอร์มของคุณ การบูรณาการนี้ไม่ได้บันทึกไว้ที่นี่
ก่อนที่คุณจะเริ่ม
ติดตั้งและเริ่มต้น Firebase SDK สำหรับ Flutter หากคุณยังไม่ได้ดำเนินการ
จากไดเร็กทอรีรากของโปรเจ็กต์ Flutter ของคุณ ให้รันคำสั่งต่อไปนี้เพื่อติดตั้งปลั๊กอินตัวดาวน์โหลดโมเดล ML:
flutter pub add firebase_ml_model_downloader
สร้างโครงการของคุณใหม่:
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 ที่ได้รับการบำรุงรักษาสำหรับ Dart คุณจะต้องผสานรวมกับ ไลบรารี TensorFlow Lite ดั้งเดิม สำหรับ iOS และ Android
ภาคผนวก: ความปลอดภัยของโมเดล
ไม่ว่าคุณจะทำให้โมเดล TensorFlow Lite พร้อมใช้งานกับ Firebase ML ได้อย่างไร Firebase ML จะจัดเก็บโมเดลเหล่านั้นในรูปแบบ protobuf ที่เป็นอนุกรมมาตรฐานในพื้นที่จัดเก็บในตัวเครื่อง
ตามทฤษฎีแล้ว นี่หมายความว่าใครๆ ก็สามารถคัดลอกแบบจำลองของคุณได้ อย่างไรก็ตาม ในทางปฏิบัติ โมเดลส่วนใหญ่จะมีความเฉพาะเจาะจงกับแอปพลิเคชันมากและถูกทำให้สับสนด้วยการปรับให้เหมาะสมให้เหมาะสม ซึ่งมีความเสี่ยงใกล้เคียงกับความเสี่ยงที่คู่แข่งจะแยกส่วนและนำโค้ดของคุณกลับมาใช้ใหม่ อย่างไรก็ตาม คุณควรตระหนักถึงความเสี่ยงนี้ก่อนที่จะใช้โมเดลที่กำหนดเองในแอปของคุณ