@@ -4778,6 +4778,7 @@ def main():
4778
4778
parser .add_argument ('--model_output_path' , type = str , default = 'saved_model' , help = 'The output folder path of the converted model file' )
4779
4779
parser .add_argument ('--output_pb' , action = 'store_true' , help = '.pb output switch' )
4780
4780
parser .add_argument ('--output_no_quant_float32_tflite' , action = 'store_true' , help = 'float32 tflite output switch' )
4781
+ parser .add_argument ('--output_dynamic_range_quant_tflite' , action = 'store_true' , help = 'dynamic quant tflite output switch' )
4781
4782
parser .add_argument ('--output_weight_quant_tflite' , action = 'store_true' , help = 'weight quant tflite output switch' )
4782
4783
parser .add_argument ('--output_float16_quant_tflite' , action = 'store_true' , help = 'float16 quant tflite output switch' )
4783
4784
parser .add_argument ('--output_integer_quant_tflite' , action = 'store_true' , help = 'integer quant tflite output switch' )
@@ -4821,6 +4822,7 @@ def main():
4821
4822
model_output_path = args .model_output_path .rstrip ('/' )
4822
4823
output_pb = args .output_pb
4823
4824
output_no_quant_float32_tflite = args .output_no_quant_float32_tflite
4825
+ output_dynamic_range_quant_tflite = args .output_dynamic_range_quant_tflite
4824
4826
output_weight_quant_tflite = args .output_weight_quant_tflite
4825
4827
output_float16_quant_tflite = args .output_float16_quant_tflite
4826
4828
output_integer_quant_tflite = args .output_integer_quant_tflite
@@ -4924,16 +4926,17 @@ def main():
4924
4926
if output_pb :
4925
4927
tfv1_flg = True
4926
4928
if output_no_quant_float32_tflite or \
4927
- output_weight_quant_tflite or \
4928
- output_float16_quant_tflite or \
4929
- output_integer_quant_tflite or \
4930
- output_full_integer_quant_tflite or \
4931
- output_tfjs or \
4932
- output_tftrt or \
4933
- output_coreml or \
4934
- output_edgetpu or \
4935
- output_onnx or \
4936
- output_openvino_and_myriad :
4929
+ output_dynamic_range_quant_tflite or \
4930
+ output_weight_quant_tflite or \
4931
+ output_float16_quant_tflite or \
4932
+ output_integer_quant_tflite or \
4933
+ output_full_integer_quant_tflite or \
4934
+ output_tfjs or \
4935
+ output_tftrt or \
4936
+ output_coreml or \
4937
+ output_edgetpu or \
4938
+ output_onnx or \
4939
+ output_openvino_and_myriad :
4937
4940
tfv2_flg = True
4938
4941
4939
4942
if tfv1_flg and tfv2_flg :
@@ -5097,6 +5100,22 @@ def main():
5097
5100
import traceback
5098
5101
traceback .print_exc ()
5099
5102
5103
+ # Dynamic range Quantization - Input/Output=float32
5104
+ if output_dynamic_range_quant_tflite :
5105
+ try :
5106
+ print (f'{ Color .REVERCE } Dynamic Range Quantization started{ Color .RESET } ' , '=' * 50 )
5107
+ converter = tf .lite .TFLiteConverter .from_saved_model (model_output_path )
5108
+ converter .optimizations = [tf .lite .Optimize .DEFAULT ]
5109
+ converter .target_spec .supported_ops = [tf .lite .OpsSet .TFLITE_BUILTINS , tf .lite .OpsSet .SELECT_TF_OPS ]
5110
+ tflite_model = converter .convert ()
5111
+ with open (f'{ model_output_path } /model_dynamic_range_quant.tflite' , 'wb' ) as w :
5112
+ w .write (tflite_model )
5113
+ print (f'{ Color .GREEN } Dynamic Range Quantization complete!{ Color .RESET } - { model_output_path } /model_dynamic_range_quant.tflite' )
5114
+ except Exception as e :
5115
+ print (f'{ Color .RED } ERROR:{ Color .RESET } ' , e )
5116
+ import traceback
5117
+ traceback .print_exc ()
5118
+
5100
5119
# Weight Quantization - Input/Output=float32
5101
5120
if output_weight_quant_tflite :
5102
5121
try :
0 commit comments