<<
>>

3.2 Программная реализация

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

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

К таким средствам можно отнести:

Stuttgart Neural Network Simulator [79]; Qnet [80];

NeuroSolutions [81];

Fast Artificial Neural Network Library [82];

Jets Neural Library [83].

Обычно это готовые программные продукты, либо библиотеки программ написанные под Unix.

Самым распространенным инструментом для моделирования нейронных сетей является Matlab Neural Network Toolbox [84]. Нейронные сети в Matlab, в следствие поставленной цели - моделирования широкого класса нейронных сетей, имеют громоздкую реализацию и невысокую скорость при решении конкретного класса задач. Кроме того, использование Matlab в системе реального времени, которыми являются системы безопасности и контроля доступа весьма затруднительно. Еще одним ограничением является тот факт что, не один из указанных продуктов не предоставляет возможности создания и обучения свёрточных нейронных сетей.

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

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

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

Класс TSubsamplePlain реализует подвыборочную плоскость свёрточной нейронной сети и алгоритм ее обучения, данный класс содержит следующие методы:

LoadSinaps - осуществляет загрузку синаптических коэффициентов плоскости;

Forward - реализует "прямой" проход подвыборочной плоскости;

Gradient_Compute - осуществляет "обратный" проход, то есть расчет градиентов для синаптических коэффициентов и смещения подвыборочной плоскости;

RatejCompute - рассчитывает индивидуальную скорость обучения для каждого синаптического коэффициента;

CorrectJSinaps - осуществляет расчет коррекции синаптических коэффициентов и корректирует синапсы;

Класс TConvPlain реализует свёрточную плоскость свёрточной нейронной сети и алгоритм ее обучения, данный класс содержит следующие методы:

LoadSinaps - осуществляет загрузку синаптических коэффициентов плоскости;

Forward - реализует "прямой" проход сверточной плоскости;

GradientjCompute - осуществляет "обратный" проход, то есть расчет градиентов для синаптических коэффициентов и смещения сверточной плоскости;

RatejCompute ~ рассчитывает индивидуальную скорость обучения для каждого синаптического коэффициента;

CorrectJSinaps - осуществляет расчет коррекции синаптических коэффициентов и корректирует синапсы;

Класс TNeuron реализут процесс функционирования нейрона, данный класс содержит следующие методы;

LoadSinaps - осуществляет загрузку синаптических коэффициентов нейрона;

Forward - реализует "прямой" проход нейрона;

GradientJCompute - осуществляет "обратный" проход, то есть расчет градиентов для синаптических коэффициентов и смещения нейрона;

RatejCompute - рассчитывает индивидуальную скорость обучения для каждого синаптического коэффициента;

CorrectJSinaps - осуществляет расчет коррекции синаптических коэффициентов и корректирует синапсы;

На основе предложенной библиотеки, была создана программная система выделения сюжетной части на групповом изображении. Система реализована в сред Borland С++ Builder 6.0, с использованием библиотеки Graphics 32.

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

Библиотека Graphics32 является дополнением к среде Borland С++ Builder и предназначена для высокопроизводительной работы с графикой. Библиотека предоставляет набор классов и процедур, разработанных с целью ускорить и облегчить работу с изображениями. Средства библиотеки позволяют значительно ускорить работу с 32-битными изображениями в формате BMP, включая улучшенную работу в многопоточном режиме, аффинные преобразования изображений на субпиксельном уровне и многое другое. В частности, для данной разработки широко применялись методы преобразования цветных изображений в полутоновые с 256 градациями серого, и методы масштабирования изображений.

Структурная схема созданной программной системы представлена на рис. 3.12. Основными структурными элементами программной системы являются:

Человеко- машинный интерфейс - осуществляет взаимодействие между пользователем и программной системой;

Блок генерации структуры нейронной сети - создает структуру нейронной сети и осуществляет загрузку синаптических коэффициентов выбранных пользователем;

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

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

<< | >>
Источник: Макаренко Алексей Александрович. Алгоритмы и программная система классификации полутоновых изображений на основе нейронных сетей: диссертация... кандидата технических наук: 05.13.18. - Москва: РГБ, 2007. 2007

Еще по теме 3.2 Программная реализация: