Клэр Саути

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

«Где Уолли» — это серия детских книжек-головоломок, впервые опубликованных в 1987 году британским иллюстратором Мартином Хэндфордом. Сериал издается под названием «Где Уолдо» в США и Канаде. Более 73 миллионов книг были опубликованы на 26 языках и проданы более чем в 50 странах. Героя книги, Уолдо, можно узнать по круглым очкам, свитеру в красно-белую полоску и такой же полосатой шапке с помпонами. Тем не менее, сцены часто очень заняты и несут много отвлекающих факторов с нечеткими узорами на одежде Уолдо, что затрудняет для читателей поиск Уолдо.

Наше решение для поиска Уолдо будет основано на YOLOv7, быстром одноэтапном алгоритме компьютерного зрения для обнаружения объектов.

Одной из проблем обнаружения объектов является компромисс между скоростью и точностью. Там, где другие алгоритмы, использующие цепные регрессионные и классификационные сети, боролись с выводами, работающими быстрее, чем в режиме реального времени, YOLO сегментирует изображение и выполняет параллельную регрессию и сегментацию на гораздо более высоких скоростях. Он оценивает достоверность с помощью Intersection-Over-Union.

YOLO расшифровывается как You Only Look Once. Версия 7 была выпущена в июле 2022 года под лицензией GPT-3 с открытым исходным кодом и представляет собой современный уровень техники. Новейшая версия от Ванга, Бочковского и Ляо включает в себя то, что исследователи называют набором обучаемых халявы, которые выходят за рамки этой статьи, но включают запланированные перепараметризованные свертки, грубые вспомогательные потери отведений и масштабирование составной модели. .

YOLOv7 был написан на C++, но доступен в виде набора скриптов Python или в TorchHub PyTorch. Он дает лучший показатель mAP, чем EfficientNet-D7x, но с экспоненциально меньшим временем вывода. Он также превосходит F-RCNN с ResNet-101.

Фактически, более крупный вариант W6 сетевой архитектуры YOLOv7 может выполнять непрерывный вывод в реальном времени на фрагментах HD-видео 720p со скоростью до 84 кадров в секунду:

Достаточно теории. Давайте начнем, пока Уолдо не потерял интерес и не отозвал свое согласие на этот эксперимент.

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

К сожалению, все, что у меня есть, — это старая глючная веб-камера Logitech HD (которая не дает мне такой же производительности, как 4K DSLR). Я устанавливаю станцию ​​визуализации на своем кухонном столе, используя кусок стекла журнального столика и переносной аккумуляторный фонарь, который я иногда использую для видеоконференций в темных гостиничных номерах. Книги Уолдо, как правило, имеют глянцевые страницы, которые вызывают блики. Я решил настаивать, но если этот блик камеры станет проблемой, вы можете слегка наклонить книгу (остерегайтесь геометрических искажений) или иным образом обработать ее матирующим спреем (остерегайтесь слипания страниц).

Для захвата тренировочных изображений я написал короткий скрипт на Python с помощью OpenCV, но вы можете так же легко сделать то же самое, используя свое любимое программное обеспечение для камеры. Я также дополнил свои тренировочные изображения некоторыми обоями «Где Уолдо», которые я нашел в Интернете. Здесь важно признать компромисс — всегда предпочтительнее использовать одну и ту же систему визуализации и среду как для обучения, так и для вывода. Также важно иметь достаточно обучающих данных для достижения хорошей точности.

Далее нам нужно аннотировать изображения. Наземная аннотация может быть одним из самых дорогостоящих аспектов компьютерного зрения, особенно когда вам нужно сесть и найти каждого Уолдо на сотнях изображений!!! Я аннотировал с помощью RectLabel, но вы также можете использовать ImgLab или один из управляемых сервисов от Scale или LabelBox.

Не забывайте следовать принципам маркировки изображений:

  1. Включить всю цель в ограничительную рамку
  2. Исключите как можно больше лишней информации
  3. Включите в ограничительную рамку любые части объекта, которые закрыты

RectLabel создает метки изображений в формате PASCAL VOC. Однако YOLO ожидает метки в формате текстового файла DarkNet ‹object-class›.

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

Теперь мы готовы обучить наш алгоритм. Я клонировал алгоритм с Github сюда. Чтобы ускорить обучение, я также выполнил трансферное обучение с использованием предварительно обученных весов на основе набора данных классификации изображений COCO (файл контрольной точки доступен здесь). Я тренировался 350 эпох на 120 тренировочных образах — да, я нашел Уолдо все 120 раз. Модель имеет 37 миллионов параметров. Наш тренировочный прогон потребляет 37 ГБ ОЗУ графического процессора и занимает 32 минуты на NVIDIA A100.

Давайте посмотрим на результаты:

Есть несколько интересных наблюдений с метриками точности. Оказывается, в новых книгах «Где Уолдо» количество персонажей, которых можно найти, увеличилось. Подруга Уолдо Венда и его заклятый враг Одлоу (у Уолдо есть враги-гетеропалиндры?), которые выглядят и одеваются так же, как Уолдо, также появляются в каждой сцене, внося потенциальные ложноположительные ошибки в нашу модель.

Давайте посмотрим, как наша модель «поиск Уолдо, привязка к веб-камере» работает с тестовым изображением:

И, наконец, давайте возьмем книгу «Где Уолдо» и сделаем несколько выводов в реальном времени на живом видео. Не обращая внимания на сбои с моей веб-камерой, мы можем быстро обнаружить Уолдо в каждой сцене в режиме реального времени!

В этом руководстве мы обсудили применение современного алгоритма YOLOv7 для обучения модели обнаружения объектов для поиска Waldos. Мы развернули его для прямого логического вывода по видео в реальном времени с полной частотой кадров. Обнаружение объектов в режиме реального времени — это передовая технология, которая имеет широкое применение в медиа и развлечениях, здравоохранении и биологических науках, экологии и сельском хозяйстве, обороне и пограничной охране, а также во многих областях розничной торговли, промышленности и производства.

Спасибо, что последовали за нами.