# Stanford CS231N: как современные нейросети видят, сегментируют и понимают изображения

Источник: https://www.youtube.com/watch?v=PTypu6GqEd4
Канал: Stanford Online
Опубликовано: 02.09.2025

---

В девятой лекции курса Стэндфордского университета CS231N (весна 2025 года) подробно разбираются фундаментальные задачи компьютерного зрения: детекция объектов, сегментация изображений и методы визуализации нейросетей. Преподаватель Стэндфорда анализирует эволюцию алгоритмов — от классических сверточных сетей (CNN) до современных визуальных трансформеров (ViT) и детекторов на их основе, таких как DETR.

## 🤖 Визуальные трансформеры: от патчей к экспертным слоям
[[JUMP:00:05]]

Лекция начинается с обзора перехода от рекуррентных нейронных сетей (RNN) к трансформерам. Основное преимущество последних — механизм самовнимания (self-attention), который, хотя и является более вычислительно затратным и требовательным к памяти, обеспечивает значительно лучшее качество моделирования последовательностей [02:31]. 

В контексте обработки изображений архитектура Vision Transformer (ViT) работает следующим образом:

*   Изображение разбивается на патчи (например, сетка 3x3) [03:48].
*   Каждый патч преобразуется в вектор (токен) через линейную проекцию.
*   Поскольку при разбиении на патчи теряется информация о взаимном расположении частей изображения, добавляются позиционные эмбеддинги (positional embeddings) [04:46].
*   Для задач классификации добавляется специальный обучаемый «class token», который на выходе преобразуется в вектор вероятностей классов [06:09].

Лектор выделяет несколько современных оптимизаций, которые делают обучение трансформеров более стабильным и эффективным:

1.  **Pre-norm (Layer Norm внутри остаточных связей):** Нормализация слоя переносится перед блоками внимания и MLP, что позволяет лучше сохранять идентичность функций при глубоком обучении [09:53].
2.  **RMSNorm (Root Mean Square Normalization):** Более простой и эмпирически более стабильный метод нормализации по сравнению со стандартным LayerNorm [10:38].
3.  **SwiGLU MLP:** Замена стандартного полносвязного слоя на версию с «воротами» (gated nonlinearity), что добавляет нелинейности без существенного увеличения количества параметров [11:36].
4.  **Mixture of Experts (MoE):** Использование нескольких параллельных MLP-слоев («экспертов») и маршрутизатора (router), который направляет токены только к активным экспертам. Это позволяет наращивать количество параметров модели без пропорционального роста вычислительной нагрузки [12:34].

## 🧩 Семантическая сегментация: классификация каждого пикселя
[[JUMP:17:37]]

Задача семантической сегментации заключается в присвоении метки класса каждому отдельному пикселю изображения [17:50]. Лектор отмечает, что классификация отдельного пикселя невозможна без контекста, поэтому нейросети анализируют окружающие области (патчи).

Для эффективного решения этой задачи используются полностью сверточные нейронные сети (FCN). Основная сложность здесь заключается в размере изображений: прямая обработка в высоком разрешении требует огромных вычислительных мощностей [21:28]. Решением стал подход с уменьшением размерности (downsampling) и последующим восстановлением (upsampling).

Методы апсемплинга (увеличения разрешения):

*   **Nearest Neighbor и Bed of Nails:** Простые методы копирования значений или заполнения нулями.
*   **Max Unpooling:** Использование сохраненных координат максимумов из этапа пулинга для точного восстановления структуры [26:11].
*   **Learned Upsampling (Transposed Convolution):** Свертка с обучаемыми фильтрами, которая позволяет сети самостоятельно определять оптимальный способ восстановления деталей [27:05].

Особое внимание лектор уделяет архитектуре **U-Net**, которая до сих пор считается передовым решением в медицинских приложениях. Её ключевая особенность — «пропускные связи» (skip connections), которые копируют карты признаков из энкодера напрямую в декодер, помогая сохранять четкость границ объектов [30:53].

## 🔍 Детекция объектов: от R-CNN до YOLO
[[JUMP:33:07]]

Детекция объектов сложнее классификации, так как требует не только определить категорию, но и найти координаты рамки (bounding box) [34:50]. Лектор подчеркивает, что современные инструменты позволяют решать эту задачу «одной строкой кода», но понимание внутренней логики необходимо для разработки специализированных моделей [16:22].

Эволюция методов детекции:

*   **R-CNN (Region-based CNN):** Сначала предлагаются регионы (region proposals), затем для каждого запускается нейросеть. Это очень медленный процесс [39:01].
*   **Fast R-CNN:** Вся картинка прогоняется через сверточную сеть один раз, а регионы выделяются уже на общей карте признаков, что значительно ускоряет работу [40:18].
*   **YOLO (You Only Look Once):** Одностадийный детектор, который делит изображение на сетку (например, 7x7) и за один проход предсказывает вероятности объектов и координаты рамок для каждой ячейки [45:48]. YOLO ценится в индустрии за экстремальную скорость и возможность работы в реальном времени [45:16].

## 🏗️ DETR: трансформеры в детекции объектов
[[JUMP:49:05]]

Алгоритм DETR (Detection Transformer), представленный в 2020 году, применил архитектуру трансформеров к задаче обнаружения объектов. Вместо сложных эвристик с регионами и сетками здесь используются «запросы к объектам» (object queries) [50:57].

По словам лектора, эти запросы являются обучаемыми параметрами. Сеть получает на вход, например, 20 запросов и через механизмы внимания выдает координаты и классы для 20 потенциальных объектов в кадре [51:14]. Если объектов меньше, лишние запросы получают метку «no object». Эта модель избавила разработчиков от необходимости вручную настраивать постобработку, такую как подавление не-максимумов (NMS) [49:05].

## 👁️ Визуализация и интерпретация: как «думает» сеть
[[JUMP:1:01:40]]

Понимание того, почему нейросеть приняла то или иное решение, критически важно в таких областях, как медицина [1:04:47]. Лектор разбирает несколько методов «заглянуть под капот»:

*   **Saliency Maps (Карты значимости):** Вычисление градиента оценки класса по отношению к значениям пикселей. Это показывает, какие именно пиксели нужно изменить, чтобы сильнее всего повлиять на результат классификации [1:06:19].
*   **CAM и Grad-CAM (Class Activation Mapping):** Методы, позволяющие визуализировать тепловые карты активации для конкретных классов. Они подсвечивают области (например, купол церкви или морду собаки), на которые сеть опиралась при выборе ответа [1:10:38].

В завершение лектор отмечает, что трансформеры (ViT) визуализировать гораздо проще, чем сверточные сети, так как они изначально содержат матрицы весов внимания, которые можно напрямую наложить на изображение [1:12:45].