Skip to content

TFLite Support is a toolkit that helps users to develop ML and deploy TFLite models onto mobile / ioT devices.

License

Notifications You must be signed in to change notification settings

huningxin/tflite-support

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,737 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

This repo is a fork of the tflite-support repo, with the addition of the tflite_model_runner related code to show how it is built using bazel and emsdk.

  1. Add emscripten toolchain to the WORKSPACE file. This will set up emsdk and provide a useful build rule wasm_cc_binary that can be used to build WASM module from a cc_binary (see below).
  2. I also added a small patch for the com_google_glog library. Without it, the emscripten build will fail on Mac/Linux. The glog v0.5.0 release has a fix for this issue, but it requires some TFLite code refactoring. I will talk to the TFLite team about this. For now we will just use the patch.
  3. The cpp code is here.
    • tflite_model_runner.* implement the model runner.
    • tflite_model_runner_wasm.cc sets up the WASM related bindings.
    • The BUILD file uses the wasm_cc_binary rule to build the WASM module. It is currently linking with XNNPACK, with WASM SIMD and multi-threading turned on.
  4. The demo code is here. To run the demo:
    • Run yarn && yarn build in the demo directory. yarn build runs build.sh where you can see how the bazel build command is used and how to extract the output files.
    • Run yarn start to start the demo locally. It creates a model runner instance with the MobilenetV2 model and classfies an image. See the script.js file for details about how things are used from the JS side.
    • Since this build configuration is for SIMD+multi-threading, please make sure Chrome has these two features turned on from chrome://flags.
    • Run yarn run electron to start the demo in electron.js.
    • Run yarn run electron-packager to build an electron.js app of this demo.
  5. The WebNN delegate support
    • tensorflow_lite_webnn_delegate.patch: the WebNN delegate implementation.
    • Add TFLiteWebModelRunnerOptions.enableWebNNDelegate to enable or disable WebNN delegate.
    • Demo in browser is using webnn-polyfill.
    • Demo in electron.js could use WebNN-native node.js binding for more details.

About

TFLite Support is a toolkit that helps users to develop ML and deploy TFLite models onto mobile / ioT devices.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 42.8%
  • C++ 27.3%
  • Java 11.2%
  • Python 7.3%
  • Starlark 5.3%
  • Objective-C 2.5%
  • Other 3.6%