Проблема распознавания образов. Системы распознавания образов (идентификации)

06.07.2019

FACE RECOGNITION: A PROBLEM AND A SOLUTION

Alexandr Morgunov

student the department "Information technology" Don State Technical University

Russia, Rostov-on-Don​

Diana Mansurova

research fellow in FGANU NII Specvuzavtomatika,

Russia, Rostov-on-Don​

Kay Tyurin

research fellow in FGANU NII Specvuzavtomatika,

Russia, Rostov-on-Don​

АННОТАЦИЯ

В статье описаны результаты сравнительного анализа существующих методов и алгоритмов распознавания человеческих лиц.

ABSTRACT

In this paper the problem of the human face recognition was considered. Various face recognition methods and algorithms were described and compared.

Ключевые слова: распознавание лиц, машинное обучение, компьютерное зрение, нейронные сети.

Keywords: face recognition, machine learning, computer vision, neural networks.

Распознавание объектов является легкой задачей для людей, эксперименты, проведенные в работе показали, что даже дети в возрасте от одного до трех дней способны различать запомненные лица. Так как человек видит мир не как набор отдельных частей, наш мозг должен как-то комбинировать различные источники информации в полезные паттерны. Задача автоматического распознавания лиц состоит в выделении этих значащих признаков из изображения, преобразуя их в полезное представление и производя некоторого вида классификации.

Процесс распознавания лиц, основывающийся на геометрических признаках лица, является, вероятно, наиболее интуитивным подходом к задаче распознавания лиц . Эксперименты на большом наборе данных показали, что в одиночку геометрические признаки не могут дать достаточно информации для распознавания лица.

Метод, который носит название Eigenfaces, описанный в работе , приводит целостный подход к задаче распознавания лиц. Изображение лица является точкой из многомерного пространства изображений, которому сопоставляется представление из так называемого маломерного пространства, где классификация становится простой задачей. Маломерное подпространство находится с помощью метода анализа принципиальных компонент (PCA), который идентифицирует оси с максимальной дисперсией. В то время, как такой вид трансформации является оптимальным с точки зрения реконструкции, он не учитывает классовые метки. Если дисперсия сгенерирована из внешнего источника (например, освещенности), оси с максимальной дисперсией могут не содержать какой-либо отчетливой информации, следовательно, классификация становится невозможной. Поэтому в работе для задачи распознавания лиц была применена классовая проекция с линейным дискриминантным анализом. Основная идея заключалась в том, чтобы минимизировать дисперсию внутри класса и в то же время максимизировать дисперсию между классами.

Не так давно несколько методов выделения локальных признаков были объединены. Для того чтобы избежать многомерности входных данных, описываются только локальные области изображения. Выделенные признаки получаются более устойчивыми против частичного перекрытия, освещенности и малого размера входного изображения. Алгоритмами, которые используют выделение локальных признаков, являются: Вейвлеты Габора , Дискретное косинусное преобразование и Локальные бинарные шаблоны . Вопрос о том, какой способ сохранить пространственную информацию при применении метода выделения локальных признаков является наилучшим, все еще открыт для исследований, так как пространственная информация является потенциально полезной для решения задачи распознавания лиц.

Метод Eigenfaces выполняет распознавание лица, по следующим шагам:

Проецирование всех обучающих примеров в подпространство анализа принципиальных компонент;

Проецирование запрошенного изображения в подпространство анализа принципиальных компонент;

Поиск ближайших соседей между спроецированными тренировочными изображениями и спроецированным запрошенным изображением.

На рисунке 1 представлен пример того, как представляются лица алгоритмом Eigenfaces. Была использована цветовая схема jet для того, чтобы показать, как значения оттенков серого распределяются в конкретных лицах. Алгоритм кодирует не только признаки лица, но также освещенность изображений.

Рисунок 1. Представление лиц алгоритмом Eigenfaces в цветовой схеме jet

.

Данные лица были реконструированы из аппроксимации малой размерности. На рисунке 2 представлены реконструкции с различным числом компонент от 10 до 310.

Рисунок 2. Реконструкции с различным числом компонент алгоритмом Eigenfaces

Источник: Face Recognition with OpenCV // OpenCV 2.4.13.4 documentation. URL: https://docs.opencv.org/2.4/modules/contrib/doc/facerec/facerec_tutorial... .

