【问题标题】:Quantization aware training in tensorflow 2.2.0 producing higher inference timetensorflow 2.2.0 中的量化感知训练产生更高的推理时间
【发布时间】:2020-09-09 06:22:00
【问题描述】:

我正在使用 MobilenetV2 对个人数据集进行迁移学习的量化。我尝试过两种方法:

i.) 仅训练后量化:工作正常,平均 0.04 秒的时间可以推断 224,224 维的 60 幅图像。

ii.) 量化感知训练 + 训练后量化:它比仅训练后量化产生更高的准确度,但对于相同的 60 张图像产生 0.55 秒的更高推理时间。

1.) 只有训练后量化模型(.tflite)可以通过以下方式推断:

        images_ = cv2.resize(cv2.cvtColor(cv2.imread(imagepath), cv2.COLOR_BGR2RGB), (224, 224))
        images = preprocess_input(images_)
        interpreter.set_tensor(
                    interpreter.get_input_details()[0]['index'], [x])
        interpreter.invoke()
        classes = interpreter.get_tensor(
            interpreter.get_output_details()[0]['index'])

2.) 量化感知训练 + 训练后量化可以通过以下代码推断。不同的是这里它要求输入 float32。

        images_ = cv2.resize(cv2.cvtColor(cv2.imread(imagepath), cv2.COLOR_BGR2RGB), (224, 224))
        images = preprocess_input(images_)
        x = np.expand_dims(images, axis=0).astype(np.float32)
        interpreter.set_tensor(
                    interpreter.get_input_details()[0]['index'], x)
        interpreter.invoke()
        classes = interpreter.get_tensor(
            interpreter.get_output_details()[0]['index'])

我进行了很多搜索,但没有得到任何关于此查询的回复。如果可能的话,请帮助为什么在量化感知训练 + 训练后量化的情况下,与仅训练后量化相比,我的推理时间会变长?

【问题讨论】:

    标签: python computer-vision tensorflow2.0 quantization-aware-training optimizer-deeplearning


    【解决方案1】:

    我认为你不应该同时进行量化感知训练+训练后量化。

    根据https://www.tensorflow.org/model_optimization/guide/quantization/training_example,如果您使用量化感知训练,转换将为您提供一个具有 int8 权重的模型。所以,这里没有必要做训练后量化。

    【讨论】:

    • 嗨,在文章中明确提到:“请注意,生成的模型是量化感知的,但不是量化的(例如,权重是 float32 而不是 int8)。后面的部分展示了如何创建一个量化感知模型中的量化模型。”为了使权重为 int8,我们需要进行训练后量化。如果我错了,请纠正我。
    • Aparajit 你是对的,你必须进行后期量化。 QAT 只是训练模型在量化范围内运行。后量化是您申请获取 tflite 模型的方式
    • 详细来说,您当然可以在 tf2.x 或 tf1.x 中进行 QAT,以使您的模型在该量化范围内良好运行,并通过后量化将其导出而不会造成任何伤害。这是在 QAT tensorflow.org/model_optimization/guide/quantization/… 之后用作后量化的部分 tensorflow
    • 我认为您误读了这个问题。我面临的问题是量化感知训练中的推理时间更长。如果需要,请再次检查问题,如果您有任何疑问,请告诉我。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-03
    • 2020-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-02
    相关资源
    最近更新 更多