2017-08-25 139 views
4

我正在開發一個android的實時對象分類應用程序。首先,我使用「keras」創建了一個深度學習模型,並且我已經將訓練過的模型保存爲「model.h5」文件。我想知道如何在android中使用該模型進行圖像分類。Keras深度學習模型到android

+1

似乎keras模型並非設計用於支持Android,但我認爲你可以轉換模型文件tensorflow模型文件和然後將張量流模型文件部署到android,這[問題](https://github.com/fchollet/keras/issues/3223)可以幫助你做轉換和這[教程](https://github.com/ tensorflow/tensorflow/tree/master/tensorflow/examples/android)可以幫助如何將tensorflow模型部署到android –

+0

請問具體問題。很難回答這樣一個通用的問題。 – iga

回答

2

你不能直接出口Keras到Android,但你必須對模型

  • 配置Tensflow保存爲您Keras後端。

  • 保存模型倩女幽魂使用model.save(filepath)(你已經這樣做了)

然後用以下解決方案之一加載:

解決方案1:導入模型Tensflow

1 - 建立Tensorflow模型

2-構建Android應用程序並調用tensflow。請從google中檢查tutorialofficial demo以瞭解如何操作。

解決方法2:在java中
1 deeplearning4j一個Java庫導入模型允許進口keras型號:tutorial link
2-使用deeplearning4j在機器人:這是容易的,因爲你是在Java世界。檢查this tutorial

0

首先,你需要的Keras模型導出到Tensorflow型號:

def export_model_for_mobile(model_name, input_node_names, output_node_name): 
    tf.train.write_graph(K.get_session().graph_def, 'out', \ 
     model_name + '_graph.pbtxt') 

    tf.train.Saver().save(K.get_session(), 'out/' + model_name + '.chkp') 

    freeze_graph.freeze_graph('out/' + model_name + '_graph.pbtxt', None, \ 
     False, 'out/' + model_name + '.chkp', output_node_name, \ 
     "save/restore_all", "save/Const:0", \ 
     'out/frozen_' + model_name + '.pb', True, "") 

    input_graph_def = tf.GraphDef() 
    with tf.gfile.Open('out/frozen_' + model_name + '.pb', "rb") as f: 
     input_graph_def.ParseFromString(f.read()) 

    output_graph_def = optimize_for_inference_lib.optimize_for_inference(
      input_graph_def, input_node_names, [output_node_name], 
      tf.float32.as_datatype_enum) 

    with tf.gfile.FastGFile('out/tensorflow_lite_' + model_name + '.pb', "wb") as f: 
     f.write(output_graph_def.SerializeToString()) 

你只需要知道你圖的input_nodes_namesoutput_node_names。這將創建一個包含多個文件的新文件夾。其中,一個以tensorflow_lite_開頭。這是您將移動到Android設備的文件。

然後在Android上導入Tensorflow庫並使用TensorFlowInferenceInterface來運行您的模型。

implementation 'org.tensorflow:tensorflow-android:1.5.0' 

您可以檢查在Github上我簡單的XOR例如:

https://github.com/OmarAflak/Keras-Android-XOR

相關問題