View Source TflInterp (tfl_interp v0.1.6)
Tensorflow lite intepreter for Elixir. Deep Learning inference framework for embedded devices.
Basic Usage
You get the trained tflite model and save it in a directory that your application can read. "your-app/priv" may be good choice.
$ cp your-trained-model.tflite ./priv
Next, you will create a module that interfaces with the deep learning model. The module will need pre-processing and post-processing in addition to inference processing, as in the example following. TflInterp provides inference processing only.
You put use TflInterp
at the beginning of your module, specify the model path as an optional argument. In the inference
section, you will put data input to the model (TflInterp.set_input_tensor/3
), inference execution (TflInterp.invoke/1
),
and inference result retrieval (TflInterp.get_output_tensor/2
).
defmodule YourApp.YourModel do
use TflInterp, model: "priv/your-trained-model.tflite"
def predict(data) do
# preprocess
# to convert the data to be inferred to the input format of the model.
input_bin = convert-float32-binaries(data)
# inference
# typical I/O data for Tensorflow lite models is a serialized 32-bit float tensor.
output_bin =
__MODULE__
|> TflInterp.set_input_tensor(0, input_bin)
|> TflInterp.invoke()
|> TflInterp.get_output_tensor(0)
# postprocess
# add your post-processing here.
# you may need to reshape output_bin to tensor at first.
tensor = output_bin
|> Nx.from_binary({:f, 32})
|> Nx.reshape({size-x, size-y, :auto})
* your-postprocessing *
...
end
end
Link to this section Summary
Functions
Get the flat binary from the output tensor on the interpreter.
Get the propaty of the tflite model.
Invoke prediction.
Execute post processing: nms.
Execute the inference session. In session mode, data input/execution of inference/output of results to the DL model is done all at once.
Put a flat binary to the input tensor on the interpreter.
Stop the tflite interpreter.
Link to this section Functions
Get the flat binary from the output tensor on the interpreter.
Parameters
- mod - modules' names or session.
- index - index of output tensor in the model
Get the propaty of the tflite model.
Parameters
- mod - modules' names
Invoke prediction.
Parameters
- mod - modules' names
non_max_suppression_multi_class( mod, arg, boxes, scores, iou_threshold \\ 0.5, score_threshold \\ 0.25, sigma \\ 0.0 )
View SourceExecute post processing: nms.
Parameters
- mod - modules' names
- num_boxes - number of candidate boxes
- num_class - number of category class
- boxes - binaries, serialized boxes tensor[
num_boxes
][4]; dtype: float32 - scores - binaries, serialized score tensor[
num_boxes
][num_class
]; dtype: float32 - iou_threshold - IOU threshold
- score_threshold - score cutoff threshold
- sigma - soft IOU parameter
Execute the inference session. In session mode, data input/execution of inference/output of results to the DL model is done all at once.
Parameters
- session - session.
Examples.
output_bin =
session()
|> TflInterp.set_input_tensor(0, input_bin)
|> TflInterp.run()
|> TflInterp.get_output_tensor(0)
Put a flat binary to the input tensor on the interpreter.
Parameters
- mod - modules' names or session.
- index - index of input tensor in the model
- bin - input data - flat binary, cf. serialized tensor
- opts - data conversion
Stop the tflite interpreter.
Parameters
- mod - modules' names