вычитать средний файл с blobFromImage в opencv :: dnn - PullRequest
0 голосов
/ 26 июня 2019

Opencv имеет интерфейс DNN для загрузки предварительно обученных моделей (глубоких) нейронных сетей, изученных с помощью caffe, tenorflow, pytorch и darknet. Чтобы применить изображение к сети, оно преобразуется в BLOB-объект через 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 вместо отдельных значений для цветового канала?

...