Проект COM-Client


Screenshot программы COM-Client с комментариями (126.09 KB)
Рис. 1: Screenshot программы COM-Client

Изображение символа '6' (879 bytes)
От'preprocess'иное изображение Рис. 2 (приведённое к размерности 20x20, для подачи на вход сетки) (1.2 KB)
Мониторинг состояния возбуждения нейронов выходного слоя после распознавания изображения символа '6' (19.05 KB)
Рис. 2: Нарисованное и сохранённое изображение символа '6' в программе CharacterMaker
Рис. 3: От'preprocess'иное изображение Рис. 2 (приведённое к размерности 20x20, для подачи на вход сетки)
Рис. 4: Мониторинг состояния возбуждения нейронов выходного слоя после распознавания изображения символа '6'

График обучения №1: падение квадратической ошибки с течением времени (21.4 KB)
График обучения №2: увеличение процента распознавания символов на обучающей выборки с течением времени (21 KB)
Рис. 5: График обучения №1 - падение квадратической ошибки с течением времени
Рис. 6: График обучения №2 - увеличение процента распознавания символов на обучающей выборки с течением времени

Данный проект (COM-Client) создан для демонстрации возможностей класса TNet, который реализован в проекте COM-Server.

Возможности cледующие:

1.) Ведение лог-файла
  • Вообще, для ведения лог-файла, используется метод TNet.WriteReport() и вызывается он в различных методах класса TNet для того, чтобы было понятно что именно происходит в настоящий момент. Сам компонент для мониторинга этого лог-файла реализован в проекте Controls в виде DLL, т.к. используется в различных проектах (COM-Client и CharacterRecognition);
  • По этому лог-файлу можно построить график (точнее, два графика: ошибка/время_обучения (см. Рис. 5) & процент_правильно_распознанных_изображений/время_обучения (см. Рис. 6)) ( TNet.GetGraphOfTeach() );
  • 2.) Работа с кэшем изображений
  • Создание кэша изображений (*.DAT) из файлов изображений ( TNet.BuildCache() );
  • Выгрузка изображений из файла кэша изображений ( TNet.LoadCache() & TNet.DumpCache() );
  • 3.) Обучение сетки
  • Собственно, процедура обучения сетки ( TNet.Teaching_MonteKarlo() ) ... с возможность запустить, притормозить и остановить поток обучения, а также, изменить приоритет этого потока;
  • Сохранение текущего состояния (например, в момент обучения) сетки в файл ( TNet.SaveToFile() );
  • Создание отчёта по изображениям символов (из тестового DAT-файла кэша) которых распознать не удалось ( TNet.GetAlphabetError() );
  • Имеется возможность изменить информацию, подаваемую на вход сетки. Т.е., если по стандарту методом TNet.SetInputValues_bmp() на вход подаются только значения пикселей изображения символа, то можно методом TNet.SetInputValuesFUNC() установить собственную функцию для подачи входной информации на сетку;
  • 4.) Функционирование сетки
  • Рисование (см. Рис. 2) и разнообразная трансформация изображения символа (перемещение, вращение и изменение толщины линии контура символа) & сохранение/загрузка отрисованного изображения (Эти возможности предоставляются средствами проекта ImgProcess, реализованного ввиде DLL);
  • Наблюдение за от'preprocess'инным изображением, а также изменение скрипта ( TNet.GetProcessingScript() ), по правилам которого происходит подобная нормализация (см. Рис. 3);
  • Функционирование сетки (нужно нажать на кнопку с изображением мозга) ( TNet.SetInputValues_btm() & TNet.Functioning());
  • Мониторинг результатов функционирования сетки (см. Рис. 4): собственно, сам результат (символ) ( TNet.GetStatus() ) и состояния возбуждения нейронов выходного слоя ввиде графика ( TNet.GetGraphOfStatus() );
  • P.S.
    Две здоровые кнопки на Рис 1. - это кнопки сохранения настроек программы (см. файл config_cc.ini).


    (c) Brain-LAB; by Alexander Panin in 2008