使用Caffe提取图像特征以用于自定义图像分类器

时间:2015-10-04 07:55:19

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

我想获得预先构建的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)

1 个答案:

答案 0 :(得分:5)

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

要注意的两件事:

  1. 预处理输入图像。请参阅Transformer课程here以供参考。
  2. 如果仅使用

    提取功能
    features = net.blobs['fc6'].data
    

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

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