# От пикселей к смыслам: как сверточные нейросети и HuggingFace изменили компьютерное зрение

Источник: https://www.youtube.com/watch?v=8xh7Y0pBrCE
Канал: MIT OpenCourseWare
Опубликовано: 07.01.2026

---

Эта лекционная сессия курса MIT OpenCourseWare посвящена переходу от простых нейронных сетей к продвинутым методам компьютерного зрения. Профессор Рама Рамакришнан (Rama Ramakrishnan) объясняет устройство сверточных нейронных сетей (CNN), принципы работы фильтров и пулинга, а также демонстрирует мощь трансферного обучения (Transfer Learning) на примере классификации объектов всего по 100 изображениям.

## 🖼️ Проблема «плоских» данных: почему обычные сети плохо видят
[[JUMP:01:26]]

Традиционные полносвязные нейронные сети воспринимают изображение как простой вектор чисел. По словам Рамакришнана, при таком подходе теряется критически важная информация:

*   **Пространственная смежность (Spatial Adjacency):** В обычном векторе пиксель в центре футболки «не знает», что соседние пиксели относятся к тому же объекту [02:07].
*   **Избыточность параметров:** Для обработки цветного фото с iPhone (9 млн пикселей, 3 канала) даже один слой из 100 нейронов потребует 2,7 млрд параметров [04:17]. Это неизбежно ведет к переобучению и требует колоссальных объемов данных.
*   **Отсутствие инвариантности к переносу (Translation Invariance):** Сеть должна узнавать вертикальную линию независимо от того, находится она в углу или в центре кадра. Обычные сети обучаются детектировать объекты в каждой позиции «с нуля» [05:28].

## 🔍 Анатомия свертки: фильтры как детекторы черт
[[JUMP:07:11]]

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

1.  **Детекция признаков:** Одни фильтры реагируют на горизонтальные линии, другие — на вертикальные или изгибы [08:22].
2.  **Операция свертки:** Фильтр накладывается на изображение, соответствующие числа перемножаются и суммируются. После прохождения через функцию ReLU результат записывается в новую таблицу (тензор) [10:18].
3.  **Обработка цвета:** Для цветных RGB-изображений фильтры становятся трехмерными («кубическими»), имея глубину, равную количеству каналов [21:42].

Исторически фильтры создавались вручную экспертами по компьютерному зрению. Прорывом 2012 года (AlexNet) стало осознание, что числа в фильтрах — это просто веса, которые нейросеть может выучить сама через обратное распространение ошибки [27:02].

## 📉 Пулинг и иерархия признаков
[[JUMP:30:56]]

Слои пулинга (pooling) служат для уменьшения размерности (Down-sampling). 

*   **Max Pooling:** Из окна (например, 2x2) выбирается максимальное значение. Это работает как логическое «ИЛИ»: если хоть в одном пикселе области найден нужный признак, он передается дальше [33:50].
*   **Абстракция:** С каждым слоем сеть видит изображение во всё более высоком разрешении смыслов. На первых слоях это линии, на средних — части объектов (глаза, уши), на последних — целые лица [30:43].
*   **Геометрия тензора:** В процессе обработки высота и ширина тензора уменьшаются, но глубина (количество фильтров) растет. Например, в ResNet вход 224x224x3 превращается в глубокий тензор 7x7x2048 [40:13].

## 🧠 Трансферное обучение: классификация на малых данных
[[JUMP:1:00:23]]

Главная проблема глубокого обучения — «голод» до данных. Чтобы классифицировать сумки и обувь, имея всего по 100 примеров (всего 200 фото), обычная CNN покажет точность около 87%, быстро переобучаясь [1:03:21].

Решением становится **Transfer Learning** (Трансферное обучение):

1.  **Использование предобученных моделей:** Берётся сеть (например, ResNet), уже обученная на миллионах изображений датасета ImageNet [1:02:21].
2.  **«Хирургическое» вмешательство:** От предобученной сети отрезается последний слой (Headless model), который отвечал за классификацию 1000 категорий ImageNet [1:08:59].
3.  **Адаптация:** Вместо отрезанного слоя добавляется новый классификатор под конкретную задачу (сумка или обувь). Остальные веса сети уже «умеют» распознавать формы и текстуры реального мира.

Как утверждает Рамакришнан, использование предобученной ResNet позволяет достичь **100% точности** на тестовом наборе даже при мизерном количестве данных [1:14:01].

## 🛠️ Инструментарий и HuggingFace
[[JUMP:1:10:22]]

Профессор отмечает взрывной рост доступности готовых моделей. Если в прошлом году на платформе HuggingFace было около 50 000 моделей, то к моменту лекции их число превысило 500 000 [1:10:36].

Ключевые команды и параметры в Keras:

*   `layers.Conv2D(filters=32, kernel_size=(2,2))`: создание сверточного слоя [47:13].
*   `layers.MaxPool2D()`: добавление пулинга [47:27].
*   `include_top=False`: параметр при загрузке ResNet для удаления финального классификатора [1:11:13].
*   **Data Augmentation:** Включение слоев случайного поворота (`RandomRotation`) и зума (`RandomZoom`) позволяет искусственно увеличить датасет, создавая вариации одного и того же фото [1:04:52].

В финале занятия Рама Рамакришнан провел живой демо-тест: модель успешно распознала кроссовок студента и рюкзак (классифицировав его как handbag) через веб-камеру в реальном времени [1:15:57].