2016-11-29 32 views
1

我已经使用重新训练图像,例如再培训培养了tensorflow模型:https://www.tensorflow.org/versions/master/how_tos/image_retraining/index.html上有许多图像tensorflow预测

现在我想用它来预测上有许多图像,我已经修改了这条巨蟒script对许多运行图片:

import numpy as np 
import tensorflow as tf 
import glob 
import os 
modelFullPath = 'output_graph.pb' 


def create_graph(): 
    """Creates a graph from saved GraphDef file and returns a saver.""" 
    # Creates graph from saved graph_def.pb.                                          
    with tf.gfile.FastGFile(modelFullPath, 'rb') as f: 
     graph_def = tf.GraphDef() 
     graph_def.ParseFromString(f.read()) 
     _ = tf.import_graph_def(graph_def, name='') 

if __name__ == '__main__': 

    imagePath = 'MYFOLDERWITHIMAGES/*.jpg' 
    testimages=glob.glob(imagePath) 

    ## init numpy array to hold all predictions                                          
    all_predictions = np.zeros(shape=(len(testimages),121)) ## 121 categories                                  


    # Creates graph from saved GraphDef.                                           
    create_graph() 

    with tf.Session() as sess: 
     softmax_tensor = sess.graph.get_tensor_by_name('final_result:0') 
     for i in range(len(testimages)): 
      image_data1 = tf.gfile.FastGFile(testimages[i], 'rb').read() 
      predictions = sess.run(softmax_tensor, 
            {'DecodeJpeg/contents:0': image_data1}) 
      all_predictions[i,:] = np.squeeze(predictions) 
      if i % 100 == 0: 
       print(str(i) +' of a total of '+ str(len(testimages))) 

但即使在我的GPU上运行,它是相当慢(约500每500图像25秒)。 我该如何加快速度?

回答

0

加速张量流的标准方法在这里可能是一个好主意。例如,使用输入队列可以帮助您保持GPU繁忙,如the reading data section of the tensorflow documentation中所述。同时为了提高GPU利用率,您希望使用更大的批量,而不是一次预测一个图像。