Введение: от классификации к детекции

Когда мы говорим о компьютерном зрении, большинство людей сразу представляют себе нейросеть, которая смотрит на фотографию кошки и выдаёт подпись «кот». Но это лишь классификация — ответ на вопрос «что?». Настоящая магия начинается, когда система должна ответить одновременно на три вопроса: что?, где? и сколько объектов на изображении?

Именно этим занимается детекция объектов (object detection). И путь к современным детекторам типа YOLO или DETR был проложен тремя ключевыми концепциями, которые мы разберём в этой статье: свёрточными нейросетями (CNN), моделью деформируемых частей (DPM) и многозадачной системой OverFeat.

ℹ Что такое детекция объектов?
Детекция объектов — это задача компьютерного зрения, в которой модель должна не только классифицировать объекты на изображении, но и локализовать их, нарисовав ограничивающий прямоугольник (bounding box) вокруг каждого.

Свёрточные нейросети (CNN): фундамент современного зрения

Прежде чем говорить о детекции, нужно понять инструмент — свёрточную нейронную сеть (CNN, Convolutional Neural Network). Именно CNN стала тем «глазом», который компьютерное зрение использует для извлечения признаков из изображений.

Как работает свёртка

CNN обрабатывает изображение слоями. Каждый свёрточный слой применяет набор фильтров (ядер свёртки) к входному изображению, получая карту признаков (feature map). На низких уровнях сеть учится определять края и градиенты; на высоких — сложные концепции вроде «колеса автомобиля» или «глаза человека».

Драматические улучшения от применения глубоких нейронных сетей объясняются их способностью обучаться иерархически более сложным признакам из больших датасетов.

Архитектура типичной CNN включает:

  • Convolutional layers — извлечение локальных признаков
  • Pooling layers — уменьшение пространственного размера
  • Fully Connected layers — финальная классификация
import torch
import torch.nn as nn

class SimpleCNN(nn.Module):
    def __init__(self, num_classes=10):
        super().__init__()
        self.features = nn.Sequential(
            nn.Conv2d(3, 64, kernel_size=3, padding=1),
            nn.ReLU(),
            nn.MaxPool2d(2, 2),
            nn.Conv2d(64, 128, kernel_size=3, padding=1),
            nn.ReLU(),
            nn.MaxPool2d(2, 2),
        )
        self.classifier = nn.Linear(128 * 8 * 8, num_classes)

    def forward(self, x):
        x = self.features(x)
        x = x.view(x.size(0), -1)
        return self.classifier(x)

Почему CNN победила классические методы

До CNN детекция строилась на ручном инжиниринге признаков: HOG (Histogram of Oriented Gradients), SIFT, LBP. Эти дескрипторы создавались людьми и имели жёсткие ограничения по обобщаемости. CNN же обучается признакам автоматически — и делает это значительно эффективнее.

С развитием техник глубокого обучения и доступностью GPU стало возможным использовать глубокие CNN для извлечения признаков. Было показано, что глубокая CNN, предобученная на большом датасете, таком как ImageNet, может использоваться как эффективный экстрактор признаков.

💡 Практический совет
Для задач детекции объектов не нужно обучать CNN с нуля. Используйте предобученные модели (ResNet, EfficientNet) как backbone и применяйте transfer learning — это сэкономит дни вычислений и значительно улучшит качество на небольших датасетах.

DPM: модель деформируемых частей

История и идея

DPM, как победитель соревнований VOC-07, -08 и -09 по детекции, стала вершиной традиционных методов детекции объектов. DPM была изначально предложена П. Фельзенсвальбом в 2008 году как расширение HOG-детектора, а затем целый ряд улучшений был внесён Р. Гиршиком.

Основная идея DPM элегантна: DPM следует философии «разделяй и властвуй», где обучение можно рассматривать как поиск правильного способа декомпозиции объекта, а вывод — как ансамбль детекций по разным частям объекта. Например, задачу детекции «автомобиля» можно рассматривать как детекцию его окна, кузова и колёс.

Архитектура DPM

DPM включает три компонента: (1) грубый глобальный корневой шаблон (root filter), приблизительно покрывающий весь объект; (2) несколько высококачественных шаблонов частей (part filters), покрывающих отдельные части объекта; и (3) пространственные позиции шаблонов частей относительно глобального корневого шаблона.

Модели деформируемых частей — это звёздные модели, определяемые корневым фильтром для обнаружения грубого, целостного представления объекта, и фильтрами частей для обнаружения отдельных частей. Детекции корневого фильтра используются для определения якорной позиции, а оценка корневых и частичных фильтров вместе с коэффициентами деформации вычисляют итоговый детекционный счёт.


graph TD
    A[Входное изображение] --> B[Пирамида масштабов HOG]
    B --> C[Root Filter\nГрубое обнаружение объекта]
    C --> D[Part Filters\nДетекция частей x N]
    D --> E[Deformation Cost\nШтраф за смещение частей]
    E --> F[Итоговый Detection Score]
    F --> G{Порог?}
    G -- Да --> H[Bounding Box объекта]
    G -- Нет --> I[Пропустить]

DPM и его связь с CNN

Одно из самых интересных открытий в истории computer vision: автор позже утверждал, что DPM и CNN — это не два разных подхода к распознаванию объектов. Вместо этого модель DPM может быть представлена как CNN путём разворачивания алгоритма вывода DPM и маппинга каждого шага на эквивалентный слой CNN.

DeepPyramid DPM значительно превосходит DPM на основе гистограмм ориентированных градиентов (HOG) и незначительно превосходит сопоставимую версию недавно представленной системы детекции R-CNN.

⚠ Ограничения DPM
Несмотря на элегантность, классический DPM имеет серьёзный недостаток — скорость. Модель медленная из-за необходимости строить пирамиду масштабов и прогонять фильтры по каждому уровню. С приходом глубокого обучения DPM уступил место CNN-based детекторам.

OverFeat: первый «всё-в-одном» детектор

Что такое OverFeat

OverFeat — это пионерская модель, интегрирующая задачи детекции, локализации и классификации объектов в единую свёрточную нейронную сеть.

OverFeat, предложенный Серманетом и соавторами, можно считать одним из первых однопроходных детекторов объектов на основе полностью свёрточных глубоких сетей. Это одна из наиболее влиятельных систем детекции объектов, выигравшая соревнование по локализации и детекции ILSVRC2013.

Ключевые идеи OverFeat

Основная идея заключается в том, чтобы (i) выполнять классификацию изображений в разных местах на регионах нескольких масштабов изображения в скользящем оконном режиме, и (ii) предсказывать местоположения ограничивающих прямоугольников с помощью регрессора, обученного поверх тех же свёрточных слоёв.

Для решения проблемы фиксированного размера входа OverFeat применяет хитрый трюк: OverFeat использует CNN наподобие AlexNet, которая требует изображений фиксированного размера из-за полносвязных слоёв. Чтобы сделать подход скользящего окна вычислительно эффективным, OverFeat преобразует сеть в полностью свёрточную сеть, принимающую входы любого размера, рассматривая полносвязные слои как свёртки с ядрами размера 1×1.

OverFeat использует многомасштабные признаки для улучшения общей производительности, пропуская до шести увеличенных масштабов исходного изображения через сеть, что приводит к значительно большему числу оцениваемых контекстных представлений.

Процесс обучения OverFeat

Архитектура модели OverFeat очень похожа на AlexNet. Обучение OverFeat происходит поэтапно:

  1. Этап 1 — классификация: обучается CNN (аналог AlexNet) на задаче классификации изображений
  2. Этап 2 — локализация: поверх свёрточных слоёв дообучается регрессор bounding box
  3. Этап 3 — детекция: объединение классификатора, регрессора и скользящего окна

Сравнение трёх подходов

ХарактеристикаCNN (базовая)DPMOverFeat
Год пика популярности2012–20142008–20132013–2014
Принцип работыИерархические признаки«Разделяй и властвуй»Скользящее окно + многозадачность
БэкбонЛюбая CNNHOG-фильтрыAlexNet-подобная CNN
ЗадачиКлассификацияДетекцияДетекция + Локализация + Классификация
СкоростьВысокаяНизкаяСредняя
Победа на соревнованияхImageNet 2012VOC 2007–2009ILSVRC 2013
Отношение к современнымФундамент для всегоКонцептуально — частный случай CNNПредшественник YOLO

Три подхода — CNN, DPM и OverFeat — не конкурируют, а дополняют друг друга: каждый решал актуальные ограничения своего времени и заложил идеи для следующего поколения детекторов.


Путь к современным детекторам

Понимание CNN, DPM и OverFeat необходимо, чтобы осознать, почему последующие архитектуры устроены именно так:


timeline
    title Эволюция детекторов объектов
    2008 : DPM\nФельзенсвальб et al.
    2012 : AlexNet CNN\nКрижевский et al.
    2013 : OverFeat\nСерманет et al.
    2014 : R-CNN\nГиршик et al.
    2015 : Fast R-CNN\nFaster R-CNN
    2016 : YOLO v1\nПервый real-time детектор
    2020+ : DETR, DINO\nTransformer-based детекция

RCNN (Girshick et al.) и OverFeat (Sermanet et al.) независимо и почти одновременно предложили использование CNN для обобщённой детекции объектов. Это говорит о том, что идея применить глубокие признаки CNN к задаче детекции «витала в воздухе» — и именно OverFeat, будучи пионером сквозного обучения, указал путь к единым многозадачным сетям.

📝 Практический пример

Если вы сегодня обучаете детектор на собственных данных, вы фактически используете все три идеи:

  • CNN-backbone (ResNet, MobileNet) — наследие свёрточных сетей
  • Anchor boxes — переосмысление идеи DPM о частях и их пространственных отношениях
  • Multi-scale detection heads — прямое развитие идеи OverFeat о многомасштабной обработке

Заключение

Tри подхода — CNN, DPM и OverFeat — формируют исторический фундамент современной детекции объектов.

CNN дала нам мощный автоматический экстрактор иерархических признаков, который освободил разработчиков от ручного инжиниринга.

DPM показала, что объект — это не монолит, а совокупность частей с пространственными взаимосвязями. Эта идея живёт сегодня в anchor-based детекторах и ключевых точках.

OverFeat стал пионерской моделью, интегрирующей детекцию объектов, локализацию и классификацию в единую свёрточную нейронную сеть — концепция, которая определила весь последующий путь развития: от YOLO до современных трансформерных детекторов.

Знание этих основ — не академическая роскошь, а практическая необходимость: понимая, откуда пришли современные архитектуры, вы значительно лучше умеете их применять, тюнить и отлаживать.