Mahdi_it Ответов: 3

Распознавание символов в языке Си


Ребята, у меня есть проект по распознаванию символов с помощью ARM-платы landTiger NXP LPC1768 с сенсорным экраном и так далее. У меня нет опыта в выполнении такого проекта, но для меня это жизненно важно. может ли кто-нибудь дать мне некоторые основные идеи о том, как начать и разработать необходимый код, пожалуйста? любые ресурсы могут быть полезны. Я заранее ценю ваши комментарии.

Что я уже пробовал:

Я заметил, что подобный вопрос задается здесь, и этот сайт предлагается: http://jocr.sourceforge.net

3 Ответов

Рейтинг:
2

Stefan_Lang

Я только что просмотрел спецификации этой платы и могу сказать вам, что если вы действительно ограничены памятью 512 КБ, вам будет трудно запустить нейронную сеть, и, конечно же, способную распознавать символы!

Я могу говорить о личном опыте: 30 лет назад я использовал то, что тогда считалось мощной рабочей станцией, с 16 МБ оперативной памяти и скоростью обработки порядка 30-50 МГц. Процессор, который у вас есть, может быть быстрее, но доступная память-это далеко не то, что вам нужно для распознавания символов.

Тогда мы вручную создали очень специальную структуру нейронной сети, потому что нам нужно было сохранить память. Много позже мы узнали, что другие делали то же самое, и назвали это Сверточная нейронная сеть - Википедия[^] . Это "всего лишь" требовало около 4 МБ оперативной памяти, оставляя нам достаточно места для хранения учебных наборов примерно из 20 различных компьютерных шрифтов. В конце концов мы смогли распознать большинство символов из дюжины других шрифтов, которые мы отложили для тестирования. Обратите внимание, что все это были компьютерные шрифты, а не рукописные, и нам не требовались отдельные алгоритмы (и память) для выделения контуров отдельных символов из середины рукописного слова.

Нам троим потребовалось несколько месяцев, чтобы заставить это работать в наше свободное время (IIRC около 30 часов в неделю в среднем), и все мы уже имели опыт проектирования и программирования нейронных сетей, C++ (не C!) и параллельного программирования.

Tl;dr: это чертовски трудная работа, особенно если вы собираетесь сделать это самостоятельно, без предварительного знания темы(ОВ) под рукой. И это почти невозможно с менее чем 10 МБ оперативной памяти. Даже не упоминайте о рукописных символах.


Mahdi_it

- Спасибо, старик. На самом деле мы два студента и должны делать этот проект вместо экзамена. Я также спросил других экспертов, и все они говорят мне, что плата, возможно, не способна справиться с этой работой. специально используя C, это очень сложно, некоторые предлагают нам использовать малиновую плату и делать это с помощью ОС и python. Я думаю, что это может быть намного проще.

Stefan_Lang

Вы можете найти много кода для ANNs, и я подозреваю, что, возможно, кто-то сделал это и на C тоже. Однако, если я правильно прочитаю эти спецификации, у вас просто закончится память. Хотя сверточная нейронная сеть действительно экономит вам много памяти и вычислительной мощности, я не знаю ни одной реализации языка Си. И у тебя все равно кончится память.

Как я уже сказал: это все личный опыт, восходящий к тому времени, когда нас действительно учили сохранять память, вплоть до битов. Если вы можете подключить около 16 Мб или больше оперативной памяти, и предпочтительно по крайней мере столько же того, что вы используете в качестве постоянной памяти, то это может сработать. Но до тех пор я предлагаю сначала заставить его работать на стандартном ноутбуке или ПК, прежде чем пытаться переместить его на такое ограниченное устройство!

Рейтинг:
2

OriginalGriff

Так что иди туда и начни читать.

Это сложная тема, и вам, вероятно, придется сделать много работы, чтобы получить его и запустить.
Но... у вас есть отправная точка - так что идите туда, начните читать и подумайте о том, как это должно быть адаптировано к вашим аппаратным и программным требованиям (о которых мы понятия не имеем - "у меня есть проект по распознаванию символов с помощью платы landTiger NXP LPC1768 ARM с использованием сенсорного экрана и так далее" ничего не говорит нам о том, чего вы пытаетесь достичь). Если выяснится, что есть веские причины, по которым это не сработает, Google найдет вам другие - их там несколько!

Затем запустите его, как и любой другой проект: обзор, спецификация программного обеспечения, спецификация теста, дизайн, код, тест, повторение.
Мы не можем сделать это для вас!


Mahdi_it

Большое вам спасибо за вашу помощь.

OriginalGriff

Всегда пожалуйста!

Рейтинг:
13

Mahdi_it

Огромное спасибо.