последние изменения.

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

 

О демонстрации программы

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

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

Клон № 1 «Фигуры» распознает около 60 различных рисунков, фигур, знаков, например: - , + , =, ! , : , … , / , | , \ ,басовый ключ (в музыке), треугольник, четырехугольник,  параллелограмм, лист дуба, лист клена, цифры от 0 до 9, буквы И, Ъ, Е, Ё, Ь, Ы и т.д. Цель – показать, что Программа может одновременно обучаться  широкому кругу  объектов. Вот некоторые ответы клона № 1 (здесь и далее одна строка соответствует ответу на один файл):

    ЧЕТЫРЕ 

    ПЯТЬ 

    ПАРАЛ. ОТРЕЗКИ 

    ПЛЮС

    ЧЕТЫРЕ 

    ЧЕТЫРЕ 

    ПЯТЬ 

    ПЯТЬ 

    ПЯТЬ 

    ПЯТЬ 

    ПЯТЬ 

    ДВА 

    ТРИ 

    ОБРАТНЫЙ СЛЕШ \

    ДВЕ ТОЧКИ ПРОИЗ.РАС

    ЗНАК МИНУС

    СЛЕШ /

    ВЕРТИКАЛЬНАЯ ЧЕРТА

    ДВОЕТОЧИЕ :

    ИЗОЛИРОВАННАЯ ТОЧКА

    ЧЕТЫРЕХУГОЛЬНИК 

    ТРЕУГОЛЬНИК

    ПАРАЛЛЕЛОГРАММ 

    ОДИН 

    ТРЕУГОЛЬНИК

    ! ВОСКЛИЦ.ЗНАК 

    о 

    ШЕСТЬ 

    ВОСЕМЬ 

    ВОСЕМЬ 

    ВОСЕМЬ 

    X КРЕСТИК 

    = РАВЕНСТВО 

    СЕМЬ 

    Е БУКВА 

    Е.. ЙО буква 

    а 

    И БУКВА 

    й 

    ): БАСОВЫЙ КЛЮЧ 

    Ь МЯГКИЙ ЗНАК ПЕЧ 

    Ь МЯГКИЙ ЗНАК ПЕЧ 

    Ы БУКВА ПЕЧ 

    Ъ ТВЕРДЫЙ ЗНАК ПЕЧ 

    ЛИСТ ДУБА 

    ЛИСТ КЛЕНА 

    Е.. ЙО буква 

    ТИРЕ - ТОЧКА 

    i ЛАТИН. БУКВА 

    МНОГОТОЧИЕ

    ДЕВЯТЬ 

Клон № 2 «Слова» распознает все 33 строчные рукописные буквы русского алфавита: а, б, в, г, … , я. Сначала распознает по одной букве на рисунке (33 рисунка), затем эти же буквы, расположенные на одной квази-бегущей строке друг за другом и разделенные «пробелами» (пустотами). Под квази-бегущей строкой подразумевается файл, содержащий буквы или слова, записанные друг за другом и повернутые на 90 градусов. «Продергивание» ленты (строки), т.е. «подчитывание» файла производится порциями, но по инициативе «Программы». На экран строка подается горизонтально, как обычно.

Далее Клон №2 читает с квази-бегущей строки следующие слова и предложения:

рабы не мы

мы не рабы

это ишак  а  не  ш  и  а  к

мама мыла раму

раму мыла мама

я раму не мыла

я не ишак

Слова написаны слитно, как обычно.

Клон №3 обучен всего трем цифрам 4, 5, и 8. В отличие от остальных клонов предполагает более тщательное распознавание усложненных образов с разных файлов.

Клон №4 «Сцена» демонстрирует, что на одном рисунке может распознать несколько объектов и говорит об их взаимном расположении. Один объект по отношению к другому может быть расположен слева, справа, внутри, снаружи.

Используются образы : , + , ! , четырехугольник, треугольник. При этом, например, плюс может быть внутри четырехугольника, а треугольник может частично пересекаться с четырехугольником. Есть аналоги дорожных знаков – «!» внутри треугольника и «+» внутри треугольника. Есть примеры с тремя объектами. Количество объектов не имеет большого значения (не принципиально).

Рекомендуется не увлекаться  «экспериментированием» с искажениями рисунков, тем более, что некоторые клоны на это не рассчитаны.

Клон № 3 распознает довольно большое количество различных экземпляров (вариаций) одних и тех же образов. А клон № 4 «Сцена» получает на входе изображения, которым заранее заведомо не обучался, т.к. «сцены» не имеют названия, а сами объекты «вынуждены» «тесниться» и деформироваться по сравнению с эталонами, чтобы уместиться на экране или один внутри другого.

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

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

 

