【问题标题】:Extract image features using Caffe for custom image classifier使用 Caffe 为自定义图像分类器提取图像特征
【发布时间】:2016-01-01 02:05:36
【问题描述】:

我想获得预建 caffe 模型第 6 层的输出,并在其上训练 SVM。我的目的是构建一个自定义图像分类器,用户可以在其中创建自定义图像类,并在这些类之间分类输入图像,而不是 imagenet 类。这是伪代码:

#input
file='cat.jpg'
image=caffe.io.load_image(file)

#model
net = caffe.Classifier('deploy.prototxt','model.caffemodel')

#compute activation at layer 6 --- Need help here. Will net.forward help? will the activation be retained? 

#extract features from layer 6:

features = net.blobs['fc6'].data[4][:,0, 0]


#SVM
category=svm.predict(features)
print get_category_name(category)

【问题讨论】:

  • 那么,问题是什么?

标签: python computer-vision neural-network caffe conv-neural-network


【解决方案1】:

您应该使用Net 类,而不是Classifier。因此,您只需致电net.forward()

注意两点:

  1. 预处理您的输入图像。请参阅Transformerhere 以供参考。
  2. 如果你只使用提取特征

    features = net.blobs['fc6'].data
    

    您的数组将被下一次forward() 调用覆盖。确保您正在执行深层复制,例如

    features = net.blobs['fc6'].data.copy()
    

【讨论】:

  • 为什么是 Net 而不是 Classifier?分类器自己做所有的图像处理对吗?
  • 仅仅是因为分类器是由 Caffe 开发人员作为示例提供的。它隐藏了必要的预处理,这可能取决于应用程序。简而言之,您应该定义自己的自己的 Classifier 类。
猜你喜欢
  • 2015-05-24
  • 1970-01-01
  • 2015-06-24
  • 1970-01-01
  • 2019-08-22
  • 2021-05-12
  • 2015-03-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多