0

事前に構築されたカフェ モデルの第 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)
4

1 に答える 1

5

Netの代わりにクラスを使用する必要がありClassifierます。したがって、 を呼び出すだけですnet.forward()

注意すべき点は次の 2 つです。

  1. 入力画像を前処理します。参考までにこちらTransformerのクラスをご覧ください。
  2. を使用して特徴を抽出する場合

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

    配列は次のforward()呼び出しで上書きされます。次のようなディープ コピーを実行していることを確認してください。

    features = net.blobs['fc6'].data.copy()
    
于 2015-10-05T16:23:42.207 に答える