#matlab #image-processing #neural-network
#matlab #обработка изображений #нейронная сеть
Вопрос:
Я работаю над своим последним проектом. Я решил реализовать NN для распознавания символов.
Мой план состоит в том, чтобы взять 26 изображений, содержащих 26 английских букв, в качестве обучающих данных, но я понятия не имею, как преобразовать эти изображения в качестве входных данных для моей нейронной сети.
Допустим, у меня есть нейронная сеть с обратным распространением с 2 слоями — скрытым слоем и выходным слоем. Выходной слой имеет 26 нейронов, которые производят 26 букв. Я самостоятельно создал 26 изображений (размером 100 * 100 пикселей в 24-битном формате bmp), каждое из которых содержит английскую букву. Мне не нужно делать сегментацию изображений, потому что я новичок в обработке изображений, поэтому не могли бы вы, ребята, дать мне несколько советов о том, как преобразовать изображения во входные векторы в Matlab (или мне нужно выполнить обработку краев, морфологию или другие элементы предварительной обработки изображений?).
Большое спасибо.
Комментарии:
1. Это даже близко не достаточно данных, если вы просто не хотите (более) соответствовать вашему набору обучения. Вам нужно на несколько порядков больше данных. Быстрое чтение любых статей в этой (хорошо изученной) области применения должно убедить вас в этом.
Ответ №1:
Вы NN будете работать, только если буквы совпадают (положение пикселей фиксировано). Вам нужно преобразовать изображения в серый цвет и пикселизировать их. Другими словами, используйте сетку, которая разбивает изображения на квадраты. Квадраты должны быть достаточно маленькими, чтобы получить детали букв, но достаточно большими, чтобы вы не использовали слишком много нейронов. Каждый пиксель (в серой шкале) является входом для NN. Осталось определить способ подключения нейронов, например, топологию NN. Двух слоев NN должно быть достаточно. Скорее всего, вам следует подключить каждый входной «пиксель» к каждому нейрону на первом уровне и каждый нейрон на первом уровне к каждому нейрону на втором уровне
Ответ №2:
Это не дает прямого ответа на заданные вами вопросы, но может быть полезно:
1) Вам понадобится больше обучающих данных. Гораздо больше, если я вас правильно понимаю (только один образец для каждой буквы ??)
2) Это довольно распространенный проект, и если это разрешено, вы можете попытаться найти уже обработанные наборы данных в Интернете, чтобы вы могли сосредоточиться на компоненте NN.
Комментарии:
1. Спасибо пользователю 670416, я пытаюсь разобраться, как конвертировать самостоятельно. Я обнаружил, что, возможно, я могу использовать bitmap. Потому что я студент NN, а не студент по обработке изображений. Я не хочу прилагать больше усилий для создания изображений.
Ответ №3:
Поскольку вы будете выполнять распознавание символов, я предлагаю вам использовать нейронную сеть SOM, которая не требует никаких обучающих данных; У вас будет 26 входных нейронов по одному нейрону на каждую букву. Для бита обработки изображений у Росса есть полезное предложение по выделению каждой буквы.