Очевидно, что 10 собственных векторов являются незначительным числом для хорошей реконструкции изображения. 50 собственных векторов уже могут способствовать кодированию важных признаков лиц. Можно получить хорошую реконструкцию с аппроксимацией в 300 собственных векторов. Существуют правила по подбору необходимого числа собственных векторов для удачного процесса распознавания лица, однако, они сильно зависит от входных данных .

Анализ принципиальных компонент (PCA), который является основой алгоритма Eigenfaces, находит линейные комбинации признаков, которые максимизируют общую дисперсию в данных. В то время, как PCA является хорошим способом представления данных, он не учитывает классы, и много полезной информации может быть потеряно во время преобразований. Если дисперсия данных генерируется внешним источником, таким как свет, компоненты, идентифицируемые PCA, могут не содержать четкой информации. Вследствие чего проецируемые данные смешиваются, и классифи­кация становится невыполнимой задачей.

Линейный дискриминантный анализ, выполняющий классовое понижение размерности входных данных, был предложен статистиком Рональдом Фишером, который успешно использовал его для класси­фикации цветов . Метод находит линейные комбинации признаков, которые лучше всего разделяют несколько классов объектов, а также максимизирует соотношение между разбросом разрозненных и тесно связанных классов, вместо того, чтобы максимизировать общее соотношение. Простая идея заключается в том, что одинаковые классы должны быть тесно связаны, и в то же время различные классы должны находиться максимально далеко друг от друга и представлении данных малой размерности. Подобный подход также был предложен Бельхамером, Хеспаной и Кригманом, которые применили дискриминантный анализ в задаче распознавания лиц в работе .

На рисунке 3 представлен пример работы алгоритма Fisherfaces, на котором изображены так называемые лица фишера. Каждое лицо фишера имеет такой же размер, как и оригинальное изображение, поэтому оно может быть отображено как изображение.

Рисунок 3. Пример работы алгоритма Fisherfaces

Источник: Face Recognition with OpenCV // OpenCV 2.4.13.4 documentation. URL: https://docs.opencv.org/2.4/modules/contrib/doc/facerec/facerec_tutorial... .

Алгоритм Fisherfaces использует трансформирующую матрицу, основанную на классах, поэтому он не учитывает освещение, также как алгоритм Eigenfaces. Вместо этого дискриминантный анализ находит признаки лица для установления различия между персонами. Важно отметить, что производительность алгоритма Fisherfaces также сильно зависит от входных данных. Если обучать алгоритм Fisherfaces на изображениях с сильным освещением, а потом попытаться распознать лица на плохо освещенных изображениях, метод, скорее всего, найдет неверные компоненты потому, что эти признаки могут не быть доминантными на плохо освещенных изображениях. Что является очевидным, так как алгоритм невозможно обучить распознавать освещение.

Алгоритм Fisherfaces позволяет делать реконструкции спроецированных изображений так же, как и Eigenfaces. Но в силу того, что алгоритм идентифицирует только лишь главные признаки, которые позволяют отличить объекты, нельзя ожидать хорошую реконструкцию исходного изображения. Для визуализации алгоритма Fisherfaces исходное изображение спроецировано на каждое из лиц фишера. На рисунке 4 представлена визуализация алгоритма Fisherfaces, где показано, какие признаки описывает каждое из лиц фишера.

Рисунок 4. Реконструированные лица фишера

Источник: Face Recognition with OpenCV // OpenCV 2.4.13.4 documentation. URL: https://docs.opencv.org/2.4/modules/contrib/doc/facerec/facerec_tutorial... .

Алгоритмы Eigenfaces и Fisherfaces предлагают некий целостный подход к решению задачи распознавания лиц. Представить данные в виде вектора где-нибудь в многомерном пространстве изображения. Известно, что многомерность является плохим свойством данных, поэтому определяется подпространство малой размерности, где вероятно сохраняется полезная информация. Алгоритм Eigenfaces максимизирует общий разброс, который может привести к проблеме, когда дисперсия генерируется из внешнего источника, так как компоненты с макси­мальной из всех классов дисперсией не обязательно являются полезными для классификации объекта. Поэтому для сохранения некоторой отчетливой информации применяется линейный дискриминантный анализ с оптимизацией, описанной в алгоритме Fisherfaces. Алгоритм Fisherfaces работает сравнительно хорошо, по крайней мере, для огра­ниченного сценария при одинаковом уровне освещенности изображения.

Но в реальности нельзя гарантировать идеальные параметры освещенности на изображениях. К тому же, если имеется только одно изображение на каждую личность, ковариационное счисление для подпространства, следовательно, и распознавание, может быть существенно неверным. Для открытой базы данных лиц AT&T алгоритмы Eigenfaces и Fisherfaces имеют уровень распознавания в 96%, но этот уровень сильно зависит (помимо остального) от числа обучающих изображений. На рисунке 5 представлены уровни распознавания алгоритмов Eigenfaces и Fisherfaces на открытой базе данных лиц AT&T, которая является достаточно легкой для распознавания.

Рисунок 5. Уровень распознавания алгоритмов Eigenfaces и Fisherfaces

Источник: Face Recognition with OpenCV // OpenCV 2.4.13.4 documentation. URL: https://docs.opencv.org/2.4/modules/contrib/doc/facerec/facerec_tutorial... .

По рисунку видно, что для получения хорошего показателя распознавания требуется хотя бы 8(+–1) изображений на каждую личность, и алгоритм Fisherfaces не сильно помогает в данном случае.

Поэтому некоторые исследования сконцентрированы на извлечении локальных признаков из изображений. Идея заключается в том, чтобы не представлять все изображение в виде многомерного вектора, а описывать только локальные признаки объекта. Извлекаемые таким образом признаки имеют представление малой размерности. Однако представление входных изображений страдает не только от пока¬зателей освещенности, но и от размера изображения, его смещения или вращения. Поэтому локальное описание должно быть устойчиво к таким видам изменений. Методология локальных бинарных шаблонов имеет корни из двумерного текстурного анализа. Основная идея метода заключается в суммировании локальных структур изображения путем сравнения каждого пикселя с его соседями. В качестве центра берется пиксель и преобразуются значения его соседей. Если интенсивность пикселя-соседа больше или равна интенсивности центрального пикселя, то сосед помечается 1, иначе 0. После преобразования берется получившееся бинарное число (например, как 0010011). В итоге из 8 соседних пикселей получается 2 8 возможных комбинаций, называемых локальными бинарными шаблонами (LBP коды). Первый LBP-оператор описанный в литературе использовал окно размером 3×3, пример представлен на рисунке 6.

Рисунок 6. LBP-оператор

Источник: Face Recognition with OpenCV // OpenCV 2.4.13.4 documentation. URL: https://docs.opencv.org/2.4/modules/contrib/doc/facerec/facerec_tutorial... .

Такой подход позволяет захватить мелкие детали изображений. Фактически авторы могли конкурировать с передовыми результатами в классификации текстур. Вскоре было замечено, что фиксированный размер окна не мог закодировать детали различающегося размера. Поэтому оператор был расширен для использования переменного размера окна в работе . Идея заключается в выравнивании произвольного числа соседей в окружности переменного радиуса, которая позволяла бы захватить такие локальные бинарные шаблоны, которые представлены на рисунке 7.

Рисунок 7. Различные локальные бинарные шаблоны

Источник: Face Recognition with OpenCV // OpenCV 2.4.13.4 documentation. URL: https://docs.opencv.org/2.4/modules/contrib/doc/facerec/facerec_tutorial... .

Такой оператор является расширением оригинальных LBP-кодов, поэтому иногда он называется расширенный LBP. Если координаты точек на окружности не соответствуют координатам изображения, точка интерполируется. По определению LBP оператор устойчив к монотонным трансформациям в оттенках серого. Это можно увидеть на рисунке 8, где представлены LBP-изображения искусственно модифицированных исходных изображений.

Рисунок 8. Устойчивость LBP-оператора к монотонным трансформациям в оттенках серого

Источник: Face Recognition with OpenCV // OpenCV 2.4.13.4 documentation. URL: https://docs.opencv.org/2.4/modules/contrib/doc/facerec/facerec_tutorial... .

Осталось только объединить пространственную информацию в модели распознавания лиц. Подход, предложенный в работе , заключается в разделении LBP-изображения на m локальных областей и извлечь гистограммы из каждого. После чего, получается пространственно-расширенный вектор путем конкатенации гистограмм (не объединения). Такие гистограммы называются гистограммами локальных бинарных шаблонов.

На сегодняшний день дальше всего прошли методы и алгоритмы, основанные на нейронных сетях, такие как DeepFace и FaceNet . Так же большой вклад в решение проблемы распознавания лиц внесли работы Visual Geometry Group и Lightened Convolutional Neural Networks . Нейронные сети состоят из множества композиций функций или слоев, с последующей функцией потерь, которая определяет насколько хорошо нейронная сеть моделирует данные, т. е. насколько точно классифицирует изображение. Для решения проблемы распознавания лиц система, использующая нейронную сеть, должна найти лицо на изображении с помощью одного из многих существующих методов. Далее система из каждого найденного лица формирует нормализованные входные данные для нейронной сети. Такие данные являются слишком многомерными для того, чтобы сразу отдать их классификатору. Нейронная сеть используется для выделения главных характеристик с целью маломерное представление данных, которые описывают лицо. Такое маломерное представление данных уже может быть эффективно использовано в классификаторах.

Например, алгоритм DeepFace сначала использует трехмерное моделирование лица для нормализации входного изображения с целью получения фронтального отображения лица даже, если лицо на фотографии изначально было под другим углом. Далее алгоритм определяет классификацию как тесно связанный слой нейронной сети с Softmax‑функцией, что позволяет получить на выходе нормали­зованное вероятностное распределение. Нововведениями алгоритма DeepFace являются: выравнивание по 3D-модели, нейронная сеть с 120 миллионами параметров и обучение на 4,4 миллионах изобра­жений лиц. После завершения обучения нейронной сети на таком большом количестве лиц, финальный классификационные слой удаляется и выходные данные предыдущего слоя используются как маломерное представление лица.

Часто программы по распознаванию лиц ищут маломерное представление, которое хорошо обобщает новые лица, на которых не была обучена нейронная сеть. Подход алгоритма DeepFace справля­ется с такой проблемой, но представление является следствием обучения сети для высокоточной классификации Недостатком такого подхода является то, что полученное представление трудно использовать, так как лица одного человека не обязательно будут на кластеризованы, следовательно, классификационные алгоритмы не получат преимущества. Триплетная функция потерь (triplet-loss) в алгоритме FaceNet определена непосредственно в представлении. На рисунке 9 представлена процедура triplet-loss обучения.

Рисунок 9. Процедура triplet-loss обучения

В целом проблема распознавания образов состоит из двух частей: обучения и распознавания. Обучение осуществляется путем показа независимых объектов с отнесением их к тому или другому классу. По итогу обучения распознающая система должна приобрести способность реагировать одинаковыми реакциями на все объекты одного образа и различными - на все другие. Важно, что в процессе обучения указываются только сами объекты и их принадлежность образу. За обучением следует процесс распознавания, который характеризует действия уже обученной системы. Автоматизация этих процедур и составляет проблему.

Прежде чем начать анализ какого-либо объекта, нужно получить о нем определенную, каким-либо способом упорядоченную, точную информацию. Такая информация представляет собой совокупность свойств объектов, их отображение на множестве воспринимающих органов распознающей системы.

Но каждый объект наблюдения может воздействовать по-разному, в зависимости от условий восприятия. Кроме того, объекты одного и того же образа могут сильно отличаться друг от друга.

Каждое отображение какого-либо объекта на воспринимающие органы распознающей системы, независимо от его положения относительно этих органов, принято называть изображением объекта, а множества таких изображений, объединенные какими-либо общими свойствами, представляют собой образы. При удачном выборе исходного описания (пространства признаков) задача распознавания может оказаться достаточно легкой и, наоборот, неудачно выбранное может привести к очень сложной дальнейшей переработке информации, либо вообще к отсутствию решения.

Распознавание объектов, сигналов, ситуаций, явлений - самая часто встречающаяся задача, которую человеку необходимо решать ежесекундно. Для этого используются огромные ресурсы мозга, который оценивается таким показателем как число нейронов, равное 10 10 .

Также, распознавание постоянно встречается в технике. Вычисления в сетях формальных нейронов, во многом напоминают обработку информации мозгом. В последнее десятилетие нейрокомпьютинг приобрел чрезвычайную популярность и успел превратиться в инженерную дисциплину, связанную с производством коммерческих продуктов. В большом объеме ведутся работы по созданию элементной базы для нейровычислений.

Основной их характерной чертой является способность решать неформализованные проблемы, для которых в силу тех или иных причин не предполагается алгоритмов решения. Нейрокомпьютеры предлагают относительно простую технологию получения алгоритмов путем обучения. В этом их основное преимущество. Поэтому нейрокомпьютинг оказывается актуальным именно сейчас - в период расцвета мультимедиа, когда глобальное развитие требует разработки новых технологий, тесно связанных с распознаванием образов.

Одной из основных проблем развития и применения искусственного интеллекта остаётся проблема распознавания звуковых и визуальных образов. Все остальные технологии уже готовы к тому, чтобы найти своё применение в медицине, биологии, системах безопасности. В медицине распознавание образов помогает врачам ставить более точные диагнозы, на заводах оно используется для прогноза брака в партиях товаров. Системы биометрической идентификации личности в качестве своего алгоритмического ядра так же основаны на результатах распознавания. Дальнейшее развитие и проектирование компьютеров, способных к более непосредственному общению с человеком на естественных для людей языках и посредством речи, нерешаемы без распознавания. Здесь уже встает вопрос о развитии робототехники, искусственных систем управления, содержащих в качестве жизненно важных подсистем системы распознавания.

  • Алгоритмы ,
  • Машинное обучение
  • Работа большинства специалистов по речевым технологиям состоит не в том, чтобы придумывать концептуально новые алгоритмы. Компании в основном фокусируются на существующих подходах. Машинный интеллект уже умеет распознавать и синтезировать голос, но не всегда в реальном времени, не всегда локально и не всегда «избирательно» - когда нужно реагировать только на ключевые фразы, робот может ошибаться. Подобными проблемами как раз и заняты разработчики. Муаммар Аль-Шедиват рассказывает об этих и других вопросах, которые пока не удаётся решить даже большим компаниям.


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

    Сегодня я поговорю в основном о распознавании речи, хотя есть множество других интересных задач. Рассказ мой будет состоять из трех частей. Для начала напомню в целом, как работает распознавание речи. Дальше расскажу, как люди стараются его улучшить и о том, какие в Яндексе стоят задачи, с которыми обычно не сталкиваются в научных статьях.

    Общая схема распознавания речи. Изначально на вход нам поступает звуковая волна.

    Ее мы дробим на маленькие кусочки, фреймы. Длина фрейма - обычно 25 мс, шаг - 10 мс. Они идут с некоторым захлестом.


    После этого из фреймов мы извлекаем наиболее важные признаки. Допустим, нам не важен тембр голоса или пол человека. Мы хотим распознавать речь вне зависимости от этих факторов, так что мы извлекаем самые важные признаки.


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


    Под конец все это запихивается в граф-декодирование, которое получает распределение вероятностей и учитывает языковую модель. Допустим, «Мама мыла раму» - более популярная фраза в русском языке, чем «Мама мыла Рому». Также учитывается произношение слов и выдаются итоговые гипотезы.

    В целом, именно так и происходит распознавание речи.


    Естественно, о метрике нужно пару слов сказать. Все используют метрику WER в распознавании речи. Она переводится как World Error Rate. Это просто расстояние по Левенштейну от того, что мы распознали, до того, что реально было сказано в фразе, поделить на количество слов, реально сказанных во фразе.

    Можно заметить, что если у нас было много вставок, то ошибка WER может получиться больше единицы. Но никто на это не обращает внимания, и все работают с такой метрикой.

    Как мы будем это улучшать? Я выделил четыре основных подхода, которые пересекаются друг с другом, но на это не стоит обращать внимания. Основные подходы следующие: улучшим архитектуру нейронных сетей, попробуем изменить Loss-функцию, почему бы не использовать подходы End to end, модные в последнее время. И в заключение расскажу про другие задачи, для которых, допустим, не нужно декодирование.


    Когда люди придумали использовать нейронные сети, естественным решением было использовать самое простое: нейронные сетки feed forward. Берем фрейм, контекст, сколько-то фреймов слева, сколько-то справа, и предсказываем, какая фонема была сказана на данном фрейме. После чего можно посмотреть на все это как на картинку и применить всю артиллерию, уже использованную для обработки изображений, всевозможные сверточные нейронные сети.


    Вообще многие статьи state of the art получены именно с помощью сверточных нейронных сетей, но сегодня я расскажу больше о рекуррентных нейронных сетях.


    Рекуррентные нейронные сети. Все знают, как они работают. Но возникает большая проблема: обычно фреймов намного больше, чем фонем. На одну фонему приходится 10, а то и 20 фреймов. С этим нужно как-то бороться. Обычно это зашивается в граф-декодирование, где мы остаемся в одном состоянии много шагов. В принципе, с этим можно как-то бороться, есть парадигма encoder-decoder. Давайте сделаем две рекуррентных нейронных сетки: одна будет кодировать всю информацию и выдавать скрытое состояние, а декодер будет брать это состояние и выдавать последовательность фонем, букв или, может быть, слов - это как вы натренируете нейронную сеть.

    Обычно в распознавании речи мы работаем с очень большими последовательностями. Там спокойно бывает 1000 фреймов, которые нужно закодировать одним скрытым состоянием. Это нереально, ни одна нейронная сеть с этим не справится. Давайте использовать другие методы.


    Димой Богдановым, выпускником ШАД, был придуман метод Attention. Давайте encoder будет выдавать скрытые состояния, и мы их не будем выкидывать, а оставим только последнее. Возьмем взвешенную сумму на каждом шаге. Декодер будет брать взвешенную сумму скрытых состояний. Таким образом, мы будем сохранять контекст, то, на что мы в конкретном случае смотрим.

    Подход прекрасный, работает хорошо, на некоторых датасетах дает результаты state of the art, но есть один большой минус. Мы хотим распознавать речь в онлайне: человек сказал 10-секундную фразу, и мы сразу ему выдали результат. Но Attention требует знать фразу целиком, в этом его большая проблема. Человек скажет 10-секундную фразу, 10 секунд мы ее будем распознавать. За это время он удалит приложение и никогда больше не установит. Нужно с этим бороться. Совсем недавно с этим поборолись в одной из статей. Я назвал это online attention.


    Давайте поделим входную последовательность на блоки какой-то небольшой фиксированной длины, внутри каждого блока устроим Attention, затем будет декодер, который выдает на каждом блоке соответствующие символы, после чего в какой-то момент выдает символ end of block, перемещается к следующему блоку, поскольку мы тут исчерпали всю информацию.

    Тут можно серию лекций прочитать, я постараюсь просто сформулировать идею.


    Когда начали тренировать нейронные сети для распознавания речи, старались угадывать фонему. Для этого использовали обычную кросс-энтропийную функцию потерь. Проблема в том, что даже если мы соптимизируем кросс-энтропию, это еще не будет значить, что мы хорошо соптимизировали WER, потому что у этих метрик корреляция не 100%.


    Чтобы с этим побороться, были придуманы функции Sequence Based Loss: давайте саккумулируем всю информацию на всех фреймах, посчитаем один общий Loss и пропустим градиент обратно. Не буду вдаваться в детали, можете прочитать про CTC или SNBR Loss, это очень специфичная тема для распознавания речи.

    В подходах End to end два пути. Первый - делать более «сырые» фичи. У нас был момент, когда мы извлекали из фреймов фичи, и обычно они извлекаются, стараясь эмулировать ухо человека. А зачем эмулировать ухо человека? Пусть нейронка сама научится и поймет, какие фичи ей полезны, а какие бесполезны. Давайте в нейронку подавать все более сырые фичи.

    Второй подход. Мы пользователям выдаем слова, буквенное представление. Так зачем нам предсказывать фонемы? Хотя их предсказывать очень естественно, человек говорит в фонемах, а не буквах, - но итоговый результат мы должны выдать именно в буквах. Поэтому давайте предсказывать буквы, слоги или пары символов.


    Какие еще есть задачи? Допустим, задача фреймспоттинга. Есть какой-нибудь кусок звука, откуда надо извлечь информацию о том, была ли сказана фраза «Слушай, Яндекс» или не была. Для этого можно фразу распознать и грепнуть «Слушай, Яндекс», но это очень брутфорсный подход, причем распознавание обычно работает на серверах, модели очень большие. Обычно звук отсылается на сервер, распознается, и распознанная форма высылается обратно. Грузить 100 тыс. юзеров каждую секунду, слать звук на сервер - ни одни сервера не выдержат.

    Надо придумать решение, которое будет маленьким, сможет работать на телефоне и не будет жрать батарейку. И будет обладать хорошим качеством.

    Для этого давайте всё запихнем в нейронную сеть. Она просто будет предсказывать, к примеру, не фонемы и не буквы, а целые слова. И сделаем просто три класса. Сеть будет предсказывать слова «слушай» и «Яндекс», а все остальные слова замапим в филлер.

    Таким образом, если в какой-то момент сначала шли большие вероятности для «слушай», потом большие вероятности для «Яндекс», то с большой вероятностью тут была ключевая фраза «Слушай, Яндекс».


    Задача, которая не сильно исследуется в статьях. Обычно, когда пишутся статьи, берется какой-то датасет, на нем получаются хорошие результаты, бьется state of the art - ура, печатаем статью. Проблема этого подхода в том, что многие датасеты не меняются в течение 10, а то и 20 лет. И они не сталкиваются с проблемами, с которыми сталкиваемся мы.

    Иногда возникают тренды, хочется распознавать, и если этого слова нет в нашем графе декодирования в стандартном подходе, то мы никогда его не распознаем. Нужно с этим бороться. Мы можем взять и переварить граф декодирования, но это трудозатратный процесс. Может, утром одни трендовые слова, а вечером другие. Держать утренний и вечерний граф? Это очень странно.


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

    Какие задачи остались? Там state of the art побили, тут задачи решили… Приведу график WER за последние несколько лет.


    Как видите, Яндекс улучшился за последние несколько лет, и тут приводится график для лучшей тематики - геопоиска. Вы можете понять, что мы стараемся и улучшаемся, но есть тот маленький разрыв, который нужно побить. И даже если мы сделаем распознавание речи - а мы его сделаем, - которое сравнится со способностями человека, то возникнет другая задача: это сделалось на сервере, но давайте перенесем это на устройство. Речь идет об отдельной, сложной и интересной задаче.

    У нас есть и множество других задач, о которых меня можно спросить. Спасибо за внимание.

    В целом проблема распознавания образов состоит из двух частей: обучения и распознавания. Обучение осуществляется путем показа отдельных объектов с указанием их принадлежности тому или другому образу. В результате обучения распознающая система должна приобрести способность реагировать одинаковыми реакциями на все объекты одного образа и различными - на все объекты различных образов. Очень важно, что процесс обучения должен завершиться только путем показов конечного числа объектов без каких-либо других подсказок. В качестве объектов обучения могут быть либо картинки, либо другие визуальные изображения (буквы), либо различные явления внешнего мира, например звуки, состояния организма при медицинском диагнозе, состояние технического объекта в системах управления и др. Важно, что в процессе обучения указываются только сами объекты и их принадлежность образу. За обучением следует процесс распознавания новых объектов, который характеризует действия уже обученной системы. Автоматизация этих процедур и составляет проблему обучения распознаванию образов. В том случае, когда человек сам разгадывает или придумывает, а затем навязывает машине правило классификации, проблема распознавания решается частично, так как основную и главную часть проблемы (обучение) человек берет на себя.
    Проблема обучения распознаванию образов интересна как с прикладной, так и с принципиальной точки зрения. С прикладной точки зрения решение этой проблемы важно прежде всего потому, что оно открывает возможность автоматизировать многие процессы, которые до сих пор связывали лишь с деятельностью живого мозга. Принципиальное значение проблемы тесно связано с вопросом, который все чаще возникает в связи с развитием идей кибернетики: что может и что принципиально не может делать машина? В какой мере возможности машины могут быть приближены к возможностям живого мозга? В частности, может ли машина развить в себе способность перенять у человека умение производить определенные действия в зависимости от ситуаций, возникающих в окружающей среде? Пока стало ясно только то, что если человек может сначала сам осознать свое умение, а потом его описать, т. е. указать, почему он производит действия в ответ на каждое состояние внешней среды или как (по какому правилу) он объединяет отдельные объекты в образы, то такое умение без принципиальных трудностей может быть передано машине. Если же человек обладает умением, но не может объяснить его, то остается только один путь передачи умения машине - обучение примерами.
    Круг задач, которые могут решаться с помощью распознающих систем, чрезвычайно широк. Сюда относятся не только задачи распознавания зрительных и слуховых образов, но и задачи распознавания сложных процессов и явлений, возникающих, например, при выборе целесообразных действий руководителем предприятия или выборе оптимального управления технологическими, экономическими, транспортными или военными операциями. В каждой из таких задач анализируются некоторые явления, процессы, состояния внешнего мира, всюду далее называемые объектами наблюдения. Прежде чем начать анализ какого-либо объекта, нужно получить о нем определенную, каким-либо способом упорядоченную информацию. Такая информация представляет собой характеристику объектов, их отображение на множестве воспринимающих органов распознающей системы.
    Но каждый объект наблюдения может воздействовать по-разному, в зависимости от условий восприятия. Например, какая-либо буква, даже одинаково написанная, может в принципе как угодно смещаться относительно воспринимающих органов. Кроме того, объекты одного и того же образа могут достаточно сильно отличаться друг от друга и, естественно, по-разному воздействовать на воспринимающие органы.
    Каждое отображение какого-либо объекта на воспринимающие органы распознающей системы, независимо от его положения относительно этих органов, принято называть изображением объекта, а множества таких изображений, объединенные какими-либо общими свойствами, представляют собой образы.
    При решении задач управления методами распознавания образов вместо термина "изображение" применяют термин "состояние". Состояние - это определенной формы отображение измеряемых текущих (или мгновенных) характеристик наблюдаемого объекта. Совокупность состояний определяет ситуацию. Понятие "ситуация" является аналогом понятия "образ". Но эта аналогия не полная, так как не всякий образ можно назвать ситуацией, хотя всякую ситуацию можно назвать образом.
    Ситуацией принято называть некоторую совокупность состояний сложного объекта, каждая из которых характеризуется одними и теми же или схожими характеристиками объекта. Например, если в качестве объекта наблюдения рассматривается некоторый объект управления, то ситуация объединяет такие состояния этого объекта, в которых следует применять одни и те же управляющие воздействия. Если объектом наблюдения является военная игра, то ситуация объединяет все состояния игры, которые требуют, например, мощного танкового удара при поддержке авиации.
    Выбор исходного описания объектов является одной из центральных задач проблемы ОРО. При удачном выборе исходного описания (пространства признаков) задача распознавания может оказаться тривиальной и, наоборот, неудачно выбранное исходное описание может привести либо к очень сложной дальнейшей переработке информации, либо вообще к отсутствию решения. Например, если решается задача распознавания объектов, отличающихся по цвету, а в качестве исходного описания выбраны сигналы, получаемые от датчиков веса, то задача распознавания в принципе не может быть решена.

    Проблема распознавания образов сводится к двум задачам: обучения и распознавания. Поэтому, прежде чем сформулировать задачу обучения распознаванию образов уточним, в чем смысл их распознавания.

    Простейшим вариантом распознавания является строгий запрос на поиск объекта в базе данных по его признакам, который реализуется в информационно-поисковых системах. При этом каждому полю соответствует признак (описательная шкала), а значению поля - значение признака (градация описательной шкалы). Если в базе данных есть записи, все значения заданных полей которых точно совпадают со значениями, заданными в запросе на поиск, то эти записи извлекаются в отчет, иначе запись не извлекается.

    Более сложными вариантами распознавания является нечеткий запрос с неполнотой информации , когда не все признаки искомых объектов задаются в запросе на поиск, т.к. не все они известны, и нечеткий запрос с шумом , когда не все признаки объекта известны, а некоторые считаются известными ошибочно. В этих случаях из базы данных извлекаются все объекты, у которых совпадает хотя бы один признак и в отчете объекты сортируются (ранжируются) в порядке убывания количества совпавших признаков. При этом при определении ранга объекта в отсортированном списке все признаки считаются имеющими одинаковый "вес" и учитывается только их количество.

    • - во-первых, на самом деле признаки имеют разный вес, т.е. один и тот же признак в разной степени характерен для различных объектов;
    • - во-вторых, нас могут интересовать не столько сами объекты, извлекаемые из базы данных прецедентов по запросам, сколько классификация самого запроса, т.е. отнесение его к определенной категории, т.е. к тому или иному обобщенному образу класса.

    Если реализация строгих и даже нечетких запросов не вызывает особых сложностей, то распознавание как идентификация с обобщенными образами классов, причем с учетом различия весов признаков представляет собой определенную проблему.

    Обучение осуществляется путем предъявления системе отдельных объектов, описанных на языке признаков, с указанием их принадлежности тому или другому классу. При этом сама принадлежность к классам сообщается системе человеком - Учителем (экспертом).

    В результате обучения распознающая система должна приобрести способность:

    • 1. Относить объекты к классам, к которым они принадлежат (идентифицировать объекты верно).
    • 2. Не относить объекты к классам, к которым они не принадлежат (неидентифицировать объекты ошибочно).

    Эта и есть проблема обучения распознаванию образов, и состоит она в следующем:

    • 1. В разработке математической модели, обеспечивающей: обобщение образов конкретных объектов и формирование обобщенных образов классов; расчет весов признаков; определение степени сходства конкретных объектов с классами и ранжирование классов по степени сходства с конкретным объектом, включая и положительное, и отрицательное сходство.
    • 2. В наполнении этой модели конкретной информацией, характеризующей определенную предметную область.
    Похожие статьи