Баннер мобильный (3) Пройти тест

Гайд по работе сверточных нейронных сетей

Что общего между сверточными нейросетями и зрением человека

Гайд

26 июля 2024

Поделиться

Скопировано
Гайд по работе сверточных нейронных сетей

Содержание

    Для распознавания изображений и видео используют особый тип нейросетей — сверточные. Например, они помогают анализировать результаты МРТ и рентгеновские снимки, чтобы поставить правильный диагноз.

    Вместе с Марией Жаровой, Data Scientist Альфа-Банка, разбираемся, как устроены сверточные нейросети и что нужно знать для начала работы с ними. 

    Что такое сверточные нейронные сети 

    Сверточные нейронные сети — разновидность нейросетей для обработки данных с сеточной структурой: изображений и видео. 

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

    Идея создания сверточных нейронных сетей обсуждалась еще в середине XX века. Но к ней вернулись лишь в 2012 году. Тогда математики Алекс Крижевски и Джефф Хинтон представили на международном конкурсе нейросеть ImageNet. По сравнению с аналогичными моделями она совершала почти на 50% меньше ошибок при распознавании изображений: их количество снизилось с 26 до 15%. Сейчас точность стала еще выше. Например, при распознавании лиц в толпе показатель составляет 99,8%.

    Структура сверточных нейросетей 

    У сверточных нейросетей два основных типа слоев — свертка и пулинг. 

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

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

    Сверточные слои используют фильтры, или ядра свертки. Это заранее заданные матрицы небольшого размера, как правило, 3×3. Они нужны для распознавания картинки и выделения признаков, например краев изображения. Как это происходит в несколько шагов: 

    1. Фильтр, подобно сканеру, последовательно перемещается по картинке. 
    2. Каждый фильтр умножается на пиксели изображения под ним. Затем значения умноженных пар суммируются. 
    3. Полученное число записывается в новую матрицу. 
    4. Процесс повторяется для каждого возможного положения фильтра на изображении. 
    5. Результат — готовая матрица или карта признаков, которая содержит информацию о том, как и где определенные признаки присутствуют на изображении. 
    Принцип работы сверточного слоя
    Принцип работы сверточного слоя, опубликовано на платформе Medium. Источник

    Пулинг

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

    Затем можно снова применить сверточный слой и повторить процесс несколько раз. Так получится постепенно выделить более сложные признаки на изображении. Например, сначала нейросеть найдет контуры цветка, а потом распознает его форму и оттенки лепестков.

    Принцип работы пулинга
    В итоге получаются полносвязные слои, которые используют найденные признаки для классификации или регрессии

    Как работают сверточные нейронные сети 

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

    Работу сверточной нейросети можно разделить на два этапа:

    1. Подготовка изображения. Сверточная нейронная сеть воспринимает картинку в виде трехмерных массивов матриц или чисел. Поэтому перед поступлением в модель данные нужно подготовить. Для этого используют системы обработки изображений. Программа автоматически присваивает каждому пикселю определенное значение:
    • В черно-белых картинках — число от 0 до 255 в зависимости от насыщенности. 
    • В цветных изображениях — трехмерную матрицу чисел в виде значений от 0 до 255 по интенсивности красного, зеленого и синего цветов. 
    1. Применение фильтров к изображению. В процессе обработки фильтр умножает значение выбранного пикселя и значения его соседей в соответствии с матрицей фильтра. Затем полученные произведения складываются. Получившееся число заменяет исходное значение центрального пикселя. Например, если у пикселя значение 2, и после применения фильтра к нему и его соседям результат будет 13, это значение и заменит исходное. При этом значения остальных соседних пикселей не изменяются. Такой же процесс повторяется для каждого пикселя на изображении. 

    Для чего и где используются сверточные нейронные сети 

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

    В каких сферах чаще всего применяют свертку: 

    1. Медицина. Сверточные нейронные сети анализируют изображения для обнаружения патологий и постановки точного диагноза. Например, они изучают рентгеновские снимки, результаты МРТ, КТ. 
    2. Приборостроение. В беспилотных системах сверточные нейросети обрабатывают визуальные данные. Обычно это изображение видеопотока с видеорегистратора. Таким образом модели распознают дорожные знаки, полосы движения и другие объекты, чтобы сделать вождение более безопасным. 
    3. Системы распознавания лиц. Сверточные нейронные сети используются для аутентификации в банке, в системах видеонаблюдения и других подобных сферах. 
    4. Распознавание документов. Учреждения активно используют сверточные нейросети, чтобы расшифровывать сканы паспортов, СНИЛС и других документов. 

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

    Мария Жарова,
    Data Scientist в Альфа-Банке

    Как сверточные нейросети будут развиваться в будущем 

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

    1. Интеграция с другими типами нейросетей. Например, уже сейчас активно применяется комбинация сверточных нейросетей с трансформерами — моделями преимущественно для обработки текстов. Они справляются с переводами, генерацией текстов и отвечают на вопросы. Это помогает обрабатывать многомодальные данные, то есть информацию из разных источников или в виде разных типов данных, например звука, видео, изображений, текста.
    2. Оптимизация вычислений. Будут разрабатываться более технологичные и эффективные архитектуры и алгоритмы. Они помогут ускорить обучение нейросетей и точность их работы. 
    3. Расширение сфер использования. Сверточные нейронные сети показывают хорошие результаты не только при работе с изображениями — они эффективны и для других типов неструктурированных данных. Поэтому областей применения СНС будет становиться больше. 

    Как научиться работать со сверточными нейросетями 

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

    1. Машинное обучение. Понимать процесс обучения моделей. Знать архитектуры нейронных сетей, их параметров и проблемных мест, оптимизации и т. д. 
    2. Программирование. Уметь писать код на Python, работать с библиотеками для нейросетей и работы с изображениями — TensorFlow, PyTorch, OpenCV. 
    3. Линейная алгебра и математика. Понимать матрицы, вектора и вычисления свертки. 

    Чтобы базово работать со сверточными нейросетями, достаточно знать основы машинного обучения и уметь писать код на Python. Но если хотите развиваться в профессии и выполнять более сложные задачи, не обойтись без глубоких знаний математики.

    Мария Жарова,
    Data Scientist в Альфа-Банке

    Сверточные нейросети — запоминаем главное 

    • Сверточные нейросети нужны для распознавания изображений и видео. Они воспринимают объект в виде чисел или матриц. 
    • Если картинка черно-белая, то пиксели кодируются от 0 до 255 в зависимости от их насыщенности. 
    • В цветных изображениях пиксели распределяются по цветовым каналам на три части по насыщенности синего, зеленого и красного. В таком виде модель принимает информацию для обработки. 
    • Свертка применяется в разных областях: медицине, автомобилестроении, видеонаблюдении. Но может быть менее эффективна для работы с текстом и при одновременном распознавании картинок разного формата. 

    Гайд

    Поделиться

    Скопировано
    1 комментарий
    Комментарии
    • Anastasia

      Спасибо!