tensorflow - 完全量化的 tensorflow lite 模型的输入图像

标签 tensorflow tensorflow-lite quantization

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

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

最佳答案

因此,事实证明我需要对测试数据进行标准化以获得良好的准确性。
为此,我直接将 uint8 输入图像提供给 tf.image.per_image_standardization 函数。该函数会将 uint8 数据转换为 float32,然后进行标准化(减去均值,除以 std)。您可以在此处找到该函数的源代码: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 来测试模型。它按预期工作。

关于tensorflow - 完全量化的 tensorflow lite 模型的输入图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53017722/

相关文章:

python - tf.print 结果不一致

python - 是否可以创建同一 CNN 的多个实例,这些实例接收多个图像并连接成一个密集层? (喀拉斯)

python - 如何同时使用Tensorflow tf.nn.Conv2d进行训练和预测?

python - 如何在 Python 中导入 tensorflow lite 解释器?

Pytorch:将 2D-CNN 模型转换为 tflite

c - C有量化功能吗?

python - 如何使用 python 将 float 转换为具有预定义位数的定点数

python - tensorflow ,凯拉斯 : How to create a trainable variable that only update in specific positions?

python - 语音命令识别android demo提供的tflite模型 "conv_actions_tflite"是如何转换的?

python - 在 FPGA/纯 python 上运行量化的 tensorflow 模型