Инструкция по скачиванию рисунков на диск пользователя.

Читатель может скачать заархивированный файл с рисунками на свой компьютер (около 30 К). Для этого:

1.  Предварительно создайте на диске новую пустую папку (директорию), например, RISVREM.

2.  На основной странице проекта кликните «Скачать рисунки».

3.  Под сообщением «Загружается файл с tavis4.narod.ru» выберите опцию «Сохранить». Укажите папку RISVREM, в которую надо поместить файл. После скачивания кликните «Закрыть».

4.  Средствами WINDOWS войдите в папку RISVREM и разархивируйте файл Ris.zip. В папке Ris появятся файлы с рисунками.

Просматривать текстовые рисунки рекомендуется программами WORDPAD, TOTAL COMMANDER или средствами DOS. Как правильно использовать для этого "Блокнот" (Notepad), написано ниже.

 

Инструкция по скачиванию новой версии 1.0.1 программы HabibTG  на диск пользователя.

Читатель может скачать заархивированный файл с программой на свой компьютер (около 600 К). Для этого:

1. На основной странице проекта кликните «Скачать версию 1.0.1 программы HabibTG ».

2. Под сообщением «Загружается файл с tavis4.narod.ru» выберите опцию «Сохранить». Укажите корневую директорию диска C:, в которую надо поместить файл. После скачивания кликните «Закрыть».

3.  Разархивируйте файл HabibR1.0.1.zip в корневую директорию диска C: . Должна появиться директория C:\HabibR1.0.1 . Дальше следуйте инструкции aReadMe.txt.

 

 

 

 

Общая инструкция aReadMe.txt

(находится в директории HabibR1.0.1).

 

 

       HabibTG - Обучающаяся программа распознавания зрительных образов.

 

Версия 1.0.1

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

 

Некоторую информацию о проекте можно найти на сайте

http://tavis4.narod.ru

 

Предупреждение:

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

 

             О "Блокноте" (Notepad)

При работе с программой придётся часто пользоваться "Блокнотом".

Чтобы просмотреть весь данный текст без прокрутки, щелкните меню "Формат" и затем выберите пункт "Перенос по словам".

При работе с файлами "Obraznam.txt", "PicKod.txt", "Otvet.txt" и текстовыми файлами-рисунками может появиться другая проблема. Рисунки могут искажаться, столбцы с числами и наименованиями - искривляться, затрудняя процесс заполнения входной информации. Это происходит потому, что во многих шрифтах символы имеют разные размеры по ширине. К сожалению, это относится и к самому распространённому базовому шрифту MS Sans Serif. Поэтому для Блокнота надо подобрать шрифт, который не искажает нашу информацию. Попробуйте, например, шрифты Lucida Console, Lucida Sans Unicode, Courier, Courier New и др.

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

 

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

       Что нового в версии 1.0.1 ?

Роль директории HabibR теперь играет директория HabibR1.0.1 .

Обе версии могут функционировать на компьютере независимо друг от друга.

 

Добавлен тип файлов в PicKod.txt 

READMOD = 5,

который  означает, что файл надо трактовать как контурный графический файл типа битовых матриц (.bmp)  или файл, который может загружаться через кнопку "LoadFile". Все точки разделяются на два класса - чёрные и не чёрные. Например, черные линии на синем, жёлтом, зелёном, красном фоне и т.д. Для большей ясности рекомендуется готовить рисунки в графическом редакторе в черно-белом (не цветном) режиме.

Размеры рисунка могут быть произвольными (большими).

 

Добавлен зрительный канал

"5 MaxiKontur" - читается файл из графического окна произвольных размеров как контурный рисунок по принципу "чёрный - не чёрный".

Использует режим обработки файла ReadMod = 5, описанный в "PicKod.txt"

Работает достаточно быстро.

При этом точки c координатами  x=0 или y=0 обрабатываются на общих основаниях.

 

Добавлен режим обучения

Regim = 14 - усиленный режим обучения с полным списком рисунков.

 

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

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

 

Добавлены два ярлыка  K00BOnlyOn и K00DOnlyOn для только частичного обнуления уже выращенного клона.

 

В клон "Устойчивый" добавлены рисунки

171      0 5 "Pixel\MaxKont84.bmp"  большая четвёрка, состоящая из множества маленьких восьмёрок.

и

173      0 3 "Pixel\Stroka.bmp"  для демонстрации цветных рисунков большего размера.

