2

Ich habe gesehen this Blogpost, der beschreibt, wie Sie ein Objekt in einem Bild mit dem Google-Bildklassifizierungsmodell Inception V3 lokalisieren können.Lokalisieren von Objekten in Tensorflow mit der Einführung V3

„Wir können die 8x8x2048 Darstellung als Gitter von Merkmalen interpretieren, das Bild nach unten in 8 horizontalen und 8 vertikalen Gitter Quadrate zu brechen.“

Kann mir jemand erklären, wie ich auf die 8x8x2048-Schicht von Inception in Python zugreifen kann? und dann verwenden Sie eine 1x1-Faltung, um jeden dieser Vektoren einer Klassenbezeichnung zuzuordnen?

Danke!

Antwort

5

Die inception model in tensorflow's repo ruft die inception.slim.inception_v3 Funktion auf, wo Sie das Netzwerk here ändern müssen, um eine weitere Schicht für die 1x1-Faltung hinzuzufügen.

Die Änderung wäre sehr klein, Sie können einfach der Art und Weise folgen, wie andere Ebenen erstellt werden. Einfach zu sein, würde die Schicht sein, wie:

net = ops.conv2d(net, 2048, [1, 1]) 
+0

Danke für Ihre informative Antwort. Die Links waren eine große Hilfe! Wenn ich "Print 'Here'" zu [Zeile 78 des Slim Inzeptionsmodells hinzufügen] (https://github.com/tensorflow/models/blob/master/inception/inception/slim/inception_model.py#L78) Es passiert nichts, wenn ich [diesen Code] (https://gist.githubusercontent.com/wolffg/541c97a74dfc0d77c4b8fd2a946a5b41/raw/578853dd26180dbf5bfc66eb40fdd13fb3aba4d6/TensorFlow%2520codelab), bereitgestellt von Google, ausführe. Führt es im bereitgestellten Google-Code nicht das schlanke Einstiegsmodell aus? Ist es möglich, es zu sagen, das schlanke Modell zu verwenden? Danke! –

+0

Der Code, den Sie mir gezeigt haben, verwendet nicht die Slim-Funktion. Sie können sich ansehen, wie die Slim-Funktion verwendet wird: https://github.com/tensorflow/models/blob/master/inception/inception/inception_model.py # L81 – yuefengz

+0

Sie haben die Grafik aus "/tf_files/retrained_graph.pb" gelesen. Ich nehme an, das ist nicht das, was Sie vorhaben. Sie müssen Ihr eigenes Diagramm erstellen. – yuefengz

0

ich gefunden haben, können Sie die 8x8x2048

with tf.Session(config=config) as sess: 
     tensor = sess.graph.get_tensor_by_name('mixed_10/join:0') 
     for image_to_test in os.listdir(directory): 
      image = os.path.join(directory, image_to_test) 
      with tf.gfile.FastGFile(image, 'rb') as f: 
       image_data = f.read() 
       decoded={'DecodeJpeg/contents:0': image_data} 
       predictions = sess.run(tensor, decoded) 

Prognosen erhalten jetzt die 8x8x2048

haben jedoch habe ich herausgefunden, wie eine erhalten Klasse aus dem "2048" Werte

I

import tensorflow.contrib.slim as slim 

predictions = sess.run(tensor, decoded) 
ppp= slim.conv2d(predictions,2048,[1,1]) 
x=tf.unstack(ppp) 
versuche

aber dies gibt wieder einen Tensor

Tensor ("Conv/Relu: 0", die Form = (1, 8, 8, 2048), dtype = float32, device =/device: CPU: 0)

[< tf.Tensor 'Entstapeln: 0' Form = (8, 8, 2048) dtype = float32 >]

Verwandte Themen