python - 为什么在使用 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 可能不是提高大型模型性能的最佳选择。
解决方案
推荐阅读
- java - 如何在android中为if else设置开关按钮
- angularjs - 如何在 Angular UI Modal 中使用 Datepicker
- apache - 在 SSL 终止之前重定向虚拟主机
- laravel - Laravel 路由正则表达式约束 - 未按预期工作
- twitter-bootstrap - 如何正确地将我的谷歌地图嵌入代码用于移动设备
- angular - 防止从 Injectable 检测变化
- python - crontab tee 命令不会将标准输出写入 txt 文件,而是将其清除 [python 脚本]
- android - 我可以在一个 Android 移动应用程序中使用多个广告网络吗?
- python - 无法访问 BeautifulSoup 中的表标签——显示为声明而不是标签
- autodesk-forge - Autodesk forge 标记扩展标记位置与 xyz 值不匹配