При вызове через LoadFile для рисунка Stroka надо выбрать зрительный канал 4 PixelMaxi, для MaxKont84 - 5 MaxiKontur или 4 PixelMaxi.

 

Добавлен клон "Лицо". В его aReadme.txt содержится важная информация.

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

Теперь продолжим.

Программа должна быть размещена обязательно на диске C: в корневой директории.

Zip-файл разархивируется в виде директории (папки) HabibR1.0.1 .

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

 C:\HabibR1.0.1\LNK

Установки как таковой не требуется.

Для удаления программы достаточно уничтожить папку C:\HabibR1.0.1 и ярлык.

 

Для начала работы кликните на ярлык HabibR1.0.1.

Далее.

Для работы с готовыми клонами кликните

 "Demo SemKlon"

Вы попадёте в семейство клонов SemKlon.

 

Все клоны одного семейства пользуются одним и тем же кодификатором образов "Obraznam.txt" (тезаурус) и связанным с ним кодификатором рисунков "PicKod.txt" (учебник).

 

Программа работает с копиями клонов, которые помещаются по очереди в рабочую директорию "KlonRab".

Для запуска клона, находящегося в данный момент в рабочей директории  KlonRab, кликните

 "Raspoznavanie"

Далее, чтобы узнать имя клона, кликните

 "aReadMe"

(В клоне K34Ustoi и K8Lico приводятся дальнейшие инструкции)

Прочитав содержимое, закройте "блокнот".

Запустите клон, кликнув

 "HabibTG"

На появившейся форме кликните

 "Pusk".

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

 "Otvet.txt"

Для завершения программы кликнуть

"Выход"

Для загрузки следующего клона в рабочую директорию KlonRab:

 1. Оставить окно "Raspoznavanie" открытым.

 2. Вернуться на рабочий стол и повторно  кликнуть "HabibR1.0.1"

 3. Пройти путь "Demo SemKlon", "Obsluga"

 4. Кликнуть на клон, который ещё не запускали, например,

   "AzbukaOn"

    Копия этого клона перепишется в директорию KlonRab.

 5. Вернуться в окно "Raspoznavanie" и запустить уже знакомую программу

  "HabibTG"

 

Все манипуляции файлами в окнах Obsluga и Raspoznavanie , такие, как

OBuToRsp (Save), k00KlonOn, а также заполнение Блокнотом NomerRis.txt

и т.д. производятся  обязательно при завершённой программе

"HabibTG" ("Выход"). Если Вы забыли об этом, и после этого программа зависла, снимите её принудительно системными средствами и запустите ещё раз.

Будьте особенно внимательны в ситуации, когда сочетаются NomerRis.txt и Regim = 12 или 14.

 

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

 

Файлы заполняются Блокнотом обязательно при завершённой программе

"HabibTG" ("Выход").

 

      Инструкция по заполнению полей файла "NomerRis.txt".

Первая строка

 

PICNUM

 

является комментарием. Её трогать не надо.

Файл содержит список номеров рисунков, участвующих в обработке.

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

В списке может быть не более 300 рисунков одновременно.

(В версии разработчика легко увеличивается).

 

1 <=  PICNUM   <= 300

PICNUM = 0 является признаком конца файла.

 

      Инструкция по заполнению полей файла "Obraznam.txt".

 

Первая строка

 OBRAZKOD  OBRAZNAME

является комментарием. Её трогать не надо.

 

Между полями OBRAZKOD и OBRAZNAME должен быть ровно один пробел

(смотри образцы заполнения).

1 <=  OBRAZKOD <= 299

Максимальная длина поля OBRAZNAME - 20 символов.

OBRAZKOD = 0 является признаком конца файла.

Поле  OBRAZKOD встречается также в файле  PicKod.txt .

 

       Инструкция по заполнению полей файла "PicKod.txt".

Первая строка

 

PICNUM OBRAZKOD READMOD PICFILENAME

 

является комментарием. Её трогать не надо.

Поле PICFILENAME обязательно должно браться в двойные кавычки ("...").

Все поля отделяются друг от друга хотя бы одним пробелом.

Между полями READMOD и PICFILENAME должен быть ровно один пробел

(смотри образцы заполнения).

PICNUM = 0 является признаком конца файла.

 

1 <=  PICNUM   <= 300

1 <=  OBRAZKOD <= 299

1 <=  READMOD  <= 4

Максимальная длина поля PICFILENAME -  20 символов.

 

READMOD  (RisRdMod) - так называемый режим обработки файла, близкий по смыслу к понятию "Тип файла".

READMOD = 1 означает, что файл надо трактовать как отдельный кадр

в обычном текстовом файле. Пробел трактуется как белая точка, любой другой символ - как чёрная (включая непечатный!). Такие файлы  рассматриваются как контурные рисунки  и обрабатываются с максимальной  скоростью.

 1 <= x <=80 , 1<= y <= 25 .

 

READMOD = 2 означает, что файл надо трактовать как текстовый файл,

моделирующий квази-бегущую строку.

Пользователям готовить такие файлы не рекомендуется.

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

 

READMOD = 3 означает, что файл надо трактовать как цветной графический файл типа битовых матриц (.bmp)  или файл, который может загружаться через кнопку "LoadFile".

В этом режиме нельзя обрабатывать .jpg и .jpeg файлы (они требуют некоторой дополнительной обработки, эти инструменты в данную версию не включены).

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

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

Из всех режимов этот - самый медленный.

 

READMOD = 4 означает, что файл надо трактовать как контурный графический файл типа битовых матриц (.bmp)  или файл, который может загружаться через кнопку "LoadFile". Все точки разделяются на два класса - чёрные и не чёрные. Например, черные линии на синем, жёлтом, зелёном, красном фоне и т.д. Для большей ясности рекомендуется готовить рисунки в графическом редакторе в черно-белом (не цветном) режиме.

Размеры рисунка:

0 <= x <=80 , 0 <= y <= 25 

Соответственно в параметрах графического редактора надо указывать:

ширина окна - 81, высота - 26. За образец оформления берите файлы

163      4 4 "Pixel\cifra41.bmp"

164      4 4 "Pixel\cifra42.bmp"

165      5 4 "Pixel\cifra51.bmp"

166      5 4 "Pixel\cifra52.bmp"

из PicKod.txt .

При этом точки c координатами  x=0 или y=0 не обрабатываются

(для полной идентичности с режимом ReadMod=1).

В этом режиме файлы обрабатываются почти также быстро, как в ReadMod=1.

Пользователям рекомендуется готовить рисунки для обучения именно в этом режиме (ReadMod = 4).

 

READMOD = 5 означает, что файл надо трактовать как контурный графический файл типа битовых матриц (.bmp)  или файл, который может загружаться через кнопку "LoadFile". Все точки разделяются на два класса - чёрные и не чёрные. Например, черные линии на синем, жёлтом, зелёном, красном фоне и т.д. Для большей ясности рекомендуется готовить рисунки в графическом редакторе в черно-белом (не цветном) режиме.

Размеры рисунка могут быть произвольными (большими).

 

При обучении в параметрах графического редактора рекомендуется укладываться в рамки:

ширина окна <= 128, высота <= 128 (см. MaxKont1.bmp ) .

За образец оформления берите файлы

180    107 5 "Pixel\NosZ.bmp"

181    108 5 "Pixel\Glaz2Z.bmp"

из PicKod.txt .

При этом точки c координатами  x=0 или y=0 обрабатываются на общих основаниях.

 

В этом режиме файлы обрабатываются достаточно быстро.

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

 

 

             Опции главной формы (формы 1)

 

              Использование опции "Regim"

Опция Regim определяет функцию, которую выполняет программа при нажатии кнопки "Pusk". Кнопку "Pusk" можно нажимать сколько угодно раз. Результат не закрепится, пока не выполнена команда

 "ObuToRsp" (аналог Save) в окне Raspoznavanie или Obsluga.

 

Regim = 1 вызывает одну из функций обучения новым образам. Применяется  только к списку из одного - двух рисунков в случаях, когда основной режим обучения (Regim = 12 или 14) перестаёт давать результаты.

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

После этого режима рекомендуется выполнить режим 12 на полном списке.

 

Regim = 2 (по умолчанию) - режим распознавания.

 

Regim = 5 применяется, чтобы при распознавании составного образа подсказать программе, что упоминать в ответе "комплектующие" элементы не следует. Например, что, распознав знак равенства

"=" не надо упоминать знак минус "-", распознав букву 

"Ы" - упоминать мягкий знак "Ь", вертикальную черту "|" и т.д.

Применять надо очень осторожно, только с двумя рисунками в списке

(например, "Ы" и "Ь").

В начале только для этих двух рисунков рекомендуется выполнить regim = 11. Это позволит "всплыть" подавленному ранее мягкому знаку. Затем только для рисунка "Ы"  выполнить

Regim=5 . После этого выполнить

Regim=2 на полном списке рисунков.

Если при этом "Ь" стал появляться в ненужных местах (ошибочно), то   на полном списке выполнить Regim=7. Далее выполнить Regim=2 ещё раз и убедиться, что ситуация улучшилась.

Теперь можно перейти к следующей проблемной паре (если таковые остались) и всё повторить ещё раз.

Если "Ы" и "Ь" были "видны" с самого начала, можно сразу выполнить Regim=5 на одном рисунке "Ы".

Применение Regim=5  к полному списку может привести к катастрофическому образованию ненужной и некорректной информации из-за незавершённости предыдущего этапа обучения. Механизмов забывания такой информации в данной версии нет. Если это всё-таки случилось, то единственный способ избежать полного повторного обучения - это средствами операционной системы заменить файлы

Rsp3D и   Rsp3DCon  в директории

KlonRab 

одноимёнными пустыми файлами из директории

k00Klon.

После этого заново повторить все действия, связанные с режимом 5.

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

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

 

Regim = 7 корректирует неправильные ответы (уменьшение их значения).

 

Regim = 11 корректирует правильные пропавшие ответы (увеличение их значения).

 

Regim = 12 - основной режим обучения с полным списком рисунков. Попутно выполняет функции забывания. Если после выполнения программы в файле

Otvet.txt появляется сообщение "Память не увеличилась", обучение следует прекратить. Если при этом память приблизилась к 100 %, дальнейшее обучение невозможно. Если нет - попробуйте

Regim=1, но только с одним номером рисунка, с которым были проблемы с обучением (в начало списка NomerRis надо вставить этот номер и сразу на следующей строке - "0" - конец файла).

Потом попробуйте вернуться к режиму 12.

 

Regim = 14 - усиленный режим обучения с полным списком рисунков. Попутно выполняет функции забывания. Если после выполнения программы в файле

Otvet.txt появляется сообщение "Память не увеличилась", обучение следует прекратить. Если при этом память приблизилась к 100 %, дальнейшее обучение невозможно. Если нет - попробуйте

Regim=1, но только с одним номером рисунка, с которым были проблемы с обучением (в начало списка NomerRis надо вставить этот номер и сразу на следующей строке - "0" - конец файла).

Потом попробуйте вернуться к режиму 14 или 12.

Наиболее качественное и компактное обучение может быть достигнуто, если Regim=14 применять с самого начала, с нулевого клона. Но будьте готовы к тому, что время обучения может возрасти по сравнению с Regim=12 в 10-15 раз.

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

В конце обучения, особенно не доведённого до конца из-за нехватки ресурсов, полезно выполнить режим Regim=7.

 

 

 

         Использование опции "Зрительный канал"

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

Имеются следующие каналы:

"1 NomeraRisunkov"

"2 PixelTxt"

"3 PixelMini"

"4 PixelMaxi"

"5 MaxiKontur"

 

"1 NomeraRisunkov" выбран каналом по умолчанию. По этому каналу файлы читаются в потоке по номерам, указанным в файле NomerRis.

 

"2 PixelTxt" - читается файл из маленького графического окна

  1 <= x <=80 , 1<= y <= 25

как контурный рисунок по принципу "чёрный - не чёрный".

Использует режим обработки файла ReadMod = 4, описанный в "PicKod.txt"

Переводит как бы в текстовый формат, работает быстро.

При этом точки c координатами  x=0 или y=0 не обрабатываются

(для полной идентичности с режимом ReadMod=1).

 

"3 PixelMini" в данной версии выключен.

 

"4 PixelMaxi" может читать из того же графического окна рисунки

большего размера и обрабатывает их в режиме

READMOD = 3 , что означает, что изображение трактуется как цветной графический файл  типа битовых матриц (.bmp).

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

Точки c координатами  x=0 или y=0 обрабатываются на общих основаниях.

Из всех режимов этот - самый медленный.

В этот канал нельзя помещать .jpg и .jpeg файлы (они требуют некоторой дополнительной обработки, эти инструменты в данную версию не включены).

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

 

"5 MaxiKontur" - читается файл из графического окна произвольных размеров как контурный рисунок по принципу "чёрный - не чёрный".

Использует режим обработки файла ReadMod = 5, описанный в "PicKod.txt"

Работает достаточно быстро.

При этом точки c координатами  x=0 или y=0 обрабатываются на общих основаниях.

 

 

              Использование опции "Naklon"

 На форме 1 имеется опция "Naklon".

Если эта опция включена, т.е. стоит "галочка" (True), то при обучении программа учитывает ориентацию объекта на рисунке.

