2016-04-18 8 views
2

Ich möchte Funktionen mit Caffe extrahieren und diese Funktionen mit SVM trainieren. Ich bin durch diesen Link gegangen: http://caffe.berkeleyvision.org/gathered/examples/feature_extraction.html. Dieser Link zeigt, wie wir Funktionen mit cafenet extrahieren können. Aber ich möchte hier die Lenet-Architektur verwenden. Ich bin nicht in der Lage diese Linie des Befehls für Lenet zu ändern:CNN-Funktionen mit Caffe extrahieren und mit SVM trainieren

./build/tools/extract_features.bin models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel examples/_temp/imagenet_val.prototxt fc7 examples/_temp/features 10 leveldb 

Und auch nach den Merkmalen zu extrahieren, wie diese Funktionen trainieren SVM mit? Ich möchte Python dafür verwenden. Für zB: Wenn ich Features von diesem Code:

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

Dann, wie kann ich diese Funktionen unter Verwendung von SVM durch die Definition meiner eigenen Klassen trainieren?

Antwort

1

Sie haben zwei Fragen hier:

  1. Extrahieren von Merkmalen mit Lenet
  2. Ausbildung einer SVM

Extrahieren von Merkmalen mit Lenet

Um die Funktionen von Lenet mit dem Extrakt extract_features.bin Skript benötigen Sie die Modelldatei (.caffemodel) und das Modell def zum Testen (.prototxt).

Die Signatur von extract_features.bin ist hier:

Usage: extract_features pretrained_net_param feature_extraction_proto_file extract_feature_blob_name1[,name2,...] save_feature_dataset_name1[,name2,...] num_mini_batches db_type [CPU/GPU] [DEVICE_ID=0] 

Also, wenn Sie ein Beispiel val prototxt Datei nehmen, da dies eine (https://github.com/BVLC/caffe/blob/master/models/bvlc_alexnet/train_val.prototxt), können Sie es auf die Lenet Architektur verändern und an Ihre LMDB/LevelDB Punkt . Das sollte den größten Teil des Weges dorthin bringen. Sobald Sie das getan haben und hängen geblieben sind, können Sie Ihre Frage erneut aktualisieren oder einen Kommentar hier posten, damit wir Ihnen helfen können.

Training SVM auf Features

Ich empfehle Python mit scikit-learn für eine SVM aus den Merkmalen der Ausbildung. Es ist super einfach zu beginnen, einschließlich des Einlesens von Funktionen aus dem Caffe-Format gespeichert.

0

Sehr verzögerte Antwort, sollte aber helfen. Nicht 100%, was Sie wollen, aber ich habe das VGG-16-Netz verwendet, um Gesichtsmerkmale mit caffe zu extrahieren und einen Genauigkeitstest für eine kleine Teilmenge des LFW-Datensatzes durchzuführen. Genau das, was Sie brauchen, ist im Code. Der Code erstellt Klassen für Training und Tests und verschiebt sie in die SVM zur Klassifizierung.

https://github.com/wajihullahbaig/VGGFaceMatching