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