САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
КАФЕДРА ТЕХНОЛОГИИ ПРОГРАММИРОВАНИЯ
ДОМНИН АЛЕКСЕЙ ДМИТРИЕВИЧ
ВЫПУСКНАЯ КВАЛИФИКАЦИОННАЯ РАБОТА БАКАЛАВРА
ОПТИМИЗАЦИЯ АЛГОРИТМА СЕГМЕНТАЦИИ И
РАСПОЗНАВАНИЯ ГОСУДАРСТВЕННЫХ
АВТОМОБИЛЬНЫХ НОМЕРОВ
НАПРАВЛЕНИЕ 010400
ПРИКЛАДНАЯ МАТЕМАТИКА И ИНФОРМАТИКА
НАУЧНЫЙ РУКОВОДИТЕЛЬ,
СТАРШИЙ ПРЕПОДАВАТЕЛЬ
МАЛИНИН К. А.
САНКТ-ПЕТЕРБУРГ
2016
Содержание
Введение ................................................................................................................... 4
Постановка задачи................................................................................................... 6
Глава 1. Теоретические основы ............................................................................. 7
1.1 Контурный анализ .......................................................................................... 8
1.2 Статистический анализ. Построение классификатора ............................. 11
1.2.1 Признаки. Примитивы Хаара ............................................................... 12
1.2.2 Принцип сканирующего окна............................................................... 13
1.2.3 Бустинг. AdaBoost .................................................................................. 15
1.2.4 Построение каскада классификаторов ................................................ 17
1.3 Преобразование Хафа .................................................................................. 17
1.4 Сверточные нейронные сети ....................................................................... 19
1.4.1 Описание понятий “локальное восприятие”, “разделяемые веса”,
“пространственная субдискретизация” ........................................................ 19
1.4.2 Понятия сверточного, субдискретизирующего и полносвязного
слоёв ................................................................................................................. 21
1.4.3 Обучение сети ........................................................................................ 22
Глава 2. Практическая часть ................................................................................ 25
2.1 Локализация автомобильного номера на изображении ........................... 25
2.1.1 Использование детектора границ Канни ............................................. 25
2.1.2 Использование метода Виолы-Джонса ............................................... 29
2.1.3 Тестирование алгоритмов ..................................................................... 31
2.1.4 Модификация алгоритма локализации автомобильного номера ..... 32
2
2.2 Нормализация локализованной области. Выделение символов ............. 35
2.2.1 Поворот номера в горизонтальную ориентацию ................................ 36
2.2.2 Выделение символов ............................................................................. 38
2.2.3 Результаты нормализации и поиска символов на номерной
пластине ........................................................................................................... 40
2.3 Распознавание символов ............................................................................. 41
2.3.1 Обучающая выборка. Предобработка данных .................................... 42
2.3.2 Архитектура сети ................................................................................... 43
2.3.3 Результаты .............................................................................................. 45
Выводы ................................................................................................................... 46
Заключение ............................................................................................................ 47
Список литературы ............................................................................................... 48
3
Введение
С давних пор человечество стремится разработать методы и
алгоритмы, которые помогут автоматизировать большое количество
процессов. Задачи распознавания и сегментирования образов на
изображениях по настоящее время являются сложными и актуальными, об
этом можно судить хотя бы изза великого множества разнообразного
медиаконтента, хранящегося в просторах интернета и большого
многообразия научных статей, посвященных этой теме [1, 2, 3].
Одной из актуальных и интересных проблем является проблема
идентификации автомобилей по фотографии или видео путем распознавания
автомобильных государственных номеров. Применение автоматических
систем распознавания автомобильных номеров может быть востребовано в
разных сферах деятельности. Широким спросом эта технология пользуется у
полицейских структур. Например, государственная инспекция безопасности
дорожного движения в 2006 году в рамках
программы «Повышение
безопасности дорожного движения” взяла на вооружение специальные
камеры, которые позволяют автоматически идентифицировать автомобили,
нарушающие скоростные нормы на дороге, одной из причин уменьшения
жертв на дороге [4] является применение данной технологии. Система
идентификации может быть использована и в множестве других случаях,
например, при создании автоматического контрольнопропускного пункта на
предприятии с закрытым доступом или поиска угнанных автомобилей.
Один из самых важных аспектов при построении системы
идентификации автомобиля по изображению — это распознавание номера.
Этот процесс условно разбивается на несколько этапов: локализация номера,
нормализация, распознавание символов. Каждый из этих этапов требует
4
определенное количество ресурсов, что в сумме даёт большой объем
вычислений, а соответственно и большие затраты времени. Кроме того, эти
этапы очень зависимы друг от друга, потому что в зависимости от качества,
например, локализации номера, могут быть плохо распознаны и символы с
номера. Такая система должна хорошо работать на всех этапах ее
реализации.
Затраты на время не критичны, если обработка изображения или видео
происходит не в реальном времени. Однако, возникают ситуации, когда
необходимо производить обработку в режиме “онлайн”. В этом случае
важно, чтобы кадры обрабатывались с достаточно высокой скоростью — это
нужно для того, чтобы не происходило промежутков «проскакивания»
кадров, в которые может попасть идентифицируемый объект. Данную задачу
можно решить путем повышения мощности аппаратуры, однако при таком
подходе существенным недостатком является финансовый аспект: чем
мощнее и современнее аппаратура, тем она дороже стоит. Поэтому стоит
также обратить внимание на разработку новых и модификацию старых
алгоритмов распознавания номеров.
В данной работе рассматривается алгоритмический способ уменьшения
скорости обработки изображения, а так же увеличения точности
распознавания
автомобильных
номеров.
Используется
язык
программирования C++, библиотека компьютерного зрения OpenCV [5] и
фреймворк Caffe, предоставляющий методы глубинного обучения [6].
5
Постановка задачи
Целью данной выпускной квалификационной работы является
разработка
алгоритмического
решения
оптимизации
процесса
идентификации автомобиля по фотографии или видео. Для достижения
поставленной задачи требуется:
● изучить основные подходы к решению данной задачи;
● изучить библиотеку компьютерного зрения OpenCV;
● изучить фреймворк Caffe;
● реализовать этапы процесса распознавания автомобильного
номера;
● оптимизировать этапы процесса распознавания автомобильного
номера;
● проанализировать полученные результаты.
6
Глава 1. Теоретические основы.
Данная глава посвящена описанию теоретических аспектов на этапах
идентификации автомобиля по его номеру. Будут разобраны подходы для
решения следующих задач:
● локализация автомобильного номера на изображении;
● нормализация выделенной области и поиск символов на номерной
пластине;
● распознавание выделенных символов.
Задача локализации объекта на изображении подразумевает под собой
поиск области, в которой, вероятнее всего, находится искомый объект.
Существует множество подходов для решения этой задачи, однако в рамках
поиска автомобильных номеров популярность имеют два похода:
● Контурный анализ;
● Статистический анализ, построение классификатора;
После локализации имеется некая область, содержащая автомобильный
номер. Однако, номер на ней может быть наклонен, поэтому нужно провести
процедуру нормализации локализованной области. Для решения этой задачи
было найдено два метода: преобразование Хафа [7] и преобразование Радона
[8]. Преобразование Радона изначально формулируется непрерывно, в то
время как преобразование Хафа дискретно, оно специально создано для
поиска фигур на изображениях. В связи с этим для поворота номера в
горизонтальную ориентацию было решено использовать преобразование
Хафа. Кроме этого необходимо выделить и распознать символы. Задача
выделения символов на номерной пластине схожа с задачей локализации
автомобильного номера на изображении. Она может решаться при помощи
контурного анализа и морфологических преобразований изображения или
7
путем построения классификатора. Популярностью в распознавании букв и
цифр пользуется шаблонный метод [9], однако, с целью увеличения точности
и скорости распознавания символов решено воспользоваться сверточными
нейронными сетями [10].
Рассмотрим методологию, позволяющую решить описанные выше
задачи.
1.1 Контурный анализ
Контурный анализ — это область науки, посвященная обработке
изображения, содержащая в себе набор алгоритмов и методов по
нахождению границ (контуров) объектов и работе с границами объектов на
изображении.
Существует множество различных алгоритмов поисков контуров, таких
как:
● Оператор Робертса
● Оператор Прюита
● Оператор Собеля
● Детектор границ Канни
● и др.
При работе с методами контурного анализа нельзя наверняка сказать,
какой из них будет работать лучше на определенной выборке изображений,
однако в силу наличия детектора границ Канни в библиотеке OpenCV, а
также на основании
результатов, полученных в статьях [11, 12, 13] и его
популярности в научном мире, было решено рассмотреть именно этот
алгоритм поиска контуров на изображении.
Детектор границ Канни [14] — оператор для поиска границ объектов на
изображении. Был изобретен Джоном Канни в 1986 и использует
многоступенчатый алгоритм для поиска широкого спектра границ на
8
изображениях.
Работу
алгоритма
можно
представить
в
виде
последовательности шагов:
1. Сглаживание.
2. Поиск градиентов.
3. Подавление “немаксимумов”.
4. Двойная пороговая фильтрация.
5. Трассировка области неоднозначности.
Рассмотрим каждый из пунктов подробнее.
1. Сглаживание
Кадры, которые подаются на вход детектору в общем случае имеют
множество шумов. Шумы мешают детектору найти истинные границы
объектов, поэтому изначально следует сгладить изображение. В детекторе
границ Канни используется фильтр Гаусса с ядром N × N. Фильтр Гаусса
представляет из себя матрицу свертки заполненную по закону нормального
распределения.
2. Поиск градиентов
Метод основан на перепадах яркостей изображения, для поиска
векторов направлений (градиентов) смены яркостей используется оператор
Собеля.
Изображение сворачивается в вертикальном и горизонтальном
направлениях при помощи двух сепарабельных фильтров ядра 3 × 3. Суть
этих свёрток заключается в поиске приближенных значений производных в
соответствующих направлениях.
Имеется исходное изображение A , Gx
и Gy — результирующие
изображения, где каждая точка содержит приближенные производные по
9
горизонтальному и вертикальному направлениям соответственно. Они
вычисляются следующим образом:
При этом приближенное значение градиента можно вычислить по
формуле:
а направление градиента по формуле:
Потенциальными границами назначаются те точки изображения, в которых
градиент принимает наибольшее значение.
3. Подавление “немаксимумов”
После того как определены все значения градиентов и их направления,
находятся те пиксели, в которых достигается локальный максимум. Хорошей
иллюстрацией этого процесса является рис. 1.
Рис. 1.
Иллюстрация выбора локального максимума
10
Области, обведенные белым цветом, применяются как потенциальные
границы.
4. Двойная пороговая фильтрация
Оператор использует так называемые пороги для определения
существования границы в данном пикселе изображения. Их значения лежат в
промежутке от 0 до 255. Чем меньше задается порог, тем больше будет
находится границ, но в то же время результат станет более восприимчив к
шуму, выделяя лишнее. Если же задается высокий порог, то это может
привести к тому, что будут проигнорированы слабые края.
Алгоритм выделения границ Канни использует два порога фильтрации:
если значение пикселя выше верхней границы
— он принимает
максимальное значение (граница считается достоверной), если ниже
—
пиксель подавляется, точки со значением, попадающим в диапазон между
порогов, принимают фиксированное среднее значение (они будут уточнены
на следующем этапе)
.
5. Трассировка области неоднозначности
На данном этапе анализируются группы пикселей, попавших в
среднюю область. Точки, лежащие по соседству с границей, присоединяются
к ней, остальные — отбрасываются.
1.2 Статистический анализ, построение классификатора
Классификация — один из разделов машинного обучения,
посвященный решению следующей задачи. Имеется множество объектов
(ситуаций), разделённых некоторым образом на классы. Задано конечное
11
множество объектов, для которых известно, к каким классам они относятся.
Это множество называется обучающей выборкой. Классовая принадлежность
остальных объектов не известна. Требуется построить алгоритм, способный
классифицировать произвольный объект из исходного множества [
15
].
Для решения задачи сегментации автомобильного номера было решено
использовать метод ВиолыДжонса. Этот метод показывает отличные
результаты в области сегментации лиц на изображении [16, 17]. Его главным
достоинством считаются точность и скорость обработки изображения.
Автомобильный номер имеет более простую структуру, нежели человеческое
лицо, поэтому ожидается, что и в этой области метод должен показать
хорошие результаты.
Метод ВиолыДжонса использует следующие основные принципы:
● примитивы Хаара;
● принцип сканирующего окна и интегральное представление
изображения;
● бустинг;
● построение каскадов классификаторов.
1.2.1 Признаки. Примитивы Хаара
Признаки, в общем случае, представляют собой отображения области
изображения во множество допустимых значений этих признаков. В методе
ВиолыДжонса
используются
прямоугольные
примитивы
Хаара,
изображенные на рисунке 2.
12
Рис. 2.
Прямоугольные примитивы Хаара
Значение каждого такого признака рассчитывается по формуле
F = Y − X ,
где Y — сумма яркостей пикселей изображения, попавших в белую область
примитива, а X — сумма яркостей пикселей изображения, попавших в
черную область примитива. Для искомого объекта строится вектор признаков
F 1, ..., F n. Таким образом объект записывается как совокупность n
признаков:
obj = (F 1, ..., F n) .
1.2.2 Принцип сканирующего окна и интегральное
представление изображения
В методе ВиолыДжонса используется принцип сканирующего окна.
Процесс обработки сканирующим окном можно описать следующими
пунктами:
1.
Фиксируется размер окна W × H , назначается W max , H max ,
scale_f actor (параметр увеличения окна);
2.
Пока W ≤ W max или H ≤ H max :
2.1.
Сканирующее окно проходит по всему изображению;
2.2.
Для каждого положения окна рассчитываются сотни тысяч
признаков;
13
2.3.
3.
W = W ∙ scale_f actor , H = H ∙ scale_f actor ;
На основе вычислений делается вывод о том в каком из окон
находится искомый объект.
Как видно из пункта 2.2 происходит огромное количество операций.
Для того, чтобы оптимизировать количество вычислений на каждой итерации
вводится понятие интегрального представления изображения.
Это представление очень удобно и эффективно, оно позволяет за
постоянное время рассчитывать суммарную яркость в произвольном
прямоугольнике изображения.
Интегральное представление изображения — это матрица размера
исходного изображения, в каждой ячейке которой хранится сумма яркостей
пикселей, лежащих выше и левее данной ячейки. Элементы этой матрицы
рассчитываются по формуле:
Ф(x, y) =
i<x,j<y
∑ ( I(i, j )) ,
i=0,j=0
где I (i, j ) — яркость пикселя исходного изображения.
Положим, что на изображении имеется некий прямоугольник АБВГ,
сумму яркостей пикселей которого необходимо вычислить (рис. 3).
Рис. 3.
Прямоугольник АБВГ
Для этого нужно воспользоваться формулой:
S (АБВГ) = S(Б) + S(Г) − S(А) − S(В).
Однако, для еще большей оптимизации вычислительных расчетов
используют технологию бустинга.
14
1.2.3 Бустинг. AdaBoost
Бустинг — комплекс методов для повышения точности аналитических
моделей. Бустинг занимается усилением слабых классификаторов путем
построения их композиций. Композиции строятся так, чтобы каждый
следующий классификатор учитывал ошибки предыдущего. На каждом этапе
бустинга производится выбор локально лучшего решения, что постепенно
приводит к глобальному оптимальному решению. Этот метод считается
одним из лучших для достижения хорошего качества.
В методе ВиолыДжонса используется алгоритм AdaBoost (adaptive
boosting),
который
может
использовать
произвольное
число
классификаторов и производить обучение на одном наборе примеров,
поочередно применяя их на различных шагах.
При помощи технологии AdaBoost выбираются примитивы, которые
больше всего подходят для данного типа изображения. Можно представить
классификатор примитива f , как функцию:
где x — классифицируемый объект, f — значение примитива данного
объекта x , g — порог классификации, p — полярность классификатора. На
основе данного определения на каждом шаге выбирается тот примитив,
классификатор которого имеет наименьшее значение ошибки.
Adaboost: алгоритм для выбора классификаторов примитивов
1. Дано множество элементов (x1, y1), ..., (xn, yn) , где xi — рассматриваемое
изображение, yi — переменная для хранения информации о том, есть ли на
15
данном изображении объект или нет: yi = 0 , если на изображении
отсутствует объект, yi = 1 , если на изображении присутствует объект.
2. Назначаются веса wt,i =
1
2m
, для yi = 0 , где m — число отрицательных
образцов (на которых нет искомого объекта), wt,i =
1
2l
для yi = 1 , где l —
число положительных образцов (на которых есть искомый объект).
3. Для каждого t = 1, ...., T :
● Нормируются веса wt,i =
wt,i
n
∑ wt,j
n
, так чтобы ∑ wt,i = 1 ;
i=1
j=1
● Выбирается классификатор с наименьшей ошибкой:
n
E t = min ∑ wi|h(xi, f , p, g) − yi|;
i=1
● Определяется классификатор ht(x) = h(x, f t, pt, gt) , где f t, pt, gt
значения на которых достигается E t ;
1−Et
● Обновляются веса: wt,i+1 = wt,i ∙ zt
, где E t = 0 , если xi определен
E
корректно, иначе E t = 1, где zt = 1−Et t
4. Получается итоговый классификатор:
После работы алгоритма остаются только те примитивы, на которых
было получено ненулевое значение функции классификатора.
16
1.2.4 Построение каскада классификаторов
Каскадная
модель
классификатора
представляет
собой
последовательность нескольких классификаторов. На нижних уровнях
каскада
используются
более
слабые классификаторы. Под этим
подразумевается использование меньшего количества примитивов. Чем выше
уровень каскада, тем большее количество примитивов используется для
классификации объекта. Это делается для наиболее быстрого отсеивания
окон с нехарактерными для номера признаками. Только окно, прошедшие
через все уровни каскада объявляется содержащим искомый объект. Ход
работы каскада можно увидеть на рисунке 4.
Рис. 4.
Схема работы каскадного классификатора
1.3 Преобразование Хафа
Суть преобразование Хафа заключается в поиске всех белых точек на
бинарном изображение. Через каждую точку проводятся несколько прямых.
Для каждой из прямых создается счетчик — некий показатель количества
белых точек бинарного изображения, которые попали на данную прямую.
Прямая на плоскости задается следующим способом:
x ∙ cosθ + y ∙ sinθ = R ,
17
где R — длина перпендикуляра, опущенного из начала координат на прямую
(ограничивается размерами входного кадра),
θ
— угол между
перпендикуляром и осью Ox (лежит в промежутке от 0 до 2 π ).
Через
каждую точку (x, y) входного кадра проводятся все возможные прямые с
разными значениями R и θ
. Таким образом точке (x, y) изображения
ставится в соответствие набор точек в фазовом пространстве (R, θ) . Для
каждой точки (R0, θ0) фазового пространства (R, θ) создается счетчик,
отвечающий за количество точек (x, y) , лежащих на прямой с параметрами
R0 и θ
.
0
Параметризация Хафа заключается в наложении сетки на непрерывное
фазовое пространство (R, θ) для его дискретизации.
Сетка подразумевает
под собой набор ячеек, в которых хранятся прямые, параметры Ri и θ
i
которых близки. Параметры R и θ ячейки характеризуются как средние
значения параметров Ri и θ
i точек, попавших в эту ячейку. Далее для каждой
белой точки изображения ищутся ячейки в фазовом пространстве (R, θ) и
увеличивается счетчик. Когда будет совершен обход по всем точкам
бинарного изображения, фазовое пространство заполнится и будет
необходимо выбрать наиболее вероятные прямые
— те, которые содержат
наибольшее количество точек изображения. Это можно сделать путем ввода
порога:
ячейки, значение счетчиков которых выше этого порога объявляются
истинными прямыми
— остальные отбрасываются. Однако, при таком
подходе может появиться много прямых, которые проходят через “почти
одинаковые” точки. Такие прямые можно считать повторяющимися и
необходимо исключить их. Достигается это при помощи следующих шагов:
1. Ищется ячейка с максимальным значением счетчика. Если это
значение меньше порога, выход;
2. Прямую соответствующую найденной ячейки ( R ’ , θ’) принять за
истинную;
18
3. Ищутся белые точки на исходном бинарном изображении, лежащие на
найденной прямой.
4. Найденные точки необходимо перекрасить в черный цвет, и для
каждой прямой
проходящей
через
эти
точки
найти
соответствующую точку в фазовом пространстве (R, θ) и уменьшить
на 1 счетчик соответствующей ячейки.
5. Переход на шаг 1.
Все оставшиеся прямые наносятся на исходное изображение.
1.4 Сверточные нейронные сети
Сверточная нейронная сеть представляет из себя особый вид
искусственных нейронных сетей. Она нацелена на распознавание образов на
изображении. В сверточных сетях используется однонаправленная,
многослойная структура сети, ее особенностью является использование
чередования сверточных и субдискретизирующих слоев, что позволяет
распознавать сложные иерархические признаки, а также использования
полносвязных слоев на выходе. Благодаря этому удаётся объединить три
архитектурные идеи для достижения инвариантности к сдвигу и искажению
входного изображения: локальное восприятие, разделяемые веса и
пространственная субдискретизация.
1.4.1 Описание понятий “локальное восприятие”, “разделяемые
веса”, “пространственная субдискретизация”
Локальное восприятие
. Под этими словами подразумевается, что на
вход каждого нейрона подается не полное изображение, а только некоторые
его области. Для этого используются специальные поля, которыми
19
“пробегают” по исходному изображению и на вход нейронам следующего
слоя подаётся информация только о содержимом данных полей. Это
позволяет не только уменьшить объем вычислительных операций но и
сохранить топологию изображения от слоя к слою. При такой подаче
информации на нейроны учитываются более тонкие свойства входного
изображения, благодаря которым удаётся повысить качество распознавания
образа.
Разделяемые веса
. В многослойном персептроне описывается каждая
связь нейрона текущего слоя с нейроном предыдущего слоя. Изза этого
возникает большое количество обучаемые параметров — весовых
коэффициентов, которые приписываются к каждой из связей. В сверточной
нейронной сети все нейроны одной карты признаков имеют одинаковые
весовые коэффициенты. Обычно это матрица размера 5 × 5 (ядро свертки).
Количество весовых коэффициентов при этом составляет 25. При обучении
сверточной нейронной сети необходимо менять только элементы матрицы
весов, в то время как у многослойного персептрона корректируется вес
каждой связи, поэтому обучение сверточной нейронной сети проходит во
много раз быстрее. Для иллюстрации можно рассчитать количество
настраиваемых параметров для связи изображения 30 × 30 с 6ю нейронами
следующего слоя. В сверточной нейронной сети количество таких
параметров равно 25, а в многослойном персептроне 30 ∙ 30 ∙ 6 = 5400 .
Благодаря особенности архитектуры сверточной нейронной сети при таком
ограничении количества весовых коэффициентов точность распознавания не
уменьшается.
Пространственная
субдискретизация
. Суть
субдискретизации
заключается в пространственном уменьшении размера уже существующих
карт признаков, что позволяет сети добиться инвариантности к масштабу
входного изображения.
20
1.4.2 Понятия сверточного, субдискретизирующего и
полносвязного слоёв
Сверточный слой
. Описание работы этого слоя можно описать
несколькими шагами:
1. Входное изображение подаётся на слой;
2. Формируется матрица весов (ядро свертки), которая кодирует
какойлибо признак, например прямую под определенным углом или
др.;
3. Входное изображение сворачивается матрицей весов: фрагмент
изображения умножается поэлементно на ядро свёртки, результат
суммируется. Центр приложения ядра свертки сдвигается на k
пикселей.
4. Результат шага 3 направляется в функцию активации нейрона,
отвечающего за пиксель, находящийся в центре приложения ядра
свёртки к фрагменту входного изображения.
5. Если изображение свернуто не полностью, то вернуться к шагу 3,
иначе — переход на следующий слой.
Как правило, используют несколько ядер свертки, это позволяет сделать
нейронную сеть многомерной, выявить большее количество разных
признаков, а соответственно, увеличить качество распознавания.
Субдискретизирующий слой
. После работы сверточного слоя имеется
набор карт признаков. Субдискретизирующий слой служит для уменьшения
размера этих карт, с целью увеличению скорости работы сети и достижения
инвариантности к масштабу входного изображения. Работу этого слоя можно
описать несколько шагами:
1. Задается сетка субдискретизации;
21
2. В каждой ячейки сетки субдискретизации выбирается или нейрон с
максимальным значением функции активации на предыдущем слое,
или среднее арифметическое от суммы значений функций активации
нейронов предыдущего слоя;
3. Результат шага подаётся на вход следующего слоя.
Полносвязный слой
. Этот слой представляет из себя структуру, в
которой каждый нейрон имеет связь со всеми нейронами предыдущего слоя.
Такие слои используются в классическом персептроне.
1.4.3 Обучение сети
В качестве функции ошибки сети выступает функция:
E = 12 ∑(yk − dk)2 ,
где yk
— ожидаемое значение выходного сигнала, dk
— реальное значение
выходного сигнала. Для ее минимизации функции ошибки используются
градиентные методы спуска. В основу этих методов входит расчет градиента
функции ошибки, что представляет из себя сложную задачу.
В
сверточных
нейронных
сетях
используется
метод
обратного
распространения ошибок
— итерационный метод вычисления компонент
градиента функции ошибки. Для визуального представления можно
обратиться к рисунку 5.
22
Рис. 5.
Визуальное представление сети
yqj = f
Sq−1
( uqj ) = f
( ∑ wij ∙ yq−1
),
i
i=1
где yqj
— выход j го нейрона qго слоя, f
— функция активации нейрона,
S q−1
— количество нейронов (q − 1) − го слоя, wij
— вес связи i го нейрона
с j ым. Необходимо вычислить компоненты градиента функции ошибки E :
∂E
∂wij
∂E
= ∂y
q
j
dyjq
∂ujq
j
ij
∂E
∙ duq ∙ ∂wq = ∂y
q
j
∙ f `( uqj ) ∙ yq−1
.
i
∂E
Неизвестным компонентом является этого равенства является ∂y
q .
Для того,
j
чтобы его рассчитать необходимо рассмотреть 2 случая:
● q
—
выходной слой;
● q
—
не выходной слой.
В первом случае этот компонент рассчитывается просто по формуле:
∂E
∂yjq
=
( yqj − dj )
23
в силу вида функции ошибки.
Во втором случае функция ошибки E представляется как функция
нескольких переменных:
E (yqj ) = E (yq+1
(yqj ), ..., ySq+1(yqj )) ,
1
q+1
∂E
∂yjq
Sq+1
=∑
p=1
∂E
q+1
∙ f `( uq+1
p ) ∙ wjp .
∂yq+1
p
Для вычисления градиента методом обратного распространения
ошибок необходимо выполнить несколько шагов:
1. Сигнал xl = (x1l , ..., xnl ) пропускается по сети и для каждого нейрона
вычисляются значения uqj =
Sq−1
∑ wij ∙ yq−1
, f (uqj ) и f `(uqj ) ;
i
i=1
∂E
2. На выходном слое вычисляется ∂y
q = (
yqj − d lj ) и рассчитывается
j
“локальный градиент” по формуле:
∂E
δqj = ∂y
q
j
∙ f `(uqj ) ;
3. По слоям от последнего к первому рассчитываются “локальные
градиенты” для всех оставшихся нейронов по формуле:
δqj
Sq+1
q+1
q
= ( ∑ δq+1
p ∙ wjp ) ∙ f `(uj ) ;
p=1
4. Вычисляются все компоненты градиента функции ошибки по формуле:
∂E
∂w ij
= δqj ∙ yq−1
.
i
24
Глава 2. Практическая часть
В данной главе рассматривается применение методов, описанных в
первой главе к задачам локализации автомобильного номера, его
нормализации, а также выделения и распознавания символов. Этапы
реализованы на языке программирования C++ с использованием библиотеки
компьютерного зрения OpenCV, а также фреймворка глубинного обучения
Caffe.
Рассмотрим процесс реализации поэтапно.
2.1 Локализация автомобильного номера на изображении
На данном этапе было решено рассмотреть и сравнить 2 подхода к
решению данной задачи: использовать детектор границ Канни и метод
ВиолыДжонса.
2.1.1 Использование детектора границ Канни
Для выделения номера было предпринято несколько шагов:
● Изображение было переведено из формата RGB (каждый пиксель
изображения имеет три яркостных компонента — красный, зеленый,
синий, которые лежат в промежутке от 0 до 255) в градации
серого(каждый пиксель имеет один яркостный компонент в
промежутке от 0 до 255) при помощи следующей формулы [18]:
I gray = 0.299R + 0.587G + 0.114B ,
(1)
где I gray — изображение в градациях серого, R, G, B — компоненты,
отвечающие за красный, зеленый и синий цвета соответственно. Это
необходимо для уменьшения объема вычислительных операций и
ускорения обработки изображения
25
● Применить детектор границ Канни. Для этого используется функция
“Canny” с параметрами:
○ InputArray image
—
входное изображение в оттенках серого;
○ OutputArray edges
—
выходное изображение с границами;
○ double threshold1
—
нижний порог;
○ double threshold2
—
верхний порог.
Результат работы можно увидеть на рис. 6.
Рис. 6.
Результат работы детектора границ Канни
● После работы детектора Канни возникают ситуации, когда контур
автомобильного номера не является замкнутым. Для того чтобы это
исправить, следует применить последовательно дополнительные
фильтры: наращивание и эрозию. В данном случае смысл наращивания
заключается в утолщении контуров, что позволяет соединить
“разорвавшиеся границы”. Эрозия служит для возврата изображению
исходной толщины контуров. Результаты этих операций можно
увидеть на рис. 7. Функция наращивания “dilate” c параметрами:
○ InputArray src
—
входное изображение;
○ OutputArray edges
— выходное изображение утолщенными с
границами;
○ InputArray kernel
—
структурный элемент свертки;
26
○ int iterations=1
—
количество итераций.
Функция эрозии “erode” имеет аналогичные параметры.
Рис. 7.
Результат работы комбинации наращивания и эрозии
Шаги 13 позволили выделить и замкнуть все границы на изображении.
Однако, для того чтобы выделить автомобильный номер, необходимо
произвести дополнительный анализ изображения. Рассмотрим стандартный
автомобильный номер (рис. 8):
Рис. 8.
Стандартный автомобильный номер
27
Длина 520 мм, ширина 112 мм. Из этих соображений можно сделать
вывод о свойствах, которым должен удовлетворять контур.
Необходимо
упомянуть
о
некоторых
инвариантных
для
масштабирования признаков прямоугольников:
● отношение площади прямоугольника к квадрату периметра (в данном
случае это отношение равно 27,43 )
● отношение длины прямоугольника к его ширине (в данном случае это
отношение равно 4,64)
В силу инвариантности можно вывести критерий: в зависимости от
поворота номера отношение площади замкнутого контура к квадрату
периметра этого же контура должно находится в промежутке от 27 до 28.
Однако, этого не достаточно для отбрасывания всех ненужных
выделенных контуров. Было решено использовать второй инвариантный
признак. Положим, что номер может быть наклонен в вертикальной и
горизонтальной плоскостях не более чем на 60 градусов. В этом случае
отношение длины прямоугольника, окаймляющего номер к его ширине
может колебаться в промежутке от 2 до 6.
На рисунке 9 можно увидеть примеры правильной работы метода.
Рис. 9.
Иллюстрации успешной работы метода
28
На рисунке 10 можно увидеть примеры неправильной работы метода.
Рис. 10..
Иллюстрации неудачной работы метода
2.1.2 Использование метода ВиолыДжонса
Для выделения номера было предпринято несколько шагов:
1. Сформировать тренировочное и тестовое множество и обучить
классификатор, однако в OpenCV уже есть обученный классификатор
для автомобильных номеров [19]. Он хорошо справляется с
поставленной задачей, поэтому в рамках этой работы было решено
использовать именно его;
2. Перевести изображение в оттенки серого по формуле (1);
3. Передать изображение на вход обученному классификатору. Для этого
необходимо
воспользоваться
функцией
“detectMultiscale”
с
параметрами:
○ const Mat& image
— входное изображение;
○ vector<Rect>&objects
— вектор, хранящий координаты и
размеры прямоугольников, окаймляющих область с номером;
○ double scaleFactor
— коэффициент увеличения сканирующего
окна;
29
○ int minNeighbors — коэффициент для фильтрации найденных
прямоугольников (отбрасываются прямоугольники с близкими
координатами и размерами)
○ Size minSize
— минимальный размер сканирующего окна;
○ Size maxSize
— максимальный размер сканирующего окна.
На выходе из классификатора получается массив с координатами и
размерами прямоугольника, окаймляющего автомобильный номер.
На рисунке 11 можно увидеть примеры правильной работы метода.
Рис. 11.
Иллюстрации успешной работы метода
На рисунке 12 можно увидеть примеры неправильной работы метода.
Рис. 12.
Иллюстрации неудачной работы метода
30
2.1.3 Тестирование алгоритмов
К сожалению, отсутствует открытая база, по которой можно было бы
сверить полученные результаты с другими работами. поэтому для
тестирования метода было выбрано 50 случайных изображений. Размер
изображений варьировался от 400 × 300 до 1024 × 768 пикселей. Выборка
представляет из себя фотографии автомобилей с чистыми, загрязненными и
повернутыми на небольшой угол номерами.
Скорость
детектирования
с
использованием
классификатора
колебалась в пределах от 0,08 до 0,4 секунд. Не смотря на большой выигрыш
по времени локализации номера методом контурного анализа, в плане
качества он показал лишь 40% верно выделенных номеров, в то время как
точность классификатора составила 96%. Анализ контуров оказался плохо
устойчив к ситуациям, когда автомобильный номер загрязнен, повернут, а
так же в ситуациях с автомобилями белого цвета номера сливаются с
окраской кузова и не всегда удается выделить нужные границы. Стоит
отметить, что при определенной регулировке параметров метода, так или
иначе удавалось выделять номера практически на любых изображениях,
однако, подобрать универсальных параметров не представилось возможным.
Метод ВиоллыДжонса оказался более устойчив к искажениям подобного
рода, однако стоит отметить, что метод сильно зависим от обучающей
выборки. Если в качестве отрицательных примеров выступает городская
местность, то процент верной локализации на, например, сельской местности
может падать. Средние показатели скорости и точности детектирования
можно увидеть в таблице 1. Показатели скорости рассчитывались замером
времени обработки каждого элемента выборки, а затем получения среднего
арифметического суммы этих величин. Под точностью подразумевается
количество верно детектированных номеров поделнное на общее количество
номеров на изображениях.
31
Таблица 1.
Показатели алгоритмов
Средняя скорость алгоритма
Точность алгоритма
Контурный анализ
0,09 секунды
40%
Метод ВиолыДжонса
0,28 секунды
96%
В связи с результатами, было решено разработать некую
модификацию, основанную на применении обоих подходов, которая
позволит оптимизировать время, затраченное на обработку кадра.
2.1.4 Модификация алгоритма локализации автомобильного
номера
Имеется входной кадр, представляющий собой матрицу пикселей
размера n × m. Необходимо отделить от входного изображения области, в
которых вряд ли присутствует номер, что позволит уменьшить размер
изображения, а, соответственно, ускорить работу классификатора.
Для достижения поставленной цели было предпринято несколько
шагов:
1.
Изображение было переведено в оттенки серого по формуле (1);
2.
Следующим шагом является применение детектора границ Канни.
Полученное изображение необходимо сильно сгладить, то есть
применить к нему фильтры размытия, для того, чтобы мелкие детали,
например, листья на заднем фоне, звезды на небе и другие шумы были
подавлены при последующем поиске контуров на изображении. Это
достигается при помощи фильтра Гаусса с ядром 9 × 9. В OpenCV
фильтр представляется функцией “GaussianBlur” с параметрами:
○ InputArray src
— входное изображение;
32
○ OutputArray dst
— результирующее изображение;
○ Size ksize
— размер ядра свертки.
Размер
ядра
был
подобран
экспериментально
постепенным
увеличением с размера 3 × 3 до тех пор, пока на изображениях не
оставались только значимые контуры: контуры автомобилей, дороги,
домов, столбов (рис. 13).
Рис. 13.
а) cглаживание с ядром 3 × 3, б) сглаживание с ядром 5 × 5,
в) сглаживание с ядром 7×7, г) сглаживание с ядром 9×9
3.
Обрезанное изображение было получено по следующим формулам:
○ Отступ слева:
Δleft =
1
N
n
∑ ki,
i=1
где ki — номер первого пикселя в i ой строке, значение
которого отлично от 255, ki ∈ (0, m/3] , N — количество ki
=/ 255 ;
○ Отступ сверху:
Δup =
1
N
m
∑ kj,
j=1
33
где k
j — номер первого пикселя в j ом столбце, значение
которого отлично от 255, k
∈ (0, n /3], N — количество k
/ 255;
j
j=
○ Отступ справа:
Δright = m −
1
N
n
∑ kn−i,
i=Δup
где kn−i — номер первого пикселя в (n − i) ой строке, значение
которого отлично от 255, kn−i ∈ (2m/3 , m] , N — количество
kn−i =/ 255 ;
○ Отступ снизу:
Δdown = min(n − kj),
где kj — номер первого пикселя в j том столбце, значение
которого отлично от 255;
Получив значения отступов, можно обрезать изображение и применить
к полученному кадру классификатор. Результаты урезания можно увидеть на
рис. 14, 15.
Рис. 14.
Изначальный размер изображения — 669×378 пикселей. После применения
алгоритма — 456×289 пикселей
34
Рис. 15.
Изначальный размер изображения — 800×600 пикселей. После применения
алгоритма — 586×305 пикселей
Стоит отметить, что данная модификация лучше всего работает на
изображениях большой размерности. Алгоритм направлен на работу с одним
автомобилем в кадре, но в некоторых ситуациях работает и при большем
числе автомобилей в кадре. Результаты работы модифицированного метода
можно увидеть в таблице 2. Расчеты производились на выборке, описанной в
п. 2.1.3.
Таблица 2.
Показатели модифицированного алгоритма
Средняя скорость
Точность алгоритма
алгоритма
Модифицированный
0,15 секунды
96%
алгоритм
2.2 Нормализация локализованной области. Выделение
символов
После
стадии
локализации
номер
необходимо
подвергнуть
нормализации с целью последующего выделения символов. Для этого номер
необходимо повернуть в горизонтальную ориентацию, поэтому было решено
найти прямые, которые лежат на границах номерной пластины. Далее
необходимо рассчитать угол между прямой и горизонтальной осью и
35
повернуть изображение на этот угол. С этой задачей поможет справиться
описанное в первой главе п. 1.3 преобразование Хафа.
После поворота номера можно приступить к выделению символов.
Метод ВиоллыДжонса в плане точности обнаружения объектов на
изображении показал очень хорошие результаты, его минусом служило
время, на обработку изображения, которое сильно зависит от размера кадра.
В данном случае, изображение с локализованным автомобильным номером
имеет небольшой размер по сравнению с полным кадром, поэтому было
решено использовать данный метод для выделения символов.
2.2.1 Поворот номера в горизонтальную ориентацию
Локализованные номера после работы классификатора могут
выглядеть как показано на рисунке 16.
Рис. 16.
Иллюстрация ненормализованных номеров
Для поворота номера было предпринято несколько шагов:
1. Изображение в оттенках серого необходимо бинаризовать. Так как в
процедуре бинаризации принимает участие типовое изображение
(локализованная область с номером), то была выбрана пороговая
бинаризация с эмпирически подобранными параметрами:
В OpenCV это можно сделать с помощью функции “threshold” с
параметрами:
○ InputArray src
—
входное изображение;
○ OutputArray dst
—
выходное изображение;
○ double thresh
—
порог бинаризации;
36
○ double maxval
—
значение присваемое пикселям, значение
которых выше порога;
○ int type
—
тип бинаризации.
2. Для уменьшения объема белых точек необходимо применить детектор
границ Канни;
3. Для
подчеркивания
белых
пикселей
применить
операцию
наращивания;
4. Применить преобразование Хафа. Для этого можно воспользоваться
функцией “HoughLines” с параметрами:
○ InputArray image
—
входное изображение;
○ OutputArray lines
— вектор линий, характеризующийся парой
(ρ, θ), где ρ
— расстояние от левой верхней точки изображения,
θ —
угол поворота прямой в радианах.
○ double rho
—
минимальное разрешенное расстояние;
○ double theta
—
минимальный угол наклона прямой;
○ int threshold
—
порог для счетчика ячеек.
Затем отбросить линии, угол поворота которых, более 45ти
градусов.
5. Найти прямые, проходящие по верхней и нижней границе номера.
○ Если найдены обе прямые, повернуть изображение на среднее
арифметическое
углов
поворота
прямых
относительно
горизонтальной оси
○ Если найдена только одна из прямых, повернуть изображение на
угол поворота найденной прямой относительно горизонтальной
оси
Результаты работы можно увидеть на рис. 17.
37
Рис. 17.
Результат работы поворота номера
2.2.2 Выделение символов
В отличие от детектирования автомобильных номеров, в библиотеке
компьютерного
зрения
OpenCV
отсутствует
готовый
обученный
классификатор для поиска символов. В связи с этим в данном пункте
основной задачей является наиболее эффективное обучение классификатора.
Для обучения необходимо сформировать выборку с положительными и
отрицательными примерами и воспользоваться утилитой библиотеки
OpenCV “
opencv_traincascade.exe
”. Под положительными примерами
подразумевается изображения искомых объектов. Для этих изображений
необходимо создать файл разметки, в котором указывается путь до
обучающего примера и координаты искомого объекта на изображении. В
OpenCV используется стандартный файл разметки следующего содержания
(рис. 18):
,
Рис. 18.
Пример файла разметки
где \...\img.bmp путь до изображения, n количество объектов на
изображении, x, y — координаты левой верхней вершины окаймляющего
объект прямоугольника, w, h — ширина и высота этого прямоугольника.
38
В качестве отрицательных примеров выступают изображения, на которых
отсутствует искомый объект. Для отрицательных примеров файл разметки не
требуется. Иллюстрацию положительных и отрицательных примеров можно
увидеть на рисунке 19.
Рис. 19.
Примеры из обучающей выборки
Было решено опробовать два варианта обучения и выявить какой из
них более эффективный:
1. Обучить классификатор на наборе букв и цифр вместе;
2. Обучить классификатор отдельно на буквах и отдельно на цифрах.
Обучение классификатора на цельном наборе букв и цифр
Для обучения была сформулирована выборка из 1200 положительных
примеров и 300 отрицательных. Обучение происходило в течении 15 часов,
удалось построить 11ти уровневый каскадный классификатор. Результаты
работы обученного классификатора можно увидеть на рис. 20.
Рис. 20.
Результат работы классификатора
39
Как видно, данный классификатор справляется с задачей выделения
символов, однако не всегда это проходит достаточно хорошо. В некоторых
ситуациях цифры и буквы выделяются не полностью или не выделяются
вовсе.
Обучение двух классификаторов на наборах букв и цифр
Для обучения была сформирована выборка из 558 положительных
примеров цифр и 642 положительных примеров букв, а так же по 300
одинаковых отрицательных примеров для каждого из классификаторов.
Каждый из классификаторов обучался около 10 часов и в итоге получилось
построить два 9ти уровневых каскадных классификаторов. Результаты
работы можно увидеть на рис. 21.
Рис. 21.
Результат работы классификатора
Как видно из рис. 21, композиция из двух классификаторов справляется
с задачей намного лучше.
2.2.3 Результаты нормализации и поиска символов на номерной
пластине
В рамках данного параграфа была решена задача выделения символов
на номерной пластине. Оценить математически точность работы методов
представляет из себя трудно осуществимую задачу, однако визуально можно
заметить, что обучение двух отдельных классификаторов работает
значительно лучше. Время, затраченное на обработку кадра можно увидеть
из таблицы 3. В ходе работы было выявлено, что на поворот изображения в
40
горизонтальную ориентацию уходит большое количество времени: в среднем
эта процедура занимает порядка 0,15 секунды.
Таблица 3.
Скорость работы классификаторов
Среднее время работы
Один классификатор
0,025 с
Два классификатора
0,032 с
Однако, без этой процедуры каскадный классификатор дает плохие
результаты (рис. 22).
Рис. 22.
Результат работы классификатора на ненормализованных номерах
В связи с этим, применение нормализации по отношению к повороту
является обязательным требованием.
2.3 Распознавание символов
Существует множество методов для распознавания символов.
Особенность номерной пластины заключается в том, что цифры и буквы
представлены стандартным шрифтом, а мощность алфавита составляет 13
букв и 10 цифр. Буквы и цифры стандартного шрифта представляют из себя
не сложный объект. В связи с этим, одним из самых популярных подходов
для распознавания символов с автомобильного номера является шаблонный
метод. Этот метод в теории должен хорошо справляться с задачей
распознавания. По проведенным исследованиям [20, 21, 22] точность
распознавания составляет 8598%, а время распознавания при этом
варьируется от 1 до 3 мс для каждого символа.
41
Не так давно был изобретен мощный аппарат для работы с
распознаванием образов — сверточные нейронные сети. В данной работе
было решено опробовать этот инструмент с целью увеличения скорости и
точности распознавания символов с номерной пластины.
2.3.1 Обучающая выборка. Предобработка данных
Для обучения сети была использована база нарезанных номерных
символов [
23
]. Она включает в себя 7856 изображений с буквами и 7789 с
цифрами. Так как на номерных пластинах используется лишь 12 букв: А, В,
Е, К, М, Н, О, Р, С, Т, У, Х, то в среднем на каждую из них пришлось по 650
изображений.
В базе присутствуют изображения разных размеров, форматов:
цветные и в оттенках серого. Однако, отсутствует буква “О”, но в силу ее
схожести с нулем и стандартном расположении символов на пластине, было
решено не делать между ними отличия. На вход сверточной нейронной сети
необходимо подавать обучающие примеры одного размера и цветового
формата, поэтому все изображения были приведены к размеру 25 × 20 и
переведены в градации серого (рис. 23).
Рис. 23.
Результат работы классификатора
Множество изображений символов было разделено на тестовое и
обучающее множество. По 1000 тестовых изображений и по 6856 и 6789
обучающий примеров для букв и цифр соответственно.
42
2.3.2 Архитектура сети
С целью увеличения точности результата было решено обучить 2 сети:
первую на буквах, вторую на цифрах. Архитектуры обеих сетей аналогичные
и представляются из себя следующую последовательность слоёв:
входной сверточный субдискретизирующий сверточный
субдискретизирующий полносвязный полносвязный.
Таблица 4.
Эксперименты с архитектурами сети
Архитектура
Точность
Средняя скорость работы
буквы / цифры
12424484850012
100% / 100%
0,001 с
12020404040012
100% / 100%
0,0009 с
11515303030012
100% / 100%
0,0006 с
11010202020012
100% / 100%
0,0003 с
155101010012
99,8% / 99,9%
0,0002 с
Сети обучались на протяжении двадцати эпох. Были проведены
эксперименты с варьированием количества карт на свёрточном слое и
количества нейронов на полносвязных слоях. Результаты экспериментов
можно увидеть в таблице 4. Значения получены при помощи утилиты
библиотеки Caffe.
43
Было решено выбрать архитектуру, показывающую наибольшую
точность при наименьшей затрате по времени. Ее детальное описание можно
увидеть в таблице 5.
Таблица 5.
Подробное описание архитектуры сети
Слой
Тип
Количество карт и нейронов
Ядро
0
входной
1 карта 25 × 20 нейронов
1
сверточный
10 карт 21 × 16 нейронов
5 × 5
2
cубдискретизирующий
10 карт 11 × 8 нейронов
2 × 2
3
сверточный
20 карт 9 × 6 нейронов
3 × 3
4
cубдискретизирующий
20 карт 5 × 3 нейрона
2 × 2
6
полносвязный
200 нейронов
7
полносвязный
12 / 10
буквы / цифры
нейронов
В данных сетях использовалась функция активации ReLu (рис. 24):
f (x) = max(0, x).
Рис. 24.
График функции ReLu
Ее выбор обусловлен тем, что в отличие от сигмоидальной и тангенциальной
функций активации (более классических), она не приводит к затуханию или
44
сильному увеличению градиентов на стадии обучения, а так же расчет ее
значений требует меньше вычислительных операций. В некоторых случаях
применение данной функции активации увеличивает скорость процесса
обучения до 6 раз [
24
]. Ее минусом служит “вымирание” нейронов на cтадии
обучения при большом шаге обучения, однако, это проблема решается
выбором оптимального шага.
Для распознавания символов с номерной пластины необходимо
проделать несколько шагов:
1. Вырезать локализованные цифры и буквы с номерной пластины. Так
как использовалось 2 отдельных классификатора для их поиска, то не
представляет труда отличить буквы и цифры, а также порядок их
встречи на номерной пластине. Область характеризуется как
прямоугольник с координатами (x, y) его верхней левой точки,
длинной и шириной. Для получение порядка встречи символов на
номерной пластине прямоугольники необходимо отсортировать по
возрастанию координаты x ;
2. Полученные изображения масштабировать к размерам 25х20;
3. Подать изображения цифр и букв на соответствующие обученные
нейронные сети.
2.3.3 Результаты
Построена архитектура сверточной нейронной сети, при которой на
тестовой выборке из 1000 изображений достигается точность 100% верных
распознаваний, в то время как распознавание символов с номерной пластины
шаблонным методом показывает точность до 98%. Подобрана архитектура,
при которой скорость распознавания одного символа составляет 0,3 мс, что
примерно в 3 раза быстрее скорости шаблонного метода.
45
Выводы
В ходе работы были получены следующие результаты:
● На этапе локализации номера были рассмотрены 2 подхода к решению
задачи, а также разработана модификация, оптимизирующая время
обработки кадра. Достигнута приемлемая точность детектирования
автомобильных номеров на изображении. Среднее время локализации,
полученное на тестовой выборке составило 0,15 секунды, а показатель
точности 96%.
● На этапе нормализации и выделения символов удалось найти решение,
позволяющее выделять символы с локализованной номерной пластины,
однако, при нормализации затрачивается большое количество
временных ресурсов. Совершены попытки выделения символов без
предварительной нормализации изображения, но в этом случае многие
символы не были удачно локализованы. В связи с этим, было решено
оставить нормализацию в убыток скорости обработки, но в пользу
качества.
● На этапе распознавания локализованных символов построена
архитектура сверточной сети, показывающая среднюю скорость
распознавания 0,3 мс для одного символа. При этом на тестовом
множестве
обученная
сеть
показала
результаты
точности
распознавания 100%.
На основании полученных результатов можно сказать, что выбранные
методы хорошо подходят для решения задачи идентификации автомобиля по
его номеру.
46
Заключение
В рамках данной работы был получен модифицированный алгоритм
сегментации и распознавания автомобильных номеров, позволяющий
оптимизировать время и точность процесса идентификации автомобилей. На
этапе
локализации
разработан
метод,
позволяющий
использовать
преимущества разных подходов, и достигать хороших показателей как по
точности, так и по скорости обработки. На шаге нормализации и поиска
символов на номерной пластине было подобрано решение, дающее
приемлемые результаты. На стадии распознавания выделенных символов
подобрана такая архитектура сверточной нейронной сети, при которой
удается достигать наилучших результатов в соотношении скорости к
качеству распознавания символов. Реализацию некоторых методов можно
увидеть в приложении [25].
Разработанное решение, благодаря своей высокой скорости обработки
кадра, может использоваться на машинах, не обладающими большими
вычислительными
возможностями,
например,
на
телефонах
и
видеорегистраторах.
47
Список литературы
1.
Касьян К.Н., Братчиков В.В., Шкарупило
модифицированного
метода
распознавания
В.В. Разработка
текста
на
стандартизированном изображении //
ВосточноЕвропейский журнал
передовых технологий
, 2015, Том 3, № 2, С. 11–17;
2.
М. Омар, Ф. Омар, М. И. Исмоилов, А. В. Остроух Применение систем
распознавания образов в различных предметных областях //
Автоматизация и управление в технических системах , 2014, № 4,
С. 32
–
47
3.
А.Н. Талбонен, А.А. Рогов, А.В. Калинин, А.О. Тимонин
Автоматизация контроля численности целевых объектов фауны с
помощью аэрофотосъёмки //
Фундаментальные исследования
, 2015, №
62, С. 291
–
295
4.
ДТП на Wikipedia:
https://ru.wikipedia.org/wiki/Дорожнотранспортное_происшествие;
5.
Библиотека компьютерного зрения OpenCV: http://opencv.org/
6.
Caffe. Deep learning framework by the BVLC:
http://caffe.berkeleyvision.org/
7.
Duda, R. O., P. E. Hart Use of the Hough Transformation to Detect Lines
and Curves in Pictures // Comm. ACM, 1972, Vol. 15, P. 11–15;
8.
S. R. Deans The Radon Transform And Some Of It’s Applications, Dover
publications, INC., 1993, 304 p.;
9.
R. Brunelli Template Matching Techniques In Computer Vision: theory and
practice, John Wiley & Sons Ltd, 2009, 336 p.;
10. Y. LeCun, Y. Bengio Convolutional Networks for Images, Speech, and
TimeSeries // The handbook of brain theory and neural networks, 1995,
Vol. 3361, No 10, P. 255–258;
48
11. M. Heath, S. Sarkar, T. Sanocki, K. Bowyer Comparison of Edge Detectors
// Computer vision and image understanding, 1998, Vol. 69, No. 1, P.
38–54;
12. G.T. Shrivakshan, Dr.C. Chandrasekar A Comparison of various Edge
Detection Techniques used in Image Processing // International Journal of
Computer Science Issues, 2012, Vol. 9, Issue 5, No 1, P. 269–276;
13. D. P. Argialas, O. D. Mavrantza COMPARISON OF EDGE DETECTION
AND HOUGH TRANSFORM TECHNIQUES FOR THE EXTRACTION
OF GEOLOGIC FEATURES // The International Archives of the
Photogrammetry, Remote Sensing and Spatial Information Sciences, 2004,
Vol. 34, Part XXX;
14. Canny J. F. A computational approach to edge detection // Pattern Analysis
and Machine Intelligence, IEEE Transactions on. 1986. №6. P. 679698.
15. Классификация:
http://www.machinelearning.ru/wiki/index.php?title=Классификация;
16. Viola P.A., Jones M.J. Rapid object detection using a boosted cascade of
simple features // Proceedings of the 2001 IEEE Computer Society
Conference on., 2001. No 1, P. 511–518.
17. Viola P.A., Jones M.J. Robust realtime face detection // International
journal of computer vision, 2004. Vol. 57, No 2. P. 137–154;
18. Grayscale: https://en.wikipedia. org/wiki/Grayscale ;
19. Блог компании Recognitor: https://habrahabr.ru/company/recognitor ;
20. Divya gilly, Dr. Kumudha raimond License Plate Recognition A Template
Matching Method // International Journal of Engineering Research and
Applications. 2013, Vol. 3, Issue 2, P. 1240–1245;
21. Shreeja C., Ranjan P. An Improved Template Matching Algorithm for Car
License Plate Recognition // International Journal of Computer Applications,
2015, Vol. 118, No 25, P. 16–22;
49
22. Saqib R., Asad N., Omer I. Automated Number Plate Recognition Using
Hough Lines and Template Matching // Proceedings of the World Congress
on Engineering and Computer Science, 2012, Vol. 1, P. 199–203;
23. База нарезанных символов: https://yadi.sk/d/U41QZ8v7cpJ6R
24. Krizhevsky A., Sutskever I., Hinton G.E. Imagenet classification with deep
convolutional neural networks // Advances in neural information processing
systems 25, 2012. P. 10971105.
25. Приложение к работе: https://github.com/AlexeyDomnin/VKR
50
Отзывы:
Авторизуйтесь, чтобы оставить отзыв