Найти в Дзене
Стройка Века

Сверточные нейронные сети для для начинающих (CNN)

Сегодня мы с вами поговорим про “скандальные” сверточные нейронные сети. Ведь дипфейки, не отличимые от реальности, плод именно этой технологии. Однако, оставим генеративные нейронные сети на время. Давайте задумаемся, как нейронные сети вообще “понимают”, что изображено на фотографии или картинке? Когда мы смотрим на фотографию, нам достаточно доли секунды, чтобы понять, что на ней изображено - наш мозг мгновенно выделяет знакомые формы и цвета. Как “машина", у которой нет глаз, различает изображения? Для распознавания изображений чаще всего используется архитектура CNN - сверточные нейронные сети. Нейронная сеть, к сожалению, не может работать с изображением как с цельным объектом. Именно поэтому для обработки компьютером, изображение представляется в виде матрицы (двумерная таблица из чисел). Каждая ячейка этой таблицы соответствует одному пикселя. В свою очередь, число в каждой ячейке описывает характеристики конкретного пикселя - яркость, цвет и насыщенность. Таким образом, цветно
Оглавление

Сегодня мы с вами поговорим про “скандальные” сверточные нейронные сети. Ведь дипфейки, не отличимые от реальности, плод именно этой технологии. Однако, оставим генеративные нейронные сети на время. Давайте задумаемся, как нейронные сети вообще “понимают”, что изображено на фотографии или картинке?

Когда мы смотрим на фотографию, нам достаточно доли секунды, чтобы понять, что на ней изображено - наш мозг мгновенно выделяет знакомые формы и цвета. Как “машина", у которой нет глаз, различает изображения?

 Ссылка на используемое изображение: https://deepmachinelearning.ru/assets/images/01-Grayscale-image-as-matrix-ec381b3c5dba493c2185182625129156.jpg
Ссылка на используемое изображение: https://deepmachinelearning.ru/assets/images/01-Grayscale-image-as-matrix-ec381b3c5dba493c2185182625129156.jpg

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

Сверточный слой

Сверточная нейронная сеть не зря называется так, ведь главная операция в данной архитектуре - свертка. Представим свертку как небольшой фильтр (чаще всего 3*3), который будет “скользить” по изображению. В каждом положении он умножает свои числа на соответствующие пиксели и суммирует результат. Таким образом, карта признаков - представление некоторого набора характеристик, обнаруженного в определенных областях изображения. Такими характеристиками могут быть края, текстуры или сложные формы

 Ссылка на используемое изображение: https://lilianweng.github.io/posts/2017-12-15-object-recognition-part-2/numerical_padding_strides.gif
Ссылка на используемое изображение: https://lilianweng.github.io/posts/2017-12-15-object-recognition-part-2/numerical_padding_strides.gif

Пулинговый слой

Таким образом, с помощью свертки мы можем выделять конкретные признаки из изображения. Однако, кроме полезных и действительно важных признаков, на изображении могут быть шумы и несущественные признаки. Что же нам делать с ними, захламляющими данные? Для этого в сверточных нейронных сетях существует еще один тип слоя - пулинг. Пулинговый слой необходим для снижения размерность изображения. Проще говоря, пулинг выбирает только самые важные данные и убирает лишнее. Благодаря этому компьютер обрабатывает данные быстрее и точнее. В результате работы пулингового слоя изображение становится менее детализированным, но сохраняет основные признаки. Пулинг получает результирующую матрицу путем взятия максимального значения на каждом шаге. Основные отличия свертки и пулинга в их целях (у свертки - получение признаков, у пулинга - снижение размерности) и способу вычисления (свертка - взвешенная сумма с ядром, пулинг - агрегация по окну)

 Ссылка на используемое изображение: https://neerc.ifmo.ru/wiki/images/8/8d/Maxpool.jpeg
Ссылка на используемое изображение: https://neerc.ifmo.ru/wiki/images/8/8d/Maxpool.jpeg

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

Хоть я и назвала CNN скандальной архитектурой в начале статьи, это бесспорно актуальная и активно используемая технология. Она позволяет компьютеру “видеть” изображения, и это нашло свою реализацию в том числе в сфере медицины. Один из самых интересных и полезных проектов, на мой взгляд - распознавание раковых опухолей по снимкам. Я также имела честь тесно поработать с данной архитектурой - участвовала в реализации интересного заказа от РЖД, где CNN использовалось для распознавания дефектов на железнодорожных рельсах.

Информация и произведении:

Автор: Вероника Алексеенко-Недышилова
Редакторы: Сабуров Даниил и Марк Ершов

Условия использования: свободное некоммерческое использование при условии указания автора и ссылки на первоисточник.

Для коммерческого использования - обращаться на почту: buildxxvek@gmail.com

Источники: