В чем разница между нормализацией изображения до плавающего 0 ~ 1, плавающего -1 ~ 1 и целого числа 0 ~ 255 перед подачей в CNN? - PullRequest
0 голосов
/ 14 мая 2019

Какая разница между нормализацией изображения в int и float?

  1. Нормализовать до [0, 255]
   cv2.noramlize(src, res, 255, 0, cv2.NORM_MINMAX) 
Нормализовать до [0, 1]
   cv2.normalize(src, res, 1, 0, cv2.NORM_MINMAX)
Нормализация до [-1, 1]
   img=(img-np.mean(img, axis=(0,1)))/np.std(img, axis=(0,1))

Ps.
img - это изображение с [H x W x C]

Имеет ли это какое-либо значение в обучении и производительностиConvNet?

1 Ответ

0 голосов
/ 14 мая 2019
img=(img-np.mean(img, axis=(0,1)))/np.std(img, axis=(0,1))

Приведенный выше фрагмент кода означает Среднее вычитание с последующей нормализацией.

Вы можете обратиться к CS231 Notes для получения дополнительной информации, но вот соответствующие части

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

Нормализация относится к нормализации измерений данных, чтобы они имели приблизительно одинаковый масштаб. Есть два распространенных способа достижения этой нормализации. Один из них состоит в том, чтобы разделить каждое измерение на его стандартное отклонение, если оно было центрировано по нулю: (X / = np.std (X, ось = 0)). Другая форма этой предварительной обработки нормализует каждое измерение, так что min и max вдоль измерения равны -1 и 1 соответственно. Имеет смысл применять эту предварительную обработку только в том случае, если у вас есть основания полагать, что разные входные функции имеют разные шкалы (или единицы измерения), но они должны иметь приблизительно одинаковое значение для алгоритма обучения. В случае изображений относительные масштабы пикселей уже приблизительно равны (и находятся в диапазоне от 0 до 255), поэтому нет необходимости выполнять этот дополнительный этап предварительной обработки.

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

Я бы порекомендовал вам перейти по ссылке. Эти темы объясняются гораздо лучше

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...