shicai
shicai
网络结构已经在log里了,MNIST调太高并没有太大意义,当时也是随便调的。
图像缩放到指定大小,减去均值,然后通过网络前向传播,获取最后softmax层的概率值,取最大值的那个id,即为对应识别出来的类别
将不同的图像组成一个文件列表,用image_data层,具体见get_features.cpp文件
我按照参数的顺序,依次解释下: [0] get_features.exe,文件名,第一个参数 [1] feat.prototxt,注意file_list.txt在这里的image data layer用到,注意看cpp文件的第22行 [2] caffemodel [3] 6这里是迭代次数的意思,这个数字乘以cpp文件的第23行的batch size,必须等于file_list.txt中图像总数 [4] conv1,fc7,prob,argmax 这里是需要提取特征的层的名字,在feat.prototxt中找,用英文逗号分隔,注意不要有空格 [5] conv1.dat,fc7.dat,prob.dat,argmax.dat 对应上面特征,是将每层特征保存的文件名字,同样逗号分隔,不要空格 [6] GPU 这里有2个选项:GPU或者CPU模式 [7] 0 如果用GPU模式,指定用哪个gpu,从0开始计数 其他:matlab函数sc_load是用来读取特征文件的,比如你将prob层特征存为prob.dat,用sc_load读取就可以了:prob = sc_load('prob.dat');
@mengfanr 取决于你的caffe,你若是在windows和linux下都编译好caffe,那就都能用
@xxlylf 不可以,提取特征必须指定那一层的名字。不写的话,不会提取任何特征。
@howard327 数据存储格式是行、列、特征,所以直接用fread读入float就可以了
@xxlylf the number of rows and cols doesn't match the shape of data. please double check the value of rows and cols.
仔细阅读 https://github.com/shicai/Caffe_Manual/blob/master/get_features.cpp 或者第一个issue,都有提到
@xxlylf 是编译caffe出错,还是编译get_feature出错?如果是后者,请贴上错误信息,如果是前者,请到caffe的issue下找答案