Антиплагиат (1229293), страница 8
Текст из файла (страница 8)
В модуле object содерж ится функц ияdetectMultiScale, которая является реализац ий алгоритма, основанного на HOG (histogram oriented gradients). Функц ия создает массивкоординат предполож ений на изображ ении и сопряж енный массив с степенями соответствия детектированных объектов.Рисунок 3.8 – Изображ ение с детектированными объектамиИзменяя входные параметры, мож но управлять скоростью распознавания и качеством детектирования. Например, при сниж ениикоэ ффиц иента масштаба, объекты большего или меньшего размера будут игнорироваться. Это такж е означает, что скоростьраспознавания мож ет быть изменена.Главнойхарактеристикой, определяющ ейкачестводетектированияявляетсякорректнонастроенныйдескриптор. Длязадачиопределения пешеходов на изображ ении, необходимо использовать заранее обученный детектор. В данной работе использовалсястандартный дескриптор, так как невозмож но сделать корректную выборку изображ ений за короткий срок.Алгоритмы вычисления HOG-признаков и их использования для детектирования объектов в OpenCV реализованы в классе HOGescriptor(модуль objdetect).HOGescriptor(SizewinSize, SizeblockSize, SizehistogramNormType=HOGescriptor::L2Hys,blockStride, SizedoublecellSize, intnbins, intL2HysThreshold=0.2,derivAperture=1, doubleboolwinSigma=-1, intgammaCorrection=false,intnlevels=HOGescriptor::EFAULT_NLEVELS)– winSize – размер изображ ения (окна детектирования), для которого будут вычисляться HOG-признаки;– blockSize – размер блока в пикселях;– blockStride – шаг блока по горизонтали и вертикали;– cellSize – размер ячейки в пикселях;– nbins – количество полос в гистограмме ориентац ии градиентов одной ячейки;– derivAperture – не используется;– winSigma – величина стандартного отклонения взвешенных вкладов магнитуд градиентов в гистограммы;– histogramNormType – алгоритм нормировки вектора признаков блока;– L2HysThreshold – пороговое значение компонент вектора признаков (параметр алгоритма нормировки);– gammaCorrection – выполнять ли гамма-коррекц ию изображ ения;– nlevels – максимальное количество изменений масштаба изображ ения (параметр детектора).Если все изображ ения одинакового и фиксированного размера, объекты занимают (приблизительно) одинаковую область изображ ения,то вектора признаков данных изображ ений имеют одинаковую длину, с помощ ью алгоритмов обучения с учителем мож но достаточноточно классифиц ировать изображ ения с объектом и без него.В состав библиотеки OpenCV входят встроенные детекторы, заранее обученные на детектирование пешеходов на улиц е.
Например,функц ия getefaultPeopleetector() возвращ ает именно такой детектор.При создании объекта hog класса HOGescriptor с помощ ью функц ии setSVMetector мож ет получать HOG-детектор, спец иализированныйдля распознавания людей на изображ ении. Таким образом, функц ия:HOGescriptor hog;hog.setSVMetector(HOGescriptor::getefaultPeopleetector();Позволяет объявить и иниц иализировать HOG-дескриптор. Для дальнейшего распознавания пешеходов, необходимо использоватьфункц ию:detectMultiScale(img, foundLocations, weights, hitThreshold, winStride, padding, searchLocations);– img – изображ ение, матриц а типа CV_8UC1 или CV_8UC3;– foundLocations – координаты верхних левых углов окон детектирования, классифиц ированных как содерж ащ ие объект (срабатыванийдетектора);– weights – веса, присвоенные классификатором срабатываниям детектора;– hitThreshold – минимальное значение веса, при котором происходит срабатывание детектора;– winStride – шаг окна детектирования по горизонтали и вертикали;– padding – размер рамки, добавляемой к изображ ению;– searchLocations – полож ения окон детектирования, по умолчанию используются все.В результате выполнения функц ии будет сформирован массив прямоугольников, описывающ их детектирование объекты, и массив весов,присвоенные классификатором каж дому срабатыванию детектора.
Когда прямоугольники стоят близко друг к другу или включены друг вдруга (при установленном флаге searchLocations), происходит их группировка. В случае группировки происходит суммирование весов,присвоенных классификатором каж дому срабатыванию детектора. Количеством детектированных областей мож но управлять, с помощ ьюизменения значения hitThreshold. Когда детектируемый объект будет иметь вес ниж е, чем границ а срабатывания, то он не будетдобавлен в результирующ ий массив. На сц енах с малым количеством людей, э то значение допускается снизить.Итоговый массив прямоугольников с их весами возмож но использовать в последующ их функц иях.
Например, отслеж ивание перемещ ениеобъектов по неподвиж ной сц ене. Массив с весами для каж дого прямоугольника мож но использовать для заключения о справедливостигипотезы о том, что наблюдаемый объект действительно является человеком.Рисунок 3.9 – результат распознавания детектором HOGТакж е сущ ествует альтернативный метод детектирования пешеходов.
Каскады Хаара используются для сравнения близких изображ енийв задачах сопровож дения объекта,поиска соответствия на нескольких фотографиях, поиска образа на изображении и т. п.[21]При сравнении двух достаточно похож их фрагментов изображ ения алгоритм определения объекта реализуют через вычисление ихковариац ии. Этот способ очень быстр в реализац ии, интуитивен и тщ ательн�� изучен.Выделим основныенедостатки:– неустойчивость при смене освещения;– неустойчивость при изменении масштаба или повороте изображения;– неустойчивость, если часть изображения – изменяющийся фон.[21]При определении объектов на изображ ении изменение освещ ениянейтрализуется нормировкой или переходом к бинаризации области.
Изменения масштаба и небольшие повороты нейтрализуютсяизменением разрешения при корреляции. Скорость обработки оптимизируют путём поиска объектов с большим шагом или прималеньком разрешении.[21]Каскад Хаара мож но представить наборомпримитивов, для которых считается их свёртка с изображением. Используются самые простые примитивы,состоящие изпрямоугольников и имеющих два уровня, +1 и -1.
При этом каждый прямоугольник используется несколько раз, разного размера.Под свёрткой[21]подразумевается разниц а меж ду суммойэлементов изображения в тёмной области, и суммой элементов изображения в светлой области.[21]Такие свёртки подчёркивают структурную информац ию об объекте.Для работы детектора Хаара необходимо изображ ение перевести в градац ии серого.cvtColor(frame, frame_gray, COLOR_RG2GRAY);В качестве параметров команды используются: frame – исходный кадр изображ ения, COLOR_RG2GRAY – флаг для перевода в градац иисерого, в структуру frame_gray записывается результат. После э того, необходимо выровнять гистограмму изображ ения с помощ ьюфункц ии:equalizeHist(frame_gray, frame_gray);Теперь необходимо объявить объект класса CascadeClassifier, после чего для детектирования пешеходов мож но использовать функц июdetectMultiScale.CascadeClassifier::detectMultiScale(const Mat& image, vector<Rect>& objects, double scaleFactor=1.1, int minNeighbors=3, int flags=0, SizeminSize=Size(), Size maxSize=Size());cascade – классификатор каскада Хаара (только OpenCV 1.x API).
Он мож ет быть загруж ен из XML или YAML-файла;objects – вектор прямоугольников, где каж дый прямоугольник содерж ит обнаруж енный объект;scaleFactor – параметр с указанием, какой размер изображ ения уменьшается в каж дом масштабе изображ ения;minNeighbors – чем больше э то значение, тем более труднее будет поиск и тем чащ е он будет пропускать реальных пешеходов;flags – параметр с тем ж е значением для старого каскада, как в функц ии cvHaaretectObjects.
Он не используется для нового каскада;MinSize – минимальный возмож ный размер объекта. Объекты меньше указанного значения игнорируются;MaxSize – максимально возмож ный размер объекта. Объекты больше указанного значения игнорируются.Рисунок 3.10 – результаты распознавания детектором ХаараHOG-детектор не требует дополнительной обработки изображ ений. Устанавливаем в качестве модели линейный метод опорныхвекторов, соответствующ ий размеру окна детектирования 64x128. Проверяем соответствие количества коэ ффиц иентов гиперплоскостиSVM и размера HOG-дескриптора одного окна детектирования.3.2.3 Обучение детектора ХаараДля того, чтобы обучить классификатор, потребуется:– средства разработки, подключение библиотеки OpenCV;–[19]данные, пригодные для использования (обучающ ая выборка соответствует объектам детектирования);–тестовые наборы «позитивных» и «негативных» изображений (positive and negative images).[19]Результаты обучения классификатора Хаара содерж атся в XML-формате в виде отдельного XML-хранилищ а.
При э том они представлены ввиде иерархической модели сущ ностей с подчиненными атрибутами.Объектная модель документа (ocument Object Model, OM) результатов обученияклассификатора в общем виде представлена на рисунках 3.9-3.10. Корневым элементом является хранилище.Рисунок 3.11 – Объектная модель документа[19]результатов обучения [40]В каскаде результатов обучениясуществует много уровней – это видно на примере первого уровня классификатора на рисунке 3.10.Рисунок 3.12 – Объектная модель документа[19]первого уровня [40]Рисунок 3.12 иллюстрирует, какая информац ия хранится в файлах XML: данные оклассификаторе (haarcascade) и его размерах (size), об используемом уровне (stage), предшественнике, или «родителе» данногоуровня (parent), следующем уровне, или « дочернем» ( next), выстраиваемом дереве (tree) и его корневом узле (root node) спараметрами (threshold, left, right). Далее выстраивается информация о самих признаках (features) в узлах этого дерева, которыезадаются прямоугольниками с параметрами (rects) с определенным углом наклона (tilted).3.3[19]Портирование программного модуля на микрокомпьютерДля портирования программного модуля на микрокомпьютер Raspberry требуется произвести подготовительные операц ии,перечисленные в разделе 3.2.1.