Распознавание изображений - это процесс идентификации особенности или объекта на изображении или видео (в основном это последовательность изображений, в которой время является третьим измерением). Эта концепция используется во многих процессах для автоматизации и может применяться в нескольких областях, таких как мониторинг процессов, наблюдение, медицинская диагностика и т. Д.

Распознавание изображений стало возможным с помощью сверточной нейронной сети CNN, которая также становится более популярной, чем искусственная нейронная сеть, как показано на графике ниже (тенденции Google)

Но как работает CNN? Он принимает изображение в качестве входных данных, и после обработки входных данных на выходе будет классификация изображения. Чтобы классифицировать изображение, мы видим изображение как массив, в котором каждый элемент является пикселем.

Если мы рассматриваем цветное изображение размером 4х4 пикселя, мы должны учитывать 3 массива для цветов RGB (красный, зеленый и синий). Каждое отдельное значение каждого массива может быть от 0 до 255.

Это проще для черно-белого изображения, потому что в этом случае у нас будет один массив с возможными значениями от 0 до 255.

Шаги нашей классификации будут:

  1. Свертка
  2. Объединение
  3. Сплющивание
  4. Полное подключение

Шаг 1: свертка

Давайте сделаем простой пример :)

У нас есть входное изображение, например массив 10 x 8 пикселей, а также Детектор функций, который представляет собой массив 3 x 3 пикселя. Умножение этих двух массивов создает третий массив, который является картой характеристик, которая будет массивом 8 x 6 пикселей (поскольку он содержит 48 возможных комбинаций массива 3x3 внутри массива 10x8). Этот процесс является сверткой, который генерирует сверточные слои.

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

Поверх сверточных слоев мы применяем ReLU (линейный блок выпрямителя), чтобы удалить любую линейность.

Шаг 2: объединение

Когда у нас есть карта характеристик, появляется объединение (мы можем использовать различные методы, такие как минимальное, максимальное среднее и т. Д.). Чтобы иметь четкое представление о сокращении функций, есть интересная веб-страница, где вы рисуете число (вверху слева), и оно применяет сокращение, и оно видно пиксель за пикселем, откуда берутся данные.

Шаг 3: Сглаживание

Когда у нас есть объединенная функция ma, нам нужно применить Сглаживание, где мы преобразуем нашу матрицу в столбец, который будет входными слоями нашей ИНС (искусственной нейронной сети). Сеть).

Шаг 4: полное подключение

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

Если вас больше интересует углубление в эту тему, я предлагаю вам интересную статью 9 статей по глубокому обучению, о которых вам нужно знать »Адита Дешпанде.

Softmax и кросс-энтропия для оценки модели

Функция Softmax заставляет выходные данные нейронной сети суммировать до 1, поэтому они могут представлять распределение вероятностей между взаимоисключающими альтернативами. Здесь есть отличное объяснение функции Softmax от Джеффри Хинтона,

Чтобы оценить результат, мы могли бы использовать ошибку MeanSquared, но у нее есть некоторые недостатки:

  • если желаемый результат равен 1, а наш результат очень низкий, например 0,000001, почти нет градиента (почти горизонтального) для логистической единицы, чтобы исправить ошибку
  • если мы пытаемся присвоить вероятности взаимоисключающим меткам классов, мы знаем, что результат должен быть равен 1, но мы лишаем сеть этого

По этим причинам лучше использовать функцию кросс-энтропии.

Если вы хотите углубиться в кросс-энтропию, вы можете найти здесь статью Дружеское введение в кросс-энтропийную потерю.

Следующая статья будет о кодировании в реальном проекте классификации, так что следуйте за мной, если интересно :)