Предварительная обработка изображений в глубоком обучении

Я экспериментирую с глубоким изучением изображений. У меня около ~ 4000 изображений с разных камер с различными условиями освещения, разрешениями изображения и углом обзора.

Мой вопрос: Какая предварительная обработка изображения была бы полезной для улучшения обнаружения объектов? (Например: нормализация контраста/цвета, шумоподавление и т.д.)

Ответ 1

Для предварительной обработки изображений перед подачей их в нейронные сети. Лучше сделать данные по центру нуля. Затем попробуйте метод нормализации. Это, безусловно, повысит точность, поскольку данные масштабируются в диапазоне, превышающем произвольно большие значения или слишком малые значения.

Пример изображения будет: -

enter image description here

Вот объяснение этого из лекций Stanford CS231n 2016 года.

*

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

*

Ссылка для вышеупомянутой выдержки: - http://cs231n.github.io/neural-networks-2/

Ответ 2

Это конечно поздний ответ на этот пост, но, надеюсь, поможет кто наткнулся на этот пост.

Вот статья, которую я нашел в Интернете Предварительная обработка данных изображения для нейронных сетей, хотя я, конечно же, хорошо написал статью о том, как следует обучать сеть.

Основная суть статьи гласит:

1) В качестве данных (изображений), немногочисленных в NN, следует масштабировать в соответствии с размером изображения, на которое рассчитан NN, обычно это квадрат, т.е. 100x100,250x250

2) Учитывайте значения MEAN(левое изображение) и STANDARD DEVIATION(правое изображение) для всех входных изображений в вашей коллекции определенного набора изображений

enter image description here

3) Нормализация входных данных изображения выполняется путем вычитания среднего значения из каждого пикселя, а затем деления результата на стандартное отклонение, что ускоряет сходимость при обучении сети. Это будет похоже на гауссову кривую с центром в нуле enter image description here

4)Уменьшение размерности Изображение из RGB в градациях серого, производительность нейронной сети может быть неизменной по отношению к этому измерению или сделать задачу обучения более удобной для решения. enter image description here

Ответ 3

Прочитайте этот, надеюсь, это будет полезно. Идея состоит в том, чтобы разбить входное изображение на части. Это называется R-CNN (здесь - некоторые примеры). Для этого процесса существуют два этапа: обнаружение объектов и сегментация. Обнаружение объекта - это процесс, когда определенные объекты на переднем плане обнаруживаются путем наблюдения за изменениями в градиенте. Сегментация - это процесс, когда объекты объединяются в изображение с высокой контрастностью. Высококачественные детекторы изображений используют байесовскую оптимизацию, которая может обнаружить, что может произойти дальше, используя локальную точку оптимизации.

В принципе, в ответ на ваш вопрос все параметры предварительной обработки, которые вы указали, кажутся хорошими. Поскольку контрастность и нормализация цвета заставляют компьютер распознавать разные объекты, а шумоподавление сделает градиенты более легко различимыми.

Я надеюсь, что вся эта информация вам полезна!

Ответ 4

В дополнение к тому, что упомянуто выше, отличным способом улучшения качества изображений с низким разрешением (LR) было бы создание суперразрешения с использованием глубокого обучения. Это означало бы создание модели глубокого обучения, которая преобразовывала бы изображение с низким разрешением в высокое разрешение. Мы можем преобразовать изображение с высоким разрешением в изображение с низким разрешением, применяя функции ухудшения качества (фильтры, такие как размытие). По существу это будет означать LR = ухудшение (HR), где функция ухудшения будет преобразовывать изображение с высоким разрешением в низкое разрешение. Если мы можем найти обратную функцию, то мы преобразуем изображение с низким разрешением в высокое разрешение. Это можно рассматривать как контролируемую проблему обучения и решать с помощью глубокого обучения, чтобы найти обратную функцию. Наткнулся на эту интересную статью о введении в супер-разрешение с использованием глубокого обучения. Надеюсь, это поможет.