2017-02-17 2 views
0

Может кто-нибудь помочь понять, почему этот код не обрабатывает ВСЕ изображения? или как убедиться, что он обработал все изображения? Пожалуйста, смотрите, что случилось, когда я распечатал функции и метки:Почему эта петля, кажется, обрабатывает только одно изображение?

def extract_features(list_images): 
    nb_features = 2048 
    features = np.empty((len(list_images),nb_features)) 
    labels = [] 
    create_graph() 
    with tf.Session() as sess: 
     next_to_last_tensor = `sess.graph.get_tensor_by_name('pool_3:0')` 

     for ind, image in enumerate(list_images): 
      if (ind%100 == 0): 
       print('Processing %s...' % (image)) 
       if not gfile.Exists(image): 
         tf.logging.fatal('File does not exist %s', image) 
      image_data = gfile.FastGFile(image, 'rb').read() 
      predictions = sess.run(next_to_last_tensor, 
      {'DecodeJpeg/contents:0': image_data}) 
      features[ind,:] = np.squeeze(predictions) 
      labels.append(re.split('_\d+',image.split('/')[1])[0]) 
     return features, labels 

Как вы видите ниже, в [11]: «Обработка изображений/Young-Bengal-tiger.jpg ...», кажется, что LOOP только proccesed Одно изображение.

In [11]: features,labels = extract_features(list_images) 

Обработка изображений/Young-Bengal-tiger.jpg ... W tensorflow/core/framework/op_def_util.cc: 332] Op BatchNormWithGlobalNormalization устарела. Он перестанет работать в GraphDef версии 9. Используйте tf.nn.batch_normalization().

я должен увидеть что-то вроде:

Processing images/baby_shoe_0.jpg... 
Processing images/basketball_hoop_0.jpg... 
Processing images/bath_spa_0.jpg... 
Processing images/binocular_0.jpg... 
Processing images/birdcage_0.jpg... 
Processing images/birdhouse_0.jpg... 
Processing images/boot_0.jpg... 
Processing images/cabinet_0.jpg... 
Processing images/calculator_0.jpg... 
...etc... 

Пожалуйста, смотрите изображение, содержащее:

  1. печати (функции)
  2. печати (этикетки)

enter image description here

ответ

0

Вы установили его только для печати «Обработка .....» каждые 100 изображений, которые он обрабатывает.

Удалите строку if (ind%100 == 0):, и она должна показать, что вы сделали, считая, что остальная часть кода работает.

Выполнение if not i % number вещь работает очень хорошо, если есть тысячи или миллионы записей, но для нескольких изображений там не должно быть большой необходимости.

def extract_features(list_images): 
    nb_features = 2048 
    features = np.empty((len(list_images),nb_features)) 
    labels = [] 
    create_graph() 
    with tf.Session() as sess: 
     next_to_last_tensor = `sess.graph.get_tensor_by_name('pool_3:0')` 

     for ind, image in enumerate(list_images): 
      print('Processing %s...' % (image)) 
      if not gfile.Exists(image): 
       tf.logging.fatal('File does not exist %s', image) 
      image_data = gfile.FastGFile(image, 'rb').read() 
      predictions = sess.run(next_to_last_tensor, 
      {'DecodeJpeg/contents:0': image_data}) 
      features[ind,:] = np.squeeze(predictions) 
      labels.append(re.split('_\d+',image.split('/')[1])[0]) 
     return features, labels 
Смежные вопросы