4

J'ai un modèle Keras qui fait des inférences sur un Raspberry Pi (avec un appareil photo). Le Raspberry Pi a un processeur très lent (1,2 GHz) et pas de GPU CUDA donc l'étape model.predict() prend beaucoup de temps (~ 20 secondes). Je cherche des façons de réduire cela autant que possible. J'ai essayé:Accélération de l'inférence des modèles Keras

  • Overclocker le CPU (+ 200 MhZ) et obtenu quelques secondes supplémentaires de performance.
  • Utilisation de float16 au lieu de float32.
  • Réduire autant que possible la taille d'entrée de l'image.

Y at-il autre chose que je peux faire pour augmenter la vitesse pendant l'inférence? Y at-il un moyen de simplifier un model.h5 et de prendre une baisse de précision? J'ai eu du succès avec des modèles plus simples, mais pour ce projet, je dois me fier à un modèle existant, donc je ne peux pas me former à partir de zéro.

+0

Comment va votre architecture de modèle? –

+0

@ FábioPerez très complexe. VGG16 alors une structure double où les deux chemins sont 30 couches + qui sont ensuite concaténées à la fin. Il est pré-formé tellement je ne peux pas ajuster la structure du modèle. – megashigger

+0

L'inférence de VGG est lente en raison de la grande couche entièrement connecté à la fin. Utilisez un réseau plus rapide tel que MobileNet. –

Répondre

2

L'architecture VGG16/VGG19 est très lente car elle a beaucoup de paramètres. Vérifiez this answer.

Avant toute autre optimisation, essayez d'utiliser une architecture réseau plus simple.

Google's MobileNet semble être un bon candidat puisqu'il s'agit de implemented on Keras et il a été conçu pour des dispositifs plus limités.

Si vous ne pouvez pas utiliser un réseau différent, vous pouvez compresser le réseau avec l'élagage. This blog poster spécifiquement faire l'élagage avec Keras.

+0

C'est un réseau pré-entraîné donc je n'ai pas cette option non? – megashigger

+0

Vous ne pouvez pas reproduire le train sur MobileNet? Les poids sont initialisés avec des poids ImageNet. Sinon, vous devrez compresser votre réseau en trouvant les unités les plus percutantes. Vérifiez https://arxiv.org/abs/1510.00149 et https://jacobgil.github.io/deeplearning/pruning-deep-learning –

+0

possible mais cela prendrait des semaines de formation et serait assez cher. Je vais regarder dans la compression - merci. – megashigger