我有大约13000个图像需要按特定顺序通过python脚本运行。我尝试使用for循环,但是,它没有以正确的顺序浏览图像。包含这些图像的文件夹是按顺序排列的,但不一定是名称。我有一个包含文件名的csv文件。也许它可以读取csv文件以找到要迭代的文件?
我试图对多个图像进行分类,然后使用张量流,python,再训练图以及之前生成的各自标签将它们打印到csv。
import tensorflow as tf, sys
import csv
import numpy
import os
files_dir = os.getcwd() + '/Desktop/model/test_stg1/'
files = os.listdir(files_dir)
for f in files:
if f.lower().endswith(('.png', '.jpg', '.jpeg')):
image_path = files_dir + '/' + f
image_data = tf.gfile.FastGFile(image_path, 'rb').read()
label_lines = [line.rstrip() for line
in tf.gfile.GFile("/home/fly/Desktop/model/retrained_labels.txt")]
with tf.gfile.FastGFile("/home/fly/Desktop/model/retrained_graph.pb", 'rb') as f:
graph_def = tf.GraphDef()
graph_def.ParseFromString(f.read())
_ = tf.import_graph_def(graph_def, name='')
with tf.Session() as sess:
softmax_tensor = sess.graph.get_tensor_by_name('final_result:0')
predictions = sess.run(softmax_tensor, \
{'DecodeJpeg/contents:0': image_data})
top_k = predictions[0].argsort()[-len(predictions[0]):][::-1]
text_file = open("Outputtest2.csv", "a")
for node_id in top_k:
human_string = label_lines[node_id]
score = predictions[0][node_id]
print('%s (score = %.5f)' % (human_string, score))
text_file.write('%s (%.5f),' % (human_string, score))
答案 0 :(得分:1)
如果CSV中的文件列表按您希望的方式排序,您可以打开CSV [1]并使用它来迭代文件。例如:
with open('files_data_sorted.csv', 'r') as csvfile:
filedatareader = csv.reader(csvfile, delimiter=' ', quotechar='|')
for row in filedatareader:
# let's suppose the filename is in column 0
fname = row[0]
image_path = files_dir + '/' + fname
image_data = tf.gfile.FastGFile(image_path, 'rb').read()
或者,如果您按字母顺序排序文件,则只需运行files.sort()