4

我有一個Keras模型,它正在對Raspberry Pi(帶相機)進行推理。 Raspberry Pi有一個非常慢的CPU(1.2GHz),沒有CUDA GPU,所以model.predict()階段需要很長時間(〜20秒)。我正在尋找儘可能減少這種情況的方法。我試過了:加快Keras模型的推理

  • 超頻CPU(+ 200 MhZ),並獲得了幾秒鐘的性能。
  • 使用float16而不是float32's。
  • 儘可能減少圖像輸入大小。

在推理過程中,我還能做些什麼來提高速度嗎?有沒有辦法簡化model.h5並降低精度?我已經用簡單的模型取得了成功,但是對於這個項目我需要依賴現有的模型,所以我不能從頭開始訓練。

+0

你的模型架構如何? –

+0

@FábioPerez非常複雜。 VGG16然後是一個雙重結構,其中兩個路徑都是30層+,然後在最後連接起來。這是預訓,所以afaik我無法調整模型結構。 – megashigger

+0

由於最終的大型完全連接層,VGG的推斷很慢。使用更快的網絡,如MobileNet。 –

回答

2

VGG16/VGG19架構非常慢,因爲它有很多參數。檢查this answer

在進行任何其他優化之前,請嘗試使用更簡單的網絡體系結構。

Google's MobileNet似乎是一個很好的候選人,因爲它是implemented on Keras它是專爲更有限的設備。

如果你不能使用不同的網絡,你可能會修剪網絡。 This blog後專門修剪與凱拉斯。

+0

這是一個預訓練網絡,所以我沒有這個選項嗎? – megashigger

+0

你不能在MobileNet上重現火車嗎?權重使用ImageNet權重進行初始化。否則,您將不得不通過查找最具影響力的單位來壓縮網絡。請查看https://arxiv.org/abs/1510.00149和https://jacobgil.github.io/deeplearning/pruning-deep-learning –

+0

,但這需要數週的培訓並且相當昂貴。我會研究壓縮 - 謝謝。 – megashigger