DushkaF / lubogost

lubogost

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Проект ЛюбоГОСТ команды MOSTЫ

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

Структура репозитория

  • В папке "ПО полётного контроллера" лежит частный случай программного кода для контроллера стабилизации в самолётном режиме. Там же лежит структура алгоритма в формате изображения
  • В папке "OCR" лежат заготовки кода для задачи распознавания символов. Там представлена программа для вырезания интересуемого объекта с изображения и программа классификации символа
  • В папке "Обработка аэродинмики" представленаыпрограммы для обработки результатов и построения графиков по результатам численного моделирования.

Подробнее об OCR

На данный момент есть заготовка программы под задачу OCR, написанная на Python 3, пакета для машинного обучения tensorflow и модуля open-cv для работы с изображениями. На данный момент есть сложности с вырезанием щита с символом, к сожалению не существует универсальных методов для решения этой задачи, а параметры для edge detection алгоритмов ещё не подобраны до конца. Но наш алгоритм уже сейчас при достаточном освещении вырезает щит с буквой под различными углами наклона и приводит изображение к стандартизированному виду, который принимает на вход нейронная сеть.

Изначально для обучения нейронной сети использовался открытый датасет, в котором для каждой буквы приведено всего 20 фотографий. На этом этапе был получен результат только 70% точности, такой результат не является удовлетворительным.

Поэтому был создан датасет в котором каждой букве соответствует уже 320 фотографий и далее применены алгоритмы изменения фотографий для повышения точности работы нейронной сети и расширения датасета до около 1000 фотографий на букву.

Эта модель представляет собой последовательность слоев нейронной сети. Она начинается с двух сверточных слоев, каждый из которых имеет 64 фильтра. Затем следует слой максимального объединения, который уменьшает размерность карт признаков вдвое. После этого применяется слой, который рандомно обнуляет некоторые элементы карты признаков для уменьшения переобучения.

Затем следуют два сверточных слоя, каждый из которых имеет 128 фильтров. После каждого сверточного слоя следует слой максимального объединения, уменьшающий размерность вдвое. Снова применяется слой Dropout.

Далее идет слой, который преобразует карты признаков в одномерный массив. Затем следует полносвязный слой с функцией активации ReLU. Опять используется слой Dropout. Последний полносвязный слой имеет столько нейронов, сколько классов в задаче классификации, и он имеет функцию активации softmax, что позволяет интерпретировать выходные данные как вероятности отнесения объекта к каждому из классов.

В результате была получена система, классифицирующая символы с вероятностью около 98%.

About

lubogost


Languages

Language:Jupyter Notebook 65.9%Language:C++ 27.1%Language:C 7.0%