Изменения

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

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

790 байт добавлено, 03:43, 10 апреля 2020
bounding box-ы
'''Задача нахождения объектов на изображении''' {{---}} задача машинного обучения, в рамках которой выполняется определение наличия или отсутствия объекта определённого домена на изображении, нахождение границ этого объекта в системе координат пикселей исходного изображения. В зависимости от алгоритма обучения, объект может характеризоваться координатами обрамляющего его прямоугольника (bounding box)ограничивающей рамки, ключевыми точками, контуром объекта.
==Постановка задачи==
Задача семантической сегментации (англ. semantic segmentation) {{---}} задача, в которой на вход модели подаётся изображение, а на выходе для каждого пикселя является метка принадлежности этого пикселя к определённой категории. Например, если в исходном изображении человек переходит дорогу, то для каждого пикселя необходимо вывести, является ли этот пиксель частью человеческого тела, профиля дороги, знака дорожного движения, неба, или какого-то другого типа. Существенный недостаток применения одной лишь семантической сегментации относительно задач, связанных с распознаванием объектов {{---}} маркировка пикселей по принадлежности только к типу объекта, что не создаёт различия между объектами как таковыми. Например, если назвать "объектом" связную область пикселей, характеризующих одинаковый тип, то два объекта, перегораживающих друг друга на исходном изображении, будут определены как один объект, что в корне неверно. Задача семантической сегментации изображения с дифференцированием объектов называется задачей сегментации экземпляров (англ. instance segmentation). Модели, решающие задачу сегментации экземпляров, применяются, в том числе, для подсчёта людей в массовых скоплениях, для автомобилей с автоматическим управлением.
Задача классификации с локализацией (англ. classification and localization) {{---}} задача, в которой в дополнение к предсказанию метки категории класса определяется рамка, ограничивающая местоположение экземпляра одиночного объекта на картинке. Как правило, рамка имеет прямоугольную форму, её стороны ориентированы параллельно осям исходного изображения, а площадь является минимальной при условии полного нахождения экземпляра объекта внутри этой рамки. Такую прямоугольную рамку называют термином "ограничивающая рамка" (англ. bounding box). Bounding box Ограничивающую рамку можно задать как при помощи центра, ширины и высоты, так и при помощи четырёх сторон. Модель в данном случается одновременно обучается как верной классификации, так и максимально точному определению границ рамки. В качестве метрики для определения местоположения bounding box-а ограничивающей рамки чаще всего используется отношение площадей bounding box-ов ограничивающих рамок Intersection over Union: $IoU = \frac{S(A \cup B)}{S(A \cap B)}$, где $A$ и $B$ - предсказанный bounding box предсказанная ограничивающая рамка и настоящий bounding box настоящиая ограничивающая рамка соответственно. $IoU$ равно нулю в случае непересекающихся bounding box-ов ограничивающих рамок и равно единице в случае идеального наложения.
Задача детекции объектов (англ. object detection) {{---}} задача, в рамках которой необходимо выделить несколько объектов на изображении посредством нахождения координат их bounding box-ов ограничивающих рамок и классификации этих bounding box-ов ограничивающих рамок из множества заранее известных классов. В отличие от классификации с локализацией, число объектов, которые находятся на изображении, заведомо неизвестно. В качестве метрики зачастую используется $mAP$ (mean average precision) {{---}} усреднённая по всем категориям величина $AP = \int_{0}^{1} p(r) dr$, где $p$ {{---}} точность, $r$ {{---}} полнота из предположения, что bounding box определён ограничивающая рамка определена верно, если $IoU \geq 0.5$. Поскольку точность и полнота находятся в промежутке от $0$ до $1$, то $AP$, а следовательно, и $mAP$, также находятся в пределах от $0$ до $1$.
|-valign="top"
|[[Файл:p(r).png|300px|thumb|Зависимость точности от полноты, необходимая для вычисления average presicion (AP)]]
|[[Файл:IoUs.png|300px|thumb|Примеры влияния взаимного положения bounding box-ов ограничивающих рамок на метрику IoU]]
|}
[[Файл:SegmentationExample.jpeg|300px|thumb|right|Пример семантической сегментации изображения]]
Для семантической сегментации чаще всего применяются глубокие [[:Сверточные_нейронные_сети|свёрточные нейронные сети]], в том числе, когда данные [https://arxiv.org/abs/1502.02734 слабо размечены]. Действительно, проблема низкого уровня размеченности данных в семантической сегментации довольно важна, поскольку для каждого пикселя определить его принадлежность с высокой точностью {{---}} задача, требующая высоких затрат времени и и не всегда высокую точность. Однако, сочетание хорошо размеченных данных со слабо размеченными данными (например, с точностью до bounding box-овограничивающих рамок) улучшает производительность модели. Для задачи сегментации [https://arxiv.org/abs/1605.06211 хорошо себя показали] FCN (fully-convolutional networks) {{---}} полносвёрточные сети, позволяющие работать с изображениями произвольного размера, а на выходе выдавать тепловую карту нахождения классов на изображении через серию свёрток. Поскольку свёртка над матрицей большой размерности с большим числом каналом является затратной, как правило, первая половина слоёв в таких свёрточных сетях обеспечивает сабсэмплинг (англ. subsampling - уменьшение размерности), а вторая часть слоёв - апсэмплинг (англ. upsampling - увеличение размерности). Таким образом, размерность изображений в пикселях на входе и на выходе сети является одинаковой, а большинство операций свёртки применяется к матрицам небольшой размерности. Конечная классификация достигается за счёт выбора максимума по классам из значений тензора размерности $C \times W \times H$, где $C$ - множество классов, заранее заданных перед обучением и к которым могут принадлежать пиксели изображения, $W \times H$ - размер изображения. Такую модель можно обучить при помощи [[:Обратное_распространение_ошибки|обратного распространения ошибок]], а в качестве функции потерь для пикселей использовать кросс-энтропию.
Модель [https://arxiv.org/abs/1505.04597 U-Net], разработанная авторами для сегментации биомедицинских изображений, улучшает архитектуру FCN путём использования сужающихся блоков свёртки для захвата контекста, расширяющихся блоков свёртки для локализации, а также прямых связей между блоками свёртки на одинаковых уровнях. Прямая связь слоёв обеспечивает улучшенное обучение за счёт отсутствия так называемого "артефакта шахматной доски" {---} негативного явления, вызванного апсэмплингом при помощи транспонированной свёртки. Развитием U-Net, в свою очередь модель [https://arxiv.org/abs/1611.09326 DenseNet], в которой используются полностью связанные свёрточные сети. В основе идеи лежит использование "плотных блоков" {---} совокупности нескольких свёрточных слоёв с подключением каждого слоя к каждому слою. Однако, существенным недостатком такой модели является низкая эффективность работы с памятью.
[[Файл:R-CNN.png|300px|thumb|right|Схема работы R-CNN]]
Region-CNN (R-CNN, Region-based Convolutional Network) {{---}} алгоритм, основанный на свёрточных нейронных сетях. Вместо того, чтобы использовать для поиска изображений скользящие окна фиксированного размера, на первом шаге алгоритм пытается найти селективным поиском "регионы" {{---}} bounding box-ы прямоугольные рамки разных размеров, которые, предположительно, содержат объект. Это обеспечивает более быстрое и эффективное нахождение объектов независимо от размера объекта, расстояния до камеры, угла зрения. Суммарное количество регионов для каждого изображения, сгенерированных на первом шаге, примерно равно двум тысячам. Найденные регионы при помощи аффинных преобразований приобретают размер, который нужно подать на вход CNN. Также вместо аффинных преобразований можно использовать паддинги, либо расширять bounding-box ограничивающие рамки до размеров, необходимых для входа CNN. В качестве CNN зачастую используется архитектура CaffeNet, извлекающая для каждого региона порядка 4096 признаков. На последнем этапе вектора признаков регионов обрабатываются SVM, проводящими классификацию объектов, по одной SVM на каждый домен.
Селективный поиск, в свою очередь, тоже можно обучать с помощью линейной регрессии параметров региона {{---}} ширины, высоты, центра. Этот метод, названный bounding-box regression, позволяет более точно выделить объект. В качестве данных для регрессии используются признаки, полученные в результате работы CNN.
[[Файл:Fast-R-CNN.png|300px|thumb|right|Схема работы Fast R-CNN]]
За счёт того, что в R-CNN для каждого из 2000 регионов классификация производится отдельно, обучение сети занимает большой объём времени. Оригинальной версии алгоритма R-CNN для обработки каждого тестового изображения требовалось порядка 47 секунд, поэтому его авторы предложили алгоритм, улучшающий производительность {{---}} Fast R-CNN. Его характерной особенностью является подача на вход CNN не отдельных регионов, а всего изображения сразу для получения общей карты признаков. Предложенные регионы накладываются на общую карту признаков, и в результате количество операций свёртки существенно уменьшается. Поскольку регионы имеют разный размер, необходимо привести признаки к фиксированному размеру при помощи операции RoIPooling (Region of interest pooling). В рамках RoIPooling регион делится на сетку, размерность ячеек которой совпадает с размерностью выхода, после чего по ячейкам сетки проводится выбор максимального значения. Полученные регионы фиксированного размера далее являются входом для полносвязного слоя, который и осуществляет как классификацию, так и линейную регрессию для сдвига границ bounding box-овего рамок. Стоит отметить, что в Fast R-CNN используется совместное обучение SVM для классификации, CNN и bounding box регрессора вместо независимого их обучения {{---}}для этого используется совместная функция потерь.
===Faster R-CNN===
Fast R-CNN, как и оригинальный алгоритм R-CNN, использует для нахождения регионов селективный поиск. Несмотря на то, что за счёт единоразовой свёртки время обучения на одном тестовом изображении алгоритмом снизилось с 49 до 2.3 секунд, селективный поиск, который выполняет предложения регионов, является узким местом в производительности Fast R-CNN. Авторы алгоритма Faster R-CNN, призванного решить эту проблему, предложили вычислять регионы с помощью отдельного модуля Region Proposal Network (RPN). RPN является свёрточной сетью, выполняющей роль генератора регионов по признакам исходного изображения. Сгенерированные регионы передаются в два полносвязных слоя {{---}} box-regression-layer (сокр. reg layer), прогнозирующий значения смещения для bounding box-овограничивающих рамок, и box-classification-layer (сокр. cls layer), классифицирующий изображения в пределах предлагаемой области. Также важную роль играют anchor-ы - рамки с разными положениями и размерами для скользящего окна. Anchor-ы используются для расчёта вероятностей нахождения объекта внутри рамки cls-слоем, а за сдвиг их местоположения отвечает reg-слой. После прохождения слоя RPN следует RoIPooling, как и в алгоритме Fast R-CNN {{---}} для преобразования регионов к одному размеру и дальнейшей классификации и смещения границ bounding box-овограничивающих рамок. Поскольку классификацией и регрессией границ занимается как сеть в целом, так и RPN, предлагающая регионы, функция потерь учитывает как финальное решение по классификации и регрессии координат, так и классификацию и регрессию координат, проведённую RPN.
Семейство алгоритмов R-CNN использует предсказания регионов, что позволяет обеспечивать хорошую точность, но может быть очень медленным для некоторых сфер, таких, как беспилотное управление автомобилем. Можно выделить ещё одно семейство алгоритмов для детекции изображений, которое не использует регионы {{---}} семейство алгоритмов быстрой детекции.
Алгоритм YOLO (You Look Only Once), изобретённый в 2016 году, был первой попыткой сделать возможной детекцию объектов в реальном времени. В рамках алгоритма YOLO исходное изображение сначала разбивается на сетку из $N \times N$ ячеек. Если центр объекта попадает внутрь координат ячейки, то эта ячейка считается ответственной за определение параметров местонахождения объекта. Каждая ячейка описывает несколько вариантов местоположения bounding box-ов ограничивающих рамок для одного и того же объекта. Каждый из этих вариантов характеризуется пятью значениями {{---}} координатами центра bounding box-аограничивающей рамки, его шириной и высотой, а также степени уверенности в том, что bounding box ограничивающая рамка содержит в себе объект. Также необходимо для каждой пары класса объектов и ячейки определить вероятность того, что ячейка содержит в себе объект этого класса. Таким образом, последний слой сети, принимающий конечное решение о bounding box-ах об ограничивающих рамках и классификации объектов работает с тензором размерности $N \times N \times (5B + C)$, где $B$ {{---}} количество предсказанных bounding box-овпредсказываемых ограничивающих рамок для ячейки, $C$ {{---}} количество классов объектов, определённых изначально. Алгоритм YOLO работает быстрее алгоритмов семейства R-CNN за счёт того, что поддерживает дробление на константное количество ячеек вместо того, чтобы предлагать регионы и рассчитывать решение для каждого региона отдельно, однако, в качестве проблем YOLO указывается плохое качество распознавания объектов сложной формы или группы небольших объектов из-за ограниченного числа кандидатов для ограничивающих рамок. {|align="center" |-valign="top" |[[Файл:YOLO.png|300px|thumb|right|Схема работы алгоритма YOLO]] |[[Файл:YOLONet.png|300px|thumb|right|Схема нейронной сети для алгоритма YOLO]] |}
Алгоритм YOLO работает быстрее алгоритмов семейства R-CNN за счёт того, что поддерживает дробление на константное количество ячеек вместо того, чтобы предлагать регионы и рассчитывать решение для каждого региона отдельно, однако, в качестве проблем YOLO указывается плохое качество распознавания объектов сложной формы или группы небольших объектов из-за ограниченного числа кандидатов для bounding box-ов.
==См.также==
Анонимный участник

Навигация