Например, "6" и "9" для неё будут заведомо разными образами.

 

Если эта опция  выключена, т.е. "галочки"  нет (False), то при обучении программа не обращает внимания на  ориентацию объекта на рисунке. Тогда от программы нельзя требовать, чтобы после обучения она отличала "6" от "9" .

При распознавании опция игнорируется.

 

Если в списке рисунков присутствуют образы, часть из которых надо обработать в режиме "Naklon", а часть - нет, то эпизодически придется в начало списка помещать дополнительный подсписок только из рисунков, которые нельзя поворачивать, отделить их от общего списка признаком конца файла "0", выполнить обучение с опцией "Naklon" True (в данной версии только Regim 12 или 1), закрепить обучение, убрать дополнительный подсписок и снова выполнить обучение Regim=12 на общем списке с выключенной опцией "Naklon"

(и закрепить ObuToRsp).

В данной версии это создаёт определённые неудобства.

В таких случаях лучше обучение начинать именно с дополнительного списка.

В файле NomerRis клона k1Figura после конца файла "0" приведён такой дополнительный список после слова Naklon.

 

 

                      Схема обучения

 

Обучение в целом происходит по следующей схеме.

 1.Выбрать семейство клонов SemKlon или SemKlon2 .

Подготовить с помощью стандартного графического редактора свои рисунки и поместить их в директорию ObrazRis.

SemKlon2 выбирают, если хотят заново закодировать не только рисунки в файле  PicKod.txt, но и тезаурус (список образов)  в ObrazNam.txt .

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

 2.Войти в окно Obsluga, выполнить K00KlonOn.

 

 3.Войти в окно Raspoznavanie, заполнить файлы

    aReadMe.txt

   "Obraznam.txt"

   "PicKod.txt"

   "NomerRis.txt"

   согласно инструкции.

   В aReadMe укажите новое имя клона.

 4. Запустите программу HabibTG.

 5. В поле Regim наберите число 12

 6. Кликните Pusk.

 7. Если программа успешно доработает до конца,

    посмотрите результат в файле "Otvet.txt" ,

    завершите программу (Выход),

    в окне Raspoznavanie или Obsluga выполнить

    ObuToRsp

 8. Снова запустите программу HabibTG.

 9. В поле Regim наберите число 2

10. Кликните Pusk.

11. Посмотрите результат в файле "Otvet.txt"

Если надо, повторите обучение, используйте описание функций в опции Regim и опции Naklon.

 

Чтобы задублировать текущее состояние клона, в окне Obsluga выполните K7UserSave.

Копия клона запишется в директорию K7User. Он копируется обратно в рабочую директорию по команде K7UserOn. Надо быть осторожным, так как команда K7UserSave затирает содержимое K7User без предупреждения.

 

Чтобы окончательно оформить выращенный клон лучше сделать следующее.

Системными средствами:

1.Скопировать директорию k00Klon под новым именем для будущего клона, например,

 NewKlon внутри той же директории (семейства).

2. Скопировать из директории KlonRab в NewKlon файлы

aReadMe.txt

NomerRis.txt

Rsp3B

Rsp3BCon

Rsp3D

Rsp3DCon

3. В директории NewKlon переименуйте файл k00On.bat, например, в NewKlonOn.bat.

4. В окне Obsluga создайте ярлык NewKlonOn , указав путь к объекту

   C:\HabibR\SemKlon2\NewKlon\NewKlonOn.bat

   Если вы работаете в семействе SemKlon, указываете его.

Теперь Вы можете скопировать клон в рабочую директорию, кликнув дважды на ярлык

NewKlonOn в директории Obsluga.

 

                Общие рекомендации при обучении.

 

Если необходимо, для  удобства работы рекомендуется настроить экран компьютера на режим 800 X 600 или около того.

Начинайте с небольших примеров в ReadMod=4.

Рисуйте крупно, насколько это возможно.

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

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

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

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

Для достаточно содержательных рисунков рекомендуется ReadMod=5.

 

На длинных списках в режимах 1, 12 и 14 форма 1 может закрываться. Обычно перед этим она помещает в файл Otvet.txt сообщение "Переполнение. Обучение отменяется".

Если Вам показалось, что память переполняется подозрительно рано или программа зависает в режиме 12 или 14, попробуйте повторить выполнение только на первых двух рисунках общего списка (после номера второго рисунка в NomerRis временно вставьте "0"). Посмотрите результат обучения и заполнение памяти в Otvet.txt.

Если всё нормально, можете даже попробовать запустить программу на распознавание.

