В девятой лекции курса Стэндфордского университета CS231N (весна 2025 года) подробно разбираются фундаментальные задачи компьютерного зрения: детекция объектов, сегментация изображений и методы визуализации нейросетей. Преподаватель Стэндфорда анализирует эволюцию алгоритмов — от классических сверточных сетей (CNN) до современных визуальных трансформеров (ViT) и детекторов на их основе, таких как DETR.
🤖 Визуальные трансформеры: от патчей к экспертным слоям 0:05
Лекция начинается с обзора перехода от рекуррентных нейронных сетей (RNN) к трансформерам. Основное преимущество последних — механизм самовнимания (self-attention), который, хотя и является более вычислительно затратным и требовательным к памяти, обеспечивает значительно лучшее качество моделирования последовательностей .
В контексте обработки изображений архитектура Vision Transformer (ViT) работает следующим образом:
- Изображение разбивается на патчи (например, сетка 3x3) .
- Каждый патч преобразуется в вектор (токен) через линейную проекцию.
- Поскольку при разбиении на патчи теряется информация о взаимном расположении частей изображения, добавляются позиционные эмбеддинги (positional embeddings) .
- Для задач классификации добавляется специальный обучаемый «class token», который на выходе преобразуется в вектор вероятностей классов .
Лектор выделяет несколько современных оптимизаций, которые делают обучение трансформеров более стабильным и эффективным:
- Pre-norm (Layer Norm внутри остаточных связей): Нормализация слоя переносится перед блоками внимания и MLP, что позволяет лучше сохранять идентичность функций при глубоком обучении .
- RMSNorm (Root Mean Square Normalization): Более простой и эмпирически более стабильный метод нормализации по сравнению со стандартным LayerNorm .
- SwiGLU MLP: Замена стандартного полносвязного слоя на версию с «воротами» (gated nonlinearity), что добавляет нелинейности без существенного увеличения количества параметров .
- Mixture of Experts (MoE): Использование нескольких параллельных MLP-слоев («экспертов») и маршрутизатора (router), который направляет токены только к активным экспертам. Это позволяет наращивать количество параметров модели без пропорционального роста вычислительной нагрузки .
🧩 Семантическая сегментация: классификация каждого пикселя 17:37
Задача семантической сегментации заключается в присвоении метки класса каждому отдельному пикселю изображения . Лектор отмечает, что классификация отдельного пикселя невозможна без контекста, поэтому нейросети анализируют окружающие области (патчи).
Для эффективного решения этой задачи используются полностью сверточные нейронные сети (FCN). Основная сложность здесь заключается в размере изображений: прямая обработка в высоком разрешении требует огромных вычислительных мощностей . Решением стал подход с уменьшением размерности (downsampling) и последующим восстановлением (upsampling).
Методы апсемплинга (увеличения разрешения):
- Nearest Neighbor и Bed of Nails: Простые методы копирования значений или заполнения нулями.
- Max Unpooling: Использование сохраненных координат максимумов из этапа пулинга для точного восстановления структуры .
- Learned Upsampling (Transposed Convolution): Свертка с обучаемыми фильтрами, которая позволяет сети самостоятельно определять оптимальный способ восстановления деталей .
Особое внимание лектор уделяет архитектуре U-Net, которая до сих пор считается передовым решением в медицинских приложениях. Её ключевая особенность — «пропускные связи» (skip connections), которые копируют карты признаков из энкодера напрямую в декодер, помогая сохранять четкость границ объектов .
🔍 Детекция объектов: от R-CNN до YOLO 33:07
Детекция объектов сложнее классификации, так как требует не только определить категорию, но и найти координаты рамки (bounding box) . Лектор подчеркивает, что современные инструменты позволяют решать эту задачу «одной строкой кода», но понимание внутренней логики необходимо для разработки специализированных моделей .
Эволюция методов детекции:
- R-CNN (Region-based CNN): Сначала предлагаются регионы (region proposals), затем для каждого запускается нейросеть. Это очень медленный процесс .
- Fast R-CNN: Вся картинка прогоняется через сверточную сеть один раз, а регионы выделяются уже на общей карте признаков, что значительно ускоряет работу .
- YOLO (You Only Look Once): Одностадийный детектор, который делит изображение на сетку (например, 7x7) и за один проход предсказывает вероятности объектов и координаты рамок для каждой ячейки . YOLO ценится в индустрии за экстремальную скорость и возможность работы в реальном времени .
🏗️ DETR: трансформеры в детекции объектов 49:05
Алгоритм DETR (Detection Transformer), представленный в 2020 году, применил архитектуру трансформеров к задаче обнаружения объектов. Вместо сложных эвристик с регионами и сетками здесь используются «запросы к объектам» (object queries) .
По словам лектора, эти запросы являются обучаемыми параметрами. Сеть получает на вход, например, 20 запросов и через механизмы внимания выдает координаты и классы для 20 потенциальных объектов в кадре . Если объектов меньше, лишние запросы получают метку «no object». Эта модель избавила разработчиков от необходимости вручную настраивать постобработку, такую как подавление не-максимумов (NMS) .
👁️ Визуализация и интерпретация: как «думает» сеть 1:01:40
Понимание того, почему нейросеть приняла то или иное решение, критически важно в таких областях, как медицина . Лектор разбирает несколько методов «заглянуть под капот»:
- Saliency Maps (Карты значимости): Вычисление градиента оценки класса по отношению к значениям пикселей. Это показывает, какие именно пиксели нужно изменить, чтобы сильнее всего повлиять на результат классификации .
- CAM и Grad-CAM (Class Activation Mapping): Методы, позволяющие визуализировать тепловые карты активации для конкретных классов. Они подсвечивают области (например, купол церкви или морду собаки), на которые сеть опиралась при выборе ответа .
В завершение лектор отмечает, что трансформеры (ViT) визуализировать гораздо проще, чем сверточные сети, так как они изначально содержат матрицы весов внимания, которые можно напрямую наложить на изображение .