gpt4 book ai didi

tensorflow - Colab 中的 Tflite 模型制作器 TypeError : EndVector() missing 1 required positional argument: 'vectorNumElems'

转载 作者:行者123 更新时间:2023-12-05 03:19:28 28 4
gpt4 key购买 nike

大家好,我使用模型制造商示例通过自定义数据集训练了一个预训练 Tflite 模型。我一行行地执行了它的工作代码,但是当我想使用 model.export 来保存 Tflite formate 时,我收到了这个错误很长一段时间我都在为这个问题而苦苦挣扎

Blockquote

这是我的代码:

!sudo apt -y install libportaudio2
!pip install -q --use-deprecated=legacy-resolver tflite-model-maker
!pip install -q pycocotools
!pip install -q opencv-python-headless==4.1.2.30
!pip uninstall -y tensorflow && pip install -q tensorflow==2.8.0





import numpy as np
import os

from tflite_model_maker.config import QuantizationConfig
from tflite_model_maker.config import ExportFormat
from tflite_model_maker import model_spec
from tflite_model_maker import object_detector

import tensorflow as tf
assert tf.__version__.startswith('2')

tf.get_logger().setLevel('ERROR')
from absl import logging
logging.set_verbosity(logging.ERROR)


train_data_dir = '/content/drive/MyDrive/Custom_data_TF2/train.tfrecord'
valid_data_dir = '/content/drive/MyDrive/Custom_data_TF2/test.tfrecord'
labels = {1: 'Traffic-light', 2: 'traffic-sign' , 3 : 'zebra-line'}
train_data = object_detector.DataLoader(train_data_dir,652 , labels)
valid_data = object_detector.DataLoader(valid_data_dir,218 , labels)


spec = model_spec.get('efficientdet_lite0', verbose = True)


model = object_detector.create(train_data=train_data, model_spec=spec, validation_data=valid_data,epochs = 10 , batch_size=16, train_whole_model=True)



TFLITE_FILENAME = 'efficientdet-lite.tflite'
LABELS_FILENAME = 'labels.txt'
model.export(export_dir='.', tflite_filename=TFLITE_FILENAME, label_filename=LABELS_FILENAME,export_format=[ExportFormat.TFLITE, ExportFormat.LABEL])

最佳答案

看看升级 flatbuffers 库是否可以解决这个问题:

pip install -U flatbuffers

flatbuffers 库的 EndVector() 方法有一个变化: https://github.com/google/flatbuffers/pull/7246

Colab 使用的是 flatbuffers 1.12 而不是最新版本。当我重新运行 the example from TensorFlow ,出现同样的错误:

---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-15-fdd785f06d29> in <module>
----> 1 model.export(export_dir='.', export_format=[ExportFormat.TFLITE, ExportFormat.LABEL])

8 frames
/usr/local/lib/python3.7/dist-packages/tensorflow_examples/lite/model_maker/core/task/custom_model.py in export(self, export_dir, tflite_filename, label_filename, vocab_filename, saved_model_filename, tfjs_folder_name, export_format, **kwargs)
130 tflite_filepath = os.path.join(export_dir, tflite_filename)
131 export_tflite_kwargs, kwargs = _get_params(self._export_tflite, **kwargs)
--> 132 self._export_tflite(tflite_filepath, **export_tflite_kwargs)
133 tf.compat.v1.logging.info(
134 'TensorFlow Lite model exported successfully: %s' % tflite_filepath)

/usr/local/lib/python3.7/dist-packages/tensorflow_examples/lite/model_maker/core/task/object_detector.py in _export_tflite(self, tflite_filepath, quantization_config, with_metadata, export_metadata_json_file)
195 writer_utils.load_file(tflite_filepath),
196 [self.model_spec.config.mean_rgb],
--> 197 [self.model_spec.config.stddev_rgb], [label_filepath])
198 writer_utils.save_file(writer.populate(), tflite_filepath)
199

/usr/local/lib/python3.7/dist-packages/tensorflow_lite_support/metadata/python/metadata_writers/object_detector.py in create_for_inference(cls, model_buffer, input_norm_mean, input_norm_std, label_file_paths, score_calibration_md)
293 input_md=input_md,
294 output_category_md=output_category_md,
--> 295 output_score_md=output_score_md)

/usr/local/lib/python3.7/dist-packages/tensorflow_lite_support/metadata/python/metadata_writers/object_detector.py in create_from_metadata_info(cls, model_buffer, general_md, input_md, output_location_md, output_category_md, output_score_md, output_number_md)
224 b = flatbuffers.Builder(0)
225 b.Finish(
--> 226 model_metadata.Pack(b),
227 _metadata.MetadataPopulator.METADATA_FILE_IDENTIFIER)
228

/usr/local/lib/python3.7/dist-packages/tensorflow_lite_support/metadata/metadata_schema_py_generated.py in Pack(self, builder)
2698 subgraphMetadatalist = []
2699 for i in range(len(self.subgraphMetadata)):
-> 2700 subgraphMetadatalist.append(self.subgraphMetadata[i].Pack(builder))
2701 ModelMetadataStartSubgraphMetadataVector(builder, len(self.subgraphMetadata))
2702 for i in reversed(range(len(self.subgraphMetadata))):

/usr/local/lib/python3.7/dist-packages/tensorflow_lite_support/metadata/metadata_schema_py_generated.py in Pack(self, builder)
1018 inputTensorMetadatalist = []
1019 for i in range(len(self.inputTensorMetadata)):
-> 1020 inputTensorMetadatalist.append(self.inputTensorMetadata[i].Pack(builder))
1021 SubGraphMetadataStartInputTensorMetadataVector(builder, len(self.inputTensorMetadata))
1022 for i in reversed(range(len(self.inputTensorMetadata))):

/usr/local/lib/python3.7/dist-packages/tensorflow_lite_support/metadata/metadata_schema_py_generated.py in Pack(self, builder)
256 processUnitslist = []
257 for i in range(len(self.processUnits)):
--> 258 processUnitslist.append(self.processUnits[i].Pack(builder))
259 TensorMetadataStartProcessUnitsVector(builder, len(self.processUnits))
260 for i in reversed(range(len(self.processUnits))):

/usr/local/lib/python3.7/dist-packages/tensorflow_lite_support/metadata/metadata_schema_py_generated.py in Pack(self, builder)
2076 def Pack(self, builder):
2077 if self.options is not None:
-> 2078 options = self.options.Pack(builder)
2079 ProcessUnitStart(builder)
2080 ProcessUnitAddOptionsType(builder, self.optionsType)

/usr/local/lib/python3.7/dist-packages/tensorflow_lite_support/metadata/metadata_schema_py_generated.py in Pack(self, builder)
3013 for i in reversed(range(len(self.mean))):
3014 builder.PrependFloat32(self.mean[i])
-> 3015 mean = builder.EndVector()
3016 if self.std is not None:
3017 if np is not None and type(self.std) is np.ndarray:

TypeError: EndVector() missing 1 required positional argument: 'vectorNumElems'

升级后,一切正常。

关于tensorflow - Colab 中的 Tflite 模型制作器 TypeError : EndVector() missing 1 required positional argument: 'vectorNumElems' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73442005/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com