【问题标题】:Converted my own Keras CNN model to TensorFlow Lite. Detection results in TensorFlow Lite Demo App wrong将我自己的 Keras CNN 模型转换为 TensorFlow Lite。 TensorFlow Lite Demo App 中的检测结果错误
【发布时间】:2019-04-29 09:03:31
【问题描述】:

我正在使用我自己构建的 Keras CNN 进行图像分类。我的 PC 机器上的检测结果目前还不错(正确检测到 300 个测试图像中的大约 290 个)。现在我需要让我的模型在 Android 手机上运行。我在手机上安装了TFLite Demo App。到目前为止,它适用于预装模型以及我在网上找到的一些随机预训练模型。可悲的是,如果我将模型转换为 TFLite,它将显示错误的检测结果。

现在要将我的 Keras(.h5 文件)转换为 TFLite(.tflite 文件),我按照Tensorflow 官方网站上的描述使用以下代码:

# Convert to TensorFlow Lite model.
converter = tf.lite.TFLiteConverter.from_keras_model_file(keras_file)
tflite_model = converter.convert()
open("converted_model.tflite", "wb").write(tflite_model)

正如我上面所说,我用来转换为 TFLite 的刚刚创建的 keras-model (keras_file) 在测试中工作得非常好,但 TFLite-model 却不行。准确地说。出于测试目的,目前有 4 种可能的类别需要检测。在四分之三的情况下,应用程序会向我显示错误的检测结果,说它是 100% 确定的。我认为我创建的标签文件可能有问题。但是没有找到的方案(比如文件中字符串的顺序可能是错误的或什么的)。所以我几乎可以肯定标签文件没问题。

现在我在 Android 应用上做了什么:

  • (如description 中所述)将分类器更改为ImageClassifierFloatInception
  • 为我的 4 个类别创建包含 4 个字符串的标签文件
  • 更改图片大小
  • getNumBytesPerChannel() 的返回值更改为4,以匹配我的类别计数

规格:

  • Windows 10
  • Tf-nightly-gpu 1.13.0a20181125(TensorFlow-gpu 1.12.0 不支持转换方法)
  • Android 7.0 上的 Galaxy S6

我错过了什么吗?如果您需要更多信息,我很乐意提供。

斯蒂芬

【问题讨论】:

    标签: tensorflow keras conv-neural-network tensorflow-lite


    【解决方案1】:

    您的convertBitmaptoByteBuffer() 函数可能存在问题,或者您的.tflite 模型可能存在问题。

    【讨论】:

      猜你喜欢
      • 2019-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-11
      • 2020-12-03
      • 1970-01-01
      相关资源
      最近更新 更多