2017-07-10 3 views
1

Ich trainierte SSD mit TensorFlow Object Detection API wie beschrieben here. Es erzeugt eine ckpt-, Meta-und Index-Datei. Um es auf meinen Bildern zu starten, habe ich versucht, den Demo-Code zu überprüfen. Es erfordert, dass das Modell in ein eingefrorenes Diagramm konvertiert wird. Ich habe versucht, mein Modell in einen eingefrorenen Inferenzgraphen zu konvertieren, wie beschrieben here. In diesem Programm muss ich Ausgabeknotennamen angeben. Ich konnte den Namen des Knotens im SSD-Modell, der hier verwendet werden muss, nicht herausfinden. Bitte helfen Sie. Ich habe versucht, 'num_detections: 0', 'detection_boxes: 0' usw. Nur Fehler erhalten:Konvertieren von SSD in gefrorenen Graphen im Tensorflow. Welche Ausgabeknotennamen müssen verwendet werden?

AssertionError: num_detections ist nicht in Graph

Antwort

2

Wir haben ein spezielles Werkzeug, um in gefrorene Graphen in der Tensorflow Object Detection API zu konvertieren --- führen Sie einfach die export_inference_graph.py Binärdatei. Anweisungen für die Verwendung dieses Tools sind here.

0

Sie können selbst Diagramm erforschen: A Tool Developer's Guide to TensorFlow Model Files und Knotennamen finden. Ich kann Probe von meinem Modell geben: "prefix/digit1/Softmax: 0" (es war "digit1" in meinem keras Modell) Auch wenn ich mich erinnere, sollten Sie eine Liste dieser Namen zu transform_graph Dienstprogramm ("--output" -Parameter liefern).

+0

Dank für den Zeiger. –

0

Ich verwende dieses kleine Python-Skript, um Knoten basierend auf seinen Operationen zu lokalisieren. „Platzhalter“ und „Identität“ erscheint interessant sein Eingangs- und Ausgangsknoten zu finden:

import tensorflow as tf 

NODE_OPS = ['Placeholder','Identity'] 
MODEL_FILE = '/path/to/frozen_inference_graph.pb' 

gf = tf.GraphDef() 
gf.ParseFromString(open(MODEL_FILE,'rb').read()) 

print([n.name + '=>' + n.op for n in gf.node if n.op in (NODE_OPS)]) 
Verwandte Themen