Извлечение функций CNN с помощью Caffe и обучение с помощью SVM

Я хочу извлекать функции с помощью caffe и обучать эти функции с помощью SVM. Я прошел по этой ссылке: http://caffe.berkeleyvision.org/gathered/examples/feature_extraction.html. Эти ссылки показывают, как мы можем извлекать функции с помощью caffenet. Но я хочу использовать здесь ленетскую архитектуру. Я не могу изменить эту строку команды для Ленет:

  ./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, определив свои собственные классы?


person Sandesh Sharma    schedule 18.04.2016    source источник


Ответы (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 поверх функций

Я настоятельно рекомендую использовать Python scikit-learn для обучения SVM на основе функций. Начать работу очень просто, включая чтение функций, сохраненных в формате Caffe.

person mprat    schedule 21.04.2016

Очень запоздалый ответ, но должен помочь. Не на 100% то, что вы хотите, но я использовал сеть VGG-16 для извлечения черт лица с помощью caffe и выполнения теста точности на небольшом подмножестве набора данных LFW. Именно то, что вам нужно, находится в коде. Код создает классы для обучения и тестирования и помещает их в SVM для классификации.

https://github.com/wajihullahbaig/VGGFaceMatching

person Wajih    schedule 07.09.2016