Числовое представление изображений - входные данные модели

Модели глубокого обучения не могут просто потреблять необработанные изображения, как человеческий глаз и мозг. Сначала нам нужно превратить все входные данные в числовые представления данных. Изображения должны быть преобразованы в пиксельные значения координат x, y и значения Red Green Blue (RGB). Мы храним данные в тензорах - многомерных матрицах чисел.

Объяснение значения RGB

Давайте поймем, какого цвета является пиксель (единица измерения) изображения. Каждый пиксель имеет значение красный, зеленый, синий. Думайте об этом как о кортеже Python из трех значений (R, G, B). Максимальное значение 255, минимальное значение 0. Это также называется байтом. 1 byte = 8 bits; 2** 8 = 256 #two to the eight power is 256, there are 256 numbers between 0 and 255, inclusive. Вспомните, есть такое понятие, как 8-битные игры?

Вот несколько важных правил, которые следует запомнить. Значение RGB также измеряет, сколько красных, зеленых и синих субкомпонентов пикселя загорается. Ноль означает, что света нет. Следовательно, (0,0,0) черный. (255,255,255) горит полностью, следовательно, это белый цвет! Попробуйте.

Дополнительные метаданные

Каждый пиксель может иметь некоторую дополнительную информацию метаданных: координаты x и y (где по ширине и высоте изображения он расположен). Хотя координаты x, y не всегда необходимы, поскольку некоторые модели выравнивают входной вектор и не принимают во внимание форму изображения. Иногда это чрезмерное упрощение. Иногда необходимо, чтобы наши выходные данные не зависели от местоположения - формы и узоры можно было различить независимо от того, где они расположены на изображении.

Вы увидите, что сверточная нейронная сеть использует патчи / ядра для сканирования всего изображения на предмет формы и данных узора. Это систематично: слева направо, сверху вниз. Таким образом, не нужно явно отслеживать координаты x, y каждого пикселя.

Изображение в тензор

Мы сделали два изображения выше, чтобы продемонстрировать увеличенный оранжевый пиксель, состоящий из трех субкомпонентных значений RGB (255,175,97). Если мы хотим превратить три оранжевых пикселя в числовые значения и сохранить их в тензорной переменной, мы можем сделать это my_tensor= [[255,175,97],[255,175,97],[255,175,97]], который представляет собой список трех значений пикселей в формате, подобном RGB.

Нормализация

Также принято нормализовать значения RGB путем деления всего на 255 максимального числа. Сюда R=0/255 = 0, G= 255/255=1. После нормализации значения подкомпонента RGB теперь находятся в диапазоне от 0 до 1 вместо 0 и 255.

CNN против NN

«Архитектуры ConvNet явно предполагают, что входными данными являются изображения, что позволяет нам кодировать определенные свойства в архитектуре». Стэнфорд CS231

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

Визуализируйте значения пикселей изображения MNIST. Учебник по Tensorflow.

Визуализируйте цифровое изображение MNIST и то, как оно сплющено (Udacity)

Простая NN требует, чтобы входные данные были сглажены в векторы. CNN предполагает, что входные данные - это изображения, и фильтры, известные как ядра (обычно намного меньше, чем входные данные, например, 2x2, 3x3 или 7x7), сканируют все изображение на предмет шаблонов с использованием общих весов.

Пример сверточных фильтров

Пример сверточных фильтров для горизонтальных и вертикальных линий.

1   1  1               1 0 -1        
0   0  0               1 0 -1
-1 –1 –1               1 0 -1

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