Контрольная работа: Нейронная сеть Хемминга

Контрольная работа: Нейронная сеть Хемминга




👉🏻👉🏻👉🏻 ВСЯ ИНФОРМАЦИЯ ДОСТУПНА ЗДЕСЬ ЖМИТЕ 👈🏻👈🏻👈🏻




























































Национальный технический университет Украины
"Киевский политехнический институт"
По дисциплине "Интеллектуальные системы"
по теме: "
Нейронная сеть Хемминга "

1. Реализация сети. Входные символы
3. Локализация и масштабирование изображения
Цель: Создать программную реализацию статической нейронной сети Хемминга, распознающей символы текста.

Для определения общих параметров НС - несколько констант:
const int iSourceSize=100; // Размер стороны исходного изображения const int iDestSize=40; // Размер стороны изображения для распознавания const int N=iDestSize*iDestSize; // Сколько входов const int M=10; // Сколько образов const float e=- (1/M) /2; // Вес синапсов второго слоя
Размер входного образа (bmp-файл) должен быть 100х100 точек (параметр iSourceSize), а перед обработкой он приводится к размеру 40x40 (параметр iDestSize). Таким образом, количество входов сети - 1600 (один вход - одна точка изображения; параметр N). Количество выходов M совпадает с количеством цифр и равняется 10. Вес отрицательной обратной связи второго слоя был принят равным - 0.05.
Каждый нейрон представляется в виде простой структуры. Слой - это просто массив нейронов. Первый слой:
struct InputNeiron // Тип - нейрон первого слоя { float fW [N] ; // Весовые коэффициенты синапсов float fOutput; // Выход };
InputNeiron InputRow [M] ; // Это - первый слой
struct Neiron // Тип - нейрон второго слоя { float fOutput; // Выход float fSum; // Взвешенная сумма входов };
Neiron SecondRow [M] ; // Это - второй слой
Здесь уже нет смысла хранить значения отдельных весов, т.к они не меняются на протяжении всей работы сети.
После процедуры обучения списки весовых коэффициентов синапсов первого слоя будут содержать образы эталонных символов.
Алгоритм обучения сети Хэмминга, адаптированный для данной задачи
, выглядит так:
2. Изображение локализуется и приводится к нужному масштабу.
3. Образ поточечно подаётся на входы i-го нейрона. Если k-я точка образа чёрная, то весу k-го входа присваивается значение 0.5, в противном случае - 0.5 (см. формулу 5 п.3.2.5).
4. Переход на шаг 1, пока не исчерпаны все эталонные образы.
Исходный код алгоритма обучения выглядит так:
TImage* I1=new TImage (this); // Сюда загружаем эталонный образ TImage* I2=new TImage (this); // А здесь будет масштабированный I2->Width=iDestSize;
for (int i=0; iPicture->LoadFromFile (AnsiString (i) +". bmp");
vScale (I2, I1); // Читаем и масштабируем образ for (int x=0; xCanvas->Pixels [x] [y] ==clBlack) InputRow [i]. fW [x*iDestSize+y] =0.5;
else InputRow [i]. fW [x*iDestSize+y] =-0.5;
Для успешной работы нужно выяснить точный размер и местоположение образа цифры. После локализации - приводим образ к размеру 40*40 (масштабирование). Эти операции выполняются как на этапе обучения сети, так и на этапе распознавания. Всё это проделывает функция void vScale (TImage*, TImage*).
Для эталона, ввиду отсутствия помех, локализацию провести очень просто: достаточно последовательно просмотреть все точки образа и найти границы цифры:
float iMinX, iMinY, iMaxX, iMaxY; // Границы локализованной цифры iMinX=iMinY=iSourceSize+1;
for (int x=0; xCanvas->Pixels [x] [y] ==clBlack) { if (xiMaxX) iMaxX=x;
В данной реализации используется стандартный алгоритм обратного масштабирования без интерполяции (Source - исходный образ, Dest - отмасштабированный):
const float fScaleX= (iMaxX-iMinX) /iDestSize; // Коэффициенты сжатия const float fScaleY= (iMaxY-iMinY) /iDestSize;
for (int x=0; xCanvas->Pixels [x] [y] = Source->Canvas->Pixels [x*fScaleX+iMinX] [y*fScaleY+iMinY] ;
Чтобы не распознавать эталонные образы - введем искажение. Воспользуемся двумя способомами искажения:
for (int x=0; xWidth; x++)
for (int y=0; yHeight; y++)
if (random (100) Canvas->Pixels [x] [y] ==clBlack)
IBroke2->Canvas->Pixels [x] [y] =clWhite;
IBroke2->Canvas->Pixels [x] [y] =clBlack;
Общий алгоритм распознавания для сети Хэмминга состоит из четырёх частей:
1. подача распознаваемого образа на входы сети;
2. передача данных с первого слоя на второй;
1. Алгоритм работы первого этапа выглядит так
:
3. Локализуется и приводится изображение к нужному масштабу (см. п 3.3.3);
4. Локализованный образ поточечно подаётся на входы i-го нейрона. Если k-я точка образа чёрная, то к значению выхода прибавляется значение веса k-го входа, в противном случае это значение вычитается;
5. Значение выхода пропускается через функцию линейного порога;
6. Переход на шаг 1, пока не исчерпаны все нейроны первого слоя.
for (int i=0; iCanvas->Pixels [x] [y] ==clBlack) InputRow [i]. fOutput+=InputRow [i]. fW [x*iDestSize+y] ;
else InputRow [i]. fOutput+=-InputRow [i]. fW [x*iDestSize+y] ;
// Выход - через функцию линейного порога if (InputRow [i]. fOutput>=N/2) InputRow [i]. fOutput=N/2;
Теперь надо передать данные с выходов первого слоя на входы второго и в список результатов предыдущего прохода распознавания. Это совсем просто:
floatfOutputs [M] ; // Копия выходов предыдущего прохода for (inti=0; ifMax) { fMax=SecondRow [i]. fOutput;
При загрузке формы происходит обучение сети. Данная реализация рассчитана на работу с девятью образами. Для изменения числа образов необходимо изменить значение константы const int M=9 на необходимое число образов и перекомпиллировать программу. Образы в процессе загрузки читаются из директории запускаемой программы из файлов *. bmp. В данной случае там находятся 9 файлов с образами, имя файла должно складываться из номера образа (начало отсчета - 0) и расширения ". bmp". Если программа не найдет нужного кол-ва файлов - возникает необрабатываемая исключительная ситуация.
Сразу после загрузки формы становится доступной кнопка "Исходный образ", которая открывает стандартное окно диалога и предлагает открыть файл, который содержит изображение одного из образов, на которых обучалась сеть для распознания.
После выбора изображения становиться доступной кнопка "Локализовать", которая запускает процедуру локализации, определяет границы собственно изображения в пустой области фона и центрует изображение с разрешением 40*40. Локализованное изображение появляется в поле объекта типа TImage.
После этого становиться доступной кнопка "Исказить". Прежде, чем ее нажать, пользователь может изменить значение в поле процент зашумления (0-100%). Кнопка запускает процедуру искажения изображения, в результате которой формируется два искаженных изображения. Первый методом анизотропной апертурной фильтрации (искажаются границы символа, как это бывает при искажениях печати символа на бумаге). Второй способ искажает изображение добавлением N-процентного белого шума, т.е. случайно инвертирует N-процентов общего кол-ва точек, составляющих вектор изображения. При 100% происходит полная инверсия символа. И хотя пользователь в таком случае может различить символ - данная реализация программы не умеет этого делать, т.к считает, что символ изображается черными точками. В форме отображаются оба результата.
На этом этапе становятся доступными две кнопки "распознать" - для первого и второго искаженного образа.
После активизации обеих кнопок "Распознать" можно выбрать либо новый образ, либо поэкспериментировать с текущим, варьируя процент зашумления.
Исследование проводилось таким образом: последовательно увеличивая зашумленность образов (буква И), они подавались на вход сети Хемминга. Результаты работы приведены в таблице 1:
Таким образом, НС Хемминга прекрасно справляется с задачей распознавания образов для экспериментов с искажением на 0 - 45%. В это диапазоне все эталоны распознаются без ошибок.
При 50% зашумления образы распознаются нестабильно, часто возникает “перепутывание” и на выходе НС появляется совершенно другой эталон.
При 80-90% зашумления образ начинает инвертироваться и при зашумлении 100% мы видим полностью инвертированное изображение исходного. Хотя, человек может распознать с легкостью инвертированный символ, программа не умеет этого делать, т.к считает, что сам символ изображается только черными точками.
При зашумлении 80-100% НС Хемминга перепутывает подаваемые символы с наиболее похожими эталонными. Например, при 100% зашумления буква "П" похожа на толстую полосу и программа распознает символ как "1"

Название: Нейронная сеть Хемминга
Раздел: Рефераты по информатике, программированию
Тип: контрольная работа
Добавлен 16:02:19 04 июля 2010 Похожие работы
Просмотров: 148
Комментариев: 15
Оценило: 3 человек
Средний балл: 5
Оценка: неизвестно   Скачать

Срочная помощь учащимся в написании различных работ. Бесплатные корректировки! Круглосуточная поддержка! Узнай стоимость твоей работы на сайте 64362.ru
Привет студентам) если возникают трудности с любой работой (от реферата и контрольных до диплома), можете обратиться на FAST-REFERAT.RU , я там обычно заказываю, все качественно и в срок) в любом случае попробуйте, за спрос денег не берут)
Да, но только в случае крайней необходимости.

