我将在android中使用yolo权重,所以我计划将yolo权重文件转换为tflite文件。
我在anaconda提示符中使用此代码,因为我在env中下载了keras库。
activate env
python convert.py yolov3.cfg yolov3.weights model_data/yolo.h5
最后,将did.Saved Keras模型转化为model_data/yolo.h5
。
我将用这段代码在jupyter笔记本中将这个h5文件转换为tflite
文件。
model = tf.keras.models.load_model("./yolo/yolo.h5", compile=False)
converter = tf.lite.TFLiteConverter.from_keras_model(model)
tflite_model = converter.convert()
open("keras_model.tflite", "wb").write(tflite_model)
但是这个错误发生了。
ValueError Traceback (most recent call last)
<ipython-input-3-964a59978091> in <module>()
1 model = tf.keras.models.load_model("./yolo/yolo.h5", compile=False)
2 converter = tf.lite.TFLiteConverter.from_keras_model(model)
----> 3 tflite_model = converter.convert()
4 open("keras_model.tflite", "wb").write(tflite_model)
~\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow_core\lite\python\lite.py in convert(self)
426 raise ValueError(
427 "None is only supported in the 1st dimension. Tensor '{0}' has "
--> 428 "invalid shape '{1}'.".format(_get_tensor_name(tensor), shape_list))
429 elif shape_list and shape_list[0] is None:
430 # Set the batch size to 1 if undefined.
ValueError: None is only supported in the 1st dimension. Tensor 'input_1' has invalid shape '[None, None, None, 3]'.
我怎么才能修好它?
我们的模型总结是
模型:"model_1“
图层(类型)输出形状Param #连接到
input_1 (InputLayer) [(无,0)
conv2d_1 (Conv2D) (无,3864 input_1 )
batch_normalization_1 (BatchNor (无,3128 conv2d_1 ))
leaky_re_lu_1 (LeakyReLU) (无,3 0 batch_normalization_1 )
zero_padding2d_1 (ZeroPadding2D (无,3 0 leaky_re_lu_1 ))
conv2d_2 (Conv2D) (无,6 18432 zero_padding2d_1 )
batch_normalization_2 (BatchNor (无,6256 conv2d_2 )
leaky_re_lu_2 (LeakyReLU) (无,6 0 batch_normalization_2 )
conv2d_3 (Conv2D) (无,3 2048 leaky_re_lu_2 )
。。。。
batch_normalization_65 (BatchNo (无,5 2048 conv2d_66 ))
batch_normalization_72 (BatchNo )(无,2 1024 conv2d_74 )
leaky_re_lu_58 (LeakyReLU) (无,10 batch_normalization_58 )
leaky_re_lu_65 (LeakyReLU) (无,5 0 batch_normalization_65 )
leaky_re_lu_72 (LeakyReLU) (无,2 0 batch_normalization_72 )
conv2d_59 (Conv2D) (无,2 261375 leaky_re_lu_58 )
conv2d_67 (Conv2D) (无,2 130815 leaky_re_lu_65 )
conv2d_75 (Conv2D) (无,2 65535 leaky_re_lu_72 )
合共: 62,001,757名可培训助理: 61,949,149名不可培训的副手: 52,608
发布于 2020-05-04 05:54:48
我看到您正在获取Keras模型的H5文件。对于TFLite模型,您将需要一个具有一定输入形状的模型,如( 256 , 256 , 3 )
。另外,对于H5模型,在保存模型后不能修改输入形状。所以,你可以采取这些措施,
发布于 2020-05-07 07:56:45
我建议这样做:
.weights
)转换为TensorFlow冻结图形格式(.pb
)。.pb
文件转换为tflite。这个过程更简单。我已经记录了一些3-4种方法来将Darknet转换为TensorFlow。请找到他们这里。
https://stackoverflow.com/questions/61585139
复制相似问题