Однако я ожидал одного значения на канал, вместо этого я обнаружил массив 256x256: означает ли это, что он взял среднее значение для каждого пикселя каждого канала?
Точно.В соответствии с формой mean.binaryproto
этот файл является усредненным изображением некоторого набора данных, что означает, что он взял среднее значение каждого пикселя (функции) для каждого канала.
Это не следует путать со среднимпиксель, который, как вы сказали, является одним значением для каждого канала.
Например, средний пиксель был принят Очень глубокие сверточные сети для крупномасштабного распознавания изображений .Согласно их статье:
Единственная предварительная обработка, которую мы делаем, - это вычитание среднего значения RGB, вычисленного на обучающем наборе, из каждого пикселя
Другими словами,если вы рассматриваете изображение RGB как 3 массива объектов размером N x N, среднее изображение будет представлять собой среднее значение каждой функции, а средний пиксель будет представлять собой среднее значение всех объектов.
Другой вопрос заключается в следующем: я хочу использовать такой NN с OpenCV, который вместо RGB использует BGR: Как узнать, использует ли среднее значение 3x256x256 RGB или BGR?
Я сомневаюсь, что в двоичном файле, который вы читаете, хранится какая-либо информация о его цветовом формате, но практический способ выяснить это - построить это изображение, используя matplotlib
, и посмотреть, имеют ли цвета смысл.
Например, изображения лица.Если поменять местами красный и синий каналы, оттенок кожи будет выглядеть голубоватым.
![enter image description here](https://i.stack.imgur.com/8agIV.png)
Фактически, изображение выше является примером среднего изображения (изображения лица):)
Вы также можете предположить, что это BGR, поскольку OpenCV использует этот цветовой формат.
Тем не менее, правильный способ выяснить, как был создан этот mean.binaryproto
, - просмотреть их репозитории.или спросив владельца модели.