如何解决使用TFLiteConverter RuntimeError将TensorflowTF2量化为全整数错误:op:'CUSTOM'
最后是Hi Guys的收益分析,
目前,我仍然坚持将.pb Modell转换为TF2中的完全量化的整数TFLite模型。我使用了来自TensorFlow 2 Detection Model Zoo的预训练模型(SSD MobileNet v2 320x320),并在一个很小的自己的数据集上对其进行了预训练,只是为了测试工作流(我对Tensorflow和机器学习是陌生的)。 .pb Modell正在我的计算机上工作。现在,我想在带有Coral USB Edge TPU的Raspberry Pi上使用该模型来执行对象检测。因此,必须将模型完全量化为整数值。 我尝试使用官方TensorflowLite纪录片(https://www.tensorflow.org/lite/performance/post_training_quantization)中的代码,但tf2.3.1版本存在一些错误。因此,我升级到tf-nightly = dev2.4.0-dev20200920,它解决了一些错误。
我能够创建优化的float16和动态范围量化的TFLite模型。或者至少我没有收到任何错误,并且TFLite文件的大小减小了。但是,当我尝试将模型转换为具有代表性数据集的 int8 模型时,出现运行时错误。现在,我不确定创建我的代表数据集的代码是否错误,或者问题是否在TF2的TFLite脚本内。
非常感谢您的帮助,因为我已经在这个问题上停留了几天,而且找不到任何解决方案。
RuntimeError:运算符“ CUSTOM”尚不支持量化。
您可以在以下Google Drive文件夹中找到Python脚本,2张图像和原始的save_model.pb文件。 https://drive.google.com/drive/folders/1_TcvhYO4j_VoaDknVsYT6CL5hGkBGfLK?usp=sharing
您必须在脚本tflite_full_int.py中调整路径 saved_model_dir 和 images_path 。
这是我的代码:
import tensorflow as tf
import os
import numpy as np
import cv2
saved_model_dir = '**YOURPATH**/modelandimage/my_model/saved_model'
images_path = '**YOURPATH**/modelandimage/new'
def rep_data():
for f_name in os.listdir(images_path):
file_path = os.path.normpath(os.path.join(images_path,f_name))
img = cv2.imread(file_path)
img = cv2.resize(img,(320,320))
img = img / 255.0
img = np.reshape(img,(1,320,3))
img = img.astype(np.float32)
test = tf.dtypes.as_dtype(img)
yield[img]
converter = tf.lite.TFLiteConverter.from_saved_model(saved_model_dir)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
converter.representative_dataset = rep_data
converter.target_spec.supported_ops = [tf.lite.OpsSet.TFLITE_BUILTINS_INT8]
converter.inference_input_type = tf.uint8
converter.inference_output_type = tf.uint8
tflite_quant_model_full_int = converter.convert()
with open('model_quant_int.tflite','wb') as f:
f.write(tflite_quant_model_full_int)
系统:
Linux:Ubuntu 18.04.5
tf-nightly = dev2.4.0-dev20200920
Cuda = 11.0,Cudnn = 8.0.2
Python = 3.7.9
干杯们
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。