2017-08-12 2 views

Antwort

1

Hier ist ein Beispielcode, um loszulegen.

with tf.device('/cpu:0'): 
    tf.reset_default_graph() 
    # here a path to tfrecords file as list 
    fq = tf.train.string_input_producer(tf.convert_to_tensor([/path/to/tfrecordsfiles]), num_epochs=1) 
    reader = tf.TFRecordReader() 
    _, v = reader.read(fq) 
    fk = { 
     'image/encoded': tf.FixedLenFeature((), tf.string, default_value='')} 
    ex = tf.parse_single_example(v, fk) 
    image = tf.image.decode_jpeg(
    ex['image/encoded'], dct_method='INTEGER_ACCURATE') 

with tf.Session() as sess: 
    coord = tf.train.Coordinator() 
    tf.train.start_queue_runners(coord=coord, sess=sess) 
    sess.run([tf.global_variables_initializer(), 
      tf.local_variables_initializer()]) 

    # set the number of images in your tfrecords file 
    num_images=100 
    for i in range(num_images): 
     try: 
      im_ = sess.run(image) 
      # chnage the image save path here 
      cv2.imwrite('/tmp/test' + str(i) + '.jpg', im_) 
     except Exception as e: 
      print(e) 
     break 
+0

Vielen Dank für die Antwort. Es funktionierte mit einigen Modifikationen. –

0

Hier ist der Code, der für mich funktioniert. Es stammt ursprünglich aus der vorherigen Antwort von Ishant Mrinal. Ich füge nur einige Änderungen hinzu:

 #get the number of records in the tfrecord file 
     c = 0 

     for record in tf.python_io.tf_record_iterator(tfrecords_filename): 
      c += 1 

     totalFiles+=c 

     logfile.write(" {} : {}".format(f, c)) 
     logfile.flush() 
     print("going to restore {} files from {}".format(c,f)) 

     tf.reset_default_graph() 

     # here a path to tfrecords file as list 
     fq = tf.train.string_input_producer([tfrecords_filename], num_epochs=fileCount) 
     reader = tf.TFRecordReader() 
     _, v = reader.read(fq) 
     fk = { 
      'image/encoded': tf.FixedLenFeature((), tf.string, default_value=''), 
      'image/class/synset': tf.FixedLenFeature([], tf.string, default_value=''), 
      'image/filename': tf.FixedLenFeature([], tf.string, default_value='') 
      } 

     ex = tf.parse_single_example(v, fk) 
     image = tf.image.decode_jpeg(ex['image/encoded'], dct_method='INTEGER_ACCURATE') 
     label = tf.cast(ex['image/class/synset'], tf.string) 
     fileName = tf.cast(ex['image/filename'], tf.string) 
     # The op for initializing the variables. 
     init_op = tf.group(tf.global_variables_initializer(), 
          tf.local_variables_initializer()) 

     with tf.Session() as sess: 
      sess.run(init_op) 

      coord = tf.train.Coordinator() 
      threads = tf.train.start_queue_runners(coord=coord) 

      # sess.run([tf.global_variables_initializer(),tf.local_variables_initializer()]) 

      # set the number of images in your tfrecords file 
      num_images=c 
      print("going to restore {} files from {}".format(num_images, f)) 
      for i in range(num_images): 

       im_,lbl,fName = sess.run([image,label,fileName]) 

       lbl_=lbl.decode("utf-8") 

       savePath=os.path.join(output_path,lbl_) 
       if not os.path.exists(savePath): 
        os.makedirs(savePath) 
       fName_=os.path.join(savePath, fName.decode("utf-8").split('_')[1]) 

       # chnage the image save path here 
       cv2.imwrite(fName_ , im_) 


      coord.request_stop() 
      coord.join(threads) 
Verwandte Themen