【问题标题】:Speeding up inference of Keras models加速 Keras 模型的推理
【发布时间】:2018-03-27 11:29:19
【问题描述】:

我有一个 Keras 模型,它在 Raspberry Pi(带摄像头)上进行推理。 Raspberry Pi 有一个非常慢的 CPU (1.2.GHz) 并且没有 CUDA GPU,所以model.predict() 阶段需要很长时间(~20 秒)。我正在寻找尽可能减少这种情况的方法。我试过了:

  • 超频 CPU (+ 200 MhZ) 并获得额外几秒钟的性能。
  • 使用 float16 而不是 float32。
  • 尽可能减小图像输入大小。

我还能做些什么来提高推理速度?有没有办法简化 model.h5 并降低准确性?我在更简单的模型上取得了成功,但对于这个项目,我需要依赖现有模型,所以我无法从头开始训练。

【问题讨论】:

  • 你的模型架构怎么样?
  • @FábioPerez 非常复杂。 VGG16 然后是一个双重结构,其中两条路径都是 30 层+,然后在最后连接起来。它是预训练的,所以我无法调整模型结构。
  • VGG的推理速度很慢,因为最后的全连接层很大。使用更快的网络,例如 MobileNet。

标签: machine-learning tensorflow raspberry-pi computer-vision keras


【解决方案1】:

VGG16 / VGG19 架构非常慢,因为它有很多参数。检查this answer。

在进行任何其他优化之前,请尝试使用更简单的网络架构。

Google's MobileNet 似乎是一个不错的候选者,因为它是 implemented on Keras,它是为更有限的设备设计的。

如果您不能使用不同的网络,您可以通过剪枝来压缩网络。 This blog 帖子专门用 Keras 进行修剪。

【讨论】:

  • 这是一个预训练的网络,所以我没有那个选项,对吧?
  • 你不能在 MobileNet 上重现火车吗?权重使用 ImageNet 权重初始化。否则,您将不得不通过寻找最有影响力的单位来压缩您的网络。检查arxiv.org/abs/1510.00149 和jacobgil.github.io/deeplearning/pruning-deep-learning
  • 可能,但需要数周的培训并且非常昂贵。我会研究压缩 - 谢谢。
  • 同时检查github.com/Irtza/Keras_model_compression。我从未测试过这个,但可能是你想要的。
  • 非常感谢。接受了您的答案 - 如果您也可以在答案中提及压缩,那就太好了。
猜你喜欢
  • 2020-03-04
  • 2022-07-28
  • 2022-12-04
  • 1970-01-01
  • 2018-05-07
  • 2021-12-26
  • 1970-01-01
  • 2019-10-12
  • 1970-01-01
相关资源
最近更新 更多