4

나는 라스베리 파이 (카메라가있는)에 대한 추론을 수행하는 Keras 모델을 가지고 있습니다. Raspberry Pi는 CPU가 매우 느리고 (1.2GHz) CUDA GPU가 없으므로 model.predict() 단계가 오래 걸립니다 (~ 20 초). 가능한 한 많이 줄이는 방법을 찾고 있습니다. 나는 시도했다 :Keras 모델의 추측 속도 향상

  • CPU (+ 200MhZ)를 오버 클럭하고 성능이 약간의 초를 얻었다.
  • float32 대신 float16을 사용하십시오.
  • 가능한 한 이미지 입력 ​​크기를 줄입니다.

추측 중에 속도를 높이려면 다른 방법이 있습니까? model.h5를 단순화하고 정확도를 떨어 뜨리는 방법이 있습니까? 나는 더 간단한 모델로 성공을 거두었지만이 프로젝트에서는 기존 모델을 의지해야하므로 처음부터 교육 할 수는 없습니다.

+0

모델 아키텍처는 어떻습니까? –

+0

@ FábioPerez 매우 복잡합니다. VGG16은 두 경로가 모두 30 개의 레이어가되는 이중 구조이며, 마지막에는 연결됩니다. 그것은 너무 afric 나는 모델 구조를 조정할 수 없습니다 pretrained이야. – megashigger

+0

VGG의 추론은 끝에서 완전히 완전히 연결된 레이어로 인해 느립니다. MobileNet과 같은 더 빠른 네트를 사용하십시오. –

답변

2

VGG16/VGG19 아키텍처는 많은 매개 변수를 가지고 있기 때문에 매우 느립니다. this answer을 확인하십시오.

다른 최적화를 수행하기 전에 간단한 네트워크 아키텍처를 사용해보십시오.

Google's MobileNetimplemented on Keras이므로 좋은 후보로 보입니다. 더 제한된 장치를 위해 설계되었습니다.

다른 네트워크를 사용할 수없는 경우, 잘라내기를 사용하여 네트워크를 압축 할 수 있습니다. This blog 게시물은 특히 Keras로 가지 치기를 수행합니다.

+0

그것은 사전 훈련 된 네트워크이므로 그 옵션이 맞지 않습니까? – megashigger

+0

MobileNet에서 기차를 재현 할 수 없습니까? 가중치는 ImageNet 가중치로 초기화됩니다. 그렇지 않으면 가장 영향력있는 단위를 찾아 네트워크를 압축해야합니다. https://arxiv.org/abs/1510.00149와 https://jacobgil.github.io/deeplearning/pruning-deep-learning –

+0

을 확인해보세요. 그러나 훈련을 받아야하고 꽤 비쌉니다. 고맙습니다. 감사합니다. – megashigger