【问题标题】:Same fc6 response for different images不同图像的相同 fc6 响应
【发布时间】:2015-08-03 20:44:44
【问题描述】:

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

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即可读取和打开?

【问题讨论】:

  • 您使用的教程的链接已损坏。请问可以修吗?

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


【解决方案1】:

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

此外,我不确定您使用的是什么模型,但您确定这个特定模型期望其 mean 参数是每通道平均值而不是每像素?

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

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

【讨论】:

  • 我使用了所有元素,但仍然得到相同的响应。 mean 参数正是我从示例中复制的。
  • @Proud 你用的是什么咖啡模型?你从哪里下载的?你用的是什么重量?您是否尝试过使用不同型号/重量的相同代码?从图像到图像的特征值是否保持不变?以及从一个模型到另一个模型?
猜你喜欢
  • 2016-05-13
  • 1970-01-01
  • 1970-01-01
  • 2019-08-05
  • 2014-12-13
  • 2014-05-05
  • 2021-12-11
  • 2020-12-12
  • 1970-01-01
相关资源
最近更新 更多