2

我想使用 caffe 提取特征并使用 SVM 训练这些特征。我浏览了这个链接:http ://caffe.berkeleyvision.org/gathered/examples/feature_extraction.html 。此链接提供了我们如何使用 caffenet 提取特征。但我想在这里使用 Lenet 架构。我无法为 Lenet 更改这行命令:

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

还有,提取特征后,如何使用 SVM 训练这些特征?我想为此使用python。例如:如果我从此代码中获得功能:

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

那么,如何通过定义自己的类来使用 SVM 训练这些功能呢?

4

2 回答 2

2

你在这里有两个问题:

  1. 使用 LeNet 提取特征
  2. 训练 SVM

使用 LeNet 提取特征

要使用脚本从 LeNet 中提取特征,extract_features.bin您需要模型文件 (.caffemodel) 和用于测试的模型定义 (.prototxt)。

的签名在extract_features.bin这里:

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]

因此,如果您以 val prototxt 文件为例(https://github.com/BVLC/caffe/blob/master/models/bvlc_alexnet/train_val.prototxt),您可以将其更改为 LeNet 架构并将其指向你的 LMDB / LevelDB。这应该让你大部分时间都在那里。一旦您这样做并遇到困难,您可以在此处重新更新您的问题或发表评论,以便我们提供帮助。

在特征之上训练 SVM

我强烈推荐使用 Pythonscikit-learn从这些特征中训练 SVM。它非常容易上手,包括读取从 Caffe 格式保存的功能。

于 2016-04-21T15:22:08.347 回答
0

非常滞后的回复,但应该有所帮助。不是 100% 你想要的,但我使用 VGG-16 网络使用 caffe 提取人脸特征,并对 LFW 数据集的一小部分进行准确度测试。您需要的正是代码中的内容。代码创建用于训练和测试的类,并将它们推送到 SVM 中进行分类。

https://github.com/wajihullahbaig/VGGFaceMatching

于 2016-09-07T11:59:01.473 回答