<<
>>

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 Программная реализация:

  1. Классификация по способу программной реализации  
  2. Реализация навыка отслеживания с помощью программного визуального серворегулятора
  3. 3.2.2 Минимизация ресурсных требований к программной реализации
  4. 3 Программная реализация системы выделения сюжетной части изображения
  5. 56. Реализация и применение права. Непосредственная и правоприменительная реализация.
  6. Программное содержание
  7. Список используемого программного обеспечения
  8. 2.1. Общая характеристика программного комплекса 
  9. Телемедицинское программное обеспечение
  10.   4.1. Общая характеристика программного комплекса 
  11. Программная инженерия (Software Engineering)
  12. 14. Особенности фонетической реализации согласных фонем в сильных и слабых позициях. Особенности реализации консонантных сочетаний.
  13. Глава 18(4). Самоуничтожение в мире программного обеспечения
  14. Программно-целевые методы
  15. Платное программное обеспечение
  16. 1.4. Классификация программного обеспечения персональногокомпьютера
  17. Программный компонент.
  18. Классификация программных средств для фондового рынка
  19. Специальное программное обеспечение по защите информации компьютера