Выпускная квалификационная работа



Download 1,27 Mb.
Pdf ko'rish
bet8/11
Sana30.06.2022
Hajmi1,27 Mb.
#719864
1   2   3   4   5   6   7   8   9   10   11
Bog'liq
Борисов A.A. MOп-1601a

2.3 Реализации программы 
После определения последовательности выполняемых действий и 
средств реализации, можно приступать к написанию программного кода. 
Первым делом необходимо обучить модель нейронной сети 
распознавать на изображении буквы и определять принадлежность к одной 
из букв алфавита. Для этого необходимо создать функцию и с помощью 
встроенных в библиотеку Keras методов создать и обучить модель. 
Рисунок 2.4 – Листинг кода создания модели нейронной сети 
Сlass Sequential позволяет создавать последовательную группировку 
линейного стека слоев. 
Следующими действиями в созданную модель добавляются следующие 
параметры: 

Convolution2D – позволяет создать слой ядра свертки, который 
позволяет получить тензор выходных данных. Тензор можно представить, 
как многомерную таблицу определенной размерности, заполненную 
числами. Если тензор имеет второй ранг, то его представляют в виде 
матрицы. В данную функцию передается множество параметров, давайте 
разберем их по порядку. Filters – определяет размер выходного пространства, 
другими словами – количество выходных фильтров в свертке. kersel_size – 
определяет размер ядра, первый параметр определяет высоту, а второй 
ширину окна свертки. Input_shape – данная функция преобразует входное 
двумерное изображение размером 28 на 28 пикселей в одномерный массив, 
состоящий из 784 пикселей. Activation = ‘relu’ – функция активации. 
Функция активации необходима для вычисления выходного сигнала нейрона. 


24 
Relu – яыляется выпрямленной линейной функцией активации. Ее формула 
выглядит так: 


MaxPooling2D – устанавливает размер сканирующего окна. 
Данное сканирующее окно проходит по массиву Numpy, позволяя проводить 
точечные операции с исходным массивом. Одной из операций является 
операция сравнения, которая позволяет выделять схожие признаки между 
изображениями. 

Dropout – исключает нейрон с вероятностью, указанной в 
параметрах. Данная методика помогает тем, что вместо обучения одной 
нейронной сети получается ансамбль из нескольких нейронных сетей. 
Данные, полученные из обученных нейронных сетей, потом усредняют, что в 
среднем дает лучший результат, чем при обучении без исключения нейронов. 

Flatten – данный метод объединяет все массивы данных модели в 
один массив. 

Dense – добавляет в нейронную сеть еще один «плотный» слой. 
Плотным слоем называют слой начального уровня, предоставляемый 
надстройкой Keras, который принимает в число нейроном или единиц в 
качестве своего требуемого параметра. 

Compile – данная функция позволяет настроить функции потерь, 
оптимизации и метрики нейронной сети. 
После создания модели, она была обучена распознаванию букв 
английского алфавита при помощи датасета EMNIST, который содержит 
60000 изображений рукописных букв данного алфавита размером 28 на 28 
пикселей. 
Теперь необходимо подготовить изображение для подачи его на вход 
нейронной сети. Для этого после записи в переменную изображения 
переводим изображение в оттенки серого при помощи встроенной в 
библиотеку OpenCV функцию cv2.cvtColor() и передаем в нее такие 
параметры: 

Переменную, с записанным с нее изображением. 


25 

Параметр преобразования изображения. Для того, чтобы 
изображение 
перешло 
в 
оттенки 
серого 
необходимо 
указать: 
cv2.COLOR_BGR2GRAY. OpenCV изначально работает с цветовой палитрой 
blue, green, red (BGR), поэтому параметр преобразования начинается с BRG, 
а не RGB.
Теперь, имея изображение в серых тонах, можно преобразовать его в 
черно-белое изображение. Для этого используется функция cv2.threshold(). 
Параметры для данной функции используются следующие: 

Переменная, с записанным в нее изображением в оттенках 
серого. 

Численное значение яркости цвета, в которое обращаются все 
пиксели, у которых яркость цвета меньше 127 

Численное значение яркости цвета, в которое обращаются все 
пиксели, у которых яркость цвета больше или равна 127. 

Функция, отвечающая за вычисление преобразования цвета. 
После выполнения предыдущей операции мы получили черно-белое 
изображение. Чтобы его контуры стали более четкими, воспользуемся 
функцией cv2.erode(). Параметры, передаваемые функции следующие: 

Переменная, с записанным в нее изображением. 

Структурирующий элемент, который является квадратной 
матрицей какого-либо размера. 

Количество итераций эрозии. 
Выполнив это действие мы закончили подготовку изображения с 
текстом к разбитию написанных на нем слов на буквы. Сделав из входного 
изображения черно-белое, мы облегчили нахождение контуров букв слова. 
Для нахождения контуров букв было решено воспользоваться функцией 
cv2.findContours(), которая пользуется алгоритмом нахождения контуров 
Suzuki85, описанным в начале этой главы. Параметры, передаваемые в 
функцию следующие: 


26 

Переменная, с записанным в нее изображением. 

Режим поиска контуров. Используется cv2.RETR_TREE. Данный 
режим извлекает все контуры на изображении и восстанавливает полную 
иерархию вложенных контуров. 

Метод 
аппроксимации 
контуров. 
Используется 
cv2.CHAIN_APPROX_NONE. Данный метод хранит все точки контура. 
Рисунок 2.5 – Листинг кода преобразований входного изображения 
После нахождения контуров нужно разбить изображение на части, 
содержащие буквы слов. Для этого можно воспользоваться функцией 
cv2.boundingRect(), 
которая 
находит 
значения 
приблизительного 
прямоугольника вокруг найденных контуров изображения. Данная функция 
имеет только один параметр – переменную, с записанным в нее 
изображением, на котором были выделены контуры букв. 
Так как созданная ранее нейронная сеть была обучена распознавать 
буквы английского алфавита размером 28 на 28 пикселей, то необходимо 
изменить размеры букв до размера 28 на 28 пикселей для того, чтобы была 
возможность подать данные изображения на вход сети. Для этого проводится 
сравнение длины и высоты изображения, если они различаются, то 
приводятся к одному значению. Затем с помощью функции cv2.resize(), 
которая имеет следующие параметры: 

Переменная, содержащая изображение буквы. 

Размер выходного изображения. 


27 

Метод интерполяции. Используется cv2.INTER_AREA, который 
использует метод передискретизации и использованием отношения площади 
пикселя. 
Рисунок 2.6 – Листинг кода изменения масштаба вырезанных частей букв 
Далее для удобства все буквы сортируются по координате х. 
Остается только подать подготовленные изображения на вход 
нейронной сети. После того как нейронная сеть определит какие буквы 
находится на изображениях, остается только по очереди вывести полученные 
значения в консоль и расставить пробелы. 
Рисунок 2.6 – Листинг кода перевода символов на изображениях в символы в 
терминале 
На данном этапе функционал программы подходит к концу. 
В данной главе был описан процесс создание алгоритма, способного 
распознать текст на изображении, выбор средств для реализации данного 
алгоритма и сама реализации. В результате выполнения всех действий была 
разработана программная реализация алгоритма распознавания текста, 
который способен получать на вход изображение, обработать и подать его на 


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

Download 1,27 Mb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9   10   11




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish