Tensorflow Lite Export#
import argparse
import os
os.environ["TF_CPP_MIN_LOG_LEVEL"] = "3"
import tensorflow as tf
def parse_arguments():
"""
Parse command line arguments.
Returns: Parsed arguments
"""
arg = argparse.ArgumentParser()
arg.add_argument(
"--model-path",
"-m",
type=str,
required=True,
help="Model path",
)
arg.add_argument(
"--target",
"-t",
type=str,
help="Target path to save the model",
)
arg.add_argument(
"--quantize",
"-q",
action="store_true",
help="Quantize the model",
)
return arg.parse_args()
def main(args):
"""
Main function.
Args:
args : Parsed arguments
"""
# pylint: disable=no-member
converter = tf.compat.v1.lite.TFLiteConverter.from_saved_model(
args.model_path,
input_shapes={"serving_default_input_data": [1, 3, 64, 64]},
)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
if args.quantize:
converter.optimizations = [tf.lite.Optimize.OPTIMIZE_FOR_SIZE]
converter.target_spec.supported_ops = [
tf.lite.OpsSet.TFLITE_BUILTINS,
tf.lite.OpsSet.SELECT_TF_OPS,
]
tflite_model = converter.convert()
if args.target:
target_path = args.target
else:
target_path = f"{args.model_path}.tflite"
if args.quantize:
target_path = "quantized_" + target_path
print(f"Target Path: {target_path}")
open(target_path, "wb").write(tflite_model)
print("Model saved")
if __name__ == "__main__":
pa = parse_arguments()
main(pa)