CNN (Сверточные нейронные сети)

30 июля 2025

Обновлено: 30 июля 2025

Что означает термин CNN? 

CNN (Convolutional Neural Network, Сверточная нейронная сеть) — это специализированный тип глубоких нейронных сетей, спроектированный для эффективной обработки данных с сеточной структурой, прежде всего изображений (2D сетка пикселей), но также видео (3D) и даже звуковых сигналов или текстов (1D). Их ключевая особенность — использование сверточных слоев (convolutional layers), которые автоматически и адаптивно учатся извлекать пространственные иерархические признаки из входных данных.

Для чего нужны CNN? 

CNN стали революционной технологией в компьютерном зрении (CV) благодаря своей способности:

Автоматически обнаруживать локальные паттерны (края, текстуры, формы) и комбинировать их в более сложные признаки (части объектов, целые объекты) по мере прохождения данных через слои сети.

Обеспечивать пространственную инвариантность: Способность распознавать объект независимо от его положения, масштаба, поворота или небольших искажений на изображении.

Эффективно обрабатывать высокоразмерные данные (например, изображения с миллионами пикселей) за счет локальных связей и разделения весов (weight sharing), что значительно снижает количество параметров по сравнению с полносвязными сетями.

Примеры применения CNN:

  • Классификация изображений: Распознавание объектов на фото (ImageNet), диагностика заболеваний по снимкам (рентген, МРТ).
  • Обнаружение объектов (Object Detection): Нахождение и идентификация множества объектов на изображении с указанием их положения (автономные автомобили - YOLO, SSD; системы безопасности).
  • Сегментация изображений (Semantic/Instance Segmentation): Присвоение метки каждому пикселю изображения (медицинская визуализация - U-Net; робототехника; AR).
  • Распознавание лиц: Идентификация и верификация личности.
  • Обработка видео: Распознавание действий, отслеживание объектов.
  • Генеративный ИИ: Генерация изображений (в основе многих диффузионных моделей и GAN лежат CNN-архитектуры - например, декодеры в Stable Diffusion).
  • NLP (менее распространено, но возможно): Классификация текстов, обработка предложений как последовательностей "пикселей" (1D свертка).

Как работают CNN? / Ключевые компоненты:

Сверточный слой (Convolutional Layer):

Ядро (Kernel)/Фильтр (Filter): Маленькая матрица (например, 3x3, 5x5), которая "скользит" (свертка) по входному изображению или карте признаков предыдущего слоя.

Операция свертки (Convolution): На каждом шаге фильтр умножается на соответствующую область входных данных, результаты суммируются, и получается одно число в выходной карте признаков (feature map). Фильтр учится обнаруживать специфические паттерны (например, вертикальные края).

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

Слой активации (Activation Layer - обычно ReLU): 

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

Слой подвыборки/Пулинг (Pooling Layer - обычно MaxPooling):

Уменьшает пространственные размеры (ширину и высоту) карты признаков, сохраняя наиболее важную информацию (инвариантность к малым сдвигам/искажениям). 

Max Pooling: Берет максимум из области (например, 2x2). Уменьшает объем вычислений и количество параметров в последующих слоях.

Полносвязные слои (Fully Connected Layers): После нескольких блоков "Свертка -> Активация -> Пулинг" карты признаков "разворачиваются" в вектор и подаются на традиционные полносвязные слои (как в обычных нейросетях) для окончательной классификации или регрессии.

Иерархия признаков: Ранние слои учатся простым признакам (края, углы), средние слои - более сложным (текстуры, части объектов), глубокие слои - высокоуровневым признакам (целые объекты, сцены).

Оцените данную статью