【问题标题】:Extract CNN features using Caffe and train using SVM使用 Caffe 提取 CNN 特征并使用 SVM 进行训练
【发布时间】:2016-04-18 19:09:42
【问题描述】:

我想使用 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 训练这些功能?

【问题讨论】:

    标签: svm caffe convolution conv-neural-network pycaffe


    【解决方案1】:

    你有两个问题:

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

    使用 LeNet 提取特征

    要使用 extract_features.bin 脚本从 LeNet 中提取特征,您需要有模型文件 (.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

    我强烈建议使用 Python 的 scikit-learn 从特征中训练 SVM。它非常容易上手,包括读取从 Caffe 格式保存的功能。

    【讨论】:

      【解决方案2】:

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

      https://github.com/wajihullahbaig/VGGFaceMatching

      【讨论】:

        猜你喜欢
        • 2016-03-14
        • 2018-10-25
        • 2017-07-10
        • 1970-01-01
        • 2020-10-19
        • 2018-07-01
        • 2019-06-09
        • 2018-02-25
        • 2018-05-29
        相关资源
        最近更新 更多