Компьютерное зрение
Image Classification: CNNs
Предварительные знания
- Свёртка, ядра фильтров и pooling из cv-03
- Обратное распространение и градиентный спуск как механизм обучения сети
- Изображение как тензор (H, W, C) и работа с каналами
Сентябрь 2012 года, ImageNet Large Scale Visual Recognition Challenge. Alex Krizhevsky запускает AlexNet на двух GTX 580. Результат: top-5 error 15.3%. Второе место - 26.2%. Разрыв такой, что организаторы думали об ошибке в подсчёте. Он Куну (один из организаторов): 'Это не просто победа - это смена парадигмы'. За 24 часа компании начали нанимать специалистов по deep learning. Google купил DeepMind за $400M в 2014. Этот момент запустил десятилетие AI гонки.
- **Google Photos**: ResNet для распознавания объектов, лиц, мест - обрабатывает 1.2 миллиарда фото в месяц
- **Tesla Autopilot**: CNN архитектуры для real-time обнаружения препятствий на 8 камерах одновременно
- **Instagram**: ResNet-основанные модели для content moderation - 95% harmful content находится без human review
Янн ЛеКун (1998)
В 1998 году Янн ЛеКун опубликовал 'Gradient-Based Learning Applied to Document Recognition' - статью о LeNet-5. Банки уже тогда использовали нейросети для обработки чеков: CNN читала ZIP коды и суммы с миллионов банковских документов ежедневно. Но с ростом интернет-данных интерес угас - hardware был слишком медленным для больших изображений. Ждали 14 лет до AlexNet (2012), который доказал: идеи ЛеКуна правильные, просто нужны GPU и данные. В 2018 году ЛеКун получил премию Тьюринга (с Беньо и Хинтоном) - 'Нобелевскую премию по CS' - именно за LeNet и идеи CNN. LeNet-5 заложила концепции свёрток, weight sharing и pooling, которые через 14 лет стали фундаментом всего современного Computer Vision
LeNet-5: первая успешная CNN
LeNet-5 (LeCun, 1998) - первая CNN, достигшая practical performance. Разработана для распознавания рукописных цифр в банковских чеках AT&T. Архитектура: [Conv(5x5, 6 filters) -> AvgPool] x2 -> Flatten -> FC(120) -> FC(84) -> Softmax(10). Входное изображение 32x32 пикселей. Идея: weight sharing через свёрточные фильтры вместо полносвязных слоёв.
LeNet-5 содержала 60,000 параметров - ничтожно мало по современным меркам. Для сравнения: GPT-4 - ~1.7 триллиона параметров. Несмотря на скромный масштаб, LeNet-5 обработала более миллиона банковских чеков ежедневно в США в 1990-е годы - реальный production ML за 25 лет до ChatGPT.
Какое ключевое преимущество свёрточных слоёв LeNet перед полносвязными слоями для обработки изображений?
AlexNet: глубокое обучение побеждает ImageNet
AlexNet (Krizhevsky, Sutskever, Hinton, 2012) выиграл ImageNet LSVRC-2012 с top-5 error 15.3% - против 26.2% у второго места. Ключевые инновации vs LeNet: **ReLU** вместо tanh (быстрее, нет vanishing gradient), **Dropout** для регуляризации, **GPU параллелизм** (2 GTX 580), **data augmentation** (random crops, horizontal flips).
AlexNet содержит **60 миллионов параметров** - в 1000x больше LeNet. Обучение заняло 6 дней на двух GPU. Статья собрала более 100,000 цитирований - одна из самых цитируемых в истории Computer Science. Результат 2012 года запустил современную эпоху Deep Learning.
Почему AlexNet использовал ReLU вместо tanh, и какое практическое преимущество это дало?
VGG: глубина через 3x3 фильтры
VGGNet (Simonyan, Zisserman, Oxford, 2014) выяснил, что **глубина** сети - ключевой фактор. Принцип: заменить большие фильтры (11x11, 5x5 в AlexNet) на стеки **3x3 фильтров**. Два 3x3 конва = одному 5x5, но меньше параметров и больше нелинейностей. Три 3x3 конва = одному 7x7. VGG-16: 16 слоёв, 138M параметров.
VGG-16 достиг top-5 error 7.3% на ImageNet - вдвое лучше AlexNet (15.3%). Простая, регулярная архитектура сделала VGG-16 идеальным для transfer learning и feature extraction. Pre-trained VGG features использовались для style transfer (2015) и многих других задач.
Почему стек из двух 3x3 свёрток предпочтительнее одной 5x5 свёртки (при одинаковом рецептивном поле)?
ResNet: residual connections и глубина 152+ слоёв
ResNet (He et al., Microsoft Research, 2015) решил фундаментальную проблему: добавление слоёв ухудшает точность на тренировочных данных (degradation problem, не overfitting). Решение - **residual connections**: F(x) + x. Сеть учится не mapping'у от входа к выходу, а **остатку** (residual). Если оптимальный вывод близок к входу, блок легко выучит F(x) ≈ 0.
ResNet-152 с top-5 error 3.57% впервые превзошёл человека (5%) на ImageNet LSVRC-2015. Residual connections стали универсальным паттерном: Transformer использует их в каждом блоке. Pre-activation ResNet, Wide ResNet, ResNeXt, DenseNet - все расширяют эту идею. **Batch Normalization** в каждом блоке - не менее важная инновация для тренировки глубоких сетей.
Более глубокие CNN всегда точнее - добавление слоёв гарантированно улучшает результат
Без residual connections деградация делает очень глубокие сети хуже мелких; глубина полезна только с правильными архитектурными решениями
VGG-19 точнее VGG-16, но plain 100-layer network хуже 20-layer network. ResNet 152 точнее ResNet 50 - именно благодаря residual connections
Какую проблему решают residual connections в ResNet, и почему это не просто борьба с vanishing gradient?
Ключевые идеи
- **LeNet-5** (1998): weight sharing через свёртки, первая production CNN для банковских чеков
- **AlexNet** (2012): ReLU + Dropout + GPU = ImageNet revolution, top-5 error 15.3% vs 26.2% у конкурентов
- **VGG** (2014): глубина через стеки 3x3 фильтров, 7.3% top-5 error, идеал для transfer learning
- **ResNet** (2015): residual connections F(x)+x, 152 слоя, 3.57% error - лучше человека (5%)
Связанные темы
Темы, которые опираются на CNN-архитектуры или расширяют их:
- Признаки: SIFT, SURF, ORB — Свёртка, pooling и обратное распространение - предпосылка для понимания дизайна архитектур
- Современные архитектуры — EfficientNet, MobileNet и ConvNeXt продолжают линию от AlexNet через VGG к ResNet
- Object Detection: YOLO, SSD — Классификационные CNN служат backbone-ом для детекторов объектов
Вопросы для размышления
- Почему VGG-16 (138M параметров) хуже ResNet-50 (25M параметров) при большем числе весов?
- Как BatchNormalization изменила тренировку глубоких CNN и почему ResNet не мог обойтись без неё?
- Почему degradation problem (глубокие plain nets хуже мелких) не является следствием overfitting - и что это говорит об оптимизации?
Связанные уроки
- cv-03 — Свёртки и основы признаков предшествуют дизайну архитектур
- cv-05 — Современные архитектуры и ViT расширяют CNN механизмом attention
- dl-04 — Свёрточные сети глубже разобраны в курсе DL
- ml-29-cnn — Те же принципы CNN в классическом ML-курсе
- ml-38-image-classification — LeNet -> ResNet напрямую применяются для image classification
- dl-01