Darkflow: Verwenden von graph-yolo.pb Fehler Android-Beispiel

Erstellt am 16. Feb. 2017  ·  4Kommentare  ·  Quelle: thtrieu/darkflow

Ich habe zwei Dateien graph-tiny-yolo-voc.pb und graph-yolo.pb generiert.

die Datei "graph-tiny-yolo-voc.pb" ist ok, aber graph-yolo.pb Fehler

I/native: tensorflow_inference_jni.cc:139 Erstellen eines TensorFlow-Diagramms aus GraphDef.
E/native: tensorflow_inference_jni.cc:146 TensorFlow-Grafik konnte nicht erstellt werden: Ungültiges Argument: Es wurde kein OpKernel registriert, um Op 'ExtractImagePatches' mit diesen Attributen zu unterstützen. Registrierte Geräte: [CPU], Registrierte Kernel:

[[Node: ExtractImagePatches = ExtractImagePatches T=DT_FLOAT, ksizes=[1, 2, 2, 1], padding="VALID", rates=[1, 1, 1, 1], strides=[1, 2, 2, 1] ]]
E/tensorflow: TensorFlowYoloDetector: TF-Init-Status: 3

Hilfreichster Kommentar

Kein Opkernel bedeutet, dass es keine Implementierung für die Hardware gibt, auf der dieses .pb läuft.
Um dies zu beheben, sehen Sie sich die Klasse reorg von ./net/ops/convolution.py an. Es hat zwei Methoden _forward und forward . Die aktuelle Standardoption ist die Verwendung forward , die über extract_image_patches – eine integrierte Tensorflow-Methode – verfügt.

Tauschen Sie die Namen zweier Methoden aus, und Sie verwenden meine manuelle Implementierung, die mit der Opkernel-Implementierung kein Problem haben sollte.

Alle 4 Kommentare

Kein Opkernel bedeutet, dass es keine Implementierung für die Hardware gibt, auf der dieses .pb läuft.
Um dies zu beheben, sehen Sie sich die Klasse reorg von ./net/ops/convolution.py an. Es hat zwei Methoden _forward und forward . Die aktuelle Standardoption ist die Verwendung forward , die über extract_image_patches – eine integrierte Tensorflow-Methode – verfügt.

Tauschen Sie die Namen zweier Methoden aus, und Sie verwenden meine manuelle Implementierung, die mit der Opkernel-Implementierung kein Problem haben sollte.

Ich habe den Code geändert, kann aber keine .pb generieren
/usr/bin/python3 ./flow.py --model /home/qkj/projects/dark_flow/darkflow/cfg/yolo-voc.cfg --load /home/qkj/projects/dark_flow/darkflow/bin/yolo- voc.weights --savepb

Traceback (letzter Aufruf zuletzt):
Datei "./flow.py", Zeile 42, in
tfnet = TFNet(FLAGS)
Datei "/home/qkj/projects/dark_flow/darkflow/net/build.py", Zeile 50, in __init__
self.build_forward()
Datei „/home/qkj/projects/dark_flow/darkflow/net/build.py“, Zeile 70, in build_forward
state = op_create(*args)
Datei „/home/qkj/projects/dark_flow/darkflow/net/ops/__init__.py“, Zeile 27, in op_create
gibt op_types layer_type zurück
Datei "/home/qkj/projects/dark_flow/darkflow/net/ops/baseop.py", Zeile 42, in __init__
self.forward()
Datei "/home/qkj/projects/dark_flow/darkflow/net/ops/convolution.py", Zeile 13, weiter vorne
für i im Bereich (h/s):
TypeError: 'float'-Objekt kann nicht als Ganzzahl interpretiert werden

Klassenreorg (BaseOp):
def vorwärts (selbst):
inp = self.inp.out
shape = inp.get_shape().as_list()
_, h, w, c = Form
s = self.lay.stride
aus = Liste ()
für i im Bereich (h/s):
row_i = Liste()
für j im Bereich (w/s):
si, sj = s * ich, s * j
boxij = inp[:, si: si+s, sj: sj+s,:]
flatij = tf.reshape(boxij, [-1,1,1,c s s])
row_i += [flatij]
out += [tf.concat(2, row_i)]
self.out = tf.concat(1, aus)

def _forward(self):
    inp = self.inp.out
    s = self.lay.stride
    self.out = tf.extract_image_patches(
        inp, [1,s,s,1], [1,s,s,1], [1,1,1,1], 'VALID')

Hey, das ist ein Fehler beim Übersetzen von Python2 nach Python3. Danke für den Hinweis, ich habe den Code aktualisiert.

Ich habe das gleiche Problem und ich habe die Namen von 2 Funktionen ausgetauscht, aber die Datei yolo.pb verursacht immer noch Fehler in Android. Bitte helft mir das zu beheben!!!

[[Node: ExtractImagePatches = ExtractImagePatches[T=DT_FLOAT, ksizes=[1, 2, 2, 1], padding="VALID", rates=[1, 1, 1, 1], strides=[1, 2, 2 , 1]] (47-undicht)]]

Danke

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen