2015-04-20 8 views
10

Я внедряю CNN с Theano. В статье, я должен сделать это изображение Preprocess до того поезде CNNВычесть среднее из изображений

We extracted RGB patches of 61x61 dimensions associated with each poselet activation, subtracted the mean and used this data to train the convnet model shown in Table 1 

Можете ли вы сказать мне, что это значит с «вычитают среднее»? Скажите мне, если эти шаги правильные (это то, что я понял) 1) Вычислить среднее значение для красного канала, зеленого канала и синего канала для всего изображения 2) Для каждого пикселя вычитайте из красного значения среднее значение красного канала, от зеленого значения среднее зеленого канала и то же самое для синего канала 3) Правильно ли иметь отрицательное значение или использовать абс?

Спасибо всем!

ответ

6

Вы должны внимательно прочитать статью, но то, что является наиболее вероятным является то, что они означают среднего пластырей, поэтому у вас есть N матрицы 61x61 пикселей, что эквивалентно вектор длина 61^2 (если есть три канала затем 3*61^2). Что они делают - они просто вычисляют среднее для каждого измерения, поэтому они вычисляют среднее значение по этим векторам N относительно каждого из измерений 3*61^2. В результате они получают вектор средних длины 3*61^2 (или средней матрицы/значит патч если вы предпочитаете), и они вычитать его из всех этих N пластырей. Получаемые патчи будут иметь отрицательные значения, это совершенно нормально, вы не должны не должны принять значение abs, нейронные сети предпочитают такие данные.

+0

Документы - это http://arxiv.org/pdf/1407.0717v1.pdf У меня есть 6 миллионов изображений, и я не думаю, что упомянутое значение относится к патчам, но об одном изображении. Конечно, возможно ваша идея – sakuragi

6

Я бы предположил, что среднее значение, упомянутое в статье, является средним значением для всех изображений, используемых в обучающем наборе (рассчитано отдельно для каждого канала).

Несколько Показания к применению:

Это, конечно, только косвенные доказательства, поскольку я не могу объяснить вам, почему это происходит. Фактически я наткнулся на этот вопрос, пытаясь разобраться именно в этом.

// EDIT:

В то же время я нашел source подтверждающие мое утверждение (Выделения добавляемого мной):

Есть три распространенных форм данных предварительной обработки матрицы данных X [. ..]

Среднее вычитание является наиболее распространенной формой предварительной обработки.Он включает в себя вычитание среднего значения по каждому отдельному признаку в данных и имеет геометрическую интерпретацию центрирования облака данных вокруг начала координат вдоль каждого измерения. В numpy эта операция будет реализована как: X - = np.mean (X, axis = 0). С изображениями специально для удобства можно вычесть одно значение из всех пикселей (например, X - = np.mean (X)) или сделать это отдельно по трем цветным каналам.

Как мы можем видеть, целых данные используются для вычисления среднего значения.

+0

Имеет ли смысл использовать среднее значение для всех изображений в обучающем наборе? Мы должны делать это для каждого пикселя значения RGB любого отдельного изображения. – Zangetsu

+0

Я предоставил ссылку и ссылку на смысл использования всего набора данных в моем редактировании. – Zakum