Среда, 17.04.2024
Мой сайт
Меню сайта
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа

Kino
aReadmeXYT для HabibTG 1.0.2 xyt
Дополнительная инструкция (Kino)

---------------------------------------------------

HabibTG 1.0.2 xyt - обучающаяся программа распознавания зрительных образов, включая формы движения

Версия 1.0.2 , kонфигурация   xyt

Автор: Хабибуллин Тавис Габдулхаевич

Некоторую информацию о проекте можно найти на сайте
http://tavis4.narod.ru

Дополнительная инструкция для работы с клонами конфигурации ”xyt”

Общая инструкция находится в файле aReadme.

Программа Habibtg версии 1.0.2 существует в двух конфигурациях – "xy” и "xyt” .
В одну строчку будем их записывать как
HabibTG 1.0.2 xy и
HabibTG 1.0.2 xyt .

Конфигурация "xy” – это вариант программы, работающей только с неподвижными изображениями и с квази-бегущей строкой. В случае с неподвижными изображениями каждый рисунок состоит из одного единственного кадра (для определённости теперь эти рисунки мы будем называть xy-файлами).
Параметр времени "t” в такой модели отсутствует. Программы Habibtg версий 1.0.0 и 1.0.1 , поэтому, по умолчанию имеют конфигурацию "xy”.
Конфигурация "xyt” – это вариант программы, работающей с изображениями как неподвижными, так и движущимися в плоскости "xy” (во времени "t”). В этой модели появляется ось "t”. Xyt-файлы с рисунками (видеороликами) состоят из нескольких кадров (как в кино) и специальным образом помечены. Например, в версии 1.0.2 для видеороликов в текстовых файлах устанавливается READMOD = 6.

Клоны также бывают двух конфигураций – "xy" и ”xyt”.
Клоны типа "xyt” могут обрабатывать как xy-файлы, так и xyt-файлы.
Клоны типа "xy” могут обрабатывать только xy-файлы, а xyt-файлы игнорируются.
Структура xyt-клона полностью включает в себя структуру xy-клона как подмножество.

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

Формат клона (1.0.2, …)
Конфигурация клона (xy, xyt, …)
Версия программы, записавшей клон последний раз (1.0.2, …)
Конфигурация программы, записавшей клон последний раз (xy, xyt, …).


Исходный текст xyt-программы включает в себя исходный текст xy-программы как подмножество
(смотри, например, "Программа HabibtgKlaster Эволюционное кластерное программирование, или «Что имел в виду уволившийся программист?» Автор Хабибуллин Тавис Габдулхаевич).

Исполняемый (exe-) модуль программы HabibTG версии 1.0.2 здесь представлен в конфигурации xyt, то есть в максимально универсальном варианте. Это означает, что он работает как с xy-, так и xyt-клонами. При этом xyt-клоны могут обучаться как на xy-файлах, так и на xyt-файлах. В итоге один и тот же xyt-клон может быть обучен как статическим образам, так и динамическим образам, например, формам движения объектов.

У автора есть возможность получения exe-модуля пограммы HabibTG версии 1.0.2 конфигурации "xy”. Его код меньше, так как физически не содержит участки, связанные с введением в модель оси "t”. Здесь эта конфигурация программы не представлена. Она может понадобиться только в специальных проектах, когда заранее известно, что система будет иметь дело только с неподвижными изображениями, и желательно уменьшить потребляемые компьютерные ресурсы.

В окно OBSLUGA добавлен ярлык K00xytOnlyDel для удаления xyt-файлов предыдущего xyt-клона из рабочей директории (папки).

Добавлено окно OBSLUGAxyt.

Для копирования клонов в рабочую папку и последующего запуска их из окна "Raspoznavanie" в окно "OBSLUGAxyt” добавлены ярлыки:
xytK00On
xytK01 TestProgOn
xytK02 KonkretOn
xytK03 AbstraktOn
xytK04 MopedOn

Добавлены также два ярлыка
xytK00BOnlyOn и
xytK00DOnlyOn
для только частичного обнуления уже выращенного xyt-клона, находящегося в рабочей директории (папке).

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

Добавлены соответственно два ярлыка
xytK00PlusB OnlyOn
xytK00PlusD OnlyOn
для только частичного обнуления уже выращенного xyt-клона, находящегося в рабочей директории (папке), именно с вышеупомянутыми параметрами.



Инструкция по заполнению видео (кино) роликов в текстовых файлах.

Файлы заполняются Блокнотом обязательно при завершённой программе
"HabibTG" ("Выход").

READMOD = 6 означает, что файл надо трактовать как видео (кино) ролик из нескольких кадров в обычном текстовом файле. Каждый кадр имеет те же размеры, что и рисунок с Readmod=1. По-прежнему
1 <= x <=80 , 1<= y <= 25 .
Пробел трактуется как белая точка, любой другой символ, кроме «1», - как чёрная (включая непечатный!).

Кадры отделяются друг от друга так называемой служебной строкой. Признаком служебной строки является символ «1» в первой колонке (столбце). Сама служебная строка ни в один кадр не входит. Поэтому кадр рисунка не должен содержать в первом столбце знак «1» . В других столбцах кадра рисунка знак «1» трактуется как «чёрная» точка, как обычно.
Если кадр содержит больше 25 строк, лишние строки пропускаются. Последний кадр может и не иметь в конце знака «1» (служебной строки).
Если в конце последней служебной строки, находившейся непосредственно перед концом файла, была случайно нажата клавиша «Enter», между ней и концом файла могут образоваться «малозаметные» пустые строки, которые программа будет трактовать как ещё один пустой кадр. Поэтому после завершения обработки эпизода вместо последнего содержательного кадра рисунка появится пустой экран. Этого можно избежать двумя способами.
Первый способ – поставить курсор на конец последней служебной строки (с единичкой) и несколько раз нажать клавишу «Del», чтобы уничтожить все лишние пустые строки.
Второй способ – вообще удалить служебную строку в конце последнего кадра (перед концом файла).

Кадры в таких файлах (с READMOD = 6) рассматриваются как контурные рисунки и обрабатываются с максимальной скоростью.
Хотя правильнее было бы такой xyt-файл с видео (кино) роликом называть, например, «эпизодом», кодификаторы по-прежнему на него ссылаются как на «рисунок». Мы при этом должны помнить, что это «xyt-рисунок».
В версии 1.0.2 вызывать такие рисунки можно только через зрительный канал "1 NomeraRisunkov".

Из-за ограниченности длины поля OBRAZNAME (20 символов) его приходится заполнять в сокращённом виде. Для уточнения смысла приведём «расшифровку» этих сокращений в формате

Сокращённое название эпизода
Полное название эпизода
---------------------------------------------------------------

dx=2Точка дв.вправо
Точка движется вправо с шагом 2 точки/кадр

dx=5Точка дв.вправо
Точка движется вправо с шагом 5 точек/кадр

dx=-5Точка дв.влево
Точка движется влево с шагом 5 точек/кадр

dy=5Точка пад. вниз
Точка падает вниз с шагом 5 точек/кадр

dy=-5Точка дв.вверх
Точка поднимается вверх с шагом 5 точек/кадр

Отрез.движет.паралл
Отрезок движется параллельно себе по прямой линии

dx=5 Т движ.вправо
Буква «Т» движется вправо параллельно себе

dx=-5 Т движ.влево
Буква «Т» движется влево параллельно себе

Стебель качается
Стебель качается

dx=2Точка дв.вправо , Стебель качается(ЛЕВЕЕ)
(это сцена из двух эпизодов, точнее, эпизод-сцена, содержащий сразу два динамических образа)

Стрела летит прямой
Стрела летит по прямой линии

Отрез вращ по часов
Отрезок вращается по часовой стрелке

Отрез вращ против ч
Отрезок вращается против часовой стрелки

Дождь идёт
Дождь идёт

Фонтан
Фонтан

Отр вращ по ча прям
Отрезок вращается по часовой стрелке и одновременно движется по прямой линии

Отр вращ про ч прям
Отрезок вращается против часовой стрелки и одновременно движется по прямой линии

Точка дви по прямой
Точка движется по прямой линии

"Т" движе по прямой
Буква «Т» движется по прямой линии

Движение по прямой
Движение по прямой линии (неважно, что и в каком направлении)

Вращение на месте
Вращение на месте (неважно, что и в какую сторону)

ПОРШЕНЬ ХОДИТ ВП-НА
ПОРШЕНЬ ХОДИТ ВПЕРЁД-НАЗАД

Описание некоторых xyt-клонов
------------------------------------------------

Klon : xytk01TestProg Kino
t=время
Это xyt-клон «Тестирование программы».
Он содержит большое количество важных примеров, и обязательно должен быть изучен пользователем.
Однако надо отметить, что этот клон создан для тестирования программы разработчиком. С точки зрения обычного пользователя он снабжён «неправильными» кодификаторами и обучен на «неправильных» примерах. Что это значит, поясним ниже.
Пользователь должен знать, что не следует пользоваться этими «неправильными» кодами и строчками кодификатора при выращивании собственных клонов. Из-за некорректности формулировок и неправильной группировки рисунков (без учёта реально работающих механизмов обучения) обучение, возможно, не будет успешным.

Приведём список этих «неправильных» названий эпизодов в уже знакомом формате

Сокращённое название эпизода
Полное название эпизода:
------------------------

dx=2Точка дв.вправо
Точка движется вправо с шагом 2 точки/кадр

dx=5Точка дв.вправо
Точка движется вправо с шагом 5 точек/кадр

dx=-5Точка дв.влево
Точка движется влево с шагом 5 точек/кадр

dy=5Точка пад. вниз
Точка падает вниз с шагом 5 точек/кадр

dy=-5Точка дв.вверх
Точка поднимается вверх с шагом 5 точек/кадр

dx=5 Т движ.вправо
Буква «Т» движется вправо параллельно себе

dx=-5 Т движ.влево
Буква «Т» движется влево параллельно себе


Этому списку соответствуют строки из кодификатора OBRAZNAM.txt:

OBRAZKOD OBRAZNAME
111 dx=2Точка дв.вправо
112 dx=5Точка дв.вправо
113 dx=-5Точка дв.влево
114 dy=5Точка пад. вниз
115 dy=-5Точка дв.вверх
118 dx=5 Т движ.вправо
119 dx=-5 Т движ.влево

На эти «некорректные» названия в обучающих материалах клона xytK01TestProg ссылаются коды OBRAZKOD в файле PICKOD (RisKod):

PICNUM OBRAZKOD READMOD PICFILENAME

186 111 6 "xyt\dx2TochPrav.txt"
187 112 6 "xyt\dx5TochPrav.txt"
188 113 6 "xyt\dx5TochLev.txt"
189 114 6 "xyt\dy5TochVniz.txt"
190 115 6 "xyt\dy5TochVverh.txt"
193 118 6 "xyt\dx5TPrav.txt"
194 119 6 "xyt\dx5TLev.txt"

В чём же здесь «некорректности»?

Во-первых, в том, что названия эпизодов отличаются только из-за того, передвигается один и тот же объект со «скоростью» 2 шага на кадр или 5 шагов на кадр. Ведь конечной целью обучения является то, чтобы клон приводил их к «общему знаменателю», общему названию, несмотря на имеющиеся «мелкие» отличия. Для чего же автор ввёл такие «микроскопические» отличия при кодировке этих эпизодов? Дело в том, что при любых параметрах, заложенных в программу «по умолчанию», существуют разные ситуации, в которых над «обобщением» работают разные механизмы программы. Чтобы убедиться в том, что все механизмы работают правильно, и были придуманы эти примеры.

Во-вторых (что касается некорректностей), во всех названиях эпизодов содержатся направления движения (вправо, влево, вверх, вниз). В этом случае дело в том, что в версии программы HabibTG 1.0.2 xyt нет специальных механизмов обучения направлениям движения, учитывающих абсолютные значения координат, и новых механизмов, учитывающих, например, абсолютные значения углов и т.д. Наоборот, основное внимание во всех версиях уделялось поиску инвариантов. С научной точки зрения именно эта область является наиболее важной и сложной для реализации.
Заметим также, что сообщения типа «ПРАВЕЕ», «ЛЕВЕЕ», «ВЫШЕ», «НИЖЕ», «ВНУТРИ», «СНАРУЖИ» с обучением напрямую не связаны.

По аналогичным причинам в версии 1.0.2 xyt пока не стоит пытаться обучать клоны формам равномерного, ускоренного, равноускоренного движения и т.д.

Обучать клоны в версии 1.0.2 xyt можно в основном образам разных форм, движущихся по разным траекториям, по разному вращающихся, плавно меняющих размеры и т.п. Например, кирпич, летящий по параболе, кораблик, движущийся по синусоиде, как по волнам, вращающиеся лопасти ветряной мельницы, «прибой», круги на воде, «радиоволны», походка (с учётом предыдущих оговорок), полёт бабочки и т.д.

При обучении клона xytk01TestProg использовался (там, где надо) известный ещё по предыдущим версиям режим (опция) "Naklon”. Тесты показали, что при обучении с использованием понятия «направление движения» клон может отождествлять, например, движение объекта «вправо» с движением «влево» того же объекта, повёрнутого на 180 градусов (так, как его до этого и учили). Во многих других случаях режим "Naklon” может способствовать правильному обучению с использованием понятия «направление движения», хотя это и не совсем его задача.


Клон xytK02Konkret «Конкретный»

Те же приведённые выше рисунки (эпизоды) для обучения следующего клона xytK02Konkret интерпретируются и группируются совсем по-другому:

PICNUM OBRAZKOD READMOD PICFILENAME
230 132 6 "xyt\dx2TochPrav.txt" повтор
231 132 6 "xyt\dx5TochPrav.txt"
232 132 6 "xyt\dx5TochLev.txt"
233 132 6 "xyt\dy5TochVniz.txt"
234 132 6 "xyt\dy5TochVverh.txt"
235 133 6 "xyt\dx5TPrav.txt"
236 133 6 "xyt\dx5TLev.txt"

Здесь коды (132 и 133) и наименования динамических образов эпизодов обобщены, в последних уже нет привязки к «направлениям движения»:

OBRAZKOD OBRAZNAME
132 Точка дви по прямой
133 "Т" движе по прямой

При этом мы вполне допускаем, что клон не знает, что такое
«Точка в состоянии покоя» и
«Буква «Т» в состоянии покоя»,

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

«Буква «Т» движется по прямой линии» и
«Буква «Т» движется по параболе»

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

Поэтому клон xytK02 было решено назвать «Конкретным»: xytK02Konkret .
Этот клон уже можно назвать «правильным». Строчки кодификаторов, которые он использует, вполне соответствуют возможностям программы версии 1.0.2 xyt, корректны по смыслу и могут включаться пользователем в свои списки при выращивании собственных клонов.



Клон xytK03Abstrakt «Абстрактный»

Уже встречавшиеся раньше рисунки (эпизоды) для обучения следующего клона xytK03Abstrakt также интерпретируются и группируются по-другому:

(повторы для xytk03Abstrakt)

PICNUM OBRAZKOD READMOD PICFILENAME
212 130 6 "xyt\dx2TochPrav.txt"
213 130 6 "xyt\dx5TochPrav.txt"
214 130 6 "xyt\dx5TochLev.txt"
215 130 6 "xyt\dy5TochVniz.txt"
216 130 6 "xyt\dy5TochVverh.txt"
217 130 6 "xyt\dx5OtrezPrav.txt"
218 130 6 "xyt\dx5OtrezLev.txt"
219 130 6 "xyt\dx5TPrav.txt"
220 130 6 "xyt\dx5TLev.txt"
221 130 6 "xyt\StrelLetPrm1.txt"
222 130 6 "xyt\StrelLetPrm2.txt"
223 130 6 "xyt\StrelLetPrm3.txt"
224 130 6 "xyt\StrelLetPrm4.txt"
225 131 6 "xyt\OtrezVrashPo.txt"
226 131 6 "xyt\OtrezVrashPr.txt"
227 0 6 "xyt\KorablDvPoPr.txt"
228 0 6 "xyt\KorablDvVniz.txt"
229 117 1 "xyt\Korablik.txt"

Здесь коды (130 и 131) и наименования динамических образов эпизодов стали ещё более общими. В последних уже нет упоминания ни «направлений движения», ни самих движущихся объектов:

117 Кораблик
130 Движение по прямой
131 Вращение на месте

Так мы формулируем «абстрактную форму движения», «характер движения». Не важно, что движется и в какую сторону движется (или вращается), а важно, как движется.
Как видим, основная масса эпизодов имеет код образа 130, поэтому клон xytk03Abstrakt хорошо обучен именно этой форме движения («Движение по прямой линии»).

В списке всего два эпизода с кодом образа
«131 Вращение на месте»,
поэтому обучение этому образу, возможно, чисто символическое. Но альтернативные образы очень полезны для повышения качества обучения (всё познаётся в сравнении).

Теперь самое интересное.
Кроме форм движения, клон xytk03Abstrakt обучался неподвижному образу «Кораблик», код xy-рисунка 229, READMOD=1:

PICNUM OBRAZKOD READMOD PICFILENAME
229 117 1 "xyt\Korablik.txt"

При этом «Кораблик» никак не участвовал при обучении клона динамическому образу
«130 Движение по прямой линии».
При обучении клон никогда не видел ни одного движущегося Кораблика.

В строках

PICNUM OBRAZKOD READMOD PICFILENAME
227 0 6 "xyt\KorablDvPoPr.txt"
228 0 6 "xyt\KorablDvVniz.txt"

OBRAZKOD=0. Это значит, что код образа неизвестен, и рисунок при обучении игнорируется. Так мы обычно записываем рисунки-сцены, содержащие несколько образов. В данном случае это – эпизоды-сцены.
При распознавании (после обучения) клон выдал ответ:

Кораблик , Движение по прямой(ВНУТРИ)
Кораблик , Движение по прямой(ВНУТРИ)

Это значит, что в каждом из двух роликов, которые клон видел первый раз в жизни, он распознал и кораблик, и абстрактную форму движения по прямой линии. При этом, как мы уже ранее говорили, местом локализации кораблика считается сегмент, который включает в себя все экземпляры кораблика в эпизоде (т.е. во всех кадрах). Образ с названием «Движение по прямой линии», естественно, формируется из элементов конкретных корабликов. Поэтому он и оказывается «ВНУТРИ» сегмента, локализующего все кораблики.
На «простой русский язык» это сообщение можно «перевести» примерно так:
«Обнаружено некое движение по прямой линии в зоне перемещения (или нахождения) Кораблика».

Этот пример также подтверждает, что программа "xyt”-конфигурации в полной мере использует как весь код, так и всю структуру данных программы "xy”-конфигурации.

Клон xytk04Moped "Моторный велосипед"

Это xyt-клон «Мопед» - "Моторный велосипед".
Клон обучен отдельно следующим образам:
Отрез вращ по часов
Отрез вращ против ч
ЦИЛИНДР
ПОРШЕНЬ ХОДИТ ВП-НА

Для обучения образу «ЦИЛИНДР» использовался xy-файл с обычным единственным неподвижным рисунком.
«ПОРШЕНЬ ХОДИТ ВП-НА» расшифровывается как
«ПОРШЕНЬ ХОДИТ ВПЕРЁД-НАЗАД».

При распознавании сцены клон выдаёт ответ:

ЦИЛИНДР , ПОРШЕНЬ ХОДИТ ВП-НА(ВНУТРИ) , Отрез вращ по часов(ЛЕВЕЕ)

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

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

Этот пример ещё раз подтверждает, что программа "xyt”-конфигурации в полной мере использует как весь код, так и всю структуру данных программы "xy”-конфигурации.

Ниже приведём некоторые работы, касающиеся восприятия и мышления.
Автор всех работ Хабибуллин Тавис Габдулхаевич.

1.«О методе марковских цепей в музыке»

2.Исследование форм музыкальных мелодий с помощью ЭВМ / компьютера (к проблеме узнавания)

3. "Машинная музыка" (мелодии)
HabibTGMuz - программа, которая демонстрирует (проигрывает) 4 мелодии, сочинённые электронно-вычислительной машиной (компьютером) БЭСМ-4 в 1972 году.

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

5.Программа HabibtgKlaster
Эволюционное кластерное программирование, или «Что имел в виду уволившийся программист»?

http://tavis4.narod.ru

 

Поиск
Календарь
«  Апрель 2024  »
ПнВтСрЧтПтСбВс
1234567
891011121314
15161718192021
22232425262728
2930
Друзья сайта
  • Создать сайт
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Все проекты компании
  • Copyright MyCorp © 2024
    Конструктор сайтов - uCoz