opencv 调用caffe模型并加载均值文件(已经验证,成功)

当我们用自己的数据进行分类训练时,会先得到训练数据的均值文件。训练得到模型之后,对单张图像进行分类预测时,都要求输入均值文件。但是,我们用opencv调用caffe模型时,却没有找到加载均值文件的方法。opencv官网给出的例子,和网上比较多的opencv调用caffe模型时,都没有讲到如何加载均值文件。

       博主捣腾了好久,终于找到一种方法来加载均值文件了,在此做一个分享。

一、修改caffe源码并重新编译classsfication

1、打开Caffe.sln文件,找到classsfication项目中的classsfication.cpp文件。

2、定位到 Classifier::SetMean函数,在函数末尾增加以下几行代码。

  1. std::cout << channel_mean[ 0] << std::endl;
  2. std::cout << channel_mean[ 1] << std::endl;
  3. std::cout << channel_mean[ 2] << std::endl;
3、重新编译 classsfication项目,得到新的classsfication.exe文件。


二、进行单张图像的分类预测

1、具体操作参考上一篇博文

2、运行时,就会把由均值文件得到的cv::Scalar打印出来。这就是我们需要的均值数据。

三、 opencv调用caffe模型进行分类预测

1、具体操作  参考之前的博文

2、这里 Scalar(183.574, 183.574, 183.574),就是步骤二得到的均值数据。

Mat inputBlob = dnn::blobFromImage(img, 1, Size(227, 227), Scalar(183.574, 183.574, 183.574), false);

猜你喜欢

转载自blog.csdn.net/maweifei/article/details/81005066