Ich möchte die JPEG-Bilder in Batch für die Bilderkennung lesen. Die Bilder befinden sich in der Datei/Image_p/und der Bildname wird in der Datei label.csv aufgelistet, die wie 14634_right dargestellt wird.Kann Bild in Tensorflow nicht erfolgreich lesen
Meine Frage ist Wie kann ich meinen Code reparieren, um die Bilder erfolgreich in den Stapel zu lesen? Um genauer zu sein, weiß ich nicht, ob ich eine for
Schleife schreiben und wo es implementieren soll.
Für den Original-Code, bekam ich die Fehlermeldung auf tf.train.shuffle_batch()
Funktion:
ValueError: All shapes must be fully defined: [TensorShape([Dimension(None), Dimension(None), Dimension(3)]), TensorShape([])]
Meine Herkunft Code:
# filepath
csv_filepath = r'C:\Users\Jeffy\OneDrive\Course\NMDA\retinaProject\label.csv'
# image parameter
pic_num = 100
pic_height = 64
pic_width = 64
batch_size = 10
# =============================================================================
# import library
import tensorflow as tf
import numpy as np
# =============================================================================
# read csv data
csv = np.loadtxt(open(csv_filepath,"rb"), delimiter=",", dtype='str')
pic_filename = ["" for x in range(pic_num)]
for i in range(pic_num):
pic_filename[i] = eval(csv[i,0]).decode("utf-8") +'.jpeg'
# read the data into batch
for i in range(pic_num):
# read and decode the image
image_contents = tf.read_file('Image_p/' + eval(csv[i,0]).decode("utf-8") +'.jpeg')
image = tf.image.decode_jpeg(image_contents, channels=3)
image = tf.to_float(image)
# Generate batch
batch = tf.train.shuffle_batch([image, float(eval(csv[i,1]))],
batch_size = batch_size,
num_threads = 1,
capacity = batch_size * 100,
min_after_dequeue = batch_size * 10)
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
coord = tf.train.Coordinator()
threads = tf.train.start_queue_runners(coord=coord)
image_tensor = sess.run([batch])
print(batch)
coord.request_stop()
coord.join(threads)
Plus, ich habe eine neue Datei auch writen, die ein Bild lesen erfolgreich (Danke für die Hilfe von Martianwars). Mein Testcode:
import tensorflow as tf
# read and decode the image
image_contents = tf.read_file('Image_p/11247_left.jpeg')
image = tf.image.decode_jpeg(image_contents, channels=3)
with tf.Session() as sess:
img = sess.run(image)
print(img)
Hat die Antwort Ihnen @Jeffy geholfen? – martianwars