【问题标题】:Input image of a fully quantized tensorflow lite model完全量化的 tensorflow lite 模型的输入图像
【发布时间】:2019-03-31 17:53:10
【问题描述】:

我已经在 Cifar-10 上使用虚假量化 (https://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/quantize) 在 tensorflow 中训练了一个简单的 CNN 模型。然后我使用 toco 生成了一个 .tflite 文件。现在我想使用 python 解释器来测试 tflite 模型。

因为我在训练期间使用 tf.image.per_image_standardization 减去均值并除以方差。我需要对测试数据做同样的事情吗?但是,问题是,我的模型已经被 tflite 完全量化,它只需要 uint8 数据作为输入。要进行图像标准化,我需要将我的图像转换为 float32。那么如何将其转换回 uint8,或者在这种情况下,测试数据是否需要图像标准化?谢谢。

【问题讨论】:

    标签: tensorflow tensorflow-lite quantization


    【解决方案1】:

    因此,我需要对测试数据进行标准化以获得良好的准确性。 为此,我直接将 uint8 输入图像提供给 tf.image.per_image_standardization 函数。该函数会将 uint8 数据转换为 float32,然后进行标准化(减去均值,除以标准差)。你可以在这里找到函数的源代码:https://github.com/tensorflow/tensorflow/blob/r1.11/tensorflow/python/ops/image_ops_impl.py

    现在,我有了标准化的 float32 输入图像。我所做的是编写一个量化函数将 float32 图像量化回 uint8。数学来自这篇论文:https://arxiv.org/abs/1803.08607

    现在,我有了标准化的 uint8 输入图像,然后我使用 tflite 解释器 python API 来测试模型。它按预期工作。

    【讨论】:

    • 你的量化函数能否将标准化的 float32 输入图像转换为 uint8 格式?或者你从那篇论文中究竟使用了什么数学?
    • @Alexander 我在论文中使用了第 2.1 节下的方程式。
    猜你喜欢
    • 2019-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多