- Improvement of tflite's I/O OP name rewriting process and I/O order control process
- Writing input/output information to tflite as `signature_defs`.
- Rewrite binaries so that input/output names match ONNX using `concrete_function`.
- `-coion / --copy_onnx_input_output_names_to_tflite` output tflite with options so that the signature is embedded in the tflite by default.
![image](https://user-images.githubusercontent.com/33194443/222949934-05067344-e8a6-40d5-94a1-e7bd96e83e87.png)
- onnx
![image](https://user-images.githubusercontent.com/33194443/222954383-46631e2b-11bf-4e17-95f4-322f8859a342.png)
- tflite
![image](https://user-images.githubusercontent.com/33194443/222955387-bd996fff-ca24-4530-9213-35fdbe674800.png)
https://github.com/PINTO0309/onnx2tf/releases/download/1.1.28/version-RFB-640.onnx
bash
onnx2tf -i version-RFB-640.onnx -coion
python
import numpy as np
import tensorflow as tf
interpreter = tf.lite.Interpreter(
model_path="saved_model/version-RFB-640_float32.tflite"
)
tf_lite_model = interpreter.get_signature_runner()
test_data = tf.convert_to_tensor(
value=np.ones(
shape=[1,480,640,3],
dtype=np.float32
)
)
tt_lite_output = tf_lite_model(
input=test_data,
)
print("[TFLite] Model Predictions:", tt_lite_output)
[TFLite] Model Predictions:
{'boxes': array([[[ 1.3372814e-04, 8.5677393e-04, 1.3687836e-02, 2.6055152e-02],
[-2.9060002e-03, -1.7406903e-03, 1.7976686e-02, 4.0702272e-02],
[-5.9925802e-03, -8.2277283e-03, 2.4591457e-02, 5.8303714e-02],
...,
[ 8.6583459e-01, 8.3152449e-01, 1.0436372e+00, 1.0488608e+00],
[ 8.2547259e-01, 7.7981573e-01, 1.0946229e+00, 1.1140716e+00],
[ 7.7743149e-01, 7.2188163e-01, 1.1553301e+00, 1.1767489e+00]]],
dtype=float32),
'scores': array([[[0.9121739 , 0.08782604],
[0.9121672 , 0.0878328 ],
[0.9121579 , 0.08784208],
...,
[0.9487316 , 0.05126836],
[0.96191823, 0.03808172],
[0.96088 , 0.03912005]]], dtype=float32)}
- Ref: https://www.tensorflow.org/lite/guide/signatures
- [[TODO] Improvement of tflite's I/O OP name rewriting process and I/O order control process 228](https://github.com/PINTO0309/onnx2tf/issues/228)
- [ONNX model input & output names are not preserved in TensorFlow & TensorFlow Lite models 178](https://github.com/PINTO0309/onnx2tf/issues/178)
What's Changed
* `-coion / --copy_onnx_input_output_names_to_tflite` output tflite with options so that the signature is embedded in the tflite by default. by PINTO0309 in https://github.com/PINTO0309/onnx2tf/pull/229
**Full Changelog**: https://github.com/PINTO0309/onnx2tf/compare/1.7.17...1.7.18