หากแอปใช้โมเดล 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() ของโปรแกรมดาวน์โหลดโมเดล
โดยระบุชื่อที่คุณกำหนดให้กับโมเดลเมื่ออัปโหลด รวมถึงระบุว่าคุณ
ต้องการดาวน์โหลดโมเดลล่าสุดเสมอหรือไม่ และเงื่อนไขที่คุณ
ต้องการอนุญาตให้ดาวน์โหลด
คุณเลือกลักษณะการดาวน์โหลดได้ 3 แบบ ดังนี้
| ประเภทการดาวน์โหลด | คำอธิบาย |
|---|---|
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 ที่ซีเรียลไลซ์มาตรฐานในพื้นที่เก็บข้อมูลในเครื่อง
ในทางทฤษฎีแล้ว หมายความว่าทุกคนสามารถคัดลอกโมเดลของคุณได้ อย่างไรก็ตาม ในทางปฏิบัติ โมเดลส่วนใหญ่มีความเฉพาะเจาะจงกับแอปพลิเคชันและมีการปกปิดโดยการเพิ่มประสิทธิภาพ ซึ่งทำให้ความเสี่ยงคล้ายกับที่คู่แข่งถอดแยกชิ้นส่วนและนำโค้ดของคุณไปใช้ซ้ำ อย่างไรก็ตาม คุณควรทราบถึงความเสี่ยงนี้ก่อนใช้ โมเดลที่กำหนดเองในแอป