Логические нейронные сети

       

Основы построения модели системы интеллектуального отображения для "плоской" анимации


Целью моделирования является:

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

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

  3. Создание, исследование и развитие средств плоской анимации, динамически учитывающей внешние факторы.

  4. Конкретизация области применения реагирующих объектов.

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

  6. Обоснование необходимости разработки средств построения реагирующих объектов в модели трехмерной памяти для повышения эффективности компьютерного и натурного их моделирования.

Основная часть экрана для работы пользователя с моделью интеллектуального отображения представлена на

рис. 15.9 .


Рис. 15.9.  Экран модели

Основными элементами этого экрана являются два поля: поле показываемых (создаваемых) с помощью мыши образов (ПО) и поле реагирующего объекта (РО).

Если ПО пусто или контурно нарисованный в нем объект не узнан РО, последний находится в состоянии покоя, т.е. показа некоторого нейтрального или начального состояния, например первого показанного на рис. 2 "нулевого" кадра.

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

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


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



Для облегчения понимания перейдем к рассмотрению "видимых" объектов — образов: букв, фруктов, зверей и т.д. В общем случае очевидно, что каждую точку в факторном пространстве, характеризующем сложную систему, можно интерпретировать как некий образ, изображение которого в определенной конфигурации возбуждает рецепторы нейронной сети. Так что проблема распознавания образов в рамках проблемы компьютерного зрения [4], актуальная, например, в системах игр и развлечений, вовсе не подменяет проблему интеллектуального отображения в факторном пространстве, служа лишь наглядности.

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

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

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

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

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



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

Увеличение числа клеток экрана ПО (повышение разрешающей способности) служит увеличению возможного числа эталонов и вероятности распознавания.

Для имитации настроения РО разрабатывается база данных — набор ключевых кадров, например, показанных на

рис. 15.10
.

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


Рис. 15.10.  Образы для комплектации сюжетных рядов

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

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

Функциональная схема модели показана на рис. 15.11.


Рис. 15.11.  Функциональная схема модели

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

Поведение реагирующего объекта отображается на демонстрационном экране.

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



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

Для облегчения понимания перейдем к рассмотрению "видимых" объектов — образов: букв, фруктов, зверей и т.д. В общем случае очевидно, что каждую точку в факторном пространстве, характеризующем сложную систему, можно интерпретировать как некий образ, изображение которого в определенной конфигурации возбуждает рецепторы нейронной сети. Так что проблема распознавания образов в рамках проблемы компьютерного зрения [4], актуальная, например, в системах игр и развлечений, вовсе не подменяет проблему интеллектуального отображения в факторном пространстве, служа лишь наглядности.

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

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

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

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

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


Новый сюжетный ряд становится текущим.

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

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

На рис. 15.12

показаны связи, отображающие запоминание эталона "яблоко". Для упрощения выбран экран в 6?4 клеток. Покрываемые эталоном клетки закрашены.


Рис. 15.12.  Обучение яблоку

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


Рис. 15.13.  Расположение морковки на экране

Закрепим за морковкой нейрон выходного слоя и свяжем его со всеми закрашенными клетками экрана.

Совместное запоминание двух эталонов показано на рис. 15.14.


Рис. 15.14.  Совместное запоминание эталонов яблока и морковки

Нейросеть представлена матрицей следования на рис. 15.15. Здесь рецепторы — клетки экрана наделены сквозной нумерацией вдоль строк и по строкам.


Рис. 15.15.  Матрица следования нейросети, обученной двум эталонам

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

Выберем передаточную функцию. А именно, величину Vi

возбуждения нейронов выходного слоя считаем





где ?(х) — не раз используемая функция отклонения отрицательных значений.

Здесь j принимает значение номеров рецепторов, участвующих с единичными весами (поэтому веса не указаны в передаточной функции) в запоминании эталона, Gj

— число таких рецепторов. Делением на Gj

производится приведение всех величин возбуждения по эталонам в один диапазон изменения. Это необходимо для того, чтобы "большие" образы, частично засвеченные вследствие возмущения "маленьких" образов, не подавляли эти последние. Так, в данном примере "морковка" засвечивает 16 клеток, а "яблоко" — только 13.

Порог h определяет предел допустимости вывода.

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

Однако в любом случае величина возбуждения должна преодолеть порог на тот случай, если это и не морковка, и не яблоко, а также при большом "зашумлении".

Алгоритм обработки выделенных строк матрицы следования однослойной сети примитивен.

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

Работа модели, как системы реального времени, тактируется в соответствии с темпом выдачи кадров, т.е. с частотой, обеспечивающей комфортное восприятие.

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


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

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

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

На рис. 15.16

показаны два смежных ключевых кадра : кадр K и кадр L. Однако кадр К в общем случае — некоторый начальный (ключевой или промежуточный) кадр i (значению i = 0 соответствует кадр К), от показа которого необходимо плавно, через показ ряда промежуточных кадров, перейти к показу кадра L. Тогда следующий, i+1-й кадр, выдаваемый в следующем такте работы модели, должен быть получен на основе одного шага изменения кадра i.

Пусть на рисунке К1-К5

— исходные контрольные точки (конечно, невидимые), заданные своими координатами (xKj, yKj) ; L1-L5

- соответствующие им контрольные точки (xLj, yLj) в результирующем кадре L, j = 1, …, 5.


Рис. 15.16.  Кадры анимации

Контрольные точки Kj

через N тактов должны перейти в контрольные точки Lj

, увлекая за собой некоторую окрестность ?j

. Причем моделируется свойство "вязкости", при котором более удаленные от центра (Kj) точки смещаются меньше. Более того, если область ?j

пересекается разрезом, то перенос точек по другую сторону разреза не производится (см. открытие рта). В примере задан такой отрезок [A1, A2] , который должен перейти в отрезок [B1, B2] .

Алгоритм



  1. Производится начальная загрузка в буфер показа БП "нулевого" кадра, т.е. фонового, нейтрального выражения объекта в состоянии ожидания.


  2. Реализуется временной режим работы модели, поддерживающий показ кадров — ключевых или промежуточных — с частотой 20 Гц.


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


  3. Демонстрируется очередной кадр из БП и производится обращение к Программе обработки ситуации, рассмотренной ранее.


  4. Выполняется после возврата из Программы обработки ситуации. Анализируется: был ли показанный кадр ключевым или промежуточным? Если показанный кадр был промежуточным, выполняется 7.


  5. Если показанный кадр был ключевым, анализируется: иссяк ли сюжетный ряд, т.е. выработала ли Программа оценки ситуации продолжение сюжетного ряда, как реакцию на внешние факторы (рисунок)? Если сюжетный ряд иссяк, управление передается 1 для загрузки "нулевого" кадра, который будет показываться, пока не выработается новый сюжетный ряд. Если сюжетный ряд не иссяк, выполняется 6.


  6. Производится подготовка формирования промежуточных кадров между только что показанным К и следующим L. Взводится счетчик показа промежуточных кадров СПК. Для упрощения демонстрационной модели считаем, что между любыми двумя смежными ключевыми кадрами следует показать 19 промежуточных. То есть выполняется операция СПК := 20.


  7. СПК уменьшается на единицу для показа очередного промежуточного кадра.


  8. Если в результате 7 СПК достиг нуля, показ промежуточных кадров считается законченным, следующим показываемым кадром должен быть кадр L. Выполняется 9. Если СПК не равно нулю, выполняется 10.


  9. Кадр L загружается в БП, далее выполняется 2.


  10. Если СПК не равно нулю, организуется цикл по j (шаги 11-16) перебора контрольных точек объекта. По окончании цикла организуется переход к 20.


  11. Для контрольной точки Kj (xKj, yKj) отыскивается соответствующая ей точка Lj

    (xLj, yLj) из СКТ кадра L. Отыскивается область ?j

    радиуса Rj

    с центром в точке Kj

    , включающая точку Lj

    (ее проекцию на кадр К). Радиус Rj

    вычисляется из соотношения

    2Rj = r(Kj, Lj) + l,

    где r — расстояние, l — поправка, подбираемая экспериментально.



  12. Организуется цикл перебора точек P(x, y) из окрестности ?j

    контрольной точки Kj



    . Этот перебор осуществляется "циклом в цикле":



    По окончании перебора выполняется 17.



  13. Проверяется, разделены ли точки P и L разрезами. Данная проверка производится в результате решения следующей задачи.

    Пусть на рис. 15.17

    точки P(x, y) и L(xL, yL) (индекс j опустим) находятся по разные стороны отрезка [A, B], где A = (xA, yA) , B = (xB, yB) , так, что отрезки [P, L] и [A, B] пересекаются. (Именно этот случай запрещает перемещение точки Р за разрез — в окрестность точки L.)


    Рис. 15.17.  Анализ разреза

    Рассмотрим параметрическое описание этих отрезков и запишем уравнения для нахождения точки пересечения (?, ?).





    Или:



    Отсюда



    \begin{array}{l} k_1 = \cfrac{(x-x_A) (y_B-y_A) - (y-y_A) (x_B-x_A)}{ (x_B-x_A) (y_L-y) - (y_B-y_A) (x_L-x)} \\ k_2 = \cfrac{(x-x_A)}{ (x_B-x_A)}+ k_1\cfrac{(x_L-x)}{(x_B-x_A)}. \end{array} " width="361" height="92">

    Если отрезки пересекаются, выполняется условие 0
    k1
    1, 0
    k2
    1. В противном случае отрезки не пересекаются, и перемещение точки Р в направлении к точке Lj

    допустимо. Если точки P и L разделены разрезом, производится переход к 12. В противном случае выполняется 14.



  14. Рассчитываются координаты переноса точки Р при формировании очередного промежуточного кадра К*:



    Здесь учитывается удаление точки Р от центра — от точки Kj

    . Так, на окружности радиуса Rj

    перенос затихает вовсе. Текущее значение СПК характеризует оставшуюся часть смещения.



  15. Проверяется, является ли перенесенная точка контрольной или границей разреза. Если не является, выполняется 12.


  16. Если перенесенная точка является контрольной или границей разреза, фиксируются новые значения координат перенесенной точки (ее образом становится точка Kj* , если это была контрольная точка) в СКТ промежуточного кадра K*. Далее выполняется 12.


  17. Выполняется по окончании цикла перебора точек из ?j

    окрестности (шаг 12). Формируется цикл обработки разрезов, оказавшихся в этой окрестности. По окончании цикла выполняется 10. Организуется перебор точек P(x, y) этой окрестности, подобно организованному в блоке 12.




  18. Проверяется, является ли очередная анализируемая точка "пустой" вследствие деформации (растяжения) объекта. При отрицательном результате анализа выполняется 20.


  19. Если точка "пустая", находится ее усредненное значение на основе непустых окружающих ее точек:



    где P(x, y) отождествляется с точкой P(xn, ym) для отображения окружающих точек, S — число таких "непустых" точек.



  20. Организуется цикл обработки разрезов кадра К*. После обработки всех разрезов выполняется 24.


  21. Для каждого разреза формируется некоторая окрестность, опирающаяся на разрез, и организуется цикл перебора точек P(x, y) , образованного прямоугольника.


  22. Проверяется: точка P(x, y) — "пустая"?


  23. Если да, отыскивается точка Q(x, y) в кадре L (с теми же координатами) и налагается на точку Р: P(x, y) := Q(x, y).

    Далее выполняется 20.



  24. После анализа всех разрезов (шаг 20) считается, что кадр К* полностью сформирован. Производится загрузка сформированного кадра в буфер показа БП и управление передается 2 для продолжения работы модели.



Содержание раздела