Если всё идёт по плану, "перенести" "0" дальше на 4 позиции и всё повторить, потом на 8 и так далее, увеличивая список каждый раз вдвое.

При этом следите за памятью.

Если же оказалось, что клон по каким-то причинам запорчен, восстановите предыдущий этап из K7User (K7UserOn).

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

Для этого не надо выполнять стандартную команду k00On,

а системными средствами скопировать только файлы

Rsp3B

Rsp3BCon

из директории k00Klon в директорию KlonRab, оставив там прежние файлы

Rsp3D

Rsp3DCon

Но лучше это сделать, запустив K00BOnlyOn из окна  Obsluga.

Новый нулевой клон охотно воспользуется знаниями своего предшественника.

 

Если надо поступить наооборот, переобучить клон заново только в режиме "5", можно выполнить

K00DOnlyOn, при этом обнулятся только знания клона, а образы останутся без изменения.

После этого выполнить обучение в режиме 5.

Выращенный ранее клон обновит свои знания.

Последовательное выполнение K00BOnlyOn и K00DOnlyOn (в любом порядке) равносильно выполнению K00On.

 

                            Примеры

 

Вы можете попробовать избавиться от вопросительного знака в "изолированной точке" в клоне "k1Figura". Её специально "задвинули" для экономии, чтобы лишний раз не появлялась вне контекста и темы. Для этого надо:

 1. Определить код рисунка с изолированной точкой (он равен 21, файл Ris021).

 2. k1FiguraOn

 3. В Raspoznavanie  в NomerRis.txt первым поставить 21, затем 0 :

    21

    0

    ...

 4. Выполнить HabibTG в режиме 2.

 5. Посмотреть файл Otvet.txt и убедиться, что точка с вопросительным знаком.

 6. Выполнить HabibTG в режиме  11.

 7. ObuToRsp (Save)

 8. Выполнить HabibTG в режиме 2.

 9. Посмотреть файл Otvet.txt и убедиться, что вопросительный знак   исчез.

10. В Raspoznavanie  в NomerRis.txt убрать первые две строчки:

    21

    0

и восстановить прежний полный список.

11. Выполнить HabibTG в режиме 2.

12. Посмотреть файл Otvet.txt и убедиться, что  изолированная точка стала появляться в нескольких местах там, где её не ждут.

К счастью, в данном примере все случаи понятные и "правильные", дальнейшего обучения форме не требуется, поэтому:

13. Выполнить HabibTG в режиме 5 на полном списке.

14. ObuToRsp (Save)

15. Выполнить HabibTG в режиме 2 на полном списке.

16. Посмотреть файл Otvet.txt и убедиться, что  изолированная точка перестала появляться там, где не надо и обучение успешно завершено.

 

    Пункт 13 - режим 5 на полном списке - Вы делали первый и последний раз.

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

Если Вы и дальше хотите потренироваться в обучении клона не только образам, но знаниям и понятиям, попробуйте избавиться от вопросительных знаков в клоне k00Klon. Подсказка: для простоты сначала на полном списке выполните

HabibTG с опцией Naklon true (с галочкой).

Полагаю, после этого Вы зауважаете труд учителя.

 

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

( например - столовые приборы и вообще реальные объекты, а не геометрические фигуры и знаки).

 

Программу не стоит пытаться обучать побуквенному чтению слитного рукописного текста. Программа "учит" слова как единый образ, а не набор букв. Например, рукописные слова  "Анна", "анна", "Hat" и "hat" все имеют разные образы.

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

Человек этим не ограничивается и делает кое-что ещё.

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

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

 

А вот что правильно с научной точки зрения - так это попытаться научить программу отличать подписи условных Иванова, Петрова и Сидорова.

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

 1<=x<=80, 1<=y<=25 ,

и, видимо, состоять из двух букв и разных завитушек.

 

Можно также развить тему листьев разных растений (клён, дуб, лопух и т.д.),

цветов (ромашка, васильки, колокольчик),

контуры деревьев (ёлка, берёза, дуб),

научить надёжно распознавать арабские цифры,

рукописные буквы разных языков  и т.д.

 

               Предупреждения и предостережения

 

В данную версию уже вошёл промежуточный режим быстрой обработки черно-белых контурных рисунков большего размера ReadMod=5. Но чем меньше рисунок, тем быстрее обработка.

На этот раз на этапе обучения автор рекомендует не мучить себя и программу цветными примерами больших размеров в ReadMod=3 (до лучших времён).

 

Имейте также ввиду, что понятия "внутри" и "снаружи", которые иногда встречаются в ответах - условные, т.к. проверка производится только по оси "X" , а по оси "Y" - нет.

 

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

 

