В предыдущей статье мы рассказывали об основных задачах компьютерного зрения, сегодня же остановимся подробнее на одной из них —задаче детекции.
Детекция (Object detection) — распознавание объектов. Задача детекции ставится, если требуется определить наличие или отсутствие на изображении объектов определенного класса. При этом может быть задан один класс объектов или несколько. Местоположение объекта в пиксельном пространстве изображения обычно выделяется ограничивающей рамкой (bounding box).
Детекция применяется, например, при распознавании лиц, отслеживании присутствия людей или животных в кадре, автомобилей, дорожных знаков в зоне видимости, маркировки на упаковке или изделия на конвейере, для подсчета людей, распознавания текста, номерных знаков. Иначе говоря, задача вычислительной модели, разработанной для детекции объектов, — наиболее точно ответить на вопрос «Какие объекты присутствуют на изображении и где именно?».
Разметка изображений для детекции в Mathison
Сейчас детекция — уже не просто новая и эффективная технология, но хорошо развитая область компьютерного зрения, успешно внедряемая и применяемая на практике. Поэтому большинство современных исследований в этой области направлены уже не на разработку новых методов, а на доработку и оптимизацию уже существующих.
Активному развитию детекции способствовал прогресс, произошедший за последние годы в области вычислительных платформ — в том числе, переход к распараллеливанию за счет многоядерной обработки, графических процессоров (GPU) и специальных тензорных процессоров (TPU), позволивший применять компьютерное зрение для обнаружения и отслеживания объектов в условиях, близких к реальному времени.
Применение
Возможности применения детекции очень разнообразны. Распознавание объектов лежит в основе большинства приложений, использующих ИИ и компьютерное зрение. Так, обнаружение объектов играет важную роль в понимании сцены, что часто требуется в сфере безопасности, строительства, транспорта, медицины.
- В розничной торговле детекция используется в системах, собирающих информацию о количестве и перемещениях покупателей по торговому залу — анализ видео и статистики на основе ИИ помогает улучшить стратегию взаимодействия с клиентами, повысить качество обслуживания, оптимизировать планировку магазина. Еще один популярный пример —обнаружение очередей на кассах.
- Автономное вождение невозможно без понимания дорожной обстановки, а также распознавания пешеходов, дорожных знаков и транспортных средств — все эти функции также реализуются с помощью детекции. Например, искусственный интеллект Tesla Autopilot активно использует обнаружение объектов для восприятия внешних угроз в виде встречных транспортных средств или препятствий.
- В сельском хозяйстве обнаружение объектов используется для подсчета и мониторинга скота, а также для оценки качества сельскохозяйственной продукции по визуальным признакам.
Разметка изображений для детекции в Mathison
- В системах безопасности и видеонаблюдения детекция применяется для обнаружения людей в опасных зонах или зонах ограниченного доступа, предотвращения самоубийств, контроля ношения касок или других элементов защиты, обнаружения потенциальных нарушений техники безопасности.
- Анализ загруженности транспортных путей и дорожной обстановки — здесь распознавание объектов используется для обнаружения и подсчета транспортных средств, анализа дорожной обстановки, обнаружения автомобилей, остановившихся в опасных зонах, на перекрестках или шоссе.
Разметка изображений для детекции в Mathison
- В медицине и здравоохранении детекция позволяет автоматизировать анализ изображений, рентгеновских снимков, КТ и МРТ при диагностике заболеваний.
Применение детекции для анализа рентгеновских снимков. Источник: Chien C.-T., Ju R.-Y., Chou K.-Y., Lin C.-S., Chiang J.-S. YOLOv8-AM: YOLOv8 with Attention Mechanisms for Pediatric Wrist Fracture Detection. arXiv:2402.09329. 2024. – URL: https://arxiv.org/abs/2402.09329
Преимущества и недостатки
Детекторы объектов, как правило, невероятно гибки и могут быть обучены для решения широкого спектра задач. Однако их основным недостатком является высокая вычислительная стоимость, которая возрастает с повышением сложности и масштабов модели.
Как работает детекция?
Детекция объектов может быть реализована как с помощью классических алгоритмов компьютерного зрения, так и с помощью нейронных сетей и глубокого обучения.
Классические алгоритмы компьютерного зрения, как правило, не требуют предварительного обучения — а значит, не требуют длительной и трудозатратной подготовки и разметки датасетов, что обычно занимает достаточно много времени.
В то же время классические алгоритмы не всегда справляются со сложными сценариями — например, окклюзией (если искомый объект частично скрыт), плохой освещенностью, тенями, разноцветным или неоднородным фоном (листва, камни, другие объекты в кадре).
Применение нейронных сетей требует предварительного обучения с учителем (является распространенной практикой) или без учителя. Это приводит к необходимости сбора и разметки обучающих данных, что требует времени и больших трудозатрат — например, датасет в 100 000 изображений считается небольшим. Ускорить процесс можно с помощью инструментов автоматизированной разметки (например, сервиса Mathison ) или используя открытые датасеты — MS COCO, Caltech, KITTI, PASCAL VOC, V5, если они подходят для вашей задачи.
Другой недостаток детекции на нейронных сетях — зависимость их производительности от вычислительных мощностей GPU и высокая энергозатратность. Однако прогресс в этой области не стоит на месте, и возможности GPU с каждым годом растут.
Тем не менее, перечисленные недостатки окупаются значительно большей устойчивостью нейронных сетей к искажениям и сложным сценариям (окклюзии, сложному фону, плохой освещенности и т.д.).
Минутка истории
Детекция как область компьютерного зрения развивается дольше, чем может показаться на первый взгляд — в течении последних 20 лет. Период до 2014 года считается эпохой классических алгоритмов. Основными достижениями этой эпохи считаются:
- метод Виолы-Джонса (Viola–Jones object detection, 2001) — алгоритм распознавания лиц на основе «сканирующего окна»,
- HOG (Histogram of Oriented Gradients, 2006) — гистограмма направленных градиентов, алгоритм описания (дескриптор) ключевых точек объекта,
- DPM (Deformable Part Models, 2008) — метод детекции объекта по его составным частям.
Период с 2014 года и по сегодняшний день считается эпохой нейронных сетей и глубокого обучения. Среди наиболее значимых разработок за это десятилетие — следующие архитектуры нейронных сетей:
Двухэтапные:
- RCNN and SPPNet (2014)
- Fast RCNN and Faster RCNN (2015)
- Mask R-CNN (2017)
- Pyramid Networks/FPN (2017)
- G-RCNN (2021)
Одноэтапные:
- YOLO (2016)
- SSD (2016)
- RetinaNet (2017)
- YOLOv3 (2018)
- YOLOv4 (2020)
- YOLOR (2021)
- YOLOv7 (2022)
- YOLOv8 (2023)
Двухэтапные и одноэтапные нейросетевые детекторы
Как можно видеть, нейросетевые детекторы делятся на одноэтапные и двухэтапные. Основная задача нейронной сети-детектора — извлечь признаки из входного изображения или видеокадра. Двухэтапные детекторы, как понятно из названия, решают эту задачу в два этапа:
- обнаруживают на изображении ноль или больше объектов;
- для каждого из обнаруженных объектов определяют класс и положение ограничивающей рамки (bounding box).
Одноэтапные детекторы способны решать обе подзадачи в один этап, что позволяет увеличить скорость работы алгоритма за счет некоторых потерь в точности.
Двухэтапные детекторы
Двухэтапные детекторы объектов сначала выделяют на изображении область интереса (область, где предположительно может находиться объект), вырезают ее и используют только эту обрезанную область для дальнейшей классификации. Это позволяет достигать высокой точности детекции, но значительно замедляет скорость работы. Кроме того, многоэтапные детекторы обычно не поддаются сквозному обучению, поскольку обрезка является недифференцируемой операцией.
Двухэтапные детекторы часто реализованы на сверточной нейронной сети на основе регионов (Region-based convolutional neural network, R-CNN) и ее более скоростных версиях R-CNN или Mask R-CNN. Одной из новейших разработок в этой области является granulated RCNN (G-RCNN).
Одноэтапные детекторы
Одноэтапные детекторы способны обнаруживать объект в один этап, без определения области интереса. Такой подход позволяет упростить структуру сети и значительно повысить скорость работы, а значит, делает возможным использование одноэтапных детекторов в приложениях реального времени. Единственный недостаток — одноэтапные детекторы не так хороши в распознавании объектов неправильной формы или группы небольших объектов.
К наиболее популярным архитектурам в этой области относятся YOLO, SSD и RetinaNet, новейшими являются YOLOv7 (2022), YOLOR (2021) и YOLOv4-Scaled (2020).
Как сравнить детекторы?
Эффективность различных архитектур нейронных сетей (в том числе, детекторов) принято сравнивать на классических открытых датасетах. Один из самых популярных для детекции — COCO от Microsoft. Основной оценочной метрикой является средняя точность (Mean Average Precision, MAP).
Важно отметить, что выбор алгоритма зависит от цели применения — разные алгоритмы превосходно справляются с разными задачами (например, бета-версия R-CNN показывает наилучшие результаты при обнаружении пешеходов).
Самые точные алгоритмы
На датасете COCO по средней точности (Average Precision, AP) лучшим алгоритмом обнаружения объектов в реальном времени является YOLOv7, за которым следуют Vision Transformer (ViT), такие как Swin и DualSwin, PP-YOLOE, YOLOR, YOLOv4 и EfficientDet.
Детекция в реальном времени: лучшие алгоритмы по Average Precision (AP) на датасете COCO. Источник: Boesch G. Object Detection in 2024: The Definitive Guide. – URL: https://viso.ai/deep-learning/object-detection/
Самые быстрые алгоритмы
Помимо MAP, другие важные метрики — время вывода (inference time), измеряемое в мс/кадр, и количество кадров в секунду (Frames per Second, FPS). Чем меньше inference time и чем больше FPS, тем лучше.
Сравнение времени вывода дает представление о том, насколько стремительный прогресс произошел в технологиях компьютерного зрения за последнее время. На сегодняшний день время вывода YOLOv7 достигает 3,5 мс на кадр, что значительно меньше, чем у более ранних версий (12 мс для YOLOv4 или 29 мс для YOLOv3). Внедрение же YOLO в целом, как одноступенчатого детектора, привело к значительному сокращению времени вывода по сравнению с любыми другими более ранними методами — например, по сравнению с двухэтапным алгоритмом Mask R-CNN (333 мс).
Детекция в реальном времени: лучшие алгоритмы по Frames per Second (FPS) на датасете COCO. Источник: Boesch G. Object Detection in 2024: The Definitive Guide. – URL: https://viso.ai/deep-learning/object-detection/
Сравнение производительности YOLOv7, YOLOv5, YOLOR и Vit Transformers. Источник: Wang C.-Y., Bochkovskiy A., Liao H.-Y.M. YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors. arXiv:2207.02696 2022. – URL: https://arxiv.org/abs/2207.02696
В частности, последняя модель семейства YOLO (YOLOv8) показывает лучшую производительность в реальном времени по сравнению с более ранними YOLOv7 и YOLOv6, согласно результатам тестов, опубликованным создателями YOLO.
Сравнение YOLOv8 с другими алгоритмами того же семейства. Источник: Jocher G., Chaurasia A., Qiu J. YOLO by Ultralytics. 2023. – URL: https://github.com/ultralytics/ultralytics
Наиболее популярные алгоритмы детекции
Сегодня среди наиболее популярных алгоритмов (архитектур), используемых для обнаружения объектов — сверточные нейронные сети (R‑CNN, Region-Based Convolutional Neural Networks), Fast R-CNN и архитектуры семейства YOLO (You Only Look Once).
YOLO (You Only Look Once)
YOLO — сокращение от You Only Look Once, что переводится как «Вы смотрите только однажды». Это семейство популярных архитектур (алгоритмов), предназначенных для обнаружения объектов в реальном времени и используемых во многих коммерческих продуктах крупнейших компаний.
Схема и принцип работы YOLO. Источник: Liu L., Ouyang W., Wang X., Fieguth P., Chen J., Liu X., Pietikäinen M. Deep Learning for Generic Object Detection: A Survey. Deep Learning for Generic Object Detection / arXiv:1809.0216, 2019. – URL: https://arxiv.org/abs/1809.02165v3
Оригинальный детектор YOLO был впервые представлен в 2016 году, на тот момент новая архитектура была значительно быстрее, чем любой другой детектор объектов. С тех пор появилось множество новых версий YOLO, каждая из которых обеспечивала значительное повышение производительности и эффективности по сравнению с предыдущими версиями.
SSD (Single-Shot Detector)
SSD — популярный одноэтапный детектор, позволяющий одновременно обнаруживать объекты нескольких классов. Для обнаружения используется единая глубокая нейронная сеть, детекция происходит путем дискретизации выходного пространства ограничивающих рамок (bounding boxes) на набор стандартных рамок с различными соотношениями сторон и масштабами для каждого местоположения на карте признаков (feature map).
Детектор оценивает наличие объектов каждого класса в каждой из стандартных рамок и изменяет их форму таким образом, чтобы лучше соответствовать форме объекта. Кроме того, нейронная сеть объединяет прогнозы нескольких карт признаков (feature map) с разным разрешением для обработки объектов разного размера.
SSD легко обучается и интегрируется в программные системы, требующие функции обнаружения объектов. По сравнению с другими одноступенчатыми методами, SSD обладает гораздо большей точностью даже при меньших размерах входного изображения.
R-CNN (Region-Based Convolutional Neural Networks)
Сверточные нейронные сети на основе регионов (Region-based convolutional neural networks, R-CNNs) — новаторский подход, основанный на применении глубоких нейронных сетей для обнаружения объектов. Модели R‑CNN сначала выбирают несколько областей на изображении (например, с помощью anchor boxes), а затем определяют для них метки классов (классы заданы заранее) и положение ограничивающих рамок (bounding box). Затем с помощью сверточной нейронной сети (CNN) путем прямых вычислений из каждой выбранной области извлекаются признаки объектов.
Схема архитектур R-CNN и Faster R-CNN. Источник: Liu L., Ouyang W., Wang X., Fieguth P., Chen J., Liu X., Pietikäinen M. Deep Learning for Generic Object Detection: A Survey. Deep Learning for Generic Object Detection / arXiv:1809.0216, 2019. – URL: https://arxiv.org/abs/1809.02165v3
Таким образом, в R-CNN входное изображение сначала делится почти на две тысячи секций, после чего к каждой секции отдельно применяется сверточная нейронная сеть. Такой детальный подход значительно увеличивает время обучения, поэтому в 2015 году был разработан Fast R-CNN.
В отличие от оригинальной архитектуры, Fast R-CNN обрабатывает изображение за один проход, что очень похоже на YOLO. Тем не менее, YOLO по-прежнему опережает R-CNN благодаря простоте кода. Помимо этого, к оригинальной архитектуре R-CNN был добавлен новый выходной слой —объединение областей интереса (Region of Interest (ROI) pooling), который выделяет каждую область интереса из выходного тензора сети, изменяет ее форму и классифицирует. Это нововведение делает Fast R-CNN более точной, чем оригинальная архитектура.
Mask R-CNN
Mask R-CNN является усовершенствованием Fast R-CNN. Разница между ними заключается в том, что в архитектуре Mask R-CNN была добавлена отдельная ветвь для прогнозирования маски объекта параллельно с основной ветвью, осуществляющей детекцию объектов и определение положения ограничивающих рамок (bounding box).
Mask R-CNN проста в обучении и с точки зрения вычислительной сложности лишь немного уступает R-CNN.
SqueezeDet
SqueezeDet — глубокая нейронная сеть, разработанная в 2016 году специально для решения задач детекции в автономном вождении. Как и YOLO, это одноэтапный алгоритм обнаружения.
В SqueezeDet сверточные слои используются не только для извлечения карт признаков (feature map), но также в качестве выходного слоя, определяющего положение ограничивающих рамок (bounding box) и вероятности классов. Детекция в SqueezeDet происходит за один проход данных, что позволяет этой архитектуре работать чрезвычайно быстро.
MobileNet
Mobile Net — одноэтапный детектор, реализованный с использованием платформы Caffe. Выходные данные модели представляют собой типичный вектор, содержащий данные отслеживаемого объекта.
YOLOR
YOLOR — детектор, впервые представленный в 2021 году. Его особенностью является использование в обучении неявных и явных знаний — благодаря этому YOLOR способен изучить «общее представление» и выполнять с его помощью множество задач.
Неявные знания интегрируются в явные путем выравнивания пространства ядра, уточнения прогнозов и многозадачного обучения. Благодаря такому подходу YOLOR достигает значительно лучших результатов в обнаружении объектов.
По сравнению с другими методами детекции на наборе данных COCO, средняя точность (Mean average precision, MAP) YOLOR на 3,8 % выше, чем PP-YOLOv2, при той же скорости вывода (inference speed). По сравнению со Scaled-YOLOv4 скорость вывода YOLOR выше на 88%, что делает его самым быстрым детектором объектов в реальном времени, доступным на сегодняшний день.