不同图像的fc6响应相同

时间:2015-08-03 20:44:45

标签: python deep-learning caffe conv-neural-network

我按照filter visualizationclassification示例中的说明,对来自预训练模型(bvlc参考模型)的文件夹中的多个不同图像进行fc6(完全连接的layer6)响应但对于所有图像,我得到相同的矢量。 这是我使用的代码:

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就能读取和打开?

1 个答案:

答案 0 :(得分:1)

您只访问fc6响应的单个元素(第四个)。可能是输出中的这个元素对于您测试它的输入类型是简并的。尝试查看整个fc6响应。

此外,我不确定您使用的是哪种型号,但是您确定此特定型号希望其mean参数是每通道均值而不是每像素吗?

顺便说一句,您使用oversample作为输入(caffe.Classifier.predict中的默认选项),这意味着您获得的输出实际上是10个响应的平均值不同的输入图像(不同的裁剪+镜像)。您可能希望使用

禁用此选项
scores = net.predict([input_image], oversample=False)