Изменения

Перейти к: навигация, поиск

Задача нахождения объектов на изображении

283 байта добавлено, 16:15, 13 апреля 2020
Примечания
Наборы данных в задачах детекции объектов на изображениях размечаются вручную асессорами. Зачастую изображения могут различаться в разрешении и качестве, что может вносить коррективы в работу моделей.
*PASCAL VOC 2012<ref>[http://host.robots.ox.ac.uk/pascal/VOC/voc2012/ PASCAL VOC 2012] </ref> (Pattern Analysis, Statistical Modelling and Computational Learning: Visual Object Classes ) {{---}} содержит 11530 изображений 20 классов с 27450 регионами предложений и 6929 сегментациями*MS COCO 2017<ref>[http://cocodataset.org/#download MS COCO 2017] </ref> (Microsof Microsoft Common Objects in Context) {{---}} 118000 изображений в тренировочной выборке, 5000 изображений в валидационной выборке, 41000 изображений в тестовой выборке. Набор данных содержит 80 классов, на которых можно определить вложенность*ImageNet<ref>[http://www.image-net.org/ ImageNet] </ref> {{---}} 400000 изображений 200 классов с 350000 размеченными ограничивающими рамками*Google Open Images<ref>[http://storage.googleapis.com/openimages/web/factsfigures.html Google Open Images] </ref> {{---}} в шестой версии февраля 2020 года содержит свыше 1743000 изображений в тестовой выборке, свыше 41000 изображений в валидационной выборке и свыше 125000 изображений в тестовой выборке. Суммарно на изображениях размечено около 16000000 ограничивающих рамок
==Подходы к решению задачи детекции объектов==
[[Файл:R-CNN-RUS.png|300px|thumb|right|Схема работы R-CNN]]
Region-CNN<ref>[https://arxiv.org/abs/1311.2524 Region-CNN] </ref> (R-CNN, Region-based Convolutional Network) {{---}} алгоритм, основанный на свёрточных нейронных сетях. Вместо того, чтобы использовать для поиска изображений скользящие окна фиксированного размера, на первом шаге алгоритм пытается найти селективным поиском "регионы" {{---}} прямоугольные рамки разных размеров, которые, предположительно, содержат объект. Это обеспечивает более быстрое и эффективное нахождение объектов независимо от размера объекта, расстояния до камеры, угла зрения. Суммарное количество регионов для каждого изображения, сгенерированных на первом шаге, примерно равно двум тысячам. Найденные регионы при помощи аффинных преобразований приобретают размер, который нужно подать на вход CNN. Также вместо аффинных преобразований можно использовать паддинги, либо расширять ограничивающие рамки до размеров, необходимых для входа CNN. В качестве CNN зачастую используется архитектура CaffeNet<ref>[https://ucb-icsi-vision-group.github.io/caffe-paper/caffe.pdf CaffeNet]</ref>, извлекающая для каждого региона порядка 4096 признаков. На последнем этапе вектора признаков регионов обрабатываются SVM, проводящими классификацию объектов, по одной SVM на каждый домен.
Селективный поиск, в свою очередь, тоже можно обучать с помощью линейной регрессии параметров региона {{---}} ширины, высоты, центра. Этот метод, названный bounding-box regression, позволяет более точно выделить объект. В качестве данных для регрессии используются признаки, полученные в результате работы CNN.
[[Файл:Fast-R-CNN-RUS.png|300px|thumb|right|Схема работы Fast R-CNN]]
За счёт того, что в R-CNN для каждого из 2000 регионов классификация производится отдельно, обучение сети занимает большой объём времени. Оригинальной версии алгоритма R-CNN для обработки каждого тестового изображения требовалось порядка 47 секунд, поэтому его авторы предложили алгоритм, улучшающий производительность {{---}} Fast R-CNN<ref>[https://arxiv.org/abs/1504.08083 Fast R-CNN]</ref>. Его характерной особенностью является подача на вход CNN не отдельных регионов, а всего изображения сразу для получения общей карты признаков. Предложенные регионы накладываются на общую карту признаков, и в результате количество операций свёртки существенно уменьшается. Поскольку регионы имеют разный размер, необходимо привести признаки к фиксированному размеру при помощи операции RoIPooling (Region of interest pooling). В рамках RoIPooling регион делится на сетку, размерность ячеек которой совпадает с размерностью выхода, после чего по ячейкам сетки проводится выбор максимального значения. Полученные регионы фиксированного размера далее являются входом для полносвязного слоя, который и осуществляет как классификацию, так и линейную регрессию для сдвига границ его рамок. Стоит отметить, что в Fast R-CNN используется совместное обучение SVM для классификации, CNN и bounding box регрессора вместо независимого их обучения {{---}}для этого используется совместная функция потерь.
====Faster R-CNN====
[[Файл:Anchors.png|300px|thumb|right|Ключевые рамки различных масштабов и ориентации]]
Fast R-CNN, как и оригинальный алгоритм R-CNN, использует для нахождения регионов селективный поиск. Несмотря на то, что за счёт единоразовой свёртки время обучения на одном тестовом изображении алгоритмом снизилось с 49 до 2.3 секунд, селективный поиск, который выполняет предложения регионов, является узким местом в производительности Fast R-CNN. Авторы алгоритма Faster R-CNN<ref>[https://arxiv.org/abs/1506.01497 Faster R-CNN]</ref>, призванного решить эту проблему, предложили вычислять регионы с помощью отдельного модуля Region Proposal Network (RPN). RPN является свёрточной сетью, выполняющей роль генератора регионов по признакам исходного изображения. Сгенерированные регионы передаются в два полносвязных слоя {{---}} box-regression-layer (сокр. reg layer), прогнозирующий значения смещения для ограничивающих рамок, и box-classification-layer (сокр. cls layer), классифицирующий изображения в пределах предлагаемой области. Также важную роль играют ключевые рамки (англ. anchor boxes) {{---}} рамки с различными положениями и размерами для скользящего окна. Ключевые рамки имеют зафиксированное положение и различную форму и масштаб. Для одного и того же масштаба выбирается, как правило, три ключевые рамки {{---}} квадратной формы; прямоугольной формы, ориентированной горизонтально; прямоугольной формы, ориентированной вертикально. Учитывая масштаб ключевой рамки, производится его перемещение скользящим окном для генерации регионов. Для сгенерированных таким образом регионов рассчитываются вероятности нахождения объекта внутри рамки cls-слоем, а за сдвиг местоположения отвечает reg-слой. После прохождения слоя RPN следует RoIPooling, как и в алгоритме Fast R-CNN {{---}} для преобразования регионов к одному размеру и дальнейшей классификации и смещения границ ограничивающих рамок. Поскольку классификацией и регрессией границ занимается как сеть в целом, так и RPN, предлагающая регионы, функция потерь учитывает как финальное решение по классификации и регрессии координат, так и классификацию и регрессию координат, проведённую RPN.
====Mask R-CNN====
Mask R-CNN<ref>[https://arxiv.org/abs/1703.06870 Mask R-CNN] </ref> {{---}} улучшение алгоритма Faster R-CNN, предложенное в 2017 году и обеспечивающее осуществлять возможность сегментации экземпляров объектов, а не только составление ограничивающих рамок с классификацией. В Mask R-CNN к традиционным для алгоритмов семейства R-CNN метке класса и координатам ограничивающей рамки добавляется также маска объекта {{---}} прямоугольная матрица принадлежности пикселя текущему объекту. Маски предсказываются для каждого класса с помощью классификации без наличия информации о том, что изображено в регионе, что выдяеляет отдельный классификатор на последнем уровне сети. Потребность предсказания маски обусловила несколько архитектурных изменений относительно Faster R-CNN: ключевым является использование RoIAlign вместо RoIPooling. RoIPooling хорошо подходит для масштабирования ограничивающих рамок, однако, для маски такой метод оказывается недостаточно точным. RoIAlign не использует округлений сдвигов для пулинга, а сохраняет значения с плавающей точкой, используя билинейную интерполяцию. Это обеспечило более точное выделение маски объекта.
Модель Mask R-CNN совершила прорыв в задачах сегментации экземпляров, детекции объектов и [[:Компьютерное_зрение#.D0.9E.D1.86.D0.B5.D0.BD.D0.BA.D0.B0_.D0.BF.D0.BE.D0.BB.D0.BE.D0.B6.D0.B5.D0.BD.D0.B8.D1.8F|определения поз людей на фотографии]] (англ. human pose estimation). Функция потерь является общей и включает три компонента {{---}} классификация, регрессия границ рамки и регрессия значений маски. Это позволило обеспечить взаимопомощь определения сдвигов границ объектов и более точного определения маски.
====YOLO====
Алгоритм YOLO<ref>[https://arxiv.org/abs/1506.02640 YOLO] </ref> (You Look Only Once), предложенный в 2016 году, был первой попыткой сделать возможной детекцию объектов в реальном времени. В рамках алгоритма YOLO исходное изображение сначала разбивается на сетку из $N \times N$ ячеек. Если центр объекта попадает внутрь координат ячейки, то эта ячейка считается ответственной за определение параметров местонахождения объекта. Каждая ячейка описывает несколько вариантов местоположения ограничивающих рамок для одного и того же объекта. Каждый из этих вариантов характеризуется пятью значениями {{---}} координатами центра ограничивающей рамки, его шириной и высотой, а также степени уверенности в том, что ограничивающая рамка содержит в себе объект. Также необходимо для каждой пары класса объектов и ячейки определить вероятность того, что ячейка содержит в себе объект этого класса. Таким образом, последний слой сети, принимающий конечное решение об ограничивающих рамках и классификации объектов работает с тензором размерности $N \times N \times (5B + C)$, где $B$ {{---}} количество предсказываемых ограничивающих рамок для ячейки, $C$ {{---}} количество классов объектов, определённых изначально.
Алгоритм YOLO работает быстрее алгоритмов семейства R-CNN за счёт того, что поддерживает дробление на константное количество ячеек вместо того, чтобы предлагать регионы и рассчитывать решение для каждого региона отдельно, однако, в качестве проблем YOLO указывается плохое качество распознавания объектов сложной формы или группы небольших объектов из-за ограниченного числа кандидатов для ограничивающих рамок.
[[Файл:YOLO9000.png|300px|thumb|right|Древовидная структура классов в YOLO9000]]
Улучшенная версия модели YOLOv2<ref>[https://arxiv.org/abs/1612.08242 YOLOv2] </ref> отличается от предшественницы использованием [[:Batch-normalization|батчевой нормализации]] на свёрточных слоях, обучением модели на изображениях с повышенным разрешением, использованием ключевых рамок для предсказания местонахождения объектов, использованием кластеризации алгоримтом $k$-средних для обучения более эффективного выбора размеров ограничивающих рамок на тренировочной выборке с использованием функции расстояния на основе IoU:
$dist(x, c_i) = 1 - IoU(x, c_i)$
$p(object)$ {{---}} вероятность обнаружения объекта, вычисленная на этапе генерации ограничительных рамок. Путь прогнозирования условной вероятности может остановиться на любом этапе, в зависимости от того, какие метки доступны.
YOLOv3<ref>[https://arxiv.org/abs/1804.02767 YOLOv3]</ref>, в свою очередь, является небольшим улучшением YOLOv2 {{---}} используется логистическая регрессия для оценок достоверностей ограничивающих рамок вместо суммы квадратов ошибок для условий классификации в YOLO и YOLOv2; использование нескольких независимых логистических классификаторов для каждого класса вместо одного слоя softmax; добавление межуровневых соединений между уровнями прогнозирования ограничивающих рамок; использование архитектур DarkNet и ResNet для свёрточных сетей.
====SSD====
[[Файл:SSD.png|300px|thumb|right|Архитектура нейронной сети для алгоритма SSD]]
Модель Single Shot Detector<ref>[https://arxiv.org/abs/1512.02325 Single Shot Detector] </ref> (SSD) использует идею использования пирамидальной иерархии выходов свёрточной сети для эффективного обнаружения объектов различных размеров. Изображение последовательно передаётся на слои свёрточной сети, которые уменьшаются в размерах. Выход из последнего слоя каждой размерности участвует в принятии решения по детекции объектов, таким образом, складывается "пирамидальная характеристика" изображения. Это позволяет обнаруживать объекты различных масштабов, так как размерность выходов первых слоёв сильно коррелирует с ограничивающими рамками для крупных объектов, а последних {{---}} для небольших. В отличие от YOLO, SSD не разбивает изображение на сетку произвольного размера, а предсказывает смещение ключевых рамок. Ключевые рамки на разных уровнях масштабируются так, что одна размерность выходного слоя отвечает за объекты своего масштаба. В результате, большие объекты могут быть обнаружены только на более высоком уровне, а маленькие объекты {{---}} на низких уровнях. Как и в других алгоритмах, функция потерь обеспечивает совместный вклад как потерь локализации, так и потерь классификации.
==См.также==
107
правок

Навигация