在opencv :: dnn中用blobFromImage减去平均文件

时间:2019-06-26 13:16:55

标签: c++ opencv caffe opencv4

Opencv具有DNN接口,用于加载(深度)神经网络的预训练模型,这些模型是通过caffe,tensorflow,pytorch和darknet学习的。要将图像应用于网络,可通过blobFromImage将其转换为斑点。例如在C ++中:

cv::Mat img = cv::imread('lena.png')
cv::Scalar mean(104,117,123,0);
cv::Mat blob = cv::dnn::blobFromImage (img, 1.0, cv::Size(), mean, false, false)

参数mean允许减去在训练集上计算出的BGR通道的平均值。但是,在原始的caffe框架中,还可以减去一个完整的平均图像,而不是每个颜色通道只有一个平均值。数据层的配置文件如下:

layer {
  name: "data"

  #... give "type" and "top"

  transform_param {
    mean_file: "/path/to/imagenet_mean.binaryproto"

    # an alternative was to set the average values:
    #mean_value: 104
    #mean_value: 117
    #mean_value: 123
  }
  # ... other params of input layer...
}

是否有办法用opencv dnn::blobFromImage减去这样的“完整图像均值”而不是每个颜色通道的单个值?

0 个答案:

没有答案