Nếu ứng dụng của bạn sử dụng với mô hình TensorFlow Lite, bạn có thể sử dụng công nghệ học máy của Firebase để triển khai các mô hình. Bằng cách triển khai các mô hình bằng Firebase, bạn có thể giảm kích thước tải xuống ban đầu của ứng dụng và cập nhật các mô hình học máy của ứng dụng mà không cần phát hành phiên bản mới của ứng dụng. Đồng thời, bằng tính năng Cấu hình từ xa và A/B Khi thử nghiệm, bạn có thể linh động phân phát nhiều mô hình đến nhiều nhóm người dùng.
Mô hình TensorFlow Lite
Các mô hình TensorFlow Lite là các mô hình học máy được tối ưu hoá để chạy trên thiết bị di động thiết bị. Cách tạo mô hình TensorFlow Lite:
- Sử dụng một mô hình tạo sẵn, chẳng hạn như một trong các mô hình TensorFlow Lite chính thức
- Chuyển đổi mô hình TensorFlow, mô hình Keras hoặc hàm cụ thể sang TensorFlow Lite.
Xin lưu ý rằng khi không có thư viện TensorFlow Lite được duy trì cho Dart, bạn cần tích hợp với thư viện TensorFlow Lite gốc cho nền tảng. Việc tích hợp này không được ghi lại tại đây.
Trước khi bắt đầu
Cài đặt và khởi chạy Firebase SDK cho Flutter nếu bạn chưa làm như vậy.
Trong thư mục gốc của dự án Flutter, hãy chạy lệnh sau để cài đặt trình bổ trợ trình tải mô hình học máy xuống:
flutter pub add firebase_ml_model_downloader
Tạo lại dự án:
flutter run
1. Triển khai mô hình
Triển khai các mô hình TensorFlow tuỳ chỉnh bằng bảng điều khiển của Firebase hoặc SDK Node.js và Python Admin của Firebase. Xem Triển khai và quản lý các mô hình tuỳ chỉnh.
Sau khi thêm mô hình tùy chỉnh vào dự án Firebase, bạn có thể tham khảo
trong các ứng dụng của mình bằng tên mà bạn đã chỉ định. Bất cứ lúc nào, bạn đều có thể triển khai
mô hình TensorFlow Lite mới và tải mô hình mới xuống thiết bị của người dùng thiết bị của
đang gọi getModel()
(xem bên dưới).
2. Tải mô hình xuống thiết bị và khởi chạy trình thông dịch TensorFlow Lite
Để dùng mô hình TensorFlow Lite trong ứng dụng của bạn, trước tiên hãy dùng trình tải mô hình xuống để tải phiên bản mới nhất của mô hình xuống thiết bị. Sau đó, hãy tạo thực thể cho Phiên dịch cho TensorFlow Lite bằng mô hình.
Để bắt đầu tải mô hình xuống, hãy gọi phương thức getModel()
của trình tải mô hình xuống,
chỉ định tên mà bạn đã chỉ định cho mô hình khi tải lên, cho dù bạn
muốn luôn tải xuống mô hình mới nhất và các điều kiện mà bạn
muốn cho phép tải xuống.
Bạn có thể chọn một trong ba hành vi tải xuống sau:
Loại tệp tải xuống | Mô tả |
---|---|
localModel
|
Lấy mẫu cục bộ từ thiết bị.
Nếu không có sẵn mô hình cục bộ, điều này
hoạt động như latestModel . Sử dụng bản thảo này
loại tệp tải xuống nếu bạn không quan tâm đến
đang kiểm tra các bản cập nhật mô hình. Ví dụ:
bạn đang sử dụng Cấu hình từ xa để truy xuất
tên mô hình và bạn luôn tải lên mô hình
dưới tên mới (được đề xuất). |
localModelUpdateInBackground
|
Lấy mô hình cục bộ từ thiết bị và
bắt đầu cập nhật mô hình trong nền.
Nếu không có sẵn mô hình cục bộ, điều này
hoạt động như latestModel . |
latestModel
|
Tải mẫu mới nhất. Nếu mô hình cục bộ là phiên bản mới nhất, trả về mã mô hình. Nếu không, hãy tải phiên bản mới nhất mô hình. Hành vi này sẽ chặn cho đến khi phiên bản mới nhất đã được tải xuống (không phải khuyến nghị). Chỉ sử dụng hành vi này trong trong trường hợp bạn rõ ràng cần . |
Bạn nên tắt chức năng liên quan đến mô hình (ví dụ: chuyển màu xám hoặc ẩn một phần giao diện người dùng cho đến khi bạn xác nhận mô hình đã được tải xuống.
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;
// ...
});
Nhiều ứng dụng bắt đầu tác vụ tải xuống trong mã khởi chạy của ứng dụng, nhưng bạn có thể làm được vì vậy, tại bất kỳ thời điểm nào trước khi cần sử dụng mô hình này.
3. Tiến hành suy luận về dữ liệu đầu vào
Giờ đây, khi đã có tệp mô hình trên thiết bị, bạn có thể sử dụng tệp đó với Trình phiên dịch TensorFlow Lite để tiến hành suy luận. Trong trường hợp không có Thư viện TensorFlow Lite dành cho Dart, bạn sẽ cần tích hợp với thư viện TensorFlow Lite gốc cho iOS và Android.
Phụ lục: Bảo mật mô hình
Bất kể bạn áp dụng mô hình TensorFlow Lite bằng cách nào Firebase ML, Firebase ML lưu trữ chúng ở định dạng protobuf được chuyển đổi tuần tự tiêu chuẩn trong lưu trữ cục bộ.
Về mặt lý thuyết, điều này có nghĩa là bất kỳ ai cũng có thể sao chép mô hình của bạn. Tuy nhiên, trong thực tế, hầu hết các mô hình đều dành riêng cho ứng dụng và bị làm rối mã nguồn rủi ro tương tự như các biện pháp tối ưu hoá của đối thủ cạnh tranh bị loại bỏ và việc sử dụng lại mã. Tuy nhiên, bạn nên lưu ý rủi ro này trước khi sử dụng một mô hình tuỳ chỉnh trong ứng dụng của bạn.