Автор работы: Пользователь скрыл имя, 27 Марта 2012 в 10:27, реферат
Хотя термин «распознавания речи» встречается в литературе очень часто, на самом деле он имеет много различных значений. В этой главе мы попытаемся рассказать о различных трактовках этого термина, а также сделаем небольшой обзор технологий распознавания речи, сведения о которых доступны широкой публике.
Например, знание о геометрическом
объекте предполагает возможность
предсказать вид его
· Автономность системы
При интеграции комплекса действий, которые система способна совершать, с комплексом датчиков, позволяющих контролировать свои действия и внешнюю среду, наделенная вышеприведенными свойствами система будет способна взаимодействовать с внешним миром на довольно сложном уровне.
При этом она будет адекватно реагировать на изменение внешнего окружения (естественно, если это будет заложено в систему на этапе обучения). Способность корректировать свое поведение в зависимости от внешних условий позволит частично или полностью устранить необходимость контроля извне, т.е. система станет автономной.
Возможность создания на базе искусственных нейронных сетей самообучающихся систем является важной предпосылкой для их применения в системах распознавания (и синтеза) речи.
Представление речи в виде набора числовых параметров
После выделения информативных признаков речевого сигнала можно представить эти признаки в виде некоторого набора числовых параметров (т.е. в виде вектора в некотором числовом пространстве). Далее задача распознавания примитивов речи (фонем и аллофонов) сводится к их классификации при помощи обучаемой нейронной сети.
Нейронные сети можно использовать
и более высоких уровнях
Нейронные ансамбли
В [3] отмечается, что в качестве модели нейронной сети, пригодной для распознавания речи и обучаемой без учителя можно выбрать самоорганизующуюся карту признаков Кохонена. В ней для множества входных сигналов формируется нейронные ансамбли, представляющие эти сигналы. Этот алгоритм обладает способностью к статистическому усреднению, что позволяет решить проблему изменчивости речи.
По сравнению с классическим программированием, когда алгоритм решения той или иной задачи задан жестко, нейронные сети позволяют динамически изменять алгоритм простым изменением архитектуры сети.
Генетические алгоритмы
Возможность изменения алгоритма работы нейронной сети простым изменением ее архитектуры позволяют решать задачи совершенно новым способом, с помощью так называемых генетических алгоритмов.
При использовании генетических алгоритмов создаются правила отбора, позволяющие определить, лучше или хуже справляется новая нейронная сеть с решением задачи. Кроме того, определяются правила модификации нейронной сети.
Изменяя достаточно долго архитектуру нейронной сети и отбирая те архитектуры, которые позволяют решить задачу наилучшим образом, рано или поздно можно получить верное решение задачи.
Генетические алгоритмы обязаны своим появлением эволюционной теории (отсюда и характерные термины: популяция, гены, родители-потомки, скрещивание, мутация). Таким образом, существует возможность создания таких нейронных сетей, которые ранее не изучались исследователями (или не поддаются аналитическому изучению), но, тем не менее, успешно решают задачу [3].
Обработка визуальной информации
В этом научном направлении
решаются задачи обработки, анализа
и синтеза изображений. Задача обработки
изображений связана с
Обучение и самообучение
Эта актуальная область ИИ включает модели, методы и алгоритмы, ориентированные на автоматическое накопление и формирование знаний с использованием процедур анализа и обобщения данных. К данному направлению относятся не так давно появившиеся системы добычи данных (Data-mining) и системы поиска закономерностей в компьютерных базах данных (Knowledge Discovery).
Распознавание образов
Это одно из самых ранних направлений ИИ, в котором распознавание объектов осуществляется на основании применения специального математического аппарата, обеспечивающего отнесение объектов к классам, а классы описываются совокупностями определенных значений признаков.
Программное обеспечение систем ИИ
Инструментальные средства
для разработки интеллектуальных систем
включают специальные языки
Алгоритмы распознавания образов
Теория технического зрения существует не первый день, по этому в литературе можно найти достаточно подходов и решений. Для начала перечислю некоторые из них:
1 Алгоритм скелетизации.
В кратце, это некий метод распознавания одинарных бинарных образов, основанный на построение скелетов этих образов и выделения из скелетов ребер и узлов. Далее по соотношению ребер, их числу и числу узлов строится таблица соответствия образам. Так, например, скелетом круга будет один узел, скелетом буквы П - три ребра и два узла, причем ребра относятся как 2:2:1. В программировании данный метод имеет несколько возможных реализаций, подробнее информацию по методу скелетезации можно найти ниже в разделе ссылки.
2 Нейросетевые структуры.
Направление было очень
модным в 60е-70е годы, в последствии
интерес к ним немного
3 Инвариантрые числа.
Из геометрии образов можно выделить некоторые числа, инвариантные относительно размера и поворота образов, далее можно составить таблицу соответствия этих чисел конкретному образу(почти как в алгоритме скелетезации). Примеры инвариантных числе - число эллера, экцентриситет, ориентация(в смысле расположения главной оси инерции относительно чего-нить тоже инвариантного). Некоторую информацию и мат. часть можно найти в разделе ссылки ниже.
4 Поточечное процентное сравнение с эталоном.
Здесь должна быть некотороя предобработка, для получения инвариантности относительно размера и положения, затем осуществляется сравнение с заготовленной базой эталонов изображений - если совпадение больше чем какая-то отметка, то считаем образ распознанным.
Практическая часть
Три дня проведенные в интернете не дали ничего готового(а жаль), поэтому проанализировав все возможные алгоритмы распознавания я решил пойти по следующему пути и создать систму, которая будет отвечать всем требованиям ТЗ выше.
Надо сказать, что к началу этой работы я уже имел некоторый опыт общения с видеокамерами, и риалтаймовой обработкой. Проанализировав все алгоритмы распознавания, описанные выше, мне показалось, что:
Решать инвариантность относительно поворота нейросетями (неокогнетронами и т.п) слишком долго на обычной машине типа PC.
Скелетезация по описанию очень проста, но как мне кажется, базовый алгоритм неоднозначно отскелетизирует пример со средней буквой Щ ниже на большой картинке(там где она вся дырявая и с выеденым бликом куском). По слухам в скелетезации применяется еще некоторая фильтрация для таких случаев, но у меня не было желания с этим возится.
Создавать таблицу инвариантных чисел для образов, а потом смотреть отклонения - вариант неплохой. Однако непонятно сколько образов сможет распознавать такой алгоритм, насколько образы могут быть похожи друг на друга, и в тоже время считаться разными. И как помехи от грязи и стороннего света будут мешать точному вычислению инвариантных чисел. Вроде бы есть число, отвечающее за "дырчатость" образа.. а если блик порвет дырку, хоть чуть чуть?
Мое решение отличатеся некоторыми недостатками (если кусок изображения накроет блик, то сдвигается и центр масс и ориентация - алгоритм не сработает, так же не допустимы разрывы в объекте), но обладает и кое какими плюсами ( мелкие ошибки поворота, неточности бинаризации и т.п будут естественным образом сглаживаться на стадии ужимания в матрицу-иконку).
В любом случае каким путем пойти (растровым типа моего, или векторным типа скелетезации) - тут кому что ближе. Изначально я даже хотел воплотить скелетезацию в этой же программе, для того же диплома, только в итоге так намаялся с сетями и доведением всего прочего до ума, что решил - пусть скелеты рисует кто-нить другой