caffe 练习3 用caffe提供的C++函数批量抽取图像特征------by 香蕉麦乐迪

目的:用caffe提供的C++函数,批量抽取图像特征

官网链接:http://caffe.berkeleyvision.org/gathered/examples/feature_extraction.html

方法:

在caffe安装的根目录下执行:

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

1 函数使用说明:

extract_features.bin

./build/tools/extract_features.bin
是作者写的一个函数,输入相应的参数,可以提取特征;

参数说明:

1  .caffemodel 文件:训练好的网络参数

2  train_val.prototxt文件:网络结构

3 fc7:提取fc7层的特征,imageNet网络有 很多层(data conv1 conv2 conv3 conv4 conv5 fc6 fc7 fc8 prob),我们可以选取任意一层;fc7是最后一层特征,fc8输出的就是softmax的输出了,所以我们提取fc7层

4 10:输入的包的数量,我们test时的batchsize是50,这里输入10,表示会提取50*10=500张图片的特征

5 lmdb:输出的数据格式是lmdb,还可以是leveldb,我现在用的就是leveldb格式

针对我的路径,我更改为:你的根据你的改

./build/tools/extract_features.bin /home/a216/caffe-master/sloanqin/data/godpool/txt/caffenet_train_iter_5000.caffemodel /home/a216/caffe-master/sloanqin/data/godpool/txt/train_val.prototxt fc7 /home/a216/caffe-master/sloanqin/examples/features 4 lmdb

2 函数的源码:

caffe是开源的,所有的源码我们都是可以看到的。

extract_features.bin其实就是一个编译过的cpp函数,源文件在~/tools/extract_features.cpp 下;

这里我贴出作者对此函数的使用说明,读者可以使用notepad自己打开这个cpp文件分析下;

    "This program takes in a trained network and an input data layer, and then"
    " extract features of the input data produced by the net.\n"
    "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]\n"
    "Note: you can extract multiple features in one pass by specifying"
    " multiple feature blob names and dataset names seperated by ','."
    " The names cannot contain white space characters and the number of blobs"
    " and datasets must be equal.";









你可能感兴趣的:(linux,图像处理,深度学习,caffe)