Автор: Пользователь скрыл имя, 17 Апреля 2013 в 18:30, курсовая работа
Искусственные нейронные сети (НС) – набор математических и алгоритмических методов для решения широкого круга задач. Они превосходят последовательные машины в решении тех же задач, в которых машину превосходит человек. К задачам, успешно решаемым НС на данном этапе их развития, относятся [1]:
Распознавание зрительных и слуховых образов: от распознавания текста до систем голосового управления.
Ассоциативный поиск информации и создание ассоциативных моделей: синтез речи, формирование естественного языка.
Формирование моделей различных нелинейных и трудно описываемых математически систем, а также прогнозирование развития этих систем во времени: прогнозирование развития различных природных процессов, изменений курсов валют, курсов акций и других финансовых показателей.
Введение 7
Постановка задачи 9
1. Системный анализ методов распознавания образов и построения генераторов псевдослучайных величин. 10
1.1. Анализ методов распознавания графических образов 10
1.1.1 Статистические методы распознавания 10
1.1.2 Структурные (лингвистические) методы распознавания 12
1.1.3 Нейросетевые методы распознавания 15
1.1.4 Вывод по результатам анализа рассмотренных методов 18
1.2. Процедура искажения изображений 20
1.3.1 Преобразование Бокса – Мюллера. 20
1.3. Выводы 22
2. Реализация эмулятора нейронной сети Хемминга, решающей задачи распознавания зашумлённых образов. 23
2.1. Выбор структуры ИНС 25
2.2. Программная реализация ИНС 27
2.2.1. Интерфейс пользователя программы-эмулятора ИНС 31
2.3. Выводы 33
3. Исследование результатов работы программы-эмулятора ИНС 34
3.1 Выводы 36
Заключение 37
Библиографический список 38
Распознавание – происходит распознавание одного из образов. Название берётся из поля используемый образ, результат выводится в виде двух картинок, слева – вводимый образ, справа – соответствующий ему(по мнению сети) идеальный. А так же в виде числа в поле результат распознавания.
Если поставить метку в поле «Нормальное распределение», то искажение происходит не по равномерному закону распределения, а по нормальному при помощи преобразования Бокса-Мюллера.
В главе 2, данной работы был программно реализован эмулятор работы НС Хемминга размерностью 20 нейронов с десятью тысячами входов, решающей задачи распознавания искаженных изображений. Также реализована генерация случайного шума с нормальным законом распределения методом Бокса-Мюллера, рассмотренным в предыдущей главе.
Таблица 2. Опыты по распознаванию образов
Тестируемый образ |
Процент зашумления образа |
Вид искаженного образа (одна из 10 наложенных ошибок) |
Результат распознавания Число опытов/количество верных распознаваний |
Шум с равномерным распределением |
10% |
|
40/40 |
20% |
|
40/40 | |
30% |
|
40/40 | |
40% |
|
40/38 | |
45% |
|
40/35 | |
50% |
|
40/7 | |
Шум с нормальным распределением |
10% |
|
40/40 |
15% |
|
40/40 | |
20% |
|
40/10 | |
25% |
|
40/7 | |
30% |
|
40/3 | |
Шум с распределением 1/cos(2x)^2 |
10% |
|
40/40 |
15% |
|
40/35 | |
20% |
|
40/20 | |
25% |
|
40/5 |
Для шума с равномерным распределением:
До 40% зашумлённости образа распознавание происходит в большинстве случаев.
45%-47% резкое падение количества распознаваемых образов(при некоторых ошибках воспринимался как другой образ).
Для шума с нормальным распределением:
До 20% зашумлённости образа распознавание происходит в большинстве случаев. Если уровень шума превышает 20%, то распознать данное изображение не удаётся т.к. математическое ожидание нормального распределения походит через центральную ось изображения.
Если брать область изображения, зашумлённого на 25%-30%, с рассеиванием от математического ожидания равным дисперсии и сравнивать с равномерным распределением, то это будет эквивалентно 50%-60% зашумления.
Границы цифр 0 и 8 на изображении выходят за пределы единичной дисперсии, по этой причине нейронная сеть продолжает распознавать эти образы до 30%-35% зашумления.
Для шума с распределением 1/cos(2x)^2:
При данной
плотности распределения
До 10% распознавание происходит в большинстве случаев. От 10% до 15% наблюдаются ошибки при распознавании. Это связанно прежде всего с тем, что, например, изображение цифры «8» после подобного зашумления ближе, по хемминговому расстоянию, к изображению «6».
Если используются изображения такие как 1, 2, 4, 7 т.е. образы, которые наименее похожи на остальные, то их распознавание возможно и при зашумлении 20%. При уровне шума выше 20% распознавание не представляется возможным, т.к. треть изображения является практически полностью инвертированным.
3.1 Выводы
По
проведенным исследованиям
В результате выполнения данной работы был разработан программный комплекс, позволяющий:
Также в работе были проведены исследования качества распознавания нейронной сетью Хемминга искаженных черно-белых изображений.
Разработанный программный комплекс в дальнейшем может быть основой более сложных систем анализа и распознавания образов с целью повышения эффективности распознавания.
// алгоритм для
генерации непрерывной
//функция распределения
public class
{
private static
//метод создания
public static
{
func = new
return func;
}
//конструктор
private
{
func = this;
}
//возвращает значение функции
public double
{
if(x<Xmin())
{
return 0;
}
if(x>Xmax())
{
return 1;
}
double y = Math.Tan(2 * x) /
if (y<0)
{
return 0;
}
else
{
if (y>1)
{
return 1;
}
else
{
return y;
}
}
}
//возвращает значение
public double
{
if (y < 0 || y > 1)
{
throw new Exception("Обратная
}
double x = Math.Atan(2 * y) /
return x;
}
//Возвращает значение функции
public double
{
double y = (double)1 / (Math.
return y;
}
//возвращает математическое
public double GetExpectation()
{
double step = (Xmax() - Xmin()
double prevM = 0;
double M = 1;
while (Math.Abs(M - prevM) >
{
prevM = M;
double current = 0;
for (double x = Xmin(); x <
{
current += step * ((x + step)
}
M = current;
step /= 2;
}
return M;
}
//возвращает СКО
public double
{
return Math.Sqrt(
}
//возвращает дисперсию
public double GetDispersion()
{
double step = (Xmax() - Xmin()
double prevD = 0;
double D = 1;
double M = this.
while (Math.Abs(D - prevD) >
{
prevD = D;
double current = 0;
for (double x = Xmin(); x <
{
current += step * (Math.Pow((
}
D = current;
step /= 2;
}
return D;
}
public double Xmin()
{
return this.
}
public double Xmax()
{
return this.
public class InverseGenerator:
{
private
Random BaseGenerator = new
//конструктор
public InverseGenerator()
{
Function =
}
//сгенерировать очередное
public double GenerateValue()
{
double x1 = BaseGenerator.
double result = Function.
return result;
}
}
//алгоритм для
генерации дискретной
//дискретная функция
public class
{
private static
private List<Point> Values =
//метод создания
public static
{
return func;//возвращаем
}
//метод создания
public static
Информация о работе Исследование результатов работы программы-эмулятора ИНС