C++提取的特征和python提取的不同?
我自己改了extract_features.cpp,使得提取的特征直接保存在txt文件里面,改动如下:
差别还是很大的,而且python的精度更高,然后跑出来也是python的更好。
这是为什么呢?
for (int d = 0; d < dim_features; ++d) {然后提取的特征跟python提取的就有一些区别了,对比如下:
//datum.add_floatdata_data(feature_blob_data[d]); // 这是原代码
out_feature << feature_blob_data[d] << " "; // 这是我的代码
}
out_feature << "\n";
差别还是很大的,而且python的精度更高,然后跑出来也是python的更好。
这是为什么呢?
4 个回复
Cedric
赞同来自: caffe
提取的feature不同应该是因为crop的原因,用c++提特征会进行中心crop,用Python提特征不进行crop而是直接resize,这些在Caffe源码data_transformer.cpp里面可以看到。c++提feature会进行TEST的forward过程,因此是中心crop,如果是TRAIN,则是随机crop。
对于Python特征比c++好那也可以理解了,因为中心crop丢掉了部分图片,也就丢掉了一些信息,而直接resize则保留了图片的整体信息。
南七骄傲 - 90后IT男
赞同来自: CatherineW
COCO_1
赞同来自:
南七骄傲 - 90后IT男
赞同来自: