Эволюция архитектур нейросетей в компьютерном зрении: детекция объектов

Всем привет! Это завершающая статья в серии по эволюции архитектур нейронных сетей в компьютерном зрении. Она будет полезна тем, кто только погружается в сферу и пробует систематизировать свои знания, поэтому я осознанно не погружаю читателей в глубокие расчеты и вычисления. Посмотрим на R‑CNN, Fast R‑CNN, Faster R‑CNN, Mask R‑CNN, SSD, RetinaNet, EfficientDet, YOLO.

d6d99221ef7388b1f5f6ae3e47944d37.png

Карта архитектур

  1. R-CNN (2014)

  2. Fast R-CNN (2015)

  3. Faster R-CNN (2015)

  4. Mask R-CNN (внимание, ссылка ведет на другую статью — по сегментации),

  5. SSD (2016)

  6. RetinaNet (2017)

  7. EfficientDet (2020)

  8. YOLO (с 2016)

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

b883ff44cc28d850ff450519bbecd748.png

Основные аспекты задачи детекции объектов

  1. Идентификация объектов: объекты в изображении или видео могут быть классифицированы на основе заданных категорий, таких как люди, автомобили, животные и т. д. Идентификация предполагает, что модель может определить, какие классы объектов присутствуют в сцене.

  2. Локализация объектов: определение местоположения каждого обнаруженного объекта в виде ограничительной рамки. Рамка указывает координаты верхнего левого и нижнего правого угла объекта на изображении.

Классический вопрос с собеседования: модель из семейства YOLOv является одностадийным или двухстадийным детектором и вообще, что это такое? Поэтому расскажу подробнее.

Двухстадийные детекторы объектов (такие как R‑CNN, Fast R‑CNN, Faster R‑CNN, Mask R‑CNN) сначала выделяют области‑кандидаты, а затем уточняют их классификацию и границы, обеспечивая высокую точность, но меньшую скорость. Одностадийные детекторы (такие как SSD, RetinaNet, EfficientDet, YOLO) выполняют задачу за один проход, одновременно предсказывая классы и границы объектов, что делает их быстрыми, но менее точными для мелких или плотно расположенных объектов. Выбор подхода зависит от приоритета: точность или скорость.

R-CNN (2014)

8512ebc75cdef7580f20b7ed605c5d93.png

R-CNN (Regions with CNN features) — это архитектура нейронной сети, предложенная в 2014 году, которая произвела революцию в задачах детекции объектов. R-CNN объединяет методы извлечения признаков на основе сверточных нейронных сетей (CNN) с традиционными подходами к обнаружению объектов, создавая более точные и эффективные системы.

Основные компоненты R-CNN

  1. Выбор кандидатов на объекты (Region Proposals): для начала R-CNN использует алгоритм Selective Search, который генерирует набор предложений (region proposals) — ограничительных рамок, которые могут содержать объекты. Этот шаг позволяет значительно сократить количество областей, которые нужно анализировать, вместо того чтобы проверять каждую позицию и масштаб изображения.

  2. Извлечение признаков с помощью CNN: каждая область-кандидат (region proposal) масштабируется до фиксированного размера и передается через сверточную нейронную сеть (CNN), чтобы извлечь высокоуровневые признаки. Обычно для этой цели используют предобученные модели, такие как AlexNet, VGG16 и другие.

  3. Классификация объектов: извлеченные признаки передаются в полносвязные слои, которые обучаются на определенных классах объектов. Модель предсказывает вероятность принадлежности каждой области-кандидата к различным классам.

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

Статья

Fast R-CNN (2015)

Улучшенная версия оригинальной R‑CNN (Region‑based Convolutional Neural Network), предложенная Россом Гиршем в 2015 году для задачи детекции объектов. Fast R‑CNN была разработана для увеличения скорости и эффективности модели, сохраняя при этом высокую точность обнаружения объектов. Основная задача Fast R‑CNN — локализация объектов на изображениях и классификация их в один из предопределенных классов.

Основные этапы работы Fast R-CNN:

  1. Ввод изображения.

  2. Использование сверточной сети: в отличие от оригинальной R‑CNN, Fast R‑CNN обрабатывает все изображение с помощью сверточной нейронной сети (например, VGG16 или ResNet), которая извлекает признаки из изображения. Вместо обработки каждого возможного региона отдельно, изображение целиком проходит через сеть только один раз (что сильно ускоряет процесс обработки).

  3. Предсказание регионов (ROI, Region of Interest): после обработки изображения сеть генерирует региональные предложения (Region Proposals) с помощью алгоритма Selective Search. Вместо вырезания этих регионов и повторного использования для классификации, как в R‑CNN, Fast R‑CNN использует ROI pooling для извлечения этих предложенных регионов из карты признаков.

  4. ROI Pooling: уменьшает размер предложенных регионов до фиксированного, независимо от их оригинальных размеров. Это упрощает обработку, позволяя унифицировать входы для последующих слоев, сохраняя ключевые признаки регионов — пропорции и размер.

  5. Классификация и регрессия: затем, с использованием извлеченных признаков каждого региона, модель предсказывает класс объекта, находящегося в предложенном регионе, и уточняет его координаты с помощью регрессии, чтобы получить более точные рамки для объекта.

Ключевые улучшения Fast R-CNN:

  1. Обработка изображения одним проходом через сверточную сеть: в оригинальной R‑CNN для каждого регионального предложения проводился отдельный прогон через сверточную сеть, что делало процесс очень медленным. Fast R‑CNN устраняет эту проблему, проводя свертку всего изображения только один раз, что значительно ускоряет процесс.

  2. ROI Pooling: вырезание регионов интереса (ROI) на уровне карты признаков делает процесс более эффективным, поскольку позволяет работать с областями разного размера и формы без необходимости прямого вырезания на исходном изображении.

  3. Интеграция обучения: в Fast R‑CNN происходит end‑to‑end обучение, то есть все параметры сети, включая классификатор и регрессионные веса для точных координат объектов, обучаются одновременно в рамках одной модели. Это упрощает процесс обучения по сравнению с R‑CNN.

  4. Быстрота: благодаря тому, что Fast R‑CNN обрабатывает изображение только один раз и использует более оптимизированные подходы для предсказания регионов, она значительно быстрее оригинальной R‑CNN.

    Статья

Faster R-CNN (2015)

91ac6a1e4dcf1af21c6b2dea57bcb059.png

Faster R‑CNN — это улучшенная версия R‑CNN (Regions with CNN features), представленная в 2015 году. Эта архитектура решает проблемы оригинальной R‑CNN, связанные с медленной скоростью работы и высоким потреблением ресурсов, благодаря внедрению Region Proposal Network (RPN). Faster R‑CNN обеспечивает высокую точность в детекции объектов, сохраняя при этом скорость обработки.

Основные компоненты Faster R-CNN

  1. Region Proposal Network (RPN) — это отдельная сеть, которая генерирует кандидаты на объекты (region proposals) непосредственно из карты признаков, созданной сверточной нейронной сетью. Она значительно ускоряет процесс, так как RPN и классификатор могут быть обучены совместно. Это позволяет избежать использования внешних методов, таких как Selective Search.

  2. Сверточная нейронная сеть (CNN): как и в оригинальной R‑CNN, Faster R‑CNN использует предобученные CNN (например, VGG16 или ResNet) для извлечения высокоуровневых признаков из входного изображения.

  3. Классификация и регрессия: после того как RPN генерирует кандидаты на объекты, они передаются в классификатор, который предсказывает классы объектов и уточняет координаты ограничительных рамок через регрессию.

Статья

SSD (2016)

020b4f01bee1aefb9600ca738dde3c73.png

SSD (Single Shot MultiBox Detector) — это архитектура нейронной сети, представленная в 2016 году для задач детекции объектов в изображениях. Она сочетает в себе скорость и точность, обеспечивая одноступенчатый подход к детекции объектов.

Входное изображение обрабатывается через предобученную сверточную нейронную сеть (например, VGG16) для извлечения признаков. SSD создает анкерные рамки различных размеров и соотношений сторон по всей сетке, покрывающей изображение. На каждом уровне сети осуществляется предсказание как для классов объектов, так и для координат ограничительных рамок. Это происходит через полносвязные слои, которые используются для предсказания классов и корректировки координат. Используется функция потерь, учитывающая как ошибки классификации, так и ошибки локализации ограничительных рамок, что позволяет оптимизировать оба процесса одновременно.

Основные особенности SSD

  1. Одноэтапная детекция: SSD выполняет предсказания ограничительных рамок и классов объектов за одно обращение к сети, что делает его более быстрым по сравнению с двухступенчатыми методами, такими как R‑CNN и Faster R‑CNN.

  2. Многоячеечная сеть: SSD использует несколько уровней сети для предсказания объектов, что позволяет детектировать объекты различного масштаба и аспектов. Модель делает предсказания на разных уровнях иерархии, начиная с глубоких слоев, что помогает обрабатывать как крупные, так и мелкие объекты.

  3. Анкерные ограничительные рамки: SSD использует анкерные рамки (anchors) различных соотношений сторон и размеров для генерации ограничительных рамок. Каждая ячейка сетки отвечает за предсказание нескольких ограничительных рамок.

Статья

RetinaNet (2017)

b3083883fcaeaf563a9543b685850e0a.png

RetinaNet — это архитектура для детекции объектов, представленная в 2017 году, которая решает проблему несбалансированности классов при использовании одноступенчатых подходов. Основной инновацией RetinaNet является внедрение новой функции потерь, называемой Focal Loss, которая помогает улучшить точность детекции объектов, особенно при наличии большого количества фонов и малочисленных объектов.

Входное изображение проходит через предобученную сверточную нейронную сеть (например, ResNet), чтобы извлечь высокоуровневые признаки. Анкерные рамки генерируются на основе сетки, покрывающей изображение, с использованием различных соотношений сторон и размеров. На выходе от сети происходит классификация (определение классов объектов) и регрессия (коррекция координат ограничительных рамок) для каждой анкерной рамки.

Основные особенности RetinaNet

  1. Одноэтапная детекция: RetinaNet выполняет детекцию объектов за одно обращение к сети, что позволяет ему быть быстрым, при этом обеспечивая высокую точность.

  2. Focal Loss разработан для борьбы с проблемой несбалансированных классов, когда фоновые примеры значительно преобладают над примерами объектов. Эта функция потерь снижает вклад легко классифицируемых объектов, позволяя модели сосредоточиться на трудных для классификации примерах.

  3. Feature Pyramid Network (FPN) для работы с объектами разных размеров. FPN позволяет извлекать признаки на нескольких уровнях разрешения, что помогает лучше обрабатывать мелкие и крупные объекты.

  4. Использование анкерных рамок: подобно SSD, RetinaNet использует анкерные рамки различных размеров и соотношений сторон для генерации ограничительных рамок.

Статья

EfficientDet (2020)

e41236d8a50ac76b76f6371c7debc4f3.png

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

Входное изображение обрабатывается через эффективную базовую сеть (EfficientNet), чтобы извлечь признаки. Используется BiFPN* (Bidirectional Feature Pyramid Network) для объединения признаков с различных уровней иерархии, что позволяет улучшить детекцию объектов разных размеров. EfficientDet генерирует анкерные рамки на основе слоев BiFPN, что улучшает локализацию объектов. На выходе сети осуществляется как классификация объектов, так и регрессия для коррекции ограничительных рамок.

*BiFPN — это улучшение стандартной Feature Pyramid Network (FPN), которое позволяет объединять признаки с разных уровней с учетом их относительной важности. Использует обучаемые веса для слияния признаков, что помогает лучше учитывать контекст между разными уровнями разрешения.

Основные особенности EfficientDet

  1. Эффективность и производительность: EfficientDet была разработана с акцентом на экономию вычислительных ресурсов и повышение производительности, что делает ее подходящей для работы на устройствах с ограниченными ресурсами, таких как мобильные телефоны и встраиваемые системы.

  2. Базовая архитектура: EfficientDet использует архитектуру EfficientNet в качестве базового стержня, которая оптимизирует сверточные нейронные сети с помощью Compound Scaling. Этот подход позволяет масштабировать ширину, глубину и разрешение модели одновременно, улучшая ее эффективность. Это позволяет создавать различные версии EfficientDet (D0, D1,…, D7), адаптированные для устройств с разной вычислительной мощностью.

  3. Сетевые слои: EfficientDet включает в себя специализированные блоки, такие как BiFPN, которые обеспечивают эффективное объединение признаков с разных уровней, улучшая возможность детекции объектов на различных масштабах.

  4. Анкерные рамки: подобно другим архитектурам, EfficientDet использует анкерные рамки, но с улучшенным методом выбора размеров и аспектов рамок, что повышает точность обнаружения.

  5. Многоуровневое предсказание: EfficientDet производит предсказания на нескольких уровнях, что позволяет модели адаптироваться к различным масштабам объектов и улучшает общую точность.

Статья

YOLO: эволюция и революция в детекции объектов

YOLO (You Only Look Once) — это архитектура нейронной сети для детекции объектов, впервые представленная в 2016 году. Она произвела революцию в области компьютерного зрения, предложив уникальный подход к задачам детекции объектов. YOLO объединила предсказание классов и локализацию объектов в единый процесс, что позволило добиться впечатляющего сочетания высокой скорости и точности. Это самая популярная на сегодняшний день архитектура благодаря ее простоте в использовании и соотношению скорости и качества.

Основные Принципы YOLO

1. Одноэтапная детекция. YOLO решает задачу детекции объектов за одно обращение к сети. Это одностадийная архитектура, которая резко контрастирует с традиционными двухстадийными методами, такими как R‑CNN или Faster R‑CNN, где сначала генерируются регионы‑кандидаты, а затем происходит их классификация. Подход YOLO значительно ускоряет обработку изображения, что делает его идеальным для задач, требующих реального времени.

2. Сетка фиксированного размера. Изображение делится на сетку, где каждая ячейка отвечает за предсказание ограничительных рамок (bounding boxes) и вероятностей классов объектов, находящихся в пределах этой ячейки. Это упрощает обработку сложных сцен с несколькими объектами.

3. Предсказание ограничительных рамок (bounding boxes). Для каждой ячейки YOLO предсказывает фиксированное количество bounding boxes. Каждая рамка описывается координатами центра, шириной, высотой и вероятностью содержания объекта.

4. Классификация объектов. Помимо предсказания рамок, YOLO также определяет вероятность принадлежности объекта к определенному классу. Это позволяет идентифицировать, какой именно объект находится в пределах каждой рамки.

Преимущества YOLO

  • Высокая скорость
    Благодаря тому, что вся обработка изображения происходит за один проход через сеть, YOLO способна работать с видео или потоковыми изображениями в режиме реального времени. Это делает ее идеальной для приложений, где критически важна скорость, таких как:

    • видеонаблюдение,

    • автономные транспортные средства,

    • робототехника.

  • Целостный подход: YOLO обрабатывает все изображение сразу, что позволяет учитывать глобальный контекст. Это помогает минимизировать ложные срабатывания на фоне.

  • Простота использования: благодаря отличной документации и готовым фреймворкам, начать работать с YOLO просто. С помощью встроенных инструментов и Google Colab вы можете обучить модель и получить результаты за несколько часов.

Здесь оставлю ссылку на статью, которая понравилась лично мне, в которой рассказывается, что происходит «под капотом» этой модели с течением времени.

В официальной документации есть абсолютно полное объяснение, как работают модели, как тренировать и делать инференс на каждой из них, также можно запустить коллаб ноутбук и разобраться буквально за несколько часов как запустить, натренировать и получить результат модели. Ссылка на документацию.

Детекция объектов — это важное направление в компьютерном зрении, которое быстро развивается благодаря современным технологиям. Такие модели, как YOLO, RetinaNet, EfficientDet и Mask R‑CNN, помогают решать задачи в самых разных областях: от автономных машин и медицины до систем видеонаблюдения и дополненной реальности.

Каждая модель имеет свои сильные стороны. Быстрые методы, например YOLO и EfficientDet, идеально подходят для задач реального времени. Более точные модели, такие как Mask R‑CNN, отлично справляются там, где важна максимальная детализация, например, в медицине.

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

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

Как стать разработчиком ML и нейронок
Эволюция архитектур нейросетей в компьютерном зрении: классификация изображений
Эволюция архитектур нейросетей в компьютерном зрении: сегментация изображений

Спасибо моим читателям. Готов ответить на вопросы.

© Habrahabr.ru