2015-08-03 4 views
1

Я следую инструкциям в filter visualization и classification например, чтобы получить (полностью подключен layer6) ответ fc6 на несколько различных изображений в папке из pretrained модели (bvlc эталонной модели), но и для всех изображений Я получаю один и тот же вектор. Вот код, который я использовал:же FC6 реакция на различные изображения

import caffe 
caffe.set_mode_cpu() 
net = caffe.Classifier(MODEL_FILE, PRETRAINED, 
        mean=np.load(caffe_root + 'python/caffe/imagenet/ilsvrc_2012_mean.npy').mean(1).mean(1), 
        channel_swap=(2,1,0), 
        raw_scale=255, 
        image_dims=(256, 256)) 
filenames = next(os.walk(path))[2] 
fc6Respose=[] 
for i in range(0,len(filenames)): 
    input_image = caffe.io.load_image(path+filenames[i]) 
    scores = net.predict([input_image]) 
    feat = net.blobs['fc6'].data[4] 
    fc6Respose.append(feat) 

PS: Есть ли какой-нибудь простой способ сохранить эти данные в файле (например, TXT или CSV), которые могут быть использованы для последующего использования и может быть прочитан и открыт без использования Python ?

+0

Ссылка на учебник, который вы использовали, сломана. Вы можете исправить это, пожалуйста? – Shai

ответ

1

Вы получаете только элементfc6 ответ (четвертый). Это может быть так, что этот элемент в выходе является вырожденным для типов входов, которые вы тестировали. Попробуйте взглянуть на весь ответ fc6.

Кроме того, я не уверен, какую модель вы используете, но уверены ли вы, что эта конкретная модель ожидает, что ее аргумент mean будет для среднего канала, а не для пикселя?

BTW, вы используете oversample для вашего входа (параметр по умолчанию в caffe.Classifier.predict), это означает, что вывод, который вы получаете на самом деле средний из 10 ответов на несколько различных входные изображения (различное кадрирование + зеркальное отображение). Вы можете отключить эту опцию, используя

scores = net.predict([input_image], oversample=False) 
+0

Я использовал все элементы и получаю тот же ответ. Средний аргумент - это именно то, что я скопировал из примера. – Proud

+0

@Proud, какую модель caffe вы используете? откуда вы его загрузили? какие вигты вы используете? Вы пробовали один и тот же код с другой моделью/весом? значения функций остаются неизменными от изображения к изображению? и от модели к модели? – Shai

+1

Он был решен с помощью массива numpy, внесенного в список – Proud