Контрольная работа: Нейронная сеть Хемминга
Реферат Основы Конституционного
Курсовая работа по теме Статистика доходов населения
Курсовая работа по теме Операционный и стратегический маркетинг: содержание и планирование
Реферат: Психологический анализ проблемы самооценки личости 4
Реферат: Издержки производства и себестоимость продукции. Смета и калькуляция затрат
Курсовая работа по теме Государственная гражданская служба
Реферат На Тему Кандинский - О Духовном В Искусстве
Реферат Про Мономаха Владимира
Дипломная работа: Микроэмульсионный метод получения оксида цинка
Наука Эпохи Возрождения Реферат
Дипломная работа по теме Реконструкция тепловых сетей котельной ОАО "Нарьян–Марстрой"
Реферат На Тему Пути Снижения Себестоимости Продукции
Самые Известные Сооружения Мира Эссе
Лекция по теме Соціальні програми уряду
Дипломная работа по теме Лингвокультурологические аспекты дискурса о киноискусстве
Почему Важно Контролировать Свои Эмоции Сочинение
Диссертации Республики Беларусь
Реферат по теме Вплив сучасної фінансової кризи на національну фінансову систему Сінгапуру
Методы Обследования Речи Реферат
Учебное пособие: Методические указания по выполнению лабораторных работ по дисциплине «Информационные системы в производственном менеджменте» для специальности: 080801 «Прикладная информатика в экономике»
Доклад: Эквивалентность элементарных функций
Контрольная работа: Инструментальные стали. Стали для измерительного инструмента. Штамповые стали. Твердые сплавы
Курсовая работа: Информационная политика газеты "Ставропольские губернские ведомости" (2006–2007 гг.)

Report Page