Научная статья на тему 'ОПРЕДЕЛЕНИЕ ОБЪЕКТОВ НА ИЗОБРАЖЕНИЯХ С ПОМОЩЬЮ ГИСТОГРАММЫ НАПРАВЛЕННЫХ ГРАДИЕНТОВ И МЕТОДА ОПОРНЫХ ВЕКТОРОВ'

ОПРЕДЕЛЕНИЕ ОБЪЕКТОВ НА ИЗОБРАЖЕНИЯХ С ПОМОЩЬЮ ГИСТОГРАММЫ НАПРАВЛЕННЫХ ГРАДИЕНТОВ И МЕТОДА ОПОРНЫХ ВЕКТОРОВ Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
162
15
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
КОМПЬЮТЕРНОЕ ЗРЕНИЕ / OPENCV / HOG / ХАРАКТЕРИСТИЧЕСКИЙ ВЕКТОР / SVM / COMPUTER VISION / FEATURE VECTOR

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Гильманов Р.Ф.

В статье рассматривается способ обнаружения объектов, основанный на гистограмме направленных градиентов и методе опорных векторов.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Гильманов Р.Ф.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

DETECTING OBJECTS ON IMAGES WITH HOG AND SVM

The detection of moving objects, based on Histogram of oriented gradients and Support Vector Machine is reviewed in the article

Текст научной работы на тему «ОПРЕДЕЛЕНИЕ ОБЪЕКТОВ НА ИЗОБРАЖЕНИЯХ С ПОМОЩЬЮ ГИСТОГРАММЫ НАПРАВЛЕННЫХ ГРАДИЕНТОВ И МЕТОДА ОПОРНЫХ ВЕКТОРОВ»

УДК 004.93'1

Гильманов Р. Ф. студент магистратуры факультет Информационных систем и технологий Поволжский государственный университет телекоммуникаций и информатики научный руководитель: Куляс О.Л., к.т.н., с.н.с.

доцент Россия, г. Самара

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

ОПОРНЫХ ВЕКТОРОВ

В статье рассматривается способ обнаружения объектов, основанный на гистограмме направленных градиентов и методе опорных векторов.

Ключевые слова: компьютерное зрение, OpenCV, HOG, характеристический вектор, SVM

Gilmanov R.F. candidate for a master's degree Faculty of Information Systems and Technology Povolzhskiy State University of Telecommunications and Informatics

Russia, Samara Scientific adviser: Kulyas O.L.

Associate Professor, Ph.D., Senior Researcher DETECTING OBJECTS ON IMAGES WITH HOG AND SVM

The detection of moving objects, based on Histogram of oriented gradients and Support Vector Machine is reviewed in the article

Keywords: computer vision, OpenCV, HOG, feature vector, SVM

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

Дескриптор функции

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

Как правило, дескриптор функции преобразует изображение размером ширина x высота x 3 (каналы) в вектор/массив длинны n. В случае дескриптора функции HOG входное изображение имеет размер 64 х 128 х 3 а

вектор соответственно имеет длину 3780.

Нужно иметь ввиду, что дескриптор HOG можно рассчитать для других размеров, но в данной статье будут использованы размеры, описанные в оригинальной статье, описывающей данный метод.

В дескрипторе функции HOG в качестве функции используется распределение (гистограмма) направлений градиентов (ориентированных градиентов). Идея заключается в том, что величина градиентов велика вокруг краев и углов объектов (областей с резким изменением интенсивности).

Для расчёта дескриптора HOG нужны следующие шаги: 1. Расчёт градиента. Вычисляется величину gx и gy градиента из оригинального изображения. Это можно сделать фильтрацией этого изображения со следующими ядрами:

-10 1 о

И с по л ьзуя_^_х и gy вычисляется величина и направление градиента:

9= + $ 9У

8 = агс^ллз -—

2. Блоки. Изображение разделяется на блоки 8x8.

3. Расчёт гистограммы градиентов в блоках. Для каждого пикселя в блоке 8х8 известен градиент (его величина и направление). Таким образом имеется 64 значения величины и 64 направления - 128 чисел. Гистограмма этих градиентов обеспечивает более полезное и компактное представление. Градиенты преобразуются в девяти интервальную гистограмму. Интервал гистограммы соответствует направлению градиента в 0, 20, 40 ... 160 градусов. Каждый пиксель распределяет значение градиента в один или два интервала, основываясь на принадлежности угла градиента к тому или иному интервалу.

4. Характеристический вектор. Для подсчета конечного вектора из исходного изображения блок 16x16 двигается с шагом 8 и 36 значений, вычисленных на каждом шаге, конкатенируются в конечный вектор. Таким образом, с учетом размера входного изображения 64x128 пикселей, производится 7 шагов по горизонтали и 15 шагов по вертикали.

Соответственно длина конечного вектора равна 105 х 36 = 3780.

Алгоритм обучения для классификации

Для примера рассмотрим алгоритм под названием Метод опорных векторов (SVM).

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

Точки на изображении представляют два класса (присутствие объекта и его отсутствие). На изображении, расположенном ниже, два класса представлены двумя типами точек. В процессе тренировки алгоритму предоставляется много примеров изображений двух классов. Другими словами, алгоритм собирает информацию о координатах точек, а также, являются точки черными или белыми.

SVM пытается найти наиболее подходящую линию, которая разделяет два класса. На рисунке есть три линии H1, Ш и Ш. Ш не разделяет два класса и не является хорошим классификатором. Ю и Ш разделяют два класса, но Ш делает это лучшим образом. Таким образом, в процессе тренировки SVM найдет линию Ш.

Если вектор является трехмерным, SVM построит соответствующую плоскость, которая максимально разделяет два класса. Для дескриптора HOG будет построена гиперплоскость.

Реализация HOG в библиотеке OpenCV

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

Метод определения пешеходов на языке Python:

# инициализируем HOG дескриптор hog = cv2.HOGDescriptor() hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector())

# папка с изображениями

imagePaths = sorted(paths.list_images(" ./frames")) for imagePath in imagePaths:

# загружаем изображение и уменьшаем его для уменьшения времени определения

# а также для увеличения точности image = cv2.imread(imagePath) image = imutils.resize(image, width=min(400, image.shape[1])) orig = image.copy()

# оределение пешеходов на изображении

(rects, weights) = hog.detectMultiScale(image, winStride=(4, 4),

padding=(8, 8), scale=1.05)

# выделяем пешеходов на изображении

for (x, y, w, h) in rects:

cv2.rectangle(orig, (x, y), (x + w, y + h), (0, 0, 255), 2)

cv2.imshow("Result", image) cv2.waitKey(0)

Результат:

Использованные источники:

1. https://ra.wikipedia.org/wiki/Гистограмма_направленных_Ipадиент ов

2. http s : //ru. wikipedia.org/wiki/Метод_опорных_векторов

3. https://www.learnopencv.com/image-recognition-and-objectdetection-part1/

4. https://www.learnopencv.com/histogram-of-oriented-gradients/

5. https://www.pyimagesearch.com/2015/11/09/pedestrian-detectionopencv/

i Надоели баннеры? Вы всегда можете отключить рекламу.