Сверточные нейронные сети стали стандартом для компьютерного зрения. Они лежат в основе разблокировки по лицу в смартфонах, автоматической сортировки фото, систем контроля качества на заводах, помощи врачам при анализе снимков и восприятия сцены в беспилотных автомобилях. Это руководство объясняет, как работает сверточная нейросеть, из каких слоев она состоит, как идет обучение сверточных нейросетей и какие задачи решает. Материал охватывает принципы работы сверточных нейросетей с нуля, ключевые архитектуры и демонстрирует практический пример на Keras. Подойдет тем, кто впервые сталкивается с CNN, и тем, кто хочет систематизировать знания перед реальными проектами, в том числе по распознаванию и классификации изображений и видео.
Что такое сверточная нейронная сеть (CNN) простыми словами?
Сверточная нейронная сеть это класс глубинных моделей, который анализирует изображения и видео, сохраняя пространственную структуру пикселей. В отличие от «плоских» сетей, CNN использует сверточные слои с фильтрами, которые скользят по входному изображению и выделяют локальные признаки. В ранних слоях сеть видит края и углы, в более глубоких собирает их в текстуры и части объектов, а затем объединяет признаки для классификации. Такой подход делает CNN эффективной при обработке данных с пространственными закономерностями и при обработке изображений, где важно учитывать соседство пикселей на уровне локальных паттернов.
Ключевая аналогия: как CNN "видит" мир
Полезно представить фильтр свертки как луч фонарика. Луч скользит по темной комнате и освещает небольшой участок сцены. Там, где луч проходит, выявляются края, полосы, текстуры. Дальше несколько проходов «фонарика» дают более полную картину: сеть сначала находит мелкие детали, затем складывает их в части объектов и, наконец, распознает сам объект.
Основные преимущества CNN: в чем их сила?
- Локальная связность (Local Connectivity). Нейроны смотрят на небольшие области, что отражает устройство зрительной системы и уменьшает число параметров.
- Общие веса (Shared Weights). Один и тот же фильтр применяется ко всем позициям изображения. Это резко сокращает количество обучаемых параметров и повышает устойчивость.
- Инвариантность к сдвигам. Пулинг делает сеть менее чувствительной к небольшим смещениям объектов в кадре, улучшая обобщение.
Принципы работы сверточной нейросети: послойный разбор
CNN устроена как конвейер. Входное изображение проходит через серию специализированных слоев. Сначала слоем свертки извлекаются простые признаки, затем слой активации добавляет нелинейность, слой подвыборки снижает размерность и повышает устойчивость к сдвигам. В конце полносвязный и выходной слой преобразуют признаки в итоговый результат классификации.
Шаг 1. Сверточный слой (Convolutional Layer) — извлечение признаков
Сверточный слой применяет набор фильтров к входному изображению. Каждый фильтр это маленькая матрица весов с размером фильтра, например 3×3 или 5×5. Фильтр скользит по входному изображению и умножает значения пикселя под окном на соответствующие веса. Сумма дает одно значение карты признаков. Один фильтр создает одну карту признаков, набор фильтров формирует набор карт признаков. На изображениях фильтры ранних слоев выделяют контуры и углы, в признаках следующих слоев появляются более сложные текстуры и детали формы. Для цветного изображения каждая свертка учитывает все каналы RGB входного изображения. Параметры свертки включают количество фильтров, размер фильтра и шаг, а также дополнение границ, что управляет размером признаков и чувствительностью к краям.
Гиперпараметры свертки: Шаг (Stride) и Дополнение (Padding)
Stride это шаг смещения фильтра. При шаге 1 фильтр проходит каждую позицию, при шаге 2 пропускает через пиксель, уменьшая размер карты признаков. Padding это добавление рамки из нулей по краям для контроля размеров. Пример: вход 5×5, ядро 3×3, stride 1, padding 0 дает выход 3×3. С padding 1 выход станет 5×5. Формула по одной оси: W_out = (W_in − F + 2P)/S + 1. Здесь W_in и W_out это входная и выходная ширина, F размер ядра, P дополнение, S шаг. Эти параметры задают размер изображения на выходе слоя и влияют на то, какие локальные зависимости на уровне пикселя учитываются за слоем свертки.
Шаг 2. Слой активации (Activation Layer) — добавление нелинейности
ReLU преобразует отрицательные значения в ноль и пропускает положительные. Это ускоряет обучение и снижает проблему затухающих градиентов по сравнению с сигмоидой или тангенсом. Разреженные активации включают нейроны только там, где найден важный признак, что помогает сети изучать сложные зависимости.
Шаг 3. Слой подвыборки или Пулинг (Pooling Layer) — сжатие информации
Слоем подвыборки (пулинг) сеть уменьшает размерность карт признаков и выделяет доминирующие значения. Max pooling берет максимум в каждом локальном окне, что помогает сохранить сильные признаки и снизить чувствительность к небольшим сдвигам и шуму. Результат это уменьшение размера признаков и числа операций в сети без обучения дополнительных параметров. Часто пулинг ставят после первого блока свертки и повторяют его между блоками, чтобы контролировать пространственное уменьшение и стабилизировать масштаб признаков.
Шаг 4. Полносвязный слой (Fully-Connected Layer) и Выходной слой — принятие решения
В конце за слоем свертки и пулинга карты признаков сворачиваются в вектор и передаются в полносвязный слой. Здесь сеть объединяет разрозненные признаки и учится их взаимодействию. Последний слой обычно играет роль выходного слоя с softmax для многоклассовой классификации. Нейронная сеть таким образом переводит высокоуровневые признаки в вероятности классов и возвращает результат.
Как происходит обучение сверточных нейросетей
- Прямой проход (Forward Pass). Изображение попадает в сеть и последовательно проходит через слои. На выходе получается прогноз.
- Вычисление ошибки. Прогноз сравнивается с правильной меткой. Функция потерь, как правило кросс-энтропия для классификации, измеряет расхождение.
- Обратное распространение ошибки (Backpropagation). Градиенты ошибки распространяются назад от выходного слоя к ранним слоям.
- Обновление весов. Оптимизатор (SGD или Adam) корректирует веса фильтров в каждом слое, чтобы снизить ошибку на следующих итерациях.
- Повторение. Цикл проходит много эпох и батчей данных, пока сеть не стабилизирует точность.
Борьба с переобучением. Аугментация данных и Dropout
Аугментация синтетически расширяет датасет за счет поворотов, отражений, сдвигов, изменения яркости и контраста. Модель видит больше вариаций и обобщает лучше. Dropout во время обучения случайно отключает часть нейронов, поэтому сеть не полагается на узкий набор признаков и учится устойчивым представлениям. Обе техники стандарт для CNN и описаны в IBM Think и CS231n.
Применение сверточных нейронных сетей: от фото до медицины
- Компьютерное зрение. Классификации изображений, детекция объектов, семантическая сегментация.
- Медицинская диагностика. Анализ изображений МРТ, КТ и рентгена для поиска патологий.
- Беспилотные автомобили. Распознавание разметки, пешеходов, дорожных знаков в видео.
- Распознавание лиц и биометрия. Идентификация личности в изображениях и видео.
- Генерация и обработка изображений. Улучшение качества, стилизация, участие в генеративных системах.
- Анализ текста и звука. CNN применяются для классификации текстов и команд в аудио как часть гибридных моделей.
Как начать работать с CNN: практический гайд
Популярные фреймворки и библиотеки: TensorFlow, PyTorch, Keras
В 2025 году доминирует Python. TensorFlow с высокоуровневым Keras удобен для быстрого прототипирования и продакшен-пайплайнов, PyTorch гибок в исследованиях и кастомных архитектурах. Для предобработки изображений часто используют OpenCV.
Пошаговый пример: создаем первую CNN на Python (Keras)
Задача: распознавание рукописных цифр на MNIST.
Перед выполнением убедитесь, что установлен TensorFlow.
Что делает следующий блок: импортирует библиотеки и загружает данные MNIST.
# 1. Импорт и загрузка данных
import numpy as np
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense
from tensorflow.keras.datasets import mnist
from tensorflow.keras.utils import to_categorical
(x_train, y_train), (x_test, y_test) = mnist.load_data()
Этот блок нормализует пиксели, добавляет размерность канала и переводит метки в one-hot
# 2. Подготовка данных
x_train = x_train.astype("float32") / 255.0
x_test = x_test.astype("float32") / 255.0
x_train = np.expand_dims(x_train, axis=-1) # (28, 28, 1)
x_test = np.expand_dims(x_test, axis=-1)
y_train = to_categorical(y_train, 10)
y_test = to_categorical(y_test, 10)
Этот блок строит минимальную CNN: свертка, пулинг, разворачивание и выходной слой.
# 3. Архитектура CNN
model = Sequential([
Conv2D(32, (3, 3), activation="relu", input_shape=(28, 28, 1)),
MaxPooling2D((2, 2)),
Flatten(),
Dense(10, activation="softmax")
])
Этот блок компилирует модель, обучает в течение 5 эпох и оценивает точность.
# 4. Компиляция и обучение
model.compile(optimizer="adam", loss="categorical_crossentropy", metrics=["accuracy"])
history = model.fit(x_train, y_train, epochs=5, batch_size=64, validation_data=(x_test, y_test))
# 5. Оценка и пример инференса
loss, acc = model.evaluate(x_test, y_test, verbose=0)
print(f"Test accuracy: {acc:.4f}")
pred = model.predict(x_test[:5])
print("Predicted:", np.argmax(pred, axis=1))
print("True :", np.argmax(y_test[:5], axis=1))
Какие архитектуры и датасеты выбрать для первых проектов
Для старта подходят предобученные VGG и ResNet с дообучением под задачу (transfer learning). Из датасетов используйте MNIST и Fashion-MNIST для разогрева, CIFAR-10 для цветного изображения с 10 классами, ImageNet для масштабных задач и переноса знаний. Обоснование такого пути дается в курсах CS231n и практиках индустрии.
Знаковые архитектуры CNN: краткая история в лицах
Ниже список прорывов, на которых строится современное компьютерное зрение.
- LeNet-5 продемонстрировала рабочую схему «свертки + пулинг + полносвязные слои» для распознавания цифр.
- AlexNet выиграла ILSVRC-2012, внедрив ReLU, dropout и обучение на GPU.
- VGG показала силу глубины с множеством 3×3 сверток при простой однородной схеме.
- GoogLeNet снизила число параметров за счет Inception-модулей с параллельными свертками.
- ResNet решила затухание градиента с помощью остаточных связей, позволив обучать сотни слоев.
| Архитектура | Год | Глубина (слои) | Ключевая инновация |
|---|---|---|---|
| LeNet-5 | 1998 | ≈7 | Базовая схема сверток и пулинга для рукописных цифр |
| AlexNet | 2012 | 8 | ReLU, dropout, аугментация, GPU-обучение |
| VGG | 2014 | 16–19 | Малые 3×3 свертки и глубокая однородная архитектура |
| GoogLeNet (Inception v1) | 2014 | ≈22 | Inception-модуль и глобальный average pooling, меньше параметров |
| ResNet | 2015 | 18–152+ | Остаточные связи для сверхглубоких сетей |
Выводы
- CNN это «глаза» современного AI для анализа изображений и видео.
- Принцип работы это последовательное извлечение признаков слоями свертки, активации и пулинга.
- Обучение требует данных и идет через прямой проход, вычисление ошибки, backprop и обновление весов.
- Начать просто с Keras и transfer learning на предобученных моделях.

Комментарии (0)
Новый комментарий
Новый комментарий отправлен на модерацию