Инструкция aReadMe.txt  для клона "Устойчивый"

 (находится в директории K34USTOI).

 

Klon : K34USTOI "Устойчивый"

 

При выращивании клона использовались несколько экземпляров одного и того же образа. Но можно было бы и больше.

Попробуйте по  двум зрительным каналам.

 

Первый канал:

"1 NomeraRisunkov" (по умолчанию), кликнуть Pusk

 

Четвёртый канал:

"4 PixelMaxi"

 Левый клик на эту строчку, далее:

 LoadFile1 ,

 выбрать файл  HabibR1.0.1\SemKlon\obrazRis\Pixel\K5Us458.bmp

 Кликнуть Pusk

 

 Попробуйте то же повторить с файлом  PB4UCv8.bmp

 То же - с файлами PB4UCv84.bmp , K5Us458.bmp , K5Us485.bmp , PB4UCv841.bmp

 

Все эти файлы нарисованы с помощью общеизвестного графического  редактора.

 

Далее перейдите во второй зрительный канал

"2 PixelTxt"

 и попробуйте мышкой нарисовать и распознать цифру 4 :

 "Очистка", рисование мышкой , Pusk

 Рисовать надо в маленьком окне в диапазоне

 x : (1,80), y : (1,25)  , не мельчить.

 В канале "2 PixelTxt" линии x=0 и y=0 в версии 1.0.0 игнорируются.

 Стирать можно только весь экран (Очистка).

 Полученный рисунок можно посмотреть и в файле Otvet.txt

 

 Повторите эксперимент с цифрами "5" и "8" с разными ориентациями.

 

 Нарисуйте на экране одновременно две цифры покрупнее и подальше

 друг от друга, с разными ориентациями.

 

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

 

Не стоит беспокоиться по поводу быстродействия и надёжности работы клона.

При обучении мало использовались рукописные графические файлы.

При более богатом обучающем материале все вопросы отпадут.

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

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

 

В клон "Устойчивый" добавлены рисунки

171      0 5 "Pixel\MaxKont84.bmp"  - большая четвёрка, состоящая из множества маленьких восьмёрок,

и

173      0 3 "Pixel\Stroka.bmp" -  для демонстрации цветных рисунков большего размера.

При вызове через LoadFile для рисунка Stroka надо выбрать зрительный канал 4_PixelMaxi, для MaxKont84 – 5_MaxiKontur или  4_PixelMaxi.

После распознавания MaxKont84 клон выдаст ответ

  ЧЕТЫРЕ  ,  ВОСЕМЬ (СНАРУЖИ)

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

Поэтому ответ абсолютно правильный.

 

Инструкция aReadMe.txt  для клона "Лицо"

 (находится в директории K8Lico).

 

Klon : K8Lico

Это  клон "Лицо"

 

Клон обучен чисто символически образам "Нос", "Глаз", Бровь", "Ухо". Для каждого образа при обучении использовался один-единственный рисунок плюс его зеркальное отражение (всего 8 рисунков).

Рисунок глаза с небрежно нарисованным зрачком в обучении не участвовал. Обратите внимание, что он трактуется не как контурный, а как рисунок со сплошной "заливкой". При распознавании через "LoadFile" должен быть выбран зрительный канал "4 PixelMaxi".

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

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

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

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

 

То, что Клон "Лицо" распознаёт сцену - это "побочный эффект", "бесплатное приложение", "случайность".

А режим "интегрального" распознавания очень важен сам по себе.

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

Без него невозможно распознавание слитного рукописного текста (ни цельно-образное, ни побуквенное).

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

 

Далее. Увидеть и вычленить важный элемент в "целом" или среди множества второстепенных (отделить зёрна от плевел, увидеть и вычленить в каждой системе координат своё время t, отличное от времени t' других, движущихся относительно неё, систем или от эфемерного "всемирного" времени, как это сделал А. Эйнштейн в своей теории относительности  (анализ)) и увидеть единое целое там, где другие видят только отдельные элементы (увидеть "за деревьями лес", "за восьмёрками" - четвёрку, "за химическими элементами" увидеть периодическую таблицу Менделеева, увидеть казавшееся раньше независимым "t" как часть единой связки (t,x) (синтез)) - это важнейшие моменты творческого процесса. И не так важно, происходит это во время восприятия или во время "отвлечённого" образного мышления - при этом часто используются одни и те же зрительные образы и "язык", сформированные в процессе восприятия реального мира.

 

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

 

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