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