Поздравляем с Новым Годом!
   
Телефон: 8-800-350-22-65
WhatsApp: 8-800-350-22-65
Telegram: sibac
Прием заявок круглосуточно
График работы офиса: с 9.00 до 18.00 Нск (5.00 - 14.00 Мск)

Статья опубликована в рамках: LXIV Международной научно-практической конференции «Научное сообщество студентов XXI столетия. ТЕХНИЧЕСКИЕ НАУКИ» (Россия, г. Новосибирск, 12 апреля 2018 г.)

Наука: Информационные технологии

Скачать книгу(-и): Сборник статей конференции

Библиографическое описание:
Ситкин И.В. ДЕТЕКТИРОВАНИЕ ОБЪЕКТОВ НА ИЗОБРАЖЕНИЯХ С ПО-МОЩЬЮ АЛГОРИТМА YOLO // Научное сообщество студентов XXI столетия. ТЕХНИЧЕСКИЕ НАУКИ: сб. ст. по мат. LXIV междунар. студ. науч.-практ. конф. № 4(63). URL: https://sibac.info/archive/technic/4(63).pdf (дата обращения: 26.12.2024)
Проголосовать за статью
Конференция завершена
Эта статья набрала 0 голосов
Дипломы участников
Диплом Выбор редакционной коллегии

ДЕТЕКТИРОВАНИЕ ОБЪЕКТОВ НА ИЗОБРАЖЕНИЯХ С ПО-МОЩЬЮ АЛГОРИТМА YOLO

Ситкин Иван Викторович

магистрант, кафедра высшей математики ДВГУПС

РФ, г. Хабаровск

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

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

В 2013 г. была представлена первая версия алгоритма R-CNN (Region-based Convolutional Neural Networks) [1] на основе методов сегментации изображения и сверточной нейронной сети. В последствии, эти идеи развились в Fast R-CNN и Faster R-CNN. Алгоритм Faster R-CNN – один из самых точных в своем классе, но в нем для достижения высокой точности приходится жертвовать производительностью, что в свою очередь приводит к невозможности работы в режиме реального времени [2].

В конце 2015 г. был представлен алгоритм YOLO (You Only Look Once) [3], который позволяет производить быструю обработку изображений (порядка в 1000 раз быстрее, чем R-CNN и в 100 раз быстрее, чем Fast R-CNN), но с более низкой точностью.

В алгоритмах типа Faster R-CNN определение объектов на изображениях происходит в два этапа. Первый этап представляет собой результаты работы глубокой полносвязной сети (Region Proposal Network, далее RPN), цель которой определить регионы, в которых предположительно находится искомые объекты. Второй этап – это применение детектора Fast R-CNN, который выполняет поиск объектов в предложенных регионах. Таким образом, RPN выбирает области, которые Fast R-CNN далее проверяет на наличие объектов. Однако в данном подходе эти две искусственные нейронные сети (ИНС) тренируются независимо друг от друга.

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

Алгоритм YOLO

На выход ИНС, пример которой можно увидеть на рис.2, отдает тензор размера , которого достаточно для построения границ обнаруженных объектов. Здесь  – размерность сетки,  – количество границ, используемых в оценке для каждой ячейки,  – количество классов, которые нейронная сеть способна распознавать.

Алгоритм включает следующие этапы:

1.На изображение накладывается сетка размерностью . Каждой ячейке сетки соответствует вектор размерностью , где число 5 определяет количество показателей каждой границы. Используемые показатели:  – координаты центра границы внутри ячейки (принимают значения от 0 до 1 по отношению к размеру ячейки);  – ширина и высота найденной границы (имеют значения от 0 до 1 по отношению к ширине и высоте исходного изображения соответственно);  – вероятность того, что граница верно определена. Первые  значений вектора, соответствующей ячейки, характеризуют именно эти параметры. Оставшиеся  значений, в этом векторе показывают вероятности того, что центр объекта находится в этой ячейке. На данный момент эти вероятности не привязаны к границам, для нахождения вероятностей классов для каждой из границ необходимо умножить характеристику границы  на эти  значений вектора, как показано на рисунке 1.

 

