2017-01-06 14 views
2

Я использую два текстовых файла, каждый из которых имеет пути к моим изображениям проверки/обучения.Как создать mean.binaryproto для caffe из текстового файла для данных?

Теперь я хочу создать mean.binaryproto из этих изображений для ввода в свой слой ввода. Тем не менее, я только нашел примеры, где это делается с использованием уровня ввода leveldb. Я могу создать свое собственное среднее изображение легко с помощью скрипта python, но я не знаю, как продолжить после этого, так сказать, как написать образ как двоичноепрото в конце моего скрипта. Есть ли указатели?

from PIL import Image 
import numpy as np; 

#Create mean image function 
def create_mean(list_of_images): 

    for i in range(0,len(list_of_images)): 
     print list_of_images[i] 
     if i == 0: 
      n = np.int32(Image.open(list_of_images[i])); 
     else: 
      n = n + np.int32(Image.open(list_of_images[i])); 

    return np.uint8(np.double(n)/len(list_of_images)) 


#paths out of textfile,here to simplify as an array , usually comes out of a txt file 
#but that's not the issue 
list_imgs = ['out.tiff','out2.tiff' ] 


avg_img = create_mean(list_imgs) 



#Now how to write this into the needed .binaryproto 
#.... ? 
+1

У вас есть какой-либо код, который вы можете включить в свой вопрос? – Tagc

+0

Да, я отредактировал мой пост – Kev1n91

ответ

1

Поскольку Среднее изображение приводится в Numpy массива функция кофейной может быть использована для записи в качестве .binaryproto

import caffe 

blob = caffe.io.array_to_blobproto(avg_img) 
with open(mean.binaryproto, 'wb') as f : 
    f.write(blob.SerializeToString()) 
0

Вы можете сначала конвертировать ваши изображения для создания базы данных lmdb с использованием convert_imageset инструмент. Затем, используя это и инструмент compute_image_mean, вы можете сгенерировать файл mean.binaryproto.

Смотрите мой ответ на: How to convert .npy file into .binaryproto?

+0

Является ли это намного быстрее, чем предлагаемый ответ? Причина в противном случае просто создала бы накладные расходы. – Kev1n91

+0

Как правило, люди создают базу данных lmdb для обучения, в этом случае проще использовать инструмент compute_image_mean. Но вы правы, если база данных lmdb не требуется, тогда предлагаемый ответ будет работать быстрее. –

+0

Я не думаю, что люди обычно создают базы данных для обучения данных. Это зависит от самой реализации. Если вы посмотрите на модельный зоопарк, то в большинстве случаев нет тенденции. Я думаю, что текстовый файл упрощает управление этапами предварительной обработки вычислительных изображений – Kev1n91