0

Je veux réécrire mon code pour visualiser toutes les étiquettes dans mon ensemble de données et voir aussi le résultat de cette comparaison.Comment voir plusieurs images dans tensorboard?

Vous pouvez voir à gauche l'image de l'étiquette et sur la main droite la sortie appris:

tensorboard

Toutes mes images ont une forme différente et je les ai lus avec

for i in range(len(files_mask)): 
    t_image_left = tf.read_file(files_left[i], name='read_fileimage_left') 
    t_image_right = tf.read_file(files_right[i], name='read_fileimage_right') 
    t_image_mask = tf.read_file(files_mask[i], name='read_fileimage_mask') 

Et remodeler les à

t_left = tf.reshape(t_left, [1, sh[0]/scaling, sh[1]/scaling, 3], name='reshape_t_left') 
    t_right = tf.reshape(t_right, [1, sh[0]/scaling, sh[1]/scaling, 3], name='reshape_t_right') 
    t_mask = tf.reshape(t_mask, [1, sh[0]/scaling, sh[1]/scaling, 1], name='reshape_t_mask') 

Ensuite, je condamné à une amende et des espaces réservés ....

t_im0 = tf.placeholder(tf.float32, [None, None, None, 3], name='left_img') 
t_im1 = tf.placeholder(tf.float32, [None, None, None, 3], name='right_img') 
t_label = tf.placeholder(tf.float32, [None, None, None, 1], name='label') 

... les mettre dans mon réseau de neurones:

tn_prediction0, tn_prediction1 = cnn.construct_stereo_img(t_im0, t_im1) 
t_img = tf.subtract(tn_prediction0, tn_prediction1) 
tn_logits = cnn.construct_nn2(t_img) 

Dans le cadre de train je les imprimer:

with tf.name_scope("Train"): 
    optimizer = tf.train.AdamOptimizer(FLAGS.learning_rate).minimize(cost_function) 
    tf.summary.image('logits', tn_logits, max_outputs=4) 
    tf.summary.image('label', t_label, max_outputs=4) 

et LET les exécuter dans une session:

with tf.Session(config=tf.ConfigProto(gpu_options=tf.GPUOptions(per_process_gpu_memory_fraction=0.333))) as sess: 

    coord = tf.train.Coordinator() 
    threads = tf.train.start_queue_runners(sess=sess, coord=coord) 
    sess.run(init) 

    for epoch in range(FLAGS.training_epochs): 
     for img in images: 
      _, summary_str, costs = sess.run([optimizer, merged_summary_op, cost_function], 
              feed_dict={t_im0: img.l_img.eval(), t_im1: img.r_img.eval(), 
                 t_label: img.mask.eval()}) 

Maintenant, h Voici mon problème: Je veux remplacer la boucle avec sess.run() pour ne pas itérer sur toutes les images.

Il est actuellement alimenté une image triple après l'autre. Comment plusieurs images en même temps, par exemple [4, ?, ?, 3]. J'ai essayé d'utiliser tf.concat(), mais si j'exécute img.l_img.eval() une erreur se produit, car les images ont des hauteurs et des largeurs différentes. Je suis également totalement ouvert à la restructuration du projet dans son ensemble.

+0

Qu'en est-il du remplissage de toutes les images à la même taille avant la concaténation à l'aide de tf.image.resize_image_with_crop_or_pad()? – RobR

+0

Je pense que ce n'est pas bon pour les résultats – j35t3r

Répondre

0

Il n'est pas possible d'augmenter la première dimension des images [1, h, w, rgb], sauf si les images/lots ont la même taille.

Le redimensionnement/recadrage entraînerait de mauvais résultats.

bref, ce n'est pas possible.