首页 > 解决方案 > 为什么在使用 TensorFlow Lite 转换 YOLOv4 时,推理时间/大小没有改善?有没有可能的改进?

问题描述

我目前正在使用 YOLOv4 和COCO数据集。我直接从权重创建模型(您可以在此处下载它们),然后使用以下参数将其转换为 TensorFlow Lite 格式:

model = load_yolo(weights)  # Function to create the yolo model & load the weights
tflite_converter = tflite.TFLiteConverter.from_keras_model(model)
tflite_model = tflite_converter.convert()

我的主要目标是获得更快的 YOLOv4 模型(希望更小)。目前,我正在笔记本电脑上执行模型,在单个图像 (608x608x3) 上运行推理需要 3 到 4 秒。这就是我决定将模型转换为 TensorFlow Lite 格式的原因。但是,我在时间上得到了非常相似的结果(模型转换为 TensorFlow Lite 格式后,在单个图像上运行推理也需要 3 到 4 秒)。此外,生成的.tflite文件或多或少与权重文件 (~250MB) 大小相同。此外,在量化模型 ( tflite_converter.optimizations = [tflite.Optimize.DEFAULT]) 时,我会得到更糟糕的结果(尽管 .tflite 文件要小约 4 倍)。

即使据说 TensorFlow Lite 已针对边缘设备进行了优化,但在我的笔记本电脑(Windows 10 操作系统)中使用此工具转换模型时,我过去总是获得更快(更小)的模型。这就是为什么我决定对 YOLOv4 采用这种方法。使用 YOLOv4 模型获得这些“糟糕的性能”结果是否有原因?这是获得更快版本的 YOLOv4 的好方法吗?而且,是否有任何其他选择或更好的方法来获得更快版本的 YOLOv4(如YOLOv4-tiny)?

注意:我使用的是 TensorFlow 2.4.1。

编辑:在使用不同模型测试 TensorFlow Lite 时,模型越深,与普通 TensorFlow 相比,其性能越低。这取决于硬件,但 TensorFlow Lite 可能不是提高大型模型性能的最佳选择。

标签: pythontensorflowyolo

解决方案


推荐阅读