Рисунок 1 Структура вектора, соответствующий ячейки сетки

 

2.В результате получаем  границ  с вероятностями классов. Для того чтобы получить итоговое распознавание необходимо выполнить следующее:

2.1.Фиксируется какой-либо класс, например «собака», для которого имеется вектор со значением вероятности класса «собака» с каждой из  границ.

2.2.Обнуляем значения для тех границ, у которых значение меньше порогового (задается заранее).

2.3.Сортируем вектор по убыванию.

2.4.Применяем алгоритм (Non maximal suppression) [4]. Работает он по следующему принципу: на входе подается вектор из  вероятностей по классу «собака» для всех границ. Выбирается максимальное значение, так как вектор отсортирован, то этот элемент находится на первой позиции, и затем эта граница сравнивается с границами, расположенными правее, у которых вероятность по классу больше нуля. Сравнение происходит по площади пересечения: если площадь пересечения больше 0.5, то для границы с меньшей вероятностью эта вероятность обнуляется. По этому принципу сравниваем остальные границы. А затем фиксируем следующую границу с ненулевой вероятностью и проводим аналогичные операции сравнения. Таким образом, рассматриваются все границы для класса «собака»,

2.5.Далее берется следующий класс, и проводятся аналогичные операции сравнения и обнуления. После подобной процедуры получаются разряженные вектора с вероятностями по каждому классу для каждой найденной границы.

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

В классическом случае применения алгоритма YOLO строится сетка размерами , для каждой ячейки строится по 2 границы, и сеть обучается на 20 классах. На вход нейронной сети подается трехканальное изображение размером 448x448. Этот тензор пропускается через модифицированную сеть GoogLeNet (20 первых слоев) [5], на выходе которой имеем набор карт признаков пространственной размерностью 14x14x1024. Дальше применяем набор сверток с ReLU (rectified linear unit), который является функцией активации вида [6]:

 

В результате получаем тензор размером 7x7x1024. На следующем этапе этот набор пропускается через полносвязный слой  ReLU размерностью 4096x1, а затем через полносвязный слой, на выходе которого имеем вектор 1470 элементов, который, преобразуется в тензор 7x7x30. Дальше для этого тензора используем модификации, описанные выше.

 

Описание: Описание: Описание: C:\Users\ivsitkin\Desktop\NN.png

Рисунок 2 Архитектура YOLO

 

Особенности алгоритма YOLO v2

Буквально через полгода после публикации YOLO, была представлена на свет улучшенная версия, в которой было реализовано распознавания порядка 9000 категорий (тогда как первая версия в реальном времени могла распознавать порядка 200 классов). Также к существенным улучшениям можно отнести:

  • Пакетная нормализация. Приводит к значительному улучшению сходимости, исключает необходимость использования других форм регуляризации. Прибавка к средней точности распознавания составила 2 %.
  • Классификатор высокого разрешения. Замена основы GoogLeNet на ImageNet, позволила точнее настроить результирующую сеть для обнаружения. Прибавка к средней точности распознавания составила 4 %.
  • Размерные кластеры и Прямое расположение прогнозирование. В первой версии нейронной сети в качестве метрики использовалась оценка площади пересечения, которая хорошо работает только с границами сравнимых размеров. Для решения этой проблемы в качестве метрики, которая одинаково хорошо бы работала с границами разных размеров, была предложена:

.

Что позволило увеличить точность примерно на 5 %.

Суммарно все эти нововведения позволили повысить точность нейронной сети с 63.4 % до 76.9 %.

Сравнение алгоритмов YOLO и Faster R-CNN

Данные сравнения показателей точности алгоритмов YOLO и FASTER R-CNN приведены в таблице 1. Результаты были получены на обучающих выборках VOC 2007 [7] и VOC 2012 [8].

Таблица 1

Сравнение представленных алгоритмов

Метод

Обучающая выборка

Средняя точность

FPS (Кадров в секунду)

Fast R-CNN

VOC 2007+2012

69.7

0.6

Faster R-CNN VGG-16

VOC 2007+2012

72.9

7

YOLO

VOC 2007+2012

63.7

44

YOLOv2

VOC 2007+2012

76.9

68

 

Из данных таблицы 1 можно сделать следующие выводы. Первая версия YOLO работает значительно быстрее Fast и Faster R-CNN, что связано с использованием в R-CNN подхода RPN, который требует значительных вычислений, однако, немного уступает в точности. Ошибка в YOLO одновременно включает ошибки локализации и ошибки классификации, в отличие от R-CNN, где они учитываются независимо друг от друга, так как составные сети обучаются независимо. На эти особенности было уделено особое внимание при построении функции ошибки при разработке YOLO v2. Нейронные сети были разработаны с использованием стека Keras/tensorflow, либо tensorflow.

Тест производительности алгоритма YOLO

Алгоритм YOLO v2 тестировался на одной и той же выборке изображений с использованием CPU (процессоры) и GPU (графические карты). Вычисления на GPU выполнялись с помощью технологии CUDA [9]. На распознавание одного изображения с помощью CPU в среднем было затрачено 8.97 с, а с при использовании GPU – только 0.92 с.

Существенный прирост производительности при использовании GPU связан с высокой степенью параллелизма исходного кода алгоритма YOLO v2. Графические карты позволяют достаточно быстро обрабатывать заданные блоки изображений и проводить их классификацию.

Вывод.

В статье были рассмотрены два основных направления обнаружения объектов на изображении: разновидности алгоритмов YOLO и R-CNN. Очевидны преимущества подхода YOLO: для нахождения объектов на изображении и их классификации необходима одна нейронная сеть, в отличие от сетей подобных R-CNN. Также данный алгоритм довольно успешно может использоваться в системах реального времени, однако для этого необходимы соответствующие вычислительные мощности. В результате эксперимента было установлено, что наибольшая производительность достигается при использовании GPU.

 

Список литературы:

  1. Ross  G., Donahue J., Darrell T., Malik J. Rich feature hierarchies for accurate object detection and semantic segmentation // Computer Vision and Pattern Recognition – 2013
  2. Ren S., He K., Girshick R., Sun J. Towards Real-Time Object Detection with Region Proposal Networks // Computer Vision and Pattern Recognition – 2015
  3. Redmon J., Divvala S., Girshick R., Farhadi A. You Only Look Once: Unified, Real-Time Object Detection // Computer Vision and Pattern Recognition – 2015
  4. Rosebrock A. Non-Maximum Suppression for Object Detection in Python [Электронный ресурс] // сайт. – URL: https://www.pyimagesearch.com/2014/11/17/non-maximum-suppression-object-detection-python/  (дата обращения: 20.03.2018)
  5. Araujo dos Santos L. Artificial Intelligence [Электронный ресурс] // сайт. – URL: https://leonardoaraujosantos.gitbooks.io/artificial-inteligence/content/googlenet.html  (дата обращения: 20.03.2018)
  6. Xu B., Wang N., Chen T., Li M. Empirical Evaluation of Rectified Activations in Convolutional Network // Computer Vision and Pattern Recognition – 2015
  7. The PASCAL Visual Object Classes Challenge 2007 [Электронный ресурс] URL:// http://host.robots.ox.ac.uk/pascal/VOC/voc2007/ (дата обращения 20.03.2018)
  8. The PASCAL Visual Object Classes Challenge 2012 [Электронный ресурс] URL:// http://host.robots.ox.ac.uk/pascal/VOC/voc2012/ (дата обращения 20.03.2018)
  9. Параллельные вычисления CUDA [Электронный ресурс] // сайт. URL: http://www.nvidia.ru/object/cuda-parallel-computing-ru.html (дата обращения 26.03.2018)
Проголосовать за статью
Конференция завершена
Эта статья набрала 0 голосов
Дипломы участников
Диплом Выбор редакционной коллегии

Оставить комментарий