Ich entwickle eine Echtzeit-Objektklassifizierungs-App für Android. Zuerst habe ich ein tiefes Lernmodell mit "Keras" erstellt, und ich habe bereits trainiert, dass das Modell als "model.h5" -Datei gespeichert wurde. Ich würde gerne wissen, wie ich dieses Modell in Android zur Bildklassifizierung verwenden kann.
Sie können Keras nicht direkt auf Android exportieren, aber Sie müssen das Modell speichern
Konfigurieren Sie Tensflow als Ihr Keras-Backend.
Speichern Sie die Modellgewichte mit model.save(filepath)
(Sie haben dies bereits getan)
Laden Sie es dann mit einer der folgenden Lösungen:
Lösung 1: Modell in Tensflow importieren
1- Erstellen Sie das Tensorflow-Modell
2- Erstellen Sie eine Android-App und rufen Sie tensflow an. Überprüfen Sie dieses Tutorial und dieses offizielle Demo von Google, um zu erfahren, wie es geht.
Lösung 2: Modell in Java importieren
1- deeplearning4j eine Java-Bibliothek erlaubt das Importieren von Keras-Modellen: Tutorial-Link
2- Verwenden Sie deeplearning4j in Android: Es ist einfach, da Sie sich in der Java-Welt befinden. check dieses Tutorial
Zuerst müssen Sie das Keras -Modell in ein Tensorflow -Modell exportieren:
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())
Sie müssen lediglich den input_nodes_names
und output_node_names
Ihres Diagramms kennen. Dadurch wird ein neuer Ordner mit mehreren Dateien erstellt. Unter ihnen beginnt man mit tensorflow_lite_
. Dies ist die Datei, die Sie auf Ihr Android-Gerät verschieben müssen.
Importieren Sie dann die Tensorflow-Bibliothek unter Android und führen Sie Ihr Modell mit TensorFlowInferenceInterface
aus.
implementation 'org.tensorflow:tensorflow-Android:1.5.0'
Sie können mein einfaches XOR Beispiel auf Github überprüfen: