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

Основы живого моделирования

Разбить на страницы
Показывать лекцию целиком

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

15.1. Какую задачу мы хотим решить?

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

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

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

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

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

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

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

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

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

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

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

15.2. Моделирование трехмерной памяти

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

Отметим, что современные персональные компьютеры (РС) и рабочие станции, реализующие системы мультимедиа, вполне способны выполнять функции такого нейрокомпьютера. Однако потребность интеграции памяти нескольких компьютеров может потребовать применения локальной вычислительной сети, удовлетворяющей требованиям работы в реальном времени. И уж без сомнения, параллельная вычислительная система SPMD-архитектуры [9] c большой оперативной памятью в наибольшей степени адекватна рассматриваемой задаче.

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

Пусть адресное пространство ВНК при сквозной линейной адресации ячеек определяется N разрядами. Адрес разбивается на четыре части (рис. 15.1).

(рис 15.1) Преобразование линейного адреса в трехмерный

Здесь x, y, z — координаты клетки в трехмерной памяти ; s разрядов отводятся для адресации стека, сопровождающего каждую клетку. Стек необходим для сохранения информации в случае сжатия объекта — для более точного его восстановления. Таким образом, адресное пространство хранения клеток объекта или целой сцены составляет 2N-s , что говорит о необходимом весьма большом значении N. Значение s практически может быть не более трех.

Трехмерная память — это перспективная разработка. Она предполагает непосредственный (невиртуальный) доступ пользователя на этапе программирования как к памяти, так и к адресам данных при указанной структуре адреса.

При моделировании трехмерная память в виртуальной памяти современного компьютера задается трехмерным массивом S[0:P; 0:P; 0:P] переменных S[i, j, k], где значения индексов являются координатами соответственно x, y, z. Тогда задача деформации или перемещения объектов преобразуется в задачу нахождения новых значений этих индексов для каждой переменной, являющейся клеткой объекта — для выполнения соответствующего переноса.

При этом линейный адрес переноса или текущего нахождения клетки объекта находится так:

<S[i, j, k]> = C + i + jP + kP2.

Здесь С — базовый адрес массива.

Стек моделировать нецелесообразно. Информация, потерянная при сжатии объекта, может быть восстановлена с помощью интерполяции.

15.3. "Мышца" и ее сокращение

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

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

Мышцы объекта являются невидимыми, входящими в список мышц данного объекта и допускающими реакцию на приказы извне.

(рис 15.2) Применение мышцы

Таким образом, мышца (рис. 15.2) — это невидимый отрезок АВ, связывающий точки A(x1, y1, z1) и B(x2, y2, z2) , отображающий некоторое геометрическое место клеток объекта. Этот отрезок связан с объектом и может сокращаться при подаче управляющих импульсов и восстанавливаться при их отсутствии. Такое изменение отрезка производится относительно некоторой принадлежащей ему точки М(xM, yM, zM) . Сокращение мышцы сопровождается пространственным переносом (уплотнением) клеток объекта, которые принадлежат (с точностью до дискретности адресации) отрезку, обозначающему эту мышцу.

Параметрическая система уравнений, описывающих отрезок АВ, имеет вид

$$\begin{array}{l} x = k(x_{2} - x_{1}) + x_{1}\\ y = k(y_{2} - y_{1}) + y_{1} \\ z = k(z_{2} - z_{1}) + z_{1}\\ 0 \le k \le 1. \end{array}$$

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

Пусть l — коэффициент сжатия мышцы. Тогда отрезок АМ необходимо преобразовать в отрезок А*М с длиной lx|А*М|, а отрезок МВ — в отрезок МВ* с длиной lx |МВ*|.

Рассматривая по каждой координате отдельно, убеждаемся, что отрезок x1xM необходимо преобразовать в отрезок x1* xM с длиной l(xM- x1) , отрезок xMx2 необходимо преобразовать в отрезок xMx2* c длиной l(x2 - xM) . Аналогично отрезок y1yM должен быть преобразован в отрезок y1* yM с длиной l(yM - y1) и т.д.

Это, в частности, означает, что клетка с координатой x1 должна быть переслана в ячейку, определяемую соответствующей составляющей адреса l(xM - x1) и т.д.

Однако изменение адреса пересылки клеток по разным координатам различно, что определяется положением мышцы в пространстве. Для пояснения этого положения и для формирования алгоритма сжатия мышцы рассмотрим пример.

Пусть 045 451 714трехмерный адрес точки А в восьмеричной системе счисления. Это означает, что А = (x1, y1, z1) = (045, 451, 714) . Аналогично, пусть В = (x2, y2, z2) = (055, 471, 720) , а неподвижная точка находится в середине отрезка АВ, M = (xM, yM, zM) = (051, 461, 716) . Зададим l = 0,610 (в десятичной системе счисления).

Адресное расстояние между точками А и М составляет $$\Delta A_{x} = 4$$, $$\Delta A_{y} = 10 = 8_{10}$$, $$\Delta A_{z} = 2$$. Максимальное адресное расстояние по всем координатам $$\Delta А = 8_{10}$$.

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

Пусть i — параметр цикла переноса точек отрезка АМ для его преобразования в отрезок А*М, i = 1, ..., 11. Здесь граничное значение цикла определяется максимальным значением точек переноса по всем координатам, равным $$\Delta А + 1$$. Программно перенос производится с конца отрезка к его началу — чтобы не уничтожать еще не перенесенную информацию. Тогда адреса переноса отдельно по координатам находятся как

$$\begin{array}{l} x_{пер} = x_{M} - il\cfrac {\Delta A_x}{\Delta A}\\ y_{пер }= y_{M }- il\cfrac {\Delta A_y}{\Delta A}\\ z_{пер }= z_{M} - il\cfrac {\Delta A_z}{\Delta A}. \end{array}$$

В указанном порядке рассчитаем адреса переноса отдельно по координате x, не допуская при округлении выхода адресов из адресного пространства мышцы:

051 -  1 x 0,610 x 0,510 = 051
        051 -  2 x 0,610 x 0,510 = 050
        051 -  3 x 0,610 x 0,510 = 050
        051 -  4 x 0,610 x 0,510 = 050
        051 -  5 x 0,610 x 0,510 = 047
        051 -  6 x 0,610 x 0,510 = 047
        051 -  7 x 0,610 x 0,510 = 046
        051 - 10 x 0,610 x 0,510 = 046
        051 - 11 x 0,610 x 0,510 = 046

Рассчитаем координату у:

461 -  1 x 0,610 x 1 = 460
        461 -  2 x 0,610 x 1 = 460
        461 -  3 x 0,610 x 1 = 457
        461 -  4 x 0,610 x 1 = 456
        461 -  5 x 0,610 x 1 = 456
        461 -  6 x 0,610 x 1 = 455
        461 -  7 x 0,610 x 1 = 454
        461 - 10 x 0,610 x 1 = 453
        461 - 11 x 0,610 x 1 = 452

Адреса переноса по координате z:

716 -  1 x 0,610 x 0,2510 = 716
        716 -  2 x 0,610 x 0,2510 = 716
        716 -  3 x 0,610 x 0,2510 = 716
        716 -  4 x 0,610 x 0,2510 = 716
        716 -  5 x 0,610 x 0,2510 = 715
        716 -  6 x 0,610 x 0,2510 = 715
        716 -  7 x 0,610 x 0,2510 = 715
        716 - 10 x 0,610 x 0,2510 = 715
        716 - 11 x 0,610 x 0,2510 = 715

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

Аналогично, для правой части мышцы, для отрезка МВ, найдем адресные расстояния $$\Delta A_{x} = -4$$, $$\Delta A_{y} = -10 = -8_{10}$$, $$\Delta A_{z} = -2$$, $$\Delta А = -8_{10}$$. По (15.2) для адресов переноса по x, y, z находим

051 +  1 x 0,610 x 0,510 = 051      461 +  1 x 0,610 x 1 = 462    716 +  1 x 0,610 x 0,2510 = 716
051 +  2 x 0,610 x 0,510 = 052      461 +  2 x 0,610 x 1 = 463    716 +  2 x 0,610 x 0,2510 = 716
051 +  3 x 0,610 x 0,510 = 052      461 +  3 x 0,610 x 1 = 463    716 +  3 x 0,610 x 0,2510 = 716
051 +  4 x 0,610 x 0,510 = 052      461 +  4 x 0,610 x 1 = 464    716 +  4 x 0,610 x 0,2510 = 716
051 +  5 x 0,610 x 0,510 = 053      461 +  5 x 0,610 x 1 = 464    716 +  5 x 0,610 x 0,2510 = 717
051 +  6 x 0,610 x 0,510 = 053      461 +  6 x 0,610 x 1 = 465    716 +  6 x 0,610 x 0,2510 = 717
051 +  7 x 0,610 x 0,510 = 053      461 +  7 x 0,610 x 1 = 465    716 +  7 x 0,610 x 0,2510 = 717
051 + 10 x 0,610 x 0,510 = 054      461 + 10 x 0,610 x 1 = 466    716 + 10 x 0,610 x 0,2510 = 717
051 + 11 x 0,610 x 0,510 = 054      461 + 11 x 0,610 x 1 = 466    716 + 11 x 0,610 x 0,2510 = 717

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

Свяжем перебор искомых точек с тем же параметром цикла организации пересылки

$$x = x_{M} - i\cfrac {\Delta A_x}{\Delta A} y = y_{M }- i\cfrac {\Delta A_y}{\Delta A} z = z_{M} - i\cfrac {\Delta A_z}{\Delta A}.$$

Найдем отдельно для x, y, z отрезка АМ адреса пересылаемых точек:

051 -  1 x 0,510 = 050           461 -  1 x 1 = 460           716 -  1 x 0,2510 = 716
051 -  2 x 0,510 = 050           461 -  2 x 1 = 457           716 -  2 x 0,2510 = 715
051 -  3 x 0,510 = 047           461 -  3 x 1 = 456           716 -  3 x 0,2510 = 715
051 -  4 x 0,510 = 047           461 -  4 x 1 = 455           716 -  4 x 0,2510 = 715
051 -  5 x 0,510 = 046           461 -  5 x 1 = 454           716 -  5 x 0,2510 = 715
051 -  6 x 0,510 = 046           461 -  6 x 1 = 453           716 -  6 x 0,2510 = 714
051 -  7 x 0,510 = 045           461 -  7 x 1 = 452           716 -  7 x 0,2510 = 714
051 - 10 x 0,510 = 045           461 - 10 x 1 = 451           716 - 10 x 0,2510 = 714
051 - 11 x 0,510 = 045           461 - 11 x 1 = 450           716 - 11 x 0,2510 = 714

Для отрезка МВ находим

051 +  1 x 0,510 = 052           461 +  1 = 462               716 +  1 x 0,2510 = 716
051 +  2 x 0,510 = 052           461 +  2 = 463               716 +  2 x 0,2510 = 716
051 +  3 x 0,510 = 053           461 +  3 = 464               716 +  3 x 0,2510 = 716
051 +  4 x 0,510 = 053           461 +  4 = 465               716 +  4 x 0,2510 = 716
051 +  5 x 0,510 = 054           461 +  5 = 466               716 +  5 x 0,2510 = 716
051 +  6 x 0,510 = 054           461 +  6 = 467               716 +  6 x 0,2510 = 716
051 +  7 x 0,510 = 055           461 +  7 = 470               716 +  7 x 0,2510 = 716
051 + 10 x 0,510 = 055           461 + 10 = 471               716 + 10 x 0,2510 = 716
051 + 11 x 0,510 = 055           461 + 11 = 471               716 + 11 x 0,2510 = 716

"Склеим" координатные части адресов и обозначим ее окончательно в двух столбцах: в левом — пересылку для левой части мышцы, в правом — для правой.

(050 460 716) => 051 460 716            (052 462 716) => 051 462 716
      (050 457 715) => 050 460 716            (052 463 717) => 052 463 716
      (047 456 715) => 050 457 716            (053 464 717) => 052 463 716
      (047 455 715) => 050 456 716            (053 465 717) => 052 464 716
      (046 454 715) => 047 456 715            (054 466 717) => 053 464 717
      (046 453 714) => 047 455 715            (054 467 720) => 053 465 717
      (045 452 714) => 046 454 715            (055 470 720) => 053 465 717
      (045 451 714) => 046 453 715            (055 471 720) => 054 466 717
      (045 450 714) => 046 452 715            (055 471 720) => 054 466 717

В строках 2 и 3, в 6 и 7, а также в 8 и 9 видно формирование стеков при неоднократной записи в одну клетку.

Однако вся проделанная выше работа по сжатию мышцы в действительности касается только клеток со значащим содержимым. Это означает, что если объект задан своей оболочкой, то переносу подвергаются только клетки оболочки. Мышца чаще всего является "пустым" объектом, и смещаются только точки А и В. Переносить ее клетки следует в таком случае лишь тогда, когда она принадлежит оболочке или пересекается с ней.

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

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

15.4. Сокращение "твердого" объекта

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

Пусть, как и ранее, задано значение 0 <= l <= 1 , приводящее к сокращению объекта в направлении мышцы АВ (рис. 15.3). Объект должен преобразиться, как показано на рисунке пунктиром. Мышца описывается системой параметрических уравнений (15.1). М, как и прежде, — неподвижная (относительно неподвижного объекта) точка мышцы. Однако эта точка теперь определяет плоскость М, перпендикулярную мышце, относительно которой слева и справа все значащие клетки объекта должны сместиться в направлении к этой плоскости, т.е. параллельно мышце, с коэффициентом смещения (сжатия), равным l.

(рис 15.3) Сокращение твердого тела

Плоскость М описывается уравнением

$$(\xi - x_{M}) (x_{1} - x_{M}) + (\psi - y_{M})(y_{1} - y_{M}) + \\+(\zeta - z_{M})(z_{1} - z_{M}) = 0$$

Пусть точка (xj, yj, zj) — текущая клетка объекта с адресом xjyjzj , подлежащая указанному переносу. Найдем координаты xj(M), yj(M), zj(M) ее проекции на плоскость М. Так как точка с этими координатами принадлежит плоскости М и минимизирует квадрат расстояния точки (xj, yj, zj) до этой плоскости, задача такой условной минимизации формулируется так:

найти значение xj(M), yj(M), zj(M) , удовлетворяющее требованию

(xj(M) - xj )2 + (yj(M) - yj)2 + (zj(M) - zj)2 -> min

при условии

(xj(M) - xM)(x1 - xM) + (yj(M) - yM)(y1 - yM) + (zj(M) - zM)(z1 - zM) = 0.

Решим данную задачу, используя уравнение Лагранжа

$$(x_{j}^{(M)} - x_{j})^{2} + (y_{j}^{(M)} - y_{j})^{2} + (z_{j}^{(M)} - z_{j})^{2} + \lambda [(x_{j}^{(M)} - x_{M})(x_{1} - x_{M}) + (y_{j}^{(M)} - y_{M})(y_{1} - y_{M}) + (z_{j}^{(M)} - z_{M})(z_{1} - z_{M})] \to min$$.

Дифференцируя по всем переменным, включая $$\lambda,$$ и приравнивая производные нулю, получим систему линейных уравнений

$$2(x_{j}^{(M)} - x_{j}) + \lambda (x_{1} - x_{M}) = 0$$

$$2(y_{j}^{(M)} - y_{j}) + \lambda (y_{1} - y_{M}) = 0$$

$$2(z_{j}^{(M)} - z_{j}) + \lambda (z_{1} - z_{M}) = 0$$

(xj(M) - xM)(x1 - xM) + (yj(M) - yM)(y1 - yM) + (zj(M) - zM)(z1 - zM) = 0.

Решая систему, находим

$$\begin{array}{l} x^{(M)}_{j} = 0,5\lambda(x_{M} - x_{1}) + x_{j}\\ y^{(M)}_{j} = 0,5\lambda(y_{M} - y_{1}) + y_{j} \\ z^{(M)}_{j} = o,5\lambda(z_{M} - z_{1}) + z_{j}\\ \lambda =2 \cfrac{(x_j - x_M) (x_1 - x_M)+ (y_j - y_M) (y_1 - y_M)+ (z_j - z_M) (z_1 - z_M)} {(x_1 - x_M)^2 +(y_1 - y_M)^2 +(z_1 - z_M)^2}. \end{array}$$

Таким образом, получена мышца с началом в точке (клетке) с координатами xj, yj, zj и с концом в точке xj(M), yj(M), zj(M) . Эта же точка является неподвижной. Тогда по (14.2) и (14.3) имитируется сжатие мышцы. Цикл по j охватывает все значащие клетки объекта.

15.5. Сокращение вязкого тела

Вязкое тело, внутри которого сокращается мышца, характеризуется "затуханием" величины смещения клетки объекта с увеличением ее расстояния до мышцы (рис. 15.4).

Найдем квадрат r2 кратчайшего расстояния между произвольной текущей точкой объекта или только его оболочки xj, yj, zj) и мышцей. Это расстояние определяется с помощью проекции xj0, yj0, zj0) данной точки на мышцу (на рисунке — две точки, проектируемые правее А ), или ее удаленностью от концов мышцы (на рисунке — точка левее А ).

(рис 15.4) Сокращение вязкого тела

Предполагая, что данная проекция принадлежит мышце, найдем с помощью параметрического описания (15.1) соответствующее ей значение kmin из соотношения

$$\begin{array}{rl} r^2 = (x_{j0} - x_{j})^2 + (y_{j0} - y_{j})^2 + (z_{j0} - z_{j})^2 = \\ (x_{j0} - x_{1} - k(x_{2} - x_{1}))^2 + (y_{j0} - y_{1} - k(y_{2} - y_{1}))^2 +\\ +(z_{j0} - z_{1} - k(z_{2} - z_{1}))^2. \end{array}$$

Значение kmin, которое определяет клетку мышцы, соответствующую искомому минимальному расстоянию, вычисляется с помощью нулевого значения производной по k:

(xj0 - x1 - k(x2 - x1)(x2 - x1) + (yj0 - y1 - k(y2 - y1)(y2 - y1) + (zj0 - z1 - k(z2 - z1)(z2 - z1) = 0

Откуда

$$k_{min} = \frac{(x_{j0}-x_1) (x_2-x_1)+ (y_{j0}-y_1)(y_2-y_1)+ (z_{j0}-z_1) (z_2-z_1)} { (x_2-x_1)^2+ (y_2-y_1)^2+ (z_2-z_1)^2 }.$$

Если выполняется условие 0 <= kmin <= 1, искомая проекция действительно принадлежит мышце. Тогда r2 отыскивается в результате подстановки (15.7) в (15.6). Если kmin < 0, ближайшей точкой мышцы является А. В этом случае

r2 = (x1 - xj)2 + (y1 - yj)2 + (z1 - zj)2.

Если kmin > 1, ближайшей точкой мышцы является В:

r2 = (x2 - xj)2 + (y2 - yj)2 + (z2 - zj)2.

Чтобы определить направление переноса клетки (xj, yj, zj) , необходимо по (15.5) найти ее проекцию на плоскость М. Тогда для нахождения адресов циклической пересылки значащих клеток объекта воспользуемся формулами

$$\begin{array}{l} x_{j пер} = x_{jM} – il \rho \left(1 - \cfrac{r^2}{R^2}\right ) \cfrac{\Delta A_x}{\Delta A}\\ y_{j пер} = y_{jM} - il \rho \left (1 - \cfrac{r^2}{R^2}\right ) \cfrac{\Delta A_y}{\Delta A}\\ z_{j пер} = z_{jM} - il\rho \left (1 - \cfrac{r^2}{R^2}\right ) \cfrac{\Delta A_z}{\Delta A}.\end{array}$$

Здесь $$\rho$$ — коэффициент вязкости и R2 — заведомо большое число, ограничивающее значение r2 , где смещение полностью затухает.

Перебор клеток объекта для пересылки выполняется по (15.3). Пересылка выполняется для обоих полупространств, разделяемых плоскостью М.

15.6. Сокращение вязкого тела с "выпучиванием"

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

Пусть, как и прежде, xj, yj, zj — составляющие адрес координаты текущей клетки вязкого объекта, для которого выше сформированы выражения (15.8) для определения адреса переноса. Дополним их указанной перпендикулярной составляющей (рис. 15.5).

(рис 15.5) Сокращение тела с "выпучиванием"

По (15.7), подставив вместо xj0, yj0, zj0 значение найденной по (15.8) точки переноса (xj пер, y j пер , zj пер) , найдем kmin и, невзирая на его значение, найдем проекцию (xj0пер, yj0пер, zj0пер) на мышцу или ее продолжение влево или вправо.

(Заметим, что уравнения (1) при 0 <= k <= 1 определяют собственно мышцу, другие значения $$k \in [-\infty , 0], k \in [0, \infty ]$$ определяют точки прямой, которой принадлежит отрезок — мышца.)

Запишем систему параметрических уравнений прямой, проходящей через точки (xj пер, y j пер , zj пер) и (xj пер0, yj пер0, zj пер0) :

$$\begin{array}{l} x = m(x_{j пер}^0 - x_{j пер}) + x_{j пер}\\ y = m(y_{j пер}^0 - y_{j пер}) + y_{j пер} \\ z = m(z_{j пер}^0 - z_{j пер}) + z_{j пер}. \end{array}$$

Задав малое приращение $$\Delta m > 0$$, зависящее от r2пер = (xj пер0 - xj)2 + (yj пер0 - yj)2 + (zj пер0 - zj пер)2 , и приняв $$m = 1 +\Delta m$$, получим окончательно точку переноса (xj пер*, yj пер*, zj пер*) , отстоящую от точки переноса, найденной по (15.8), и смещенную в перпендикулярном направлении от мышцы.

Эмпирическую зависимость коэффициента смещения $$\Delta m$$ от указанного выше расстояния можно выбрать как

$$\Delta m = l\rho \left (1 - \frac{r^2_{пер}}{R^2} \right ).$$

Тогда из (9) находим

$$\begin{array}{l} x^*_{j пер} = (1 + \Delta m)(x^0_{j пер} - x_{j пер})+ x_{j пер}\\ y^*_{j пер} = (1 + \Delta m)(y^0_{j пер} - y_{j пер})+ y_{j пер}\\ z^*_{j пер} = (1 + \Delta m)(z^0_{j пер} - z_{j пер})+ z_{j пер}. \end{array}$$

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

15.7. Шарнирно-мышечное соединение

Координаты шарнира задаются условно (ячейка не занимается) точкой O(x0, y0, z0) внутри объекта (рис. 15.6). Мышца АВ связывает лучи (элементы скелета), исходящие из точки О. Сокращение мышцы должно вызывать видимость движений, характерных при ходьбе, движении рук и т.д. Это требует таких деформаций объектов, при которых его клетки, облегающие эти лучи, или только клетки оболочки, несущие в себе данные лучи, сближаются вместе с лучами, не приводя к дополнительной деформации.

(рис 15.6) Деформация объекта вокруг шарнира

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

По аналогии с (15.1), луч ОА описывается параметрической системой уравнений

$$\begin{array}{l} x = k(x_{1} - x_{0}) + x_{0}\\ y = k(y_{1} - y_{0}) + y_{0}\\ z = k(z_{1} - z_{0}) + z_{0}. \end{array}$$

Если 0 <= k <= 1, то уравнения отображают отрезок ОА. Нас же интересует вся прямая, исходящая из точки О.

Отобразим сокращение мышцы переносом клетки А в клетку А' (x1', y1', z1' ), в упрощенной форме воспользовавшись (15.2) и (15.3). Этим установим новое положение ОА' луча ОА.

Уравнения этого луча имеют вид

$$\begin{array}{l} x = k'(x_{1}' - x_{0}) + x_{0}\\ y = k'(y_{1}' - y_{0}) + y_{0} \\ z = k'(z_{1}' - z_{0}) + z_{0}. \end{array}$$

Если 0 <= k' <= 1, то уравнения отображают отрезок ОА'. Однако точка А' не отображает факт вращения луча ОА вокруг точки О. При этом вращении точка А должна переместиться в точку А1 , отстоящую от О на расстояние, равное длине отрезка ОА. Найдем координаты этой точки на луче ОА' из соотношения

(x11 - x0)2 + (y11 - y0)2 + (z11 - z0)2 = r2 = (x1 - x0)2 + (y1 - y0)2 + (z1 - z0)2.

В параметрической форме представления (12) точке (x11, y11, z11) соответствует некоторое значение k1' параметра. Подставим вместо координат этой точки их параметрическое представление:

(k1')2((x1' - x0)2 + (y1' - y0 )2 + (z1' - z0)2) = r2 .

Откуда

$$k_{1}' = \frac{r}{\sqrt{(x_1'-x_0)^2+(y_1'-y_0)^2+(z_1'-z_0)^2}}$$

Очевидно, k1' > 0 . Таким образом, точка А1 переноса конца А мышцы найдена.

Для синхронных действий при переносе всех клеток объекта, подлежащих перемещению вокруг шарнира, запишем уравнения луча ОА1 в зависимости от того же параметра k, определяющего положение (15.12) луча ОА

$$\begin{array}{l} x = k(x_{11} - x_{0}) + x_{0}\\ y = k(y_{11} - y_{0}) + y_{0}\\ z = k(z_{11} - z_{0}) + z_{0}. \end{array}$$

Пусть (xj, yj, zj) — точка (клетка), подлежащая переносу, в соответствии с сокращением мышцы, в точку с тем же радиусом относительно точки О, но с исключением других деформаций объекта. Чтобы найти координаты (xj(OA), yj(OA), zj(OA)) проекции этой точки на луч ОА, решим задачу минимизации расстояния между этой точкой и лучом ОА, описанным системой (15.12):

(xj - k(x1 - x0)- x0)2 + (yj - k(y1 - y0) - y0)2 + (zj - k(z1 - z0) - z0)2 -> min.

Приравняв производную по k нулю, получим

(xj - k(x1 - x0) - x0)(x1 - x0) + (yj - k(y1 - y0) - y0 )(y1 - y0) + (zj - k(z1 - z0) - z0)(z1 - z0) = 0.

Отсюда

$$k_{(min)} = \frac{(x_j-x_0) (x_1-x_0)+ (y_j-y_0) (y_1-y_0)+ (z_j-z_0) (z_1-z_0)}{(x_1-x_0)^2+ (y_1-y_0)^2+ (z_1-z_0)^2 }.$$

Подставим (15.16) в (15.12) и найдем координаты (xj(OA), yj(OA), zj(OA)) искомой проекции.

Вычислим разности координат точки (xj, yj, zj) и найденной ее проекции на луч ОА, определяющие смещение этой точки:

$$\begin{array}{l} \Delta x_{j} = x_{j} - x_{j}^{(OA)}\\ \Delta y_{j} = y_{j} - y_{j}^{(OA)}\\ \Delta z_{j} = z_{j} - z_{j}^{(OA)} \end{array}$$

Подстановкой (15.15) в (15.14) найдем координаты (xj(OA1), yjOA1), zj(OA1)) "образа" точки (xj(OA), yjOA), zj(OA)) при повороте луча. Тогда координаты x j пер , yj пер, zj пер переноса точки (xj, yj, zj) отыскиваются так:

$$\begin{array}{l} x_{j пер} = x^{(OA1)}_{j} + \Delta x_{j}\\ y_{j пер} = y^{(OA1)}_{j} + \Delta y_{j} \\ z_{j пер} = z^{(OA1)}_{j} + \Delta z_{j}.\end{array}$$

Организовав цикл по j - по всем точкам объекта (или оболочки) в окрестности луча ОА, выполним требуемую имитацию движения.

15.8. Перемещение, поворот и вращение

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

Это означает, что каждая n-я объектовая система координат связана с центральной системой матрицей пересчета:

$$\left ( \begin{array}{c} x \\ y \\ z \end{array} \right ) = \left ( \begin{array}{ccc} cos(x, x_n) cos(x, y_n) cos(x, z_n) \\ cos(y, x_n) cos(y, y_n) cos(y, z_n) \\ cos(z, x_n) cos(z, y_n) cos(z, z_n) \end{array} \right ) \left ( \begin{array}{c} x_n \\ y_n \\ z_n \end{array} \right ) +\\+ \left ( \begin{array}{c} x_{n0} \\ y_{n0} \\ z_{n0} \end{array} \right )$$

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

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

15.9. Внешнее "механическое" воздействие на объект

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

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

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

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

Роль подобных инструментов могут играть объекты друг для друга. Это позволит, например, имитировать некоторые разрушительные события.

15.10. Построение объектов в трехмерной памяти

Для построения объектов целесообразно воспользоваться тремя координатными проекциями, подобно 3D-MAX. Сначала в одной из проекций рисуется пока неточный, предполагаемый разрез объекта. На других проекциях автоматически сформируются отрезки — боковые проекции этого разреза. На разрезе определяется точка для дальнейшей деформации объекта в двух других проекциях. Проекция этой точки высвечивается на двух других проекциях.

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

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

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

15.11. Командно-программное управление объектами

Необходимо помнить, что объекты в трехмерной памяти создаются для их визуального восприятия. Система визуализации может базироваться на проецировании видимой поверхности всех объектов, включая фон, на плоскость z = 0 в центральной системе координат. Эта плоскость и представляет экран. Значит, каждая прямая, исходящая из точки xi, yi, 0 и перпендикулярная экрану, продолжается (здесь рассматриваем только прозрачную среду) до первого пересечения с одним из объектов или с фоном. Полученная точка обеспечивает изображение в данной текущей точке экрана.

Для получения различных срезов (подобно томографии) экран может формироваться и в других плоскостях вида z = a > 0.

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

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

<сократить мышцу m с l = 0,8>;
      <повернуть объект Р по матрице S>;
      <приблизить объект Р>;
      <перенести объект Р>;
      <показать срез z = 5> и т.д.

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

Как каждая управляющая система, работа рассматриваемой системы тактируется. Поскольку видео — основное ее назначение, то тактовую частоту целесообразно совместить с частотой следования кадров. (Если хватит производительности! Иначе придется получать промежуточные кадры путем интерполяции.) Тогда программа ориентируется на имитацию движения в отдельном кадре в системе реального времени. Это значит, что если дан приказ сократить мышцу в 0,6 раза, то движение растягивается во времени на несколько кадров. Например, в отдельном кадре мышца сокращается лишь в 0,98 раз. Тогда в течение нескольких кадров необходимое сокращение будет достигнуто. По-видимому, необходимо задавать то количество кадров, в течение показа которых движение должно быть выполнено.

Эмпирические зависимости для такого дробления целесообразно получить экспериментально.

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

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

15.12. Логические нейронные сети в основе управления трехмерными компьютерными объектами

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

Что есть жизнь? Какое существо можно назвать живым?

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

    Посчитаем достаточными положения 1 и 2 для настоящего уровня решения задачи "живого" моделирования. Однако мы понимаем, что достичь такого уровня обучения, когда система сама начинает осознавать, что хорошо, а что плохо, на основе индуктивного и дедуктивного мышления, вряд ли сейчас возможно практически. Мы вынуждены решать задачу-минимум, требуя, в основном для культурно-развлекательных целей, адекватности реакции. Степень этой адекватности в соответствии с означенным критерием мы уж предусмотрим сами.

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

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

    Пусть сотворенный объект ( рис. 15.7 ) в компьютерном или материальном воплощении наделен некоторым фоновым поведением, реализуемым программно. Например, такое поведение может быть аналогичным поведению зверя в клетке, нервно дефилирующего вдоль решетки. Целесообразно в программе использовать и элементы случайности на основе ДСЧ — датчика случайных чисел. Это может ввести разнообразие в фоновое поведение объекта: внезапный поворот головы, смена направления движения и т.д. Такое поведение уже само по себе является занимательным для зрителя.

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

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

    (рис 15.7) Возможный объект натурного моделирования

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

    "В квадрате i, j преобладает зеленый цвет" ∧ "отсутствуют резкие переходы в оттенках" ->
                        -> "Запустить программу умиротворения";
          "В квадрате i, j преобладает зеленый цвет" ∧ "наблюдаются резкие переходы в оттенках" ->
                        -> "Запустить программу тоски по лесным далям";
          "В квадрате i, j преобладает голубой цвет" ∧ "наблюдаются темные вкрапления" ->
                -> "Запустить программу приветствия";
          "В квадрате i, j преобладает красный цвет" ->
                -> "Запустить программу повторного обзора квадрата" ∧ "Запустить программу гнева";
          "В квадрате i, j обнаружен круг с преобладанием телесного цвета" ->
                -> "Запустить программу приветствия";
          "В квадрате i, j преобладает коричневый цвет" ->
                -> "Запустить программу презрения";
          "В квадрате i, j преобладает желто-оранжевый цвет" ->
                -> "Запустить программу радостного возбуждения" и т.д.

    Тогда обученная для реализации данного алгоритма однослойная логическая нейронная сеть представлена на рис. 15.8.

    (рис 15.8) Нейросеть для "живого" моделирования

    Логическая нейронная сеть составлена по методике, обоснованной ранее. Это определило единичные значения весов синапсических связей, не указанных на рисунке.

    Здесь нейрон-рецептор 1 принимает значение достоверности высказывания "В квадрате преобладает зеленый цвет" как величину возбуждения.

    Рецептору 2 сообщается значение достоверности высказывания "Отсутствуют резкие переходы в оттенках".

    Рецептор 3 принимает значение достоверности высказывания "Наблюдаются резкие переходы в оттенках".

    Рецептор 4 возбуждается на величину достоверности высказывания "В квадрате преобладает голубой цвет".

    Рецептор 5 принимает значение достоверности высказывания о похожести на полет птиц.

    Рецептор 6 возбуждается на преобладание красного цвета.

    Рецептор 7 возбуждается на величину достоверности обнаружения круга телесного цвета.

    Рецептор 8 принимает значение достоверности преобладания коричневого цвета.

    Рецептор 9 принимает значение достоверности преобладания желто-оранжевого цвета.

    И так далее — по расширяемому на основе бесконечного совершенствования количеству используемых факторов.

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

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

    Рекомендуемая передаточная функция имеет вид

    $$\begin{array}{l} V_{Вых} = \xi \left ( \sum_{\nu} \omega_{\nu} V_{\nu} – h \right ), \\ \left(\xi (s) = \left \{ \begin{array}{ll} s, \mbox{при } s \ge 0 \\ 0, \mbox{при } s < 0 \end{array} \right \right ) \end{array}.$$

    Порог h целесообразно выбрать достаточно высоким, например h = 0,5, так, чтобы объект не выглядел слишком "нервным", возбуждаясь понапрасну из-за малой причины возбуждения.

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

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

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

    Следует проанализировать эффективность применения современных суперкомпьютеров, таких, например, как Эльбрус-E2k.

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

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

    15.13. Реагирующие объекты для систем интеллектуального отображения

    15.13.1. Постановка задачи

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

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

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

    Для такой предварительной, грубой оценки применимы принципы ситуационного управления [23]. Однако информацией для реагирующего объекта является чрезвычайно большое количество данных разнообразной природы и типов. Задача осуществления реакции становится трудно формализуемой. Ее решение возможно только с применением средств искусственного интеллекта. Множество зависимостей вида "если …, то …" в основе решения этой задачи приводит к выводу о целесообразности применения логических нейронных сетей.

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

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

    Модели реагирующих объектов могут быть трех типов:

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

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

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

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

    Тем не менее все возможности должны быть экспериментально исследованы на моделях.

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

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

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

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

    (рис 15.9) Экран модели

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

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

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

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

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

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

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

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

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

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

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

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

    (рис 15.11) Функциональная схема модели

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

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

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

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

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

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

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

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

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

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

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

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

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

    (рис 15.12) Обучение яблоку

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

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

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

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

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

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

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

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

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

    $$V_i = \xi \left( \frac{1}{G_j}\sum_j V_j - h\right ),$$

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

    Здесь j принимает значение номеров рецепторов, участвующих с единичными весами (поэтому веса не указаны в передаточной функции) в запоминании эталона, Gj — число таких рецепторов. Делением на Gj производится приведение всех величин возбуждения по эталонам в один диапазон изменения. Это необходимо для того, чтобы "большие" образы, частично засвеченные вследствие возмущения "маленьких" образов, не подавляли эти последние. Так, в данном примере "морковка" засвечивает 16 клеток, а "яблоко" — только 13.

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

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

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

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

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

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

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

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

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

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

    Пусть на рисунке К15 — исходные контрольные точки (конечно, невидимые), заданные своими координатами (xKj, yKj) ; L1-L5 - соответствующие им контрольные точки (xLj, yLj) в результирующем кадре L, j = 1, ..., 5.

    (рис 15.16) Кадры анимации

    Контрольные точки Kj через N тактов должны перейти в контрольные точки Lj , увлекая за собой некоторую окрестность $$\Delta _{j}$$. Причем моделируется свойство "вязкости", при котором более удаленные от центра (Kj) точки смещаются меньше. Более того, если область $$\Delta _{j}$$ пересекается разрезом, то перенос точек по другую сторону разреза не производится (см. открытие рта). В примере задан такой отрезок [A1, A2] , который должен перейти в отрезок [B1, B2] .

    Алгоритм

  • Производится начальная загрузка в буфер показа БП "нулевого" кадра, т.е. фонового, нейтрального выражения объекта в состоянии ожидания.
  • Реализуется временной режим работы модели, поддерживающий показ кадров — ключевых или промежуточных — с частотой 20 Гц. Он вхолостую вырабатывает остаток времени, оставшийся от работы программ, до ближайшего значения, кратного 50 мс.
  • Демонстрируется очередной кадр из БП и производится обращение к Программе обработки ситуации, рассмотренной ранее.
  • Выполняется после возврата из Программы обработки ситуации. Анализируется: был ли показанный кадр ключевым или промежуточным? Если показанный кадр был промежуточным, выполняется 7.
  • Если показанный кадр был ключевым, анализируется: иссяк ли сюжетный ряд, т.е. выработала ли Программа оценки ситуации продолжение сюжетного ряда, как реакцию на внешние факторы (рисунок)? Если сюжетный ряд иссяк, управление передается 1 для загрузки "нулевого" кадра, который будет показываться, пока не выработается новый сюжетный ряд. Если сюжетный ряд не иссяк, выполняется 6.
  • Производится подготовка формирования промежуточных кадров между только что показанным К и следующим L. Взводится счетчик показа промежуточных кадров СПК. Для упрощения демонстрационной модели считаем, что между любыми двумя смежными ключевыми кадрами следует показать 19 промежуточных. То есть выполняется операция СПК := 20.
  • СПК уменьшается на единицу для показа очередного промежуточного кадра.
  • Если в результате 7 СПК достиг нуля, показ промежуточных кадров считается законченным, следующим показываемым кадром должен быть кадр L. Выполняется 9. Если СПК не равно нулю, выполняется 10.
  • Кадр L загружается в БП, далее выполняется 2.
  • Если СПК не равно нулю, организуется цикл по j (шаги 11-16) перебора контрольных точек объекта. По окончании цикла организуется переход к 20.
  • Для контрольной точки Kj (xKj, yKj) отыскивается соответствующая ей точка Lj (xLj, yLj) из СКТ кадра L. Отыскивается область $$\Delta _{j}$$ радиуса Rj с центром в точке Kj , включающая точку Lj (ее проекцию на кадр К ). Радиус Rj вычисляется из соотношения

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

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

  • Организуется цикл перебора точек P(x, y) из окрестности $$\Delta _{j}$$ контрольной точки Kj . Этот перебор осуществляется "циклом в цикле":

    $$\begin{array}{l} for\quad x = x_{Kj} - R_{j}\quad to\quad x_{Kj} + R_{j} \quaddo\\ for\quad y = y_{Kj} - \sqrt{R^2_j-(x-x_{Kj})^2} \quad\\ to\quad y = y_{Kj} +\sqrt{R^2_j-(x-x_{Kj})^2} \quad do \dots \end{array}$$

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

  • Проверяется, разделены ли точки 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) Анализ разреза

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

    $$[P,L]: \left \{ \begin{array}{l} \xi = x+k_1(x_L –x) \\ \eta = y + k_1(y_L-y) \end{array} \right , 0\le k_1 \le 1,$$ $$[A,B]: \left \{ \begin{array}{l} \xi = x_A+k_2(x_B –x_A) \\ \eta = y_A + k_2(y_B-y_A) \end{array} \right , 0\le k_2 \le 1.$$

    Или:

    $$\begin{array}{l} x + k_{1}(x_{L} - x) = x_{A} + k_{2}(x_{B} - x_{A}),\\ y + k_{1}(y_{L} - y) = y_{A} + k_{2}(y_{B} - y_{A}). \end{array}$$

    Отсюда

    $$\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}$$

    Если отрезки пересекаются, выполняется условие 0 <= k1 <= 1, 0 <= k2 <= 1. В противном случае отрезки не пересекаются, и перемещение точки Р в направлении к точке Lj допустимо. Если точки P и L разделены разрезом, производится переход к 12. В противном случае выполняется 14.

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

    $$\begin{array}{l} x_{пер} = x + (x_{Lj}-x_{Kj})\left (1-\cfrac{r(P,K_j)}{R_j}\right)\cfrac{1}{|СПК|},\\ y_{пер} = y + (y_{Lj}-y_{Kj})\left (1-\cfrac{r(P,K_j)}{R_j}\right)\cfrac{1}{|СПК|}. \end{array}$$

    Здесь учитывается удаление точки Р от центра — от точки Kj . Так, на окружности радиуса Rj перенос затихает вовсе. Текущее значение СПК характеризует оставшуюся часть смещения.

  • Проверяется, является ли перенесенная точка контрольной или границей разреза. Если не является, выполняется 12.
  • Если перенесенная точка является контрольной или границей разреза, фиксируются новые значения координат перенесенной точки (ее образом становится точка Kj* , если это была контрольная точка) в СКТ промежуточного кадра K*. Далее выполняется 12.
  • Выполняется по окончании цикла перебора точек из $$\Delta _{j}$$ окрестности (шаг 12). Формируется цикл обработки разрезов, оказавшихся в этой окрестности. По окончании цикла выполняется 10. Организуется перебор точек P(x, y) этой окрестности, подобно организованному в блоке 12.
  • Проверяется, является ли очередная анализируемая точка "пустой" вследствие деформации (растяжения) объекта. При отрицательном результате анализа выполняется 20.
  • Если точка "пустая", находится ее усредненное значение на основе непустых окружающих ее точек:

    $$\begin{array}{rl}(P(x, y)) := \cfrac{1}{S}[(P(x_{n-1}, y_{m-1})) + (P(x_{n-1}, y_{m})) + \\(P(x_{n-1}, y_{m+1})) + (P(x_{n}, y_{m-1})) + \\ + (P(x_{n}, y_{m+1})) + (P(x_{n+1}, y_{m-1})) + \\(P(x_{n+1}, y_{m})) + (P(x_{n+1}, y_{m+1})) \end{array}$$

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

  • Организуется цикл обработки разрезов кадра К*. После обработки всех разрезов выполняется 24.
  • Для каждого разреза формируется некоторая окрестность, опирающаяся на разрез, и организуется цикл перебора точек P(x, y) , образованного прямоугольника.
  • Проверяется: точка P(x, y) — "пустая"?
  • Если да, отыскивается точка Q(x, y) в кадре L (с теми же координатами) и налагается на точку Р: P(x, y) := Q(x, y).

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

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

    Программная реализация клип-модели реагирующего объекта создана в среде системы визуального объектно-ориентированного программирования Delphi [6].

    Внешний вид экрана для работы пользователя с моделью представлен на рис. 15.18.

    (рис 15.18) Вид экрана для работы с клип-моделью

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

    Блок анализа внешней обстановки модели, имитирующий работу "органов зрения" компьютерного персонажа, запускается нажатием кнопки "ЧТО ЭТО?". Прежде всего осуществляется сканирование области рисования. При обнаружении в этой области какого-либо изображения производится нахождение границ изображения. Для этого вокруг него строится прямоугольная рамка, которая затем разбивается на число клеток, соответствующее размеру рецепторного слоя нейронной сети с учетом пропорций изображения. Таким способом в модели реализовано "фокусирование взгляда" компьютерного персонажа на объекте, и поэтому размер изображения в области рисования не имеет значения, что очень важно при распознавании.

    Размер рецепторного слоя нейронной сети, т.е. разрешающая способность "зрения" компьютерного персонажа, является параметром данной модели. В данном примере он выбран 20x20, т.е. 400 рецепторов.

    Область демонстрации клипов, показывающих реакцию компьютерного персонажа, реализована с помощью компонента Animate из библиотеки компонент Delphi5. Данный компонент обладает свойством FileName, которое позволяет программным способом указывать имя файла, содержащего требуемый для проигрывания клип. Кроме того, у компонента Animate имеется метод Play с параметрами FromFrame (начальный кадр), ToFrame (конечный кадр) и Count (число повторений анимации). Этот метод позволяет программным способом, динамически указывать, с какого кадра начинать и каким заканчивать проигрывание анимации. Таким образом, остается с помощью любой программы, позволяющей разрабатывать клипы, создать базу клипов, демонстрирующих реакции компьютерного персонажа на внешние раздражители.

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

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

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

    На рис. 15.19 показан результат предъявления необученному компьютерному персонажу изображения цветка.

    (рис 15.19) Реакция на предъявлении цветка до обучения

    Видно, что реакция отсутствует, а в поле названия написано "Не знаю, что это". Теперь, если в поле названия написать "Цветок", указать признак "несъедобное" и нажать кнопку "ЗАПОМНИТЬ", то начинает работать блок обучения модели. Прежде всего, вдоль контура рисунка производится закрашивание тех клеточек, которые захватываются контуром, затем каждая закрашенная клетка обрамляется закрашенными клетками справа, слева, сверху и снизу. Таким образом, вдоль контура формируется полоса допуска для учета "дрожания руки" при рисовании. Далее вычисляется значение передаточной функции и формируется строка матрицы следования. Затем вся информация об объекте запоминается в базе данных. Так происходит обучение компьютерного персонажа.

    (рис 15.20) Реакция на знакомое съедобное

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

    ***

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

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

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

    Страницы:

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

    15.1. Какую задачу мы хотим решить?

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

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

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

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

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

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

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

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

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

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

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

    15.2. Моделирование трехмерной памяти

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

    Отметим, что современные персональные компьютеры (РС) и рабочие станции, реализующие системы мультимедиа, вполне способны выполнять функции такого нейрокомпьютера. Однако потребность интеграции памяти нескольких компьютеров может потребовать применения локальной вычислительной сети, удовлетворяющей требованиям работы в реальном времени. И уж без сомнения, параллельная вычислительная система SPMD-архитектуры [9] c большой оперативной памятью в наибольшей степени адекватна рассматриваемой задаче.

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

    Пусть адресное пространство ВНК при сквозной линейной адресации ячеек определяется N разрядами. Адрес разбивается на четыре части (рис. 15.1).

    (рис 15.1) Преобразование линейного адреса в трехмерный

    Здесь x, y, z — координаты клетки в трехмерной памяти ; s разрядов отводятся для адресации стека, сопровождающего каждую клетку. Стек необходим для сохранения информации в случае сжатия объекта — для более точного его восстановления. Таким образом, адресное пространство хранения клеток объекта или целой сцены составляет 2N-s , что говорит о необходимом весьма большом значении N. Значение s практически может быть не более трех.

    Трехмерная память — это перспективная разработка. Она предполагает непосредственный (невиртуальный) доступ пользователя на этапе программирования как к памяти, так и к адресам данных при указанной структуре адреса.

    При моделировании трехмерная память в виртуальной памяти современного компьютера задается трехмерным массивом S[0:P; 0:P; 0:P] переменных S[i, j, k], где значения индексов являются координатами соответственно x, y, z. Тогда задача деформации или перемещения объектов преобразуется в задачу нахождения новых значений этих индексов для каждой переменной, являющейся клеткой объекта — для выполнения соответствующего переноса.

    При этом линейный адрес переноса или текущего нахождения клетки объекта находится так:

    <S[i, j, k]> = C + i + jP + kP2.

    Здесь С — базовый адрес массива.

    Стек моделировать нецелесообразно. Информация, потерянная при сжатии объекта, может быть восстановлена с помощью интерполяции.

    15.3. "Мышца" и ее сокращение

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

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

    Мышцы объекта являются невидимыми, входящими в список мышц данного объекта и допускающими реакцию на приказы извне.

    (рис 15.2) Применение мышцы

    Таким образом, мышца (рис. 15.2) — это невидимый отрезок АВ, связывающий точки A(x1, y1, z1) и B(x2, y2, z2) , отображающий некоторое геометрическое место клеток объекта. Этот отрезок связан с объектом и может сокращаться при подаче управляющих импульсов и восстанавливаться при их отсутствии. Такое изменение отрезка производится относительно некоторой принадлежащей ему точки М(xM, yM, zM) . Сокращение мышцы сопровождается пространственным переносом (уплотнением) клеток объекта, которые принадлежат (с точностью до дискретности адресации) отрезку, обозначающему эту мышцу.

    Параметрическая система уравнений, описывающих отрезок АВ, имеет вид

    $$\begin{array}{l} x = k(x_{2} - x_{1}) + x_{1}\\ y = k(y_{2} - y_{1}) + y_{1} \\ z = k(z_{2} - z_{1}) + z_{1}\\ 0 \le k \le 1. \end{array}$$

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

    Пусть l — коэффициент сжатия мышцы. Тогда отрезок АМ необходимо преобразовать в отрезок А*М с длиной lx|А*М|, а отрезок МВ — в отрезок МВ* с длиной lx |МВ*|.

    Рассматривая по каждой координате отдельно, убеждаемся, что отрезок x1xM необходимо преобразовать в отрезок x1* xM с длиной l(xM- x1) , отрезок xMx2 необходимо преобразовать в отрезок xMx2* c длиной l(x2 - xM) . Аналогично отрезок y1yM должен быть преобразован в отрезок y1* yM с длиной l(yM - y1) и т.д.

    Это, в частности, означает, что клетка с координатой x1 должна быть переслана в ячейку, определяемую соответствующей составляющей адреса l(xM - x1) и т.д.

    Однако изменение адреса пересылки клеток по разным координатам различно, что определяется положением мышцы в пространстве. Для пояснения этого положения и для формирования алгоритма сжатия мышцы рассмотрим пример.

    Пусть 045 451 714трехмерный адрес точки А в восьмеричной системе счисления. Это означает, что А = (x1, y1, z1) = (045, 451, 714) . Аналогично, пусть В = (x2, y2, z2) = (055, 471, 720) , а неподвижная точка находится в середине отрезка АВ, M = (xM, yM, zM) = (051, 461, 716) . Зададим l = 0,610 (в десятичной системе счисления).

    Адресное расстояние между точками А и М составляет $$\Delta A_{x} = 4$$, $$\Delta A_{y} = 10 = 8_{10}$$, $$\Delta A_{z} = 2$$. Максимальное адресное расстояние по всем координатам $$\Delta А = 8_{10}$$.

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

    Пусть i — параметр цикла переноса точек отрезка АМ для его преобразования в отрезок А*М, i = 1, ..., 11. Здесь граничное значение цикла определяется максимальным значением точек переноса по всем координатам, равным $$\Delta А + 1$$. Программно перенос производится с конца отрезка к его началу — чтобы не уничтожать еще не перенесенную информацию. Тогда адреса переноса отдельно по координатам находятся как

    $$\begin{array}{l} x_{пер} = x_{M} - il\cfrac {\Delta A_x}{\Delta A}\\ y_{пер }= y_{M }- il\cfrac {\Delta A_y}{\Delta A}\\ z_{пер }= z_{M} - il\cfrac {\Delta A_z}{\Delta A}. \end{array}$$

    В указанном порядке рассчитаем адреса переноса отдельно по координате x, не допуская при округлении выхода адресов из адресного пространства мышцы:

    051 -  1 x 0,610 x 0,510 = 051
            051 -  2 x 0,610 x 0,510 = 050
            051 -  3 x 0,610 x 0,510 = 050
            051 -  4 x 0,610 x 0,510 = 050
            051 -  5 x 0,610 x 0,510 = 047
            051 -  6 x 0,610 x 0,510 = 047
            051 -  7 x 0,610 x 0,510 = 046
            051 - 10 x 0,610 x 0,510 = 046
            051 - 11 x 0,610 x 0,510 = 046

    Рассчитаем координату у:

    461 -  1 x 0,610 x 1 = 460
            461 -  2 x 0,610 x 1 = 460
            461 -  3 x 0,610 x 1 = 457
            461 -  4 x 0,610 x 1 = 456
            461 -  5 x 0,610 x 1 = 456
            461 -  6 x 0,610 x 1 = 455
            461 -  7 x 0,610 x 1 = 454
            461 - 10 x 0,610 x 1 = 453
            461 - 11 x 0,610 x 1 = 452

    Адреса переноса по координате z:

    716 -  1 x 0,610 x 0,2510 = 716
            716 -  2 x 0,610 x 0,2510 = 716
            716 -  3 x 0,610 x 0,2510 = 716
            716 -  4 x 0,610 x 0,2510 = 716
            716 -  5 x 0,610 x 0,2510 = 715
            716 -  6 x 0,610 x 0,2510 = 715
            716 -  7 x 0,610 x 0,2510 = 715
            716 - 10 x 0,610 x 0,2510 = 715
            716 - 11 x 0,610 x 0,2510 = 715

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

    Аналогично, для правой части мышцы, для отрезка МВ, найдем адресные расстояния $$\Delta A_{x} = -4$$, $$\Delta A_{y} = -10 = -8_{10}$$, $$\Delta A_{z} = -2$$, $$\Delta А = -8_{10}$$. По (15.2) для адресов переноса по x, y, z находим

    051 +  1 x 0,610 x 0,510 = 051      461 +  1 x 0,610 x 1 = 462    716 +  1 x 0,610 x 0,2510 = 716
    051 +  2 x 0,610 x 0,510 = 052      461 +  2 x 0,610 x 1 = 463    716 +  2 x 0,610 x 0,2510 = 716
    051 +  3 x 0,610 x 0,510 = 052      461 +  3 x 0,610 x 1 = 463    716 +  3 x 0,610 x 0,2510 = 716
    051 +  4 x 0,610 x 0,510 = 052      461 +  4 x 0,610 x 1 = 464    716 +  4 x 0,610 x 0,2510 = 716
    051 +  5 x 0,610 x 0,510 = 053      461 +  5 x 0,610 x 1 = 464    716 +  5 x 0,610 x 0,2510 = 717
    051 +  6 x 0,610 x 0,510 = 053      461 +  6 x 0,610 x 1 = 465    716 +  6 x 0,610 x 0,2510 = 717
    051 +  7 x 0,610 x 0,510 = 053      461 +  7 x 0,610 x 1 = 465    716 +  7 x 0,610 x 0,2510 = 717
    051 + 10 x 0,610 x 0,510 = 054      461 + 10 x 0,610 x 1 = 466    716 + 10 x 0,610 x 0,2510 = 717
    051 + 11 x 0,610 x 0,510 = 054      461 + 11 x 0,610 x 1 = 466    716 + 11 x 0,610 x 0,2510 = 717

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

    Свяжем перебор искомых точек с тем же параметром цикла организации пересылки

    $$x = x_{M} - i\cfrac {\Delta A_x}{\Delta A} y = y_{M }- i\cfrac {\Delta A_y}{\Delta A} z = z_{M} - i\cfrac {\Delta A_z}{\Delta A}.$$

    Найдем отдельно для x, y, z отрезка АМ адреса пересылаемых точек:

    051 -  1 x 0,510 = 050           461 -  1 x 1 = 460           716 -  1 x 0,2510 = 716
    051 -  2 x 0,510 = 050           461 -  2 x 1 = 457           716 -  2 x 0,2510 = 715
    051 -  3 x 0,510 = 047           461 -  3 x 1 = 456           716 -  3 x 0,2510 = 715
    051 -  4 x 0,510 = 047           461 -  4 x 1 = 455           716 -  4 x 0,2510 = 715
    051 -  5 x 0,510 = 046           461 -  5 x 1 = 454           716 -  5 x 0,2510 = 715
    051 -  6 x 0,510 = 046           461 -  6 x 1 = 453           716 -  6 x 0,2510 = 714
    051 -  7 x 0,510 = 045           461 -  7 x 1 = 452           716 -  7 x 0,2510 = 714
    051 - 10 x 0,510 = 045           461 - 10 x 1 = 451           716 - 10 x 0,2510 = 714
    051 - 11 x 0,510 = 045           461 - 11 x 1 = 450           716 - 11 x 0,2510 = 714

    Для отрезка МВ находим

    051 +  1 x 0,510 = 052           461 +  1 = 462               716 +  1 x 0,2510 = 716
    051 +  2 x 0,510 = 052           461 +  2 = 463               716 +  2 x 0,2510 = 716
    051 +  3 x 0,510 = 053           461 +  3 = 464               716 +  3 x 0,2510 = 716
    051 +  4 x 0,510 = 053           461 +  4 = 465               716 +  4 x 0,2510 = 716
    051 +  5 x 0,510 = 054           461 +  5 = 466               716 +  5 x 0,2510 = 716
    051 +  6 x 0,510 = 054           461 +  6 = 467               716 +  6 x 0,2510 = 716
    051 +  7 x 0,510 = 055           461 +  7 = 470               716 +  7 x 0,2510 = 716
    051 + 10 x 0,510 = 055           461 + 10 = 471               716 + 10 x 0,2510 = 716
    051 + 11 x 0,510 = 055           461 + 11 = 471               716 + 11 x 0,2510 = 716

    "Склеим" координатные части адресов и обозначим ее окончательно в двух столбцах: в левом — пересылку для левой части мышцы, в правом — для правой.

    (050 460 716) => 051 460 716            (052 462 716) => 051 462 716
          (050 457 715) => 050 460 716            (052 463 717) => 052 463 716
          (047 456 715) => 050 457 716            (053 464 717) => 052 463 716
          (047 455 715) => 050 456 716            (053 465 717) => 052 464 716
          (046 454 715) => 047 456 715            (054 466 717) => 053 464 717
          (046 453 714) => 047 455 715            (054 467 720) => 053 465 717
          (045 452 714) => 046 454 715            (055 470 720) => 053 465 717
          (045 451 714) => 046 453 715            (055 471 720) => 054 466 717
          (045 450 714) => 046 452 715            (055 471 720) => 054 466 717

    В строках 2 и 3, в 6 и 7, а также в 8 и 9 видно формирование стеков при неоднократной записи в одну клетку.

    Однако вся проделанная выше работа по сжатию мышцы в действительности касается только клеток со значащим содержимым. Это означает, что если объект задан своей оболочкой, то переносу подвергаются только клетки оболочки. Мышца чаще всего является "пустым" объектом, и смещаются только точки А и В. Переносить ее клетки следует в таком случае лишь тогда, когда она принадлежит оболочке или пересекается с ней.

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

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

    15.4. Сокращение "твердого" объекта

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

    Пусть, как и ранее, задано значение 0 <= l <= 1 , приводящее к сокращению объекта в направлении мышцы АВ (рис. 15.3). Объект должен преобразиться, как показано на рисунке пунктиром. Мышца описывается системой параметрических уравнений (15.1). М, как и прежде, — неподвижная (относительно неподвижного объекта) точка мышцы. Однако эта точка теперь определяет плоскость М, перпендикулярную мышце, относительно которой слева и справа все значащие клетки объекта должны сместиться в направлении к этой плоскости, т.е. параллельно мышце, с коэффициентом смещения (сжатия), равным l.

    (рис 15.3) Сокращение твердого тела

    Плоскость М описывается уравнением

    $$(\xi - x_{M}) (x_{1} - x_{M}) + (\psi - y_{M})(y_{1} - y_{M}) + \\+(\zeta - z_{M})(z_{1} - z_{M}) = 0$$

    Пусть точка (xj, yj, zj) — текущая клетка объекта с адресом xjyjzj , подлежащая указанному переносу. Найдем координаты xj(M), yj(M), zj(M) ее проекции на плоскость М. Так как точка с этими координатами принадлежит плоскости М и минимизирует квадрат расстояния точки (xj, yj, zj) до этой плоскости, задача такой условной минимизации формулируется так:

    найти значение xj(M), yj(M), zj(M) , удовлетворяющее требованию

    (xj(M) - xj )2 + (yj(M) - yj)2 + (zj(M) - zj)2 -> min

    при условии

    (xj(M) - xM)(x1 - xM) + (yj(M) - yM)(y1 - yM) + (zj(M) - zM)(z1 - zM) = 0.

    Решим данную задачу, используя уравнение Лагранжа

    $$(x_{j}^{(M)} - x_{j})^{2} + (y_{j}^{(M)} - y_{j})^{2} + (z_{j}^{(M)} - z_{j})^{2} + \lambda [(x_{j}^{(M)} - x_{M})(x_{1} - x_{M}) + (y_{j}^{(M)} - y_{M})(y_{1} - y_{M}) + (z_{j}^{(M)} - z_{M})(z_{1} - z_{M})] \to min$$.

    Дифференцируя по всем переменным, включая $$\lambda,$$ и приравнивая производные нулю, получим систему линейных уравнений

    $$2(x_{j}^{(M)} - x_{j}) + \lambda (x_{1} - x_{M}) = 0$$

    $$2(y_{j}^{(M)} - y_{j}) + \lambda (y_{1} - y_{M}) = 0$$

    $$2(z_{j}^{(M)} - z_{j}) + \lambda (z_{1} - z_{M}) = 0$$

    (xj(M) - xM)(x1 - xM) + (yj(M) - yM)(y1 - yM) + (zj(M) - zM)(z1 - zM) = 0.

    Решая систему, находим

    $$\begin{array}{l} x^{(M)}_{j} = 0,5\lambda(x_{M} - x_{1}) + x_{j}\\ y^{(M)}_{j} = 0,5\lambda(y_{M} - y_{1}) + y_{j} \\ z^{(M)}_{j} = o,5\lambda(z_{M} - z_{1}) + z_{j}\\ \lambda =2 \cfrac{(x_j - x_M) (x_1 - x_M)+ (y_j - y_M) (y_1 - y_M)+ (z_j - z_M) (z_1 - z_M)} {(x_1 - x_M)^2 +(y_1 - y_M)^2 +(z_1 - z_M)^2}. \end{array}$$

    Таким образом, получена мышца с началом в точке (клетке) с координатами xj, yj, zj и с концом в точке xj(M), yj(M), zj(M) . Эта же точка является неподвижной. Тогда по (14.2) и (14.3) имитируется сжатие мышцы. Цикл по j охватывает все значащие клетки объекта.

    15.5. Сокращение вязкого тела

    Вязкое тело, внутри которого сокращается мышца, характеризуется "затуханием" величины смещения клетки объекта с увеличением ее расстояния до мышцы (рис. 15.4).

    Найдем квадрат r2 кратчайшего расстояния между произвольной текущей точкой объекта или только его оболочки xj, yj, zj) и мышцей. Это расстояние определяется с помощью проекции xj0, yj0, zj0) данной точки на мышцу (на рисунке — две точки, проектируемые правее А ), или ее удаленностью от концов мышцы (на рисунке — точка левее А ).

    (рис 15.4) Сокращение вязкого тела

    Предполагая, что данная проекция принадлежит мышце, найдем с помощью параметрического описания (15.1) соответствующее ей значение kmin из соотношения

    $$\begin{array}{rl} r^2 = (x_{j0} - x_{j})^2 + (y_{j0} - y_{j})^2 + (z_{j0} - z_{j})^2 = \\ (x_{j0} - x_{1} - k(x_{2} - x_{1}))^2 + (y_{j0} - y_{1} - k(y_{2} - y_{1}))^2 +\\ +(z_{j0} - z_{1} - k(z_{2} - z_{1}))^2. \end{array}$$

    Значение kmin, которое определяет клетку мышцы, соответствующую искомому минимальному расстоянию, вычисляется с помощью нулевого значения производной по k:

    (xj0 - x1 - k(x2 - x1)(x2 - x1) + (yj0 - y1 - k(y2 - y1)(y2 - y1) + (zj0 - z1 - k(z2 - z1)(z2 - z1) = 0

    Откуда

    $$k_{min} = \frac{(x_{j0}-x_1) (x_2-x_1)+ (y_{j0}-y_1)(y_2-y_1)+ (z_{j0}-z_1) (z_2-z_1)} { (x_2-x_1)^2+ (y_2-y_1)^2+ (z_2-z_1)^2 }.$$

    Если выполняется условие 0 <= kmin <= 1, искомая проекция действительно принадлежит мышце. Тогда r2 отыскивается в результате подстановки (15.7) в (15.6). Если kmin < 0, ближайшей точкой мышцы является А. В этом случае

    r2 = (x1 - xj)2 + (y1 - yj)2 + (z1 - zj)2.

    Если kmin > 1, ближайшей точкой мышцы является В:

    r2 = (x2 - xj)2 + (y2 - yj)2 + (z2 - zj)2.

    Чтобы определить направление переноса клетки (xj, yj, zj) , необходимо по (15.5) найти ее проекцию на плоскость М. Тогда для нахождения адресов циклической пересылки значащих клеток объекта воспользуемся формулами

    $$\begin{array}{l} x_{j пер} = x_{jM} – il \rho \left(1 - \cfrac{r^2}{R^2}\right ) \cfrac{\Delta A_x}{\Delta A}\\ y_{j пер} = y_{jM} - il \rho \left (1 - \cfrac{r^2}{R^2}\right ) \cfrac{\Delta A_y}{\Delta A}\\ z_{j пер} = z_{jM} - il\rho \left (1 - \cfrac{r^2}{R^2}\right ) \cfrac{\Delta A_z}{\Delta A}.\end{array}$$

    Здесь $$\rho$$ — коэффициент вязкости и R2 — заведомо большое число, ограничивающее значение r2 , где смещение полностью затухает.

    Перебор клеток объекта для пересылки выполняется по (15.3). Пересылка выполняется для обоих полупространств, разделяемых плоскостью М.

    15.6. Сокращение вязкого тела с "выпучиванием"

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

    Пусть, как и прежде, xj, yj, zj — составляющие адрес координаты текущей клетки вязкого объекта, для которого выше сформированы выражения (15.8) для определения адреса переноса. Дополним их указанной перпендикулярной составляющей (рис. 15.5).

    (рис 15.5) Сокращение тела с "выпучиванием"

    По (15.7), подставив вместо xj0, yj0, zj0 значение найденной по (15.8) точки переноса (xj пер, y j пер , zj пер) , найдем kmin и, невзирая на его значение, найдем проекцию (xj0пер, yj0пер, zj0пер) на мышцу или ее продолжение влево или вправо.

    (Заметим, что уравнения (1) при 0 <= k <= 1 определяют собственно мышцу, другие значения $$k \in [-\infty , 0], k \in [0, \infty ]$$ определяют точки прямой, которой принадлежит отрезок — мышца.)

    Запишем систему параметрических уравнений прямой, проходящей через точки (xj пер, y j пер , zj пер) и (xj пер0, yj пер0, zj пер0) :

    $$\begin{array}{l} x = m(x_{j пер}^0 - x_{j пер}) + x_{j пер}\\ y = m(y_{j пер}^0 - y_{j пер}) + y_{j пер} \\ z = m(z_{j пер}^0 - z_{j пер}) + z_{j пер}. \end{array}$$

    Задав малое приращение $$\Delta m > 0$$, зависящее от r2пер = (xj пер0 - xj)2 + (yj пер0 - yj)2 + (zj пер0 - zj пер)2 , и приняв $$m = 1 +\Delta m$$, получим окончательно точку переноса (xj пер*, yj пер*, zj пер*) , отстоящую от точки переноса, найденной по (15.8), и смещенную в перпендикулярном направлении от мышцы.

    Эмпирическую зависимость коэффициента смещения $$\Delta m$$ от указанного выше расстояния можно выбрать как

    $$\Delta m = l\rho \left (1 - \frac{r^2_{пер}}{R^2} \right ).$$

    Тогда из (9) находим

    $$\begin{array}{l} x^*_{j пер} = (1 + \Delta m)(x^0_{j пер} - x_{j пер})+ x_{j пер}\\ y^*_{j пер} = (1 + \Delta m)(y^0_{j пер} - y_{j пер})+ y_{j пер}\\ z^*_{j пер} = (1 + \Delta m)(z^0_{j пер} - z_{j пер})+ z_{j пер}. \end{array}$$

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

    15.7. Шарнирно-мышечное соединение

    Координаты шарнира задаются условно (ячейка не занимается) точкой O(x0, y0, z0) внутри объекта (рис. 15.6). Мышца АВ связывает лучи (элементы скелета), исходящие из точки О. Сокращение мышцы должно вызывать видимость движений, характерных при ходьбе, движении рук и т.д. Это требует таких деформаций объектов, при которых его клетки, облегающие эти лучи, или только клетки оболочки, несущие в себе данные лучи, сближаются вместе с лучами, не приводя к дополнительной деформации.

    (рис 15.6) Деформация объекта вокруг шарнира

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

    По аналогии с (15.1), луч ОА описывается параметрической системой уравнений

    $$\begin{array}{l} x = k(x_{1} - x_{0}) + x_{0}\\ y = k(y_{1} - y_{0}) + y_{0}\\ z = k(z_{1} - z_{0}) + z_{0}. \end{array}$$

    Если 0 <= k <= 1, то уравнения отображают отрезок ОА. Нас же интересует вся прямая, исходящая из точки О.

    Отобразим сокращение мышцы переносом клетки А в клетку А' (x1', y1', z1' ), в упрощенной форме воспользовавшись (15.2) и (15.3). Этим установим новое положение ОА' луча ОА.

    Уравнения этого луча имеют вид

    $$\begin{array}{l} x = k'(x_{1}' - x_{0}) + x_{0}\\ y = k'(y_{1}' - y_{0}) + y_{0} \\ z = k'(z_{1}' - z_{0}) + z_{0}. \end{array}$$

    Если 0 <= k' <= 1, то уравнения отображают отрезок ОА'. Однако точка А' не отображает факт вращения луча ОА вокруг точки О. При этом вращении точка А должна переместиться в точку А1 , отстоящую от О на расстояние, равное длине отрезка ОА. Найдем координаты этой точки на луче ОА' из соотношения

    (x11 - x0)2 + (y11 - y0)2 + (z11 - z0)2 = r2 = (x1 - x0)2 + (y1 - y0)2 + (z1 - z0)2.

    В параметрической форме представления (12) точке (x11, y11, z11) соответствует некоторое значение k1' параметра. Подставим вместо координат этой точки их параметрическое представление:

    (k1')2((x1' - x0)2 + (y1' - y0 )2 + (z1' - z0)2) = r2 .

    Откуда

    $$k_{1}' = \frac{r}{\sqrt{(x_1'-x_0)^2+(y_1'-y_0)^2+(z_1'-z_0)^2}}$$

    Очевидно, k1' > 0 . Таким образом, точка А1 переноса конца А мышцы найдена.

    Для синхронных действий при переносе всех клеток объекта, подлежащих перемещению вокруг шарнира, запишем уравнения луча ОА1 в зависимости от того же параметра k, определяющего положение (15.12) луча ОА

    $$\begin{array}{l} x = k(x_{11} - x_{0}) + x_{0}\\ y = k(y_{11} - y_{0}) + y_{0}\\ z = k(z_{11} - z_{0}) + z_{0}. \end{array}$$

    Пусть (xj, yj, zj) — точка (клетка), подлежащая переносу, в соответствии с сокращением мышцы, в точку с тем же радиусом относительно точки О, но с исключением других деформаций объекта. Чтобы найти координаты (xj(OA), yj(OA), zj(OA)) проекции этой точки на луч ОА, решим задачу минимизации расстояния между этой точкой и лучом ОА, описанным системой (15.12):

    (xj - k(x1 - x0)- x0)2 + (yj - k(y1 - y0) - y0)2 + (zj - k(z1 - z0) - z0)2 -> min.

    Приравняв производную по k нулю, получим

    (xj - k(x1 - x0) - x0)(x1 - x0) + (yj - k(y1 - y0) - y0 )(y1 - y0) + (zj - k(z1 - z0) - z0)(z1 - z0) = 0.

    Отсюда

    $$k_{(min)} = \frac{(x_j-x_0) (x_1-x_0)+ (y_j-y_0) (y_1-y_0)+ (z_j-z_0) (z_1-z_0)}{(x_1-x_0)^2+ (y_1-y_0)^2+ (z_1-z_0)^2 }.$$

    Подставим (15.16) в (15.12) и найдем координаты (xj(OA), yj(OA), zj(OA)) искомой проекции.

    Вычислим разности координат точки (xj, yj, zj) и найденной ее проекции на луч ОА, определяющие смещение этой точки:

    $$\begin{array}{l} \Delta x_{j} = x_{j} - x_{j}^{(OA)}\\ \Delta y_{j} = y_{j} - y_{j}^{(OA)}\\ \Delta z_{j} = z_{j} - z_{j}^{(OA)} \end{array}$$

    Подстановкой (15.15) в (15.14) найдем координаты (xj(OA1), yjOA1), zj(OA1)) "образа" точки (xj(OA), yjOA), zj(OA)) при повороте луча. Тогда координаты x j пер , yj пер, zj пер переноса точки (xj, yj, zj) отыскиваются так:

    $$\begin{array}{l} x_{j пер} = x^{(OA1)}_{j} + \Delta x_{j}\\ y_{j пер} = y^{(OA1)}_{j} + \Delta y_{j} \\ z_{j пер} = z^{(OA1)}_{j} + \Delta z_{j}.\end{array}$$

    Организовав цикл по j - по всем точкам объекта (или оболочки) в окрестности луча ОА, выполним требуемую имитацию движения.

    15.8. Перемещение, поворот и вращение

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

    Это означает, что каждая n-я объектовая система координат связана с центральной системой матрицей пересчета:

    $$\left ( \begin{array}{c} x \\ y \\ z \end{array} \right ) = \left ( \begin{array}{ccc} cos(x, x_n) cos(x, y_n) cos(x, z_n) \\ cos(y, x_n) cos(y, y_n) cos(y, z_n) \\ cos(z, x_n) cos(z, y_n) cos(z, z_n) \end{array} \right ) \left ( \begin{array}{c} x_n \\ y_n \\ z_n \end{array} \right ) +\\+ \left ( \begin{array}{c} x_{n0} \\ y_{n0} \\ z_{n0} \end{array} \right )$$

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

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

    15.9. Внешнее "механическое" воздействие на объект

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

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

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

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

    Роль подобных инструментов могут играть объекты друг для друга. Это позволит, например, имитировать некоторые разрушительные события.

    15.10. Построение объектов в трехмерной памяти

    Для построения объектов целесообразно воспользоваться тремя координатными проекциями, подобно 3D-MAX. Сначала в одной из проекций рисуется пока неточный, предполагаемый разрез объекта. На других проекциях автоматически сформируются отрезки — боковые проекции этого разреза. На разрезе определяется точка для дальнейшей деформации объекта в двух других проекциях. Проекция этой точки высвечивается на двух других проекциях.

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

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

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

    15.11. Командно-программное управление объектами

    Необходимо помнить, что объекты в трехмерной памяти создаются для их визуального восприятия. Система визуализации может базироваться на проецировании видимой поверхности всех объектов, включая фон, на плоскость z = 0 в центральной системе координат. Эта плоскость и представляет экран. Значит, каждая прямая, исходящая из точки xi, yi, 0 и перпендикулярная экрану, продолжается (здесь рассматриваем только прозрачную среду) до первого пересечения с одним из объектов или с фоном. Полученная точка обеспечивает изображение в данной текущей точке экрана.

    Для получения различных срезов (подобно томографии) экран может формироваться и в других плоскостях вида z = a > 0.

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

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

    <сократить мышцу m с l = 0,8>;
          <повернуть объект Р по матрице S>;
          <приблизить объект Р>;
          <перенести объект Р>;
          <показать срез z = 5> и т.д.

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

    Как каждая управляющая система, работа рассматриваемой системы тактируется. Поскольку видео — основное ее назначение, то тактовую частоту целесообразно совместить с частотой следования кадров. (Если хватит производительности! Иначе придется получать промежуточные кадры путем интерполяции.) Тогда программа ориентируется на имитацию движения в отдельном кадре в системе реального времени. Это значит, что если дан приказ сократить мышцу в 0,6 раза, то движение растягивается во времени на несколько кадров. Например, в отдельном кадре мышца сокращается лишь в 0,98 раз. Тогда в течение нескольких кадров необходимое сокращение будет достигнуто. По-видимому, необходимо задавать то количество кадров, в течение показа которых движение должно быть выполнено.

    Эмпирические зависимости для такого дробления целесообразно получить экспериментально.

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

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

    15.12. Логические нейронные сети в основе управления трехмерными компьютерными объектами

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

    Что есть жизнь? Какое существо можно назвать живым?

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

    Посчитаем достаточными положения 1 и 2 для настоящего уровня решения задачи "живого" моделирования. Однако мы понимаем, что достичь такого уровня обучения, когда система сама начинает осознавать, что хорошо, а что плохо, на основе индуктивного и дедуктивного мышления, вряд ли сейчас возможно практически. Мы вынуждены решать задачу-минимум, требуя, в основном для культурно-развлекательных целей, адекватности реакции. Степень этой адекватности в соответствии с означенным критерием мы уж предусмотрим сами.

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

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

    Пусть сотворенный объект ( рис. 15.7 ) в компьютерном или материальном воплощении наделен некоторым фоновым поведением, реализуемым программно. Например, такое поведение может быть аналогичным поведению зверя в клетке, нервно дефилирующего вдоль решетки. Целесообразно в программе использовать и элементы случайности на основе ДСЧ — датчика случайных чисел. Это может ввести разнообразие в фоновое поведение объекта: внезапный поворот головы, смена направления движения и т.д. Такое поведение уже само по себе является занимательным для зрителя.

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

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

    (рис 15.7) Возможный объект натурного моделирования

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

    "В квадрате i, j преобладает зеленый цвет" ∧ "отсутствуют резкие переходы в оттенках" ->
                        -> "Запустить программу умиротворения";
          "В квадрате i, j преобладает зеленый цвет" ∧ "наблюдаются резкие переходы в оттенках" ->
                        -> "Запустить программу тоски по лесным далям";
          "В квадрате i, j преобладает голубой цвет" ∧ "наблюдаются темные вкрапления" ->
                -> "Запустить программу приветствия";
          "В квадрате i, j преобладает красный цвет" ->
                -> "Запустить программу повторного обзора квадрата" ∧ "Запустить программу гнева";
          "В квадрате i, j обнаружен круг с преобладанием телесного цвета" ->
                -> "Запустить программу приветствия";
          "В квадрате i, j преобладает коричневый цвет" ->
                -> "Запустить программу презрения";
          "В квадрате i, j преобладает желто-оранжевый цвет" ->
                -> "Запустить программу радостного возбуждения" и т.д.

    Тогда обученная для реализации данного алгоритма однослойная логическая нейронная сеть представлена на рис. 15.8.

    (рис 15.8) Нейросеть для "живого" моделирования

    Логическая нейронная сеть составлена по методике, обоснованной ранее. Это определило единичные значения весов синапсических связей, не указанных на рисунке.

    Здесь нейрон-рецептор 1 принимает значение достоверности высказывания "В квадрате преобладает зеленый цвет" как величину возбуждения.

    Рецептору 2 сообщается значение достоверности высказывания "Отсутствуют резкие переходы в оттенках".

    Рецептор 3 принимает значение достоверности высказывания "Наблюдаются резкие переходы в оттенках".

    Рецептор 4 возбуждается на величину достоверности высказывания "В квадрате преобладает голубой цвет".

    Рецептор 5 принимает значение достоверности высказывания о похожести на полет птиц.

    Рецептор 6 возбуждается на преобладание красного цвета.

    Рецептор 7 возбуждается на величину достоверности обнаружения круга телесного цвета.

    Рецептор 8 принимает значение достоверности преобладания коричневого цвета.

    Рецептор 9 принимает значение достоверности преобладания желто-оранжевого цвета.

    И так далее — по расширяемому на основе бесконечного совершенствования количеству используемых факторов.

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

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

    Рекомендуемая передаточная функция имеет вид

    $$\begin{array}{l} V_{Вых} = \xi \left ( \sum_{\nu} \omega_{\nu} V_{\nu} – h \right ), \\ \left(\xi (s) = \left \{ \begin{array}{ll} s, \mbox{при } s \ge 0 \\ 0, \mbox{при } s < 0 \end{array} \right \right ) \end{array}.$$

    Порог h целесообразно выбрать достаточно высоким, например h = 0,5, так, чтобы объект не выглядел слишком "нервным", возбуждаясь понапрасну из-за малой причины возбуждения.

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

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

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

    Следует проанализировать эффективность применения современных суперкомпьютеров, таких, например, как Эльбрус-E2k.

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

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

    15.13. Реагирующие объекты для систем интеллектуального отображения

    15.13.1. Постановка задачи

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

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

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

    Для такой предварительной, грубой оценки применимы принципы ситуационного управления [23]. Однако информацией для реагирующего объекта является чрезвычайно большое количество данных разнообразной природы и типов. Задача осуществления реакции становится трудно формализуемой. Ее решение возможно только с применением средств искусственного интеллекта. Множество зависимостей вида "если …, то …" в основе решения этой задачи приводит к выводу о целесообразности применения логических нейронных сетей.

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

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

    Модели реагирующих объектов могут быть трех типов:

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

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

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

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

    Тем не менее все возможности должны быть экспериментально исследованы на моделях.

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

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

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

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

    (рис 15.9) Экран модели

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

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

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

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

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

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

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

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

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

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

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

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

    (рис 15.11) Функциональная схема модели

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

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

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

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

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

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

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

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

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

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

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

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

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

    (рис 15.12) Обучение яблоку

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

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

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

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

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

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

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

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

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

    $$V_i = \xi \left( \frac{1}{G_j}\sum_j V_j - h\right ),$$

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

    Здесь j принимает значение номеров рецепторов, участвующих с единичными весами (поэтому веса не указаны в передаточной функции) в запоминании эталона, Gj — число таких рецепторов. Делением на Gj производится приведение всех величин возбуждения по эталонам в один диапазон изменения. Это необходимо для того, чтобы "большие" образы, частично засвеченные вследствие возмущения "маленьких" образов, не подавляли эти последние. Так, в данном примере "морковка" засвечивает 16 клеток, а "яблоко" — только 13.

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

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

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

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

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

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

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

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

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

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

    Пусть на рисунке К15 — исходные контрольные точки (конечно, невидимые), заданные своими координатами (xKj, yKj) ; L1-L5 - соответствующие им контрольные точки (xLj, yLj) в результирующем кадре L, j = 1, ..., 5.

    (рис 15.16) Кадры анимации

    Контрольные точки Kj через N тактов должны перейти в контрольные точки Lj , увлекая за собой некоторую окрестность $$\Delta _{j}$$. Причем моделируется свойство "вязкости", при котором более удаленные от центра (Kj) точки смещаются меньше. Более того, если область $$\Delta _{j}$$ пересекается разрезом, то перенос точек по другую сторону разреза не производится (см. открытие рта). В примере задан такой отрезок [A1, A2] , который должен перейти в отрезок [B1, B2] .

    Алгоритм

  • Производится начальная загрузка в буфер показа БП "нулевого" кадра, т.е. фонового, нейтрального выражения объекта в состоянии ожидания.
  • Реализуется временной режим работы модели, поддерживающий показ кадров — ключевых или промежуточных — с частотой 20 Гц. Он вхолостую вырабатывает остаток времени, оставшийся от работы программ, до ближайшего значения, кратного 50 мс.
  • Демонстрируется очередной кадр из БП и производится обращение к Программе обработки ситуации, рассмотренной ранее.
  • Выполняется после возврата из Программы обработки ситуации. Анализируется: был ли показанный кадр ключевым или промежуточным? Если показанный кадр был промежуточным, выполняется 7.
  • Если показанный кадр был ключевым, анализируется: иссяк ли сюжетный ряд, т.е. выработала ли Программа оценки ситуации продолжение сюжетного ряда, как реакцию на внешние факторы (рисунок)? Если сюжетный ряд иссяк, управление передается 1 для загрузки "нулевого" кадра, который будет показываться, пока не выработается новый сюжетный ряд. Если сюжетный ряд не иссяк, выполняется 6.
  • Производится подготовка формирования промежуточных кадров между только что показанным К и следующим L. Взводится счетчик показа промежуточных кадров СПК. Для упрощения демонстрационной модели считаем, что между любыми двумя смежными ключевыми кадрами следует показать 19 промежуточных. То есть выполняется операция СПК := 20.
  • СПК уменьшается на единицу для показа очередного промежуточного кадра.
  • Если в результате 7 СПК достиг нуля, показ промежуточных кадров считается законченным, следующим показываемым кадром должен быть кадр L. Выполняется 9. Если СПК не равно нулю, выполняется 10.
  • Кадр L загружается в БП, далее выполняется 2.
  • Если СПК не равно нулю, организуется цикл по j (шаги 11-16) перебора контрольных точек объекта. По окончании цикла организуется переход к 20.
  • Для контрольной точки Kj (xKj, yKj) отыскивается соответствующая ей точка Lj (xLj, yLj) из СКТ кадра L. Отыскивается область $$\Delta _{j}$$ радиуса Rj с центром в точке Kj , включающая точку Lj (ее проекцию на кадр К ). Радиус Rj вычисляется из соотношения

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

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

  • Организуется цикл перебора точек P(x, y) из окрестности $$\Delta _{j}$$ контрольной точки Kj . Этот перебор осуществляется "циклом в цикле":

    $$\begin{array}{l} for\quad x = x_{Kj} - R_{j}\quad to\quad x_{Kj} + R_{j} \quaddo\\ for\quad y = y_{Kj} - \sqrt{R^2_j-(x-x_{Kj})^2} \quad\\ to\quad y = y_{Kj} +\sqrt{R^2_j-(x-x_{Kj})^2} \quad do \dots \end{array}$$

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

  • Проверяется, разделены ли точки 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) Анализ разреза

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

    $$[P,L]: \left \{ \begin{array}{l} \xi = x+k_1(x_L –x) \\ \eta = y + k_1(y_L-y) \end{array} \right , 0\le k_1 \le 1,$$ $$[A,B]: \left \{ \begin{array}{l} \xi = x_A+k_2(x_B –x_A) \\ \eta = y_A + k_2(y_B-y_A) \end{array} \right , 0\le k_2 \le 1.$$

    Или:

    $$\begin{array}{l} x + k_{1}(x_{L} - x) = x_{A} + k_{2}(x_{B} - x_{A}),\\ y + k_{1}(y_{L} - y) = y_{A} + k_{2}(y_{B} - y_{A}). \end{array}$$

    Отсюда

    $$\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}$$

    Если отрезки пересекаются, выполняется условие 0 <= k1 <= 1, 0 <= k2 <= 1. В противном случае отрезки не пересекаются, и перемещение точки Р в направлении к точке Lj допустимо. Если точки P и L разделены разрезом, производится переход к 12. В противном случае выполняется 14.

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

    $$\begin{array}{l} x_{пер} = x + (x_{Lj}-x_{Kj})\left (1-\cfrac{r(P,K_j)}{R_j}\right)\cfrac{1}{|СПК|},\\ y_{пер} = y + (y_{Lj}-y_{Kj})\left (1-\cfrac{r(P,K_j)}{R_j}\right)\cfrac{1}{|СПК|}. \end{array}$$

    Здесь учитывается удаление точки Р от центра — от точки Kj . Так, на окружности радиуса Rj перенос затихает вовсе. Текущее значение СПК характеризует оставшуюся часть смещения.

  • Проверяется, является ли перенесенная точка контрольной или границей разреза. Если не является, выполняется 12.
  • Если перенесенная точка является контрольной или границей разреза, фиксируются новые значения координат перенесенной точки (ее образом становится точка Kj* , если это была контрольная точка) в СКТ промежуточного кадра K*. Далее выполняется 12.
  • Выполняется по окончании цикла перебора точек из $$\Delta _{j}$$ окрестности (шаг 12). Формируется цикл обработки разрезов, оказавшихся в этой окрестности. По окончании цикла выполняется 10. Организуется перебор точек P(x, y) этой окрестности, подобно организованному в блоке 12.
  • Проверяется, является ли очередная анализируемая точка "пустой" вследствие деформации (растяжения) объекта. При отрицательном результате анализа выполняется 20.
  • Если точка "пустая", находится ее усредненное значение на основе непустых окружающих ее точек:

    $$\begin{array}{rl}(P(x, y)) := \cfrac{1}{S}[(P(x_{n-1}, y_{m-1})) + (P(x_{n-1}, y_{m})) + \\(P(x_{n-1}, y_{m+1})) + (P(x_{n}, y_{m-1})) + \\ + (P(x_{n}, y_{m+1})) + (P(x_{n+1}, y_{m-1})) + \\(P(x_{n+1}, y_{m})) + (P(x_{n+1}, y_{m+1})) \end{array}$$

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

  • Организуется цикл обработки разрезов кадра К*. После обработки всех разрезов выполняется 24.
  • Для каждого разреза формируется некоторая окрестность, опирающаяся на разрез, и организуется цикл перебора точек P(x, y) , образованного прямоугольника.
  • Проверяется: точка P(x, y) — "пустая"?
  • Если да, отыскивается точка Q(x, y) в кадре L (с теми же координатами) и налагается на точку Р: P(x, y) := Q(x, y).

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

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

    Программная реализация клип-модели реагирующего объекта создана в среде системы визуального объектно-ориентированного программирования Delphi [6].

    Внешний вид экрана для работы пользователя с моделью представлен на рис. 15.18.

    (рис 15.18) Вид экрана для работы с клип-моделью

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

    Блок анализа внешней обстановки модели, имитирующий работу "органов зрения" компьютерного персонажа, запускается нажатием кнопки "ЧТО ЭТО?". Прежде всего осуществляется сканирование области рисования. При обнаружении в этой области какого-либо изображения производится нахождение границ изображения. Для этого вокруг него строится прямоугольная рамка, которая затем разбивается на число клеток, соответствующее размеру рецепторного слоя нейронной сети с учетом пропорций изображения. Таким способом в модели реализовано "фокусирование взгляда" компьютерного персонажа на объекте, и поэтому размер изображения в области рисования не имеет значения, что очень важно при распознавании.

    Размер рецепторного слоя нейронной сети, т.е. разрешающая способность "зрения" компьютерного персонажа, является параметром данной модели. В данном примере он выбран 20x20, т.е. 400 рецепторов.

    Область демонстрации клипов, показывающих реакцию компьютерного персонажа, реализована с помощью компонента Animate из библиотеки компонент Delphi5. Данный компонент обладает свойством FileName, которое позволяет программным способом указывать имя файла, содержащего требуемый для проигрывания клип. Кроме того, у компонента Animate имеется метод Play с параметрами FromFrame (начальный кадр), ToFrame (конечный кадр) и Count (число повторений анимации). Этот метод позволяет программным способом, динамически указывать, с какого кадра начинать и каким заканчивать проигрывание анимации. Таким образом, остается с помощью любой программы, позволяющей разрабатывать клипы, создать базу клипов, демонстрирующих реакции компьютерного персонажа на внешние раздражители.

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

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

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

    На рис. 15.19 показан результат предъявления необученному компьютерному персонажу изображения цветка.

    (рис 15.19) Реакция на предъявлении цветка до обучения

    Видно, что реакция отсутствует, а в поле названия написано "Не знаю, что это". Теперь, если в поле названия написать "Цветок", указать признак "несъедобное" и нажать кнопку "ЗАПОМНИТЬ", то начинает работать блок обучения модели. Прежде всего, вдоль контура рисунка производится закрашивание тех клеточек, которые захватываются контуром, затем каждая закрашенная клетка обрамляется закрашенными клетками справа, слева, сверху и снизу. Таким образом, вдоль контура формируется полоса допуска для учета "дрожания руки" при рисовании. Далее вычисляется значение передаточной функции и формируется строка матрицы следования. Затем вся информация об объекте запоминается в базе данных. Так происходит обучение компьютерного персонажа.

    (рис 15.20) Реакция на знакомое съедобное

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

    ***

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

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

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

    Вернуться к учебному плану