Автоматизированная система колоризации полутонового изображения

  • Вид работы:
    Дипломная (ВКР)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    4,04 Мб
  • Опубликовано:
    2012-06-16
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Автоматизированная система колоризации полутонового изображения

РЕФЕРАТ

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

Проведен анализ предметной области и по методологии UML разработан логический проект автоматизированной информационной системы.

Программная реализация выполнена в среде разработки IntelliJ Idea 10.0 на языке программирования Java 6.0 (JDK 1.6).

СОДЕРЖАНИЕ

ВВЕДЕНИЕ

. СИСТЕМОТЕХНИЧЕСКАЯ ЧАСТЬ

.1 Анализ предметной области и постановка задачи проектирования

.1.1 Методы сегментации изображения

.1.2 Сегментация как разбиение изображения на однородные области

.1.3 Оценка качества работы методов сегментации

.1.4 Кластеризация цветового пространства

.1.5 Выращивание регионов, дробление-слияние

.1.6 Методы, основанные на операторах выделения краев

.1.7 Методы теории графов

.1.8 Колоризация изображения нейронной сетью

.1.9 Аналитический обзор аналогов

.2 Постановка задачи

.3 Разработка логической модели по методологии UML

.3.1 Диаграмма вариантов использования

.3.2 Диаграмма классов

.3.3 Диаграмма состояний

.3.4 Диаграмма последовательности и кооперации

.3.5 Диаграмма компонентов

.3.6 Диаграмма развертывания

.3.7 Диаграмма деятельности

.4 Оценка системных и эксплуатационных характеристик

.4.1 Расчет объема ВЗУ

.4.2 Расчет объема ОЗУ

.4.3 Расчет времени реакции системы

.4.4 Минимальные требования к системе

. КОНСТРУКТОРСКО-ТЕХНОЛОГИЧЕСКАЯ ЧАСТЬ

.1 Выбор и обоснование средств реализации

.1.1 Выбор языка программирования

.1.2 Выбор среды программирования

.1.3 Выбор операционной среды

.2 Описание программной реализации

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

.4 Разработка алгоритмов системы

.4.1 Алгоритм сегментации изображения

.4.2 Алгоритм обратного распространения ошибки

.5 Описание контрольного примера

.6 Разработка методики испытания

.7 Анализ полученных результатов

. БЕЗОПАСНОСТЬ ЖИЗНЕДЕЯТЕЛЬНОСТИ

.1 Обеспечение безопасности на стадии функционирования АС

.2 Нагрузки интеллектуального характера

.2.1 Содержание работы

.2.2 Восприятие сигналов (информации) и их оценка

.2.3 Распределение функций по степени сложности задания

.2.4 Характер выполняемой работы

.3 Сенсорные нагрузки

.3.1 Длительность сосредоточенного наблюдения

.3.2 Плотность сигналов за один час работы

.3.3 Число объектов одновременного наблюдения

.3.4 Размер объекта различения при деятельности сосредоточенного внимания

.3.5 Работа с оптическими приборами при длительности сосредоточенного наблюдения

.3.6 Наблюдение за экраном монитора в часах

.3.7 Нагрузка на слуховой анализатор

.3.8 Нагрузка на голосовой аппарат

.4 Эмоциональные нагрузки

.4.1 Степень ответственности за результат своей собственной деятельности. Значимость ошибки

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

.4.3 Ответственность за безопасность других лиц

.4.4 Количество конфликтных производственных ситуаций за смену

.5 Монотонность нагрузок

.5.1 Число элементов, необходимых для реализации простого задания или многократно повторяющихся операций

.5.2 Продолжительность выполнения простых заданий или повторяющихся операций

.5.3 Время активных действий

.5.4 Монотонность производственной обстановки

.6 Режим работы

.6.1 Фактическая продолжительность рабочего дня

.6.2 Сменность работы

.6.3 Общая оценка напряженности трудового процесса

. ТЕХНИКО-ЭКОНОМИЧЕСКОЕ ОБОСНОВАНИЕ СОЗДАНИЯ АВТОМАТИЗИРОВАННОЙ СИСТЕМЫ

.1 Планирование и организация процесса разработки

.2 Технико-экономическое обоснование АСКПИ

.3 Расчет затрат на разработку АСКПИ

.4 Расчет-прогноз минимальной цены разработки АСКПИ

.5 Расчет целесообразного объема продаж и оценка безубыточности

.6 Расчет единовременных затрат на внедрение

.7 Расчет текущих затрат на функционирование АСКПИ

.8 Расчет экономических результатов от внедрения

.9 Расчет экономической эффективности инвестиционных затрат на внедрение

ЗАКЛЮЧЕНИЕ

Список использованных источников

ПРИЛОЖЕНИЯ

ВВЕДЕНИЕ

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

В рамках дипломного проекта разрабатывается приложение, целью которого ставится преобразование черно-белых полутоновых изображений в цветные. Использование ручных методов обладает такими недостатками, как большие временные и финансовые затраты, ресурсоемкость и сложность. Пример использования: колоризация фильмов. В 2009 году были колоризованы фильмы «Семнадцать мгновений весны» и «В бой идут одни старики». Колоризация была организована компанией «Grading Dimension Pictures» и выполнена на студии «Legend Films» и в Индии. При колоризации постарались воспроизвести цвета советской плёнки 1973 года; дополнительную сложность представляло обилие оттенков зелёного цвета (до 27 в одном кадре). Стоимость работ составила около 500 тыс. $.

Разрабатываемая автоматизированная система должна обладать следующими свойствами:

)        компактность;

)        быстродействие;

)        простота.

Разработка будет вестись по технологии быстрой разработки приложений RAD (Rapid Application Development), которая поддерживается методологиями объектно-ориентированного анализа и проектирования и структурного проектирования, и методологии UML.

 


1. СИСТЕМОТЕХНИЧЕСКАЯ ЧАСТЬ

.1 Анализ предметной области и постановка задачи проектирования

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

Сегментация - это процесс разделения цифрового изображения на несколько сегментов. Цель сегментации заключается в упрощении и/или изменении представления изображения, чтобы его было проще и легче анализировать [1]. Сегментация изображений обычно используется для того, чтобы выделить объекты и границы (линии, кривые, и т. д.) на изображениях. Более точно, сегментация изображений - это процесс присвоения таких меток каждому пикселю изображения, что пиксели с одинаковыми метками имеют общие визуальные характеристики.

1.1.1 Методы сегментации изображения

Методы сегментации можно разделить на два класса: автоматические - не требующие взаимодействия с пользователем и интерактивные - использующие пользовательский ввод непосредственно в процессе работы. В данной работе рассматриваются только автоматические методы [2].

Задачи автоматической сегментации делятся на два класса:

)        выделение областей изображения с известными свойствами;

)        разбиение изображения на однородные области.

1.1.2 Сегментация как разбиение изображения на однородные области

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

Ясно, что задача разбиения изображения на однородные области поставлена некорректно. Внизу (рисунок 1.1) приведены четыре варианта сегментации одного и того же изображения из Berkeley Segmentation Dataset, выполненные разными людьми.

Рисунок 1.1 - Варианты сегментации изображения

Как видно, среди участников эксперимента нет единства в выборе разбиения изображения. Далеко не всегда для изображения есть единственно «правильная» сегментация, и далеко не всегда задача сегментации имеет единственное решение. По той же причине нет и объективного критерия оценки качества разбиения изображения [3].

1.1.3 Оценка качества работы методов сегментации

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

Для грубой оценки качества метода в конкретной задаче обычно фиксируют несколько свойств, которыми должна обладать хорошая сегментация. Качество работы метода оценивается в зависимости от того, насколько полученная сегментация обладает этими свойствами. Наиболее часто используются следующие свойства [4]:

)        однородность регионов (однородность цвета или текстуры);

)        непохожесть соседних регионов;

)        гладкость границы региона;

)        маленькое количество мелких «дырок» внутри региона;

и т. д.

1.1.4 Кластеризация цветового пространства

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

В качестве признаков точки изображения можно использовать представление ее цвета в некотором цветовом пространстве, примером метрики (меры близости) может быть евклидово расстояние между векторами в пространстве признаков. Тогда результатом кластеризации будет квантование цвета для изображения. Задав отображение в пространство признаков, можно воспользоваться любыми методами кластерного анализа. Наиболее популярные методы кластеризации, используемые для сегментации изображений - k-средних (обобщенный метод Ллойда), EM алгоритм.

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

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

1.1.5 Выращивание регионов, дробление-слияние

Методы этой группы учитывают пространственное расположение точек напрямую. Методы выращивания регионов основаны на следующей идее. Сначала по некоторому правилу выбираются центры регионов (seeds), к которым поэтапно присоединяются соседние точки, удовлетворяющие некоторому критерию. Процесс выращивания регионов (regiongrowing) останавливается, когда ни одна точка изображения не может быть присоединена ни к одному региону [5].

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

В основном процедура выращивания региона используется для получения отдельных регионов, однако, применяя эту процедуру последовательно или одновременно для нескольких регионов, можно получить разбиение всего изображения. Существуют различные стратегии выбора зерен (seeds) и выращивания регионов. Методы дробления-слияния состоят из двух основных этапов: дробления и слияния. Дробление начинается с некоторого разбиения изображения, не обязательно на однородные области. Процесс дробления областей происходит до тех пор, пока не будет получено разбиение изображения (пересегментация), удовлетворяющее свойству однородности сегментов. Затем происходит объединение схожих соседних сегментов до тех пор, пока не будет получено разбиение изображения на однородные области максимального размера [5]. Конкретные методы различаются алгоритмами, используемыми на этапах дробления и слияния. Для получения пересегментации изображения используются алгоритмы k-средних, watershed, fuzzy expert systems, на втором этапе используются алгоритмы k-средних, самоорганизующиеся карты Кохонена, fuzzy expert systems, и т. д. На этапе слияния регионов используются relaxation process, k-средних, SIDE-уравнения, самоорганизующиеся карты Кохонена, и т. д. [5].

1.1.6 Методы, основанные на операторах выделения краев

При данном подходе задача сегментации формулируется как задача поиска границ регионов. Методы поиска границ хорошо разработаны для полутоновых изображений. Полутоновое изображение рассматривается как функция двух переменных (x и y), и предполагается, что границы регионов соответствуют максимумам градиента этой функции. Для их поиска применяется аппарат дифференциальной геометрии (в простейшем случае это фильтры Roberts, Kirsch, Prewitt, Sobel) [4].

Для повышения устойчивости к шуму, перед применением фильтрации изображение обычно размывают. Благодаря коммутативности оператора Гаусса (формула 1.1) и Лапласа (формула 1.2) фильтра, можно одновременно осуществлять размытие и поиск границ.

,(1.1)

где r - радиус размытия,

s - коэффициент размытия по Гауссу.

.(1.2)

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

Рисунок 1.2 - Результат применения фильтра Canny

1.1.7 Методы теории графов

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

Общая идея методов этой группы следующая. Изображение представляется в виде взвешенного графа, с вершинами в точках изображения. Вес ребра графа отражает сходство точек в некотором смысле (расстояние между точками по некоторой метрике). Разбиение изображения моделируется разрезами графа (рисунок 1.3) [5].

Рисунки 1.3 - Пример моделирования изображения взвешенным графом.

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

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

Метод сегментации SWA (Segmentation by Weighted Aggregation) основан на группировании схожих точек изображения. Основная идея метода состоит в построении пирамиды взвешенных графов, каждый из которых получен из предыдущего путем объединения схожих вершин [3].

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

Рисунок 1.4 - Построение пирамиды взвешенных графов для изображения

В модификации алгоритма на каждом следующем шаге анализируется и корректируется результат предыдущего агрегирования, а также используется информация о границах полученных сегментов (рисунок 1.5) [5].

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

 

Рисунок 1.5 - Сравнение результатов работы алгоритма SWA, его модификации и Normalized cuts

Допустим, на определенном шаге алгоритма попалось ребро, соединяющее два соседних пикселя: на одном конце ребра пиксель «оранжевый», а на другом «красный». Длину ребра определим как «разницу цвета» между пикселями. Все ребра меньшей длины (со схожим цветом) уже объединены: наверняка уже выделен оранжевый и красный сегмент попугайчика. Следуя алгоритму, нам нужно узнать, в одном ли сегменте лежат текущие «оранжевый» и «красный» пиксель? Если в разных сегментах, и мы считаем, что сегменты по цвету схожи, то объединяем их в один и продолжаем построение…

Используемая для этих операций структура - очень похожа на дерево (хотя и реализуется массивом индексов). В ней для каждого пикселя указан предок, т.е. указатель (индекс) на некоторый схожий по цвету пиксель, находящийся в том же самом сегменте. Основные операции:

Поиск сегмента некоторого пикселя 'x': идем по предкам до самого верха. Самый верхний пиксель - это корень дерева, «представитель» данного сегмента на текущий момент.

Объединение сегментов. Если у пикселей разные «представители» - значит, они принадлежат различным сегментам, иначе корень был бы один. Для их объединения «представителя» сегмента меньшей высоты (от самого далекого пикселя до корня) ссылаем (из него указываем) на более длинного «представителя», чтобы не увеличивать высоту дерева. Теперь имеем объединенный сегмент с общим представителем (рисунок 1.6).

Для того чтобы в следующий раз не бегать далеко от пикселя к корню, после того, как «представитель» будет успешно обнаружен, устанавливаем прямую ссылку из пикселя - сразу на него. Это сокращает путь следующих поисков, и называется "path compression".

Теперь мы можем эффективно искать сегменты по пикселям и объединять их, а так же выстраивать MST (Minimum Spanning Tree - минимальное остовное дерево данного графа) по алгоритму Краскала [3] (рисунок 1.6). Решение о том, соединять области или нет, принимается на основании введённых пользователем коэффициентов.

Рисунок 1.6 - Алгоритм Краскала.


1.1.8 Колоризация изображения нейронной сетью

Колоризация - любой процесс, в ходе которого в монохромное (чёрно-белое или тонированное, например, в сепию) изображение или последовательность изображений добавляется цвет [6].

Цвет - качественная субъективная характеристика электромагнитного излучения оптического диапазона, определяемая на основании возникающего физиологического зрительного ощущения и зависящая от ряда физических, физиологических и психологических факторов. С точки зрения обработки изображения цвет - составная (например, состоящая из каналов RGB) характеристика каждого пикселя изображения [1].

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

Многослойный персептрон - частный случай персептрона Розенблатта [1], в котором один алгоритм обратного распространения ошибки обучает все слои. Особенностью является наличие более чем одного обучаемого слоя (как правило - два или три, для применения большего числа на данный момент нет обоснования, так как теряется скорость без приобретения качества). Необходимость в большом количестве обучаемых слоев отпадает, так как теоретически единственного скрытого слоя достаточно, чтобы перекодировать входное представление таким образом, чтобы получить линейную карту для выходного представления. Существует предположение, что, используя большее число слоев, можно уменьшить число элементов в них, то есть суммарное число элементов в слоях будет меньше, чем если использовать один скрытый слой [3].

Изображение - с точки зрения его обработки это область, распределенная по пространственным координатам x, y и по длинам волн l описывается функцией с(x, y, l). Эта функция является неотрицательной; ее максимальное значение в изображающих системах ограничено предельной величиной светочувствительности регистрирующих сред, 0 < с(x, y, l) < A, где A - максимальная яркость изображения [1].

Структура нейронной сети, выполненной в виде многослойного персептрона, представлена на рисунке 1.7.

На вход нейронной сети подается яркость каждого пикселя монотонного участка (в данном случае имеется в виду участок изображения, с возможной функциональной зависимостью цвета пикселя изображения от его яркости, без резких перепадов) полутонового изображения, на выходе получаем три составляющие цвета: R (красный), G (зеленый), B (синий). На рисунке 1.8 представление куб RGB.

Рисунок 1.7 - Структура нейронной сети

Рисунок 1.8 - Куб RGB

Как видно из рисунка 1.8, любой цвет можно представить с помощью 3х составляющих: R (красный), G (зеленый), B (синий). Достаточным для представления цветного изображения является куб, в котором значение каждой составляющей изменяется от 0 до 255. Диагональ куба изменяется от белого до черного, то есть с помощью нее можно функционально представить яркость полутонового изображения, а так как яркость является диагональю, то значение каждой из составляющих R (красный), G (зеленый), B (синий) для полутонового изображения будет одинаковым и любую из составляющих можно использовать как функцию яркости изображения. Будем использовать составляющую R(красный), которая так же изменяется от 0 до 255.

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

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

)        Функция Гаусса:

,(1.3)

где  - дисперсия.

2)      Линейная функция:

,(1.4)

где k - тангенс угла наклона функции.

3)      Сигмоидальная функция:

,(1.5)

где k - параметр функции, определяющий ее кривизну.

4)      Ступенчатая функция:

,(1.6)

где a - верхняя граница ступенчатой функции,

b - нижняя граница ступенчатой функции.

5)      Тангенциальная функция:

,(1.7)

где k - параметр функции, определяющий ее кривизну

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

Обучение нейронной сети может осуществляться c помощью нескольких алгоритмов:

1)      LMS (Least Mean Square) - метод минимизации среднеквадратичной ошибки. Наиболее простой в реализации алгоритм. Алгоритм является оптимальным согласно минимаксному критерию [8]. Средний квадрат ошибки (MSE) вычисляется по формуле 1.8:

,(1.8)

где R - значение на выходе персептрона,

N - размер выборки, Cj - ожидаемое значение.

Далее производится изменение весов персептрона с целью уменьшить среднеквадратичную ошибку (формула 1.9):

.(1.9)

2)      Sigmoid Delta Rule (Дельта-правило) - метод обучения персептрона по принципу градиентного спуска по поверхности ошибки. Дельта-правило развилось из первого и второго правил Хебба [1]. Его дальнейшее развитие привело к созданию метода обратного распространения ошибки [8].

Алгоритм обучения персептрона следующий:

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

.        Подать входной образ Х и вычислить выходное значение. Если выходное значение правильное, то переходят к шагу 4. Иначе к шагу 3.

.        Применяя дельта-правило (см. ниже) вычислить новые значения весов.

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

Т.о. логика обучения персептрона следующая: если сигнал персептрона при некотором образе верен, то ничего корректировать не надо, если нет - производится корректировка весов. Дельта-правило является математической моделью правил корректировки весов. Введем величину d, которая равна разности между требуемым d и реальным выходом y (формула 1.10):

.(1.10)

Тогда, веса персептрона после коррекции будут равны (формула 1.11):

,(1.11)

где i - номер текущей итерации обучения,

h - коэффициент скорости обучения, позволяет управлять средней величиной изменения весов,

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

3)      Back Propagation (алгоритм обратного распространения ошибки) - дальнейшее развитие алгоритма дельта-правила. Основная идея этого метода состоит в распространении сигналов ошибки от выходов сети к её входам, в направлении, обратном прямому распространению сигналов в обычном режиме работы. Барцев и Охонин предложили сразу общий метод («принцип двойственности»), применимый к более широкому классу систем, включая системы с запаздыванием, распределённые системы, и т.п. [8]. При обучении ставится задача минимизации целевой функции, формируемой, как правило, в виде квадратичной суммы разностей между фактическими и ожидаемыми значениями выходных сигналов, которая для P обучающих выборок определяется по формуле 1.12:

,(1.12)

где w - значение веса нейрона,

P - количество обучающих выборок,

M - число нейронов,

yi - значение, полученное в результате вычисления сетью,

di - ожидаемое значение.

Корректирующий коэффициент веса нейрона вычисляется аналогично по формуле 1.10.

1)      Momentum Back propagation - алгоритм обратного распространения ошибки с использованием момента. В нашем случае это коэффициент, который используется при пересчете значения изменения веса. Правильный подбор параметра позволяет увеличить скорость обучения, однако слишком большое значение момента будет причиной того, что ошибка не будет уменьшаться из-за «проскакивания» нужного значения. Целевая функция вычисляется по формуле 1.12. Корректирующий коэффициент вычисляется по формуле 1.13:

,(1.13)

где i - номер текущей итерации обучения,

h - коэффициент скорости обучения, позволяет управлять средней величиной изменения весов,

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

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

2)      Dynamic Back Propagation - алгоритм обратного распространения ошибки с использованием момента и динамического значения коэффициента обучения. В случае использования этого алгоритма коэффициент обучения будет изменяться в зависимости от полученной ошибки обучения пропорционально величине ошибки. Пользователь задает верхнюю и нижнюю границу коэффициента обучения. Целевая функция рассчитывается по формуле 1.12. Корректирующий коэффициент вычисляется аналогично предыдущему алгоритму, но значение h в формуле 1.10 уже будет вычисляться по формуле:

,(1.14)

где h - коэффициент скорости обучения, позволяет управлять средней величиной изменения весов,

- коэффициент сглаживания изменения параметра h,

- ошибка на прошлом шаге,

 - ошибка на текущем шаге.

Для вычисления ошибки колоризации во время обучения сети для всех алгоритмов используется формула среднего квадратичного отклонения (1.15):

,(1.15)

где n - объём выборки,

xi - вычисленное значение,

- ожидаемое значение [8].

полутоновый цветной кластеризация изображение

1.1.9 Аналитический обзор аналогов

Колоризация черно-белых изображений - довольно нетривиальная задача. На сегодняшний день разработано не так много приложений для автоматизированной реализации подобных действий. Зачастую колоризация осуществляется вручную - для каждого участка изображения меняется функция яркости в соответствии с необходимым цветом. Это довольно трудоемкое занятие, требующее много времени. Именно поэтому в современных рыночных условиях колоризация черно-белых изображений обладает высокой стоимостью, но пользуется большой популярностью. Так, 2009 год стал годом раскрашивания старых черно-белых фильмов. Первыми были «Семнадцать мгновений весны», потом «В бой идут одни старики», дальше «Золушка», «Весёлые ребята», «Волга-Волга». И на этом никто не собирается останавливаться, в планах ещё очень много раскрашенных фильмов. При этом стоимость колоризации первого фильма составила порядка миллиона долларов, и были потрачено многие месяцы работы целой компании (более 600 человек). В настоящее время стоимость колоризации одной минуты черно-белого фильма составляет порядка 3-5 тысяч долларов [1].

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

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

Таблица 1.1 Сравнительный обзор приложений-аналогов

Характеристика

Adobe Photoshop + сервисwww.colorhunter.com <#"564417.files/image033.gif">

Рисунок 1.9 - Диаграмма вариантов использования

На диаграмме вариантов использования АС колоризации полутонового изображения были предложены следующие акторы:

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

Также на диаграмме предложены следующие варианты использования системы:

-       работа с изображением;

-       работа с сетью.

.3.2 Диаграмма классов

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

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

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

Кроме внутреннего устройства или структуры классов, на соответствующей диаграмме указываются различные отношения между классами. Базовыми отношениями или связями в языке UML являются:

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

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

Отношение обобщения - отношение между более общим элементом (родителем или предком) и более частным и специальным элементом (дочерним или потомком) [9].

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

Диаграмма сущностных классов

На рисунке 1.10 изображена диаграмма сущностных классов структуры нейросети. Класс «Нейронная сеть» представляет собой нейронную сеть, состоящую из слоев (класс «Слой»), которые в свою очередь состоят из нейронов (класс «Нейрон»). Нейроны соединяются между собой связями (класс «Связь»), которые имеют в качестве характеристики определенный вес (класс «Вес»).

Рисунок 1.10 - Диаграмма сущностных классов структуры нейросети

Диаграмма граничных классов

Граничные классы представляют собой оконные формы, с которыми взаимодействует пользователь. Диаграмма граничных классов представлена на рисунке 1.11.

Рисунок 1.11 - Диаграмма граничных классов В данном случае это классы, описывающие пользовательский интерфейс:

Главная форма - позволяет пользователю перейти к редактированию параметров сетей либо сразу приступить к сегментированию и колоризации изображения;

-       Форма работы с нейронными сетями - позволяет создать, редактировать и удалять нейронные сети;

-       Форма обучения сети - позволяет обучать нейронную сеть;

-       Форма задания параметров сегментации изображения - с помощью этой формы задаются параметры сегментирования изображения;

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

-       Форма работы с изображением - позволяет производить сегментацию изображения вручную;

-       Форма помощи - отображает справку.

Диаграмма управляющих классов

Управляющие классы системы используются для предоставления системного интерфейса управления работой с изображением и нейронными сетями (рисунок 1.12).

Рисунок 1.12 - Диаграмма управляющих классов

Класс «Работа с изображением» предоставляет интерфейс для работы с файлами изображений и возможность сегментировать изображение по заданным параметрам сегментирования. Класс «Работа с нейронными сетями» предоставляет интерфейс для работы с файлами и списками нейронных сетей.

Класс «Правило обучения» используется для выполнения обучения нейронных сетей согласно заданным параметрам обучения. Классы «Обучающая выборка» и «Элемент обучения» используются как универсальные интерфейсы при работе с обучающими выборками.

1.3.3 Диаграмма состояний

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

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

Диаграмма состояний по существу является графом специального вида, который представляет некоторый автомат. Понятие автомата в контексте UML обладает довольно специфической семантикой, основанной на теории автоматов. Вершинами этого графа являются состояния и некоторые другие типы элементов автомата (псевдосостояния), которые изображаются соответствующими графическими символами [9].

На рисунке 1.13 представлена «Общая» диаграмма состояний.

Рисунок 1.13 - Общая диаграмма состояний

Дуги графа служат для обозначения переходов из состояния в состояние. Диаграммы состояний могут быть вложены друг в друга, образуя вложенные диаграммы более детального представления отдельных элементов модели [9].

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

Рисунок 1.14 - Диаграмма состояний «Работа приложения»

1.3.4 Диаграмма последовательности и кооперации

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

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

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

Во-вторых, можно рассматривать структурные особенности взаимодействия объектов. Для представления структурных особенностей передачи и приема сообщений между объектами используется диаграмма кооперации [8].

На рисунке 1.15 изображена диаграмма последовательности действий системы при выполнении процесса сегментирования изображения.

Рисунок 1.15 - Диаграмма последовательности для варианта «Сегментировать изображение»

На рисунке 1.16 изображена диаграмма кооперации для варианта использования «Колоризация изображения». Из рисунка видна последовательность действий системы и пользователя в ходе выполнения колоризации изображения.

Рисунок 1.16 - Диаграмма кооперации для варианта «Колоризация изображения»

1.3.5 Диаграмма компонентов

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

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

-       Визуализации общей структуры исходного кода программной системы.

-       Спецификации исполняемого варианта программной системы.

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

-       Представления концептуальной и физической схем баз данных [3].

Диаграмма компонентов клиентской и серверной частей представлена на рисунке 1.17:

Рисунок 1.17 - Диаграмма компонентов

JDK 1.6 java.exe - JVM (Java Virtual Machine): основной модуль для работы java-приложений;

-       swing.jar - библиотека для отображения компонентов пользовательского интерфейса;

-       io.jar - библиотека для ввода/вывода данных из/в файла.

-       Модуль представления - компонент, работающий с объектами пользовательского интерфейса;

-       Модуль работы с изображениями - компонент, служащий для обработки операций работы с изображениями;

-       Модуль работы с нейросетями - компонент, служащий для выполнения операций при работе с нейронными сетями.

.3.6 Диаграмма развертывания

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

Диаграмма развертывания содержит графические изображения процессоров, устройств, процессов и связей между ними. В отличие от диаграмм логического представления, диаграмма развертывания является единой для системы в целом, поскольку должна всецело отражать особенности ее реализации. Эта диаграмма, по сути, завершает процесс ООАП (Объектно-ориентированный анализ и проектирование) для конкретной программной системы и ее разработка, как правило, является последним этапом спецификации модели.

Рисунок 1.18 - Диаграмма развертывания

Цели, преследуемые при разработке диаграммы развертывания:

-       Определить распределение компонентов системы по ее физическим узлам.

-       Показать физические связи между всеми узлами реализации системы на этапе ее исполнения.

-       Выявить узкие места системы и реконфигурировать ее топологию для достижения требуемой производительности [8].

На рисунке 1.18 предоставлена диаграмма развертывания системы. Каждая рабочая станция содержит все приложение целиком. Общим у всех станций является сервер базы данных.

1.3.7 Диаграмма деятельности

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

Рисунок 1.19 - Диаграмма деятельности обучения нейросети

На рисунке 1.19 изображена диаграмма деятельности обучения нейросети на основе эталонного изображения.

1.4 Оценка системных и эксплуатационных характеристик

.4.1 Расчет объема ВЗУ

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

На жестком диске:

-       WindowsXP - 750 Мб.

-       Исполняемый файл программы colorizer.jar - 3 Мб.

-       Подгружаемые библиотеки .jar - 15 Мб.

-       Папка с рисунками - 8 Мб.

Со временем количество используемых сетей накапливается. Но следует учитывать, что система рассчитана на использование готовых обученных сетей. То есть чем больше накапливается в системе готовых решений, тем меньше будет создаваться новых нейронных сетей. Каждая сеть занимает примерно 4Кб на жестком диске. Изначально создается 8-9 нейронных сетей в день. Со временем требование к созданию новых сетей, учитывая использование старых отпадает, и будет создаваться 1-3 нейронные сети в день. Учитывая среднее число за 5 лет использования программы, будет создано максимум 1000 нейронных сетей.

Расчёт объёма жёсткого диска ведётся по формуле 1.16:

Vжд = Voc + Vд + [Vсоп.прог.].(1.16)

Vжд = 750 Mб + 3 Мб +8 Мб + 15 Мб =786 Мб

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

1.4.2 Расчет объема ОЗУ

Расчёт объёма ОЗУ ведётся по формуле 1.17:

Vозу = Voc + Vпс + Vд + [Vсоп.прог.].(1.17)

Vозу = 300 Mб + 4,5 Мб + 512 Мб = 816,5 Мб

Расчет необходимого объема ОЗУ производится по формуле (1.18) .

,(1.18)

где  - объем оперативной памяти, необходимой операционной системе;

 - объем оперативной памяти, необходимый программе.

=812 Мб;

=5,79 Мб;

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

,(1.19)

где  - объем оперативной памяти, необходимой для хранения выборки;  - объем оперативной памяти, необходимый для хранения структуры нейронной сети.

В любой момент работы программы используется не более одной обучающей выборки (одной тестирующей выборки), и одной нейронной сети. Максимальный объем обучающей выборки - 480000 пикселей.

Мб = 200Кб;

При расчете объема оперативной памяти, занимаемого нейронной сетью, будем считать, что максимальное число входов равно 1 (для функции яркости), число нейронов промежуточного слоя 50, выходного слоя 3 (формула 1.20).

.(1.20)

Мб=3,704 Кб.

= 2,8Кб + 3,704Кб=6,504Кб.

Тогда из (1.12) следует, что минимальный объем оперативной памяти, необходимый для функционирования системы равен:

VОП=812 Мб + 5,79 Мб + 6,804Кб=819 Мб.

.4.3 Расчет времени реакции системы

Время реакции системы рассчитывается по формуле (1.21).

tреакции=tввода+ tвычисления+ tвывода,(1.21)

где tввода - время ввода параметров сети и алгоритма обучения;

tвычисления - время вычислений, связанных с обучением сети;

tвывода - время вывода результатов на экран.

Время ввода параметров вычисляется по формуле (1.22).

tввода=Lсимв∙ tсимв,(1.22)

где Lсимв - количество символов в запросе;

tсимв - время ввода одного символа, обычно tсимв=1,5 с

Время вычислений, т.е. процесса обучения рассчитывается по формуле (1.23).

,(1.23)

где Nопер - количество операторов,

kмк - среднее количество машинных команд, затрачиваемых на реализацию одного оператора,

f- тактовая частота процессора в герцах.

Время вывода результатов на экран tвывода обычно составляет 0,5с.

Рассчитаем время реакции системы для случая обучения сети. Размерность входного вектора 100, число нейронов 7, число итераций обучения нейрона на всем задачнике 50, на одном примере - 1.

Время ввода параметров tввода=Lсимв∙ tсимв=16·1,5 с = 24 с.

Количество операторов для формирования обучающей выборки 4255. Количество операторов для обучения одного «нейрона» 149782. Следовательно, общее количество операторов Nопер= 4255 + 449346 = 453601. Принимая среднее количество машинных команд, затрачиваемых на выполнение одного оператора равным kмк=60, частоту процессора в герцах равной f=1,4∙109, получим, согласно (1.18), tвычисления=с.

Тогда по (1.21) tреакции= 24 с + 19,44·10-3 с + 0,5 с = 25 с, что соответствует нормам времени для диалогового режима (до 30 с). В данном случае при расчете времени реакции учитывалось время ввода всех параметров. При инициализации системы уже введены оптимальные параметры, поэтому время реакции системы может быть сокращено до 0,5 с.

1.4.4 Минимальные требования к системе

На основе выполненных расчётов занимаемой памяти и исходя из основного назначения программы, сделаем вывод о рекомендуемой конфигурации комплекса технических средств:

-       программное обеспечение, необходимое для функционирования программы: ОС MSWindows 98 или более новые версии;

-       тип компьютера и устройств, используемых при работе программы: процессор AMDAthlon, INTELPentium-IV, Celeron, тактовая частота процессора 1,4 ГГц и выше;

-       IBM - совместимый компьютер;

-       объем оперативной памяти не менее 1 Гб;

-       жесткий диск не менее 1 Гб

-       монитор с разрешением 800x600;

-       видеокарта 512Mб с поддержкой 256 цветов;

-       манипулятор мышь.

2. КОНСТРУКТОРСКО-ТЕХНОЛОГИЧЕСКАЯ ЧАСТЬ

.1 Выбор и обоснование средств реализации

.1.1 Выбор языка программирования

Автоматизирования система колоризации монотонных полутоновых изображений реализована с помощью языка Java 1.6.- объектно-ориентированный язык программирования, разработанный компанией Sun Microsystems. Приложения Java обычно компилируются в специальный байт-код, поэтому они могут работать на любой виртуальной Java-машине (JVM) независимо от компьютерной архитектуры [12]. Достоинство подобного способа выполнения систем - в полной независимости байт-кода от операционной системы и оборудования, что позволяет выполнять Java-приложения на любом устройстве, для которого существует соответствующая виртуальная машина. Другой важной особенностью технологии Java является гибкая система безопасности благодаря тому, что исполнение системы полностью контролируется виртуальной машиной. Любые операции, которые превышают установленные полномочия программы (например, попытка несанкционированного доступа к данным или соединения с другим компьютером) вызывают немедленное прерывание.

Кроме кроссплатформенности, Java имеет еще одно несомненное достоинство: ориентация на объектно-ориентированный подход программирования. Это позволяет наиболее быстро, эффективно и качественно осуществить разработку системы, а также ее дальнейшую поддержку [12].

Поэтому Java была выбрана в качестве языка для реализации автоматизированной системы.

2.1.2 Выбор среды программирования

Реализация автоматизированной системы осуществляется в среде IntelliJ Idea 10.IDEA - интеллектуальная интегрированная среда разработки Java, сосредоточенная на производительности разработчика, которая обеспечивает устойчивую комбинацию расширенных инструментальных средств. Расширенная проектная навигация структуры кода упрощает анализ даже больших файлов, обеспечивая удобный способ их просмотра. Поиск распознает элементы языков, показывая результаты в интерактивной навигационной панели, помогая проанализировать все найденные файлы [1].

Первая версия IntelliJ Idea появилась в январе 2001 года и быстро приобрела популярность, как первая Java IDE с широким набором интегрированных инструментов для рефакторинга, которые позволяли программистам быстро реорганизовывать исходные тексты программ [1]. Дизайн среды ориентирован на продуктивность работы программистов, позволяя им сконцентрироваться на разработке функциональности, в то время как IntelliJ Idea берет на себя выполнение рутинных операций.

Начиная с шестой версии продукта, IntelliJ Idea предоставляет интегрированный инструментарий для разработки графического пользовательского интерфейса.

Начиная с версии 9.0, IntelliJ Idea доступна в двух версиях: Community Edition и Ultimate Edition. Community Edition является полностью open-source версией, доступной под лицензией Apache 2.0. В ней реализована полная поддержка JavaSE, Groovy, Scala, а также интеграция с наиболее популярными системами управления версиями. В версии Ultimate Edition реализована поддержка JavaEE, UML-диаграмм, подсчет покрытия кода, а также поддержка других систем управления версиями, языков и Фреймворков.

Таким образом, возможности данной среды программирования полностью соответствуют требованиям при разработке автоматизированной системы (поддерживает язык Java, имеет полный набор инструментов для создания интерфейса, написания и отладки кода).

2.1.3 Выбор операционной среды

В качестве языка программирования был выбран язык Java (п. 2.2.1), который является кроссплатформенным. Таким образом, полученный исполняемый файл .jar может быть запущен в любой операционной системе. Единственным требованием является наличие установленной Java Machine (JVM).

Разработка и отладка автоматизированной системы осуществляется в MS Windows 7, т.к. это одна из самых распространенных и удобных операционных систем, и на нее можно поставить JVM.

2.1.4 Описание программной реализации

Автоматизированная система колоризации монотонного полутонового изображения нейронной сетью включает в себя несколько подсистем (рисунок 2.1):

-       подсистему обучения нейронной сети;

-       подсистему сегментации изображения;

-       подсистему колоризации изображения нейронной сетью;

-       подсистему отображения интерфейса.

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

В подсистеме работы с нейронной сетью используется API класс NeuralNetworkHelper.java.

Рисунок 2.1 - Структура автоматизированной системы

В подсистеме колоризации изображения нейронной сетью используется класс NetworkWorker.java и ImageHelper.java

В подсистеме сегментации изображения используется класс ImageProxy.java и SegmentationEngine.java.

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

Для каждого элемента входных данных используется универсальная структура работы с данными (Приложение Б). Данная структура состоит из нескольких составляющих: TrainingElement, TrainingSet и TrainingData. TrainingElement - хранит значение выборки. Использование внешнего интерфейса org.encog.engine.data.EngineData означает возможность получения и передачи данных в другие программы, поддерживающие этот интерфейс, что обеспечивает расширяемость АС. А интерфейс java.io.Serializable обеспечивает возможность хранения и получения выборок из файлов.

Массив элементов агрегируется в классе TrainingSet, который в свою очередь так же поддерживает интерфейс java.io.Serializable и внешний интерфейс для работы с массивом выборок org.encog.engine.data.EngineIndexableSet.

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

Все выборки буферизуются, чтобы не загружать их каждый раз из файла. Изображения состоят из достаточного большого числа пикселей (для изображения 640x480 это 307 200), каждый из которых разделяется на 3 канала, прежде чем попадает на обучение. Буферизация позволяет значительно ускорить процесс работы с файлом и повысить быстродействие программы.

Нормализация выборок производится до буферизации, чтобы при каждом обращении к выборке данные в выборке содержали значения, которые не требуют пересчета. Как было описано ранее, нормализация производится простым делением на 255, так как все значения содержат значения от 0 до 255.

2.3 Разработка алгоритмов системы

.3.1Алгоритм сегментации изображения

Алгоритм сегментации изображения позволяет выделить на изображении участки с монотонным изменением функции яркости изображения. Схема алгоритма приведена на рисунке 2.2.

Рисунок 2.2 - Схема алгоритма сегментации изображения

Вначале изображение разделяется на 3 изображения, по каналам RGB соответственно. В случае использования функции Гаусса для каждого из изображений производится размытие, для чего необходимо выполнить расчет маски для размытия изображения согласно введенному параметру σ (коэффициент размытия по Гауссу). Каждая дуга рассчитываемого графа хранит вес, равный сумме квадратов разностей значений каждого из каналов RGB вершин графа (соседних точек изображения). Для объединения вершин графа по введённому разрешающему критерию используется специальная структура DisjointSet, описанная в первом разделе, код структуры приведен в приложении Б. Данная структура позволяет произвести расчет графа минимальной стоимости (решение задачи Штейнера). Далее приводится описание поиска графа минимальной стоимости. После того, как задача решена, выдаем изображение-результат, раскрашенное в случайные цвета областей, построенных по полученному графу.

2.3.2Алгоритм обратного распространения ошибки

Алгоритм обратного распространения ошибки используется для обучения нейронной сети. Описание работы алгоритма и формулы расчета представлены в пункте 1.1.8 дипломного проектирования. Схема алгоритма приведена на рисунке 2.3 для сети с числом нейронов в скрытом слое равным М.

Рисунок 2.3 - Схема алгоритма обратного распространения ошибки

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

-       достигнуто значение допустимой ошибки обучения;

-       выполнено максимально допустимое число итераций.

Вычисление ошибки производится на каждом шаге по формуле расчета СКО 1.15. Пересчет весов осуществляется по формуле 1.10, 1.13 или 1.14, в зависимости от выбранной модификации алгоритма обратного распространения ошибки.

2.4 Описание контрольного примера

Запускаем программу с помощью файла start.bat. На экране появляется главная форма приложения (рисунок 2.4).

Рисунок 2.4 - Главная форма приложения

На главной форме приложения нажимаем «Изображение» и выбираем файл изображения. В нашем случае мы выбрали изображение сёрфингиста на воде. Теперь для выбранного изображения необходимо задать параметры сегментирования. В качестве параметров выбирается функция сегментирования (Гаусса или Лапласа) и параметры сегментирования (минимальный размер сегмента и порог различия между соседними пикселями изображения.). В случае, если выбрана функция Гаусса то также необходимо ввести коэффициент размытия по Гауссу (рисунок 2.5).

После задания параметров нажимаем кнопку «Сегментировать».

Рисунок 2.5 - Выбор параметров сегментирования

После сегментирования появляется окно с выделенными монотонными участками изображения согласно заданным параметрам на исходном полутоновом изображении. Чтобы отдельно посмотреть выделенные области можно снять галочку «Показывать на начальном изображении». В правой части окна расположен список областей. Каждый элемент списка выделен в цвет соответствующей ему области. Название элемента списка соответствует выбранной для него нейронной сети. По умолчания для каждого элемента списка выбирается первая из списка сеть. Список сетей расположен под списком областей. Для задания областе изображения нейронной сети нужно выделить ее в списке, выбрать нейронную сеть и нажать кнопку «Задать». Для редактирования полученного варианта сегментирования можно нажать кнопку «Сегментировать вручную» (рисунок 2.6).

Рисунок 2.6 - Сегментированное изображение

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

Рисунок 2.7 - Ручное сегментирование

После ручного редактирования нажимаем «Выполнить» и возвращаемся на предыдущую форму. Теперь, как видим на рисунке 2.8, у нас осталось всего 5 областей. Зададим для них нужные нейронные сети и нажмем «Выполнить».

Рисунок 2.8 - Задание нейронных сетей сегментам

После чего получаем результат, как на рисунке 2.9.

Рисунок 2.9 - Результат колоризации

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

Рисунок 2.10 - Исходное изображение

Полное руководство пользователя при работе с АС колоризации полутоновых изображений приведено в приложении А.

.5 Разработка методики испытания

Объектом испытания является автоматизированная система «Колоризация полутоновых изображений».

Целью испытания является проверка работоспособности системы.

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

Действия:

)        запустить start.bat.

Результат:

)        на экране появится главное окно приложения.

.        Проверка создания нейросети.

Действие:

)        запустить start.bat;

)        перейти в меню работы с нейронными сетями;

)        задать параметры сети;

)        нажать кнопку «Создать».

Результат:

)        в списке сетей появится новая нейросеть.

.        Проверка колоризации изображения.

Действие:

)        запустить start.bat;

)        выбрать пункт меню «Изображение»;

)        выбрать изображение;

)        задать параметры сегментирования;

)        нажать кнопку «Сегментировать»;

)        задать соответствие сегментам нейросетей;

)        нажать кнопку «Колоризация».

Результат:

)        изображение должно колоризоваться.

.6 Анализ полученных результатов

Для определения оптимальных параметров нейронной сети построим сравнительную таблицу введенных параметров сети и полученной погрешности. Погрешность рассчитывается как СКО между цветом каждого канала изображения-оригинала и полученного в результате колоризации изображения. Исследование проводилось на одном и том же изображении с одними и теми же условиями: в таблице приведён самый худший результат из 29 испытаний.

Таблица 2.1 Таблица исследуемых параметров

Функция активации

Параметры функции активации

Алгоритм обучения

Параметры алгоритма обучения

Значение погрешности

1

2

3

4

5

Линейная

10 нейронов, k = 1

Обратного распространения ошибки

h = 0,01

0,00139




h = 0,02

0,00102




h = 0,04

0,00262

1

2

3

4

5



Обратного распространения ошибки с моментом

h = 0,02 mom = 0,04

0,00095




h = 0,02 mom = 0,02

0,00094




h = 0,02 mom = 0,6

0,00091



Обратного распространения ошибки с динамическим шагом

h от 0,01 до 0,06 mom = 0,04

0,00095




h от 0,015 до 0,025 mom = 0,15

0,00091




h от 0,015 до 0,025 mom = 0,15

0,00157



LMS

h = 0,1

0,00125




h =0,5

0,00099




h = 0,65

0,00121



Дельта-правило

h = 0,1

0,00151




h = 0,3

0,00093




h = 0,5

0,00088


15 нейронов в скрытом слое, k = 1

Обратного распространения ошибки

h = 0,01

0,00175




h = 0,02

0,00099




h = 0,04

0,00195



Обратного распространения ошибки с моментом

h = 0,02 mom = 0,04

0,00086




h = 0,02 mom = 0,02

0,00087




h = 0,02 mom = 0,6

0,00088



Обратного распространения ошибки с динамическим шагом

h от 0,01 до 0,06 mom = 0,04

0,00086

1

2

3

4

5




h от 0,015 до 0,025 mom = 0,15

0,00086




h от 0,015 до 0,025 mom = 0,15

0,00086



LMS

h = 0,1

0,00117




h = 0,3

0,00097




h = 0,5

0,00094



Дельта-правило

h = 0,1

0,00111




h = 0,3

0,00093




h = 0,5

0,00095

Ступенчатая

10 нейронов, k = 1

Обратного распространения ошибки

h = 0,01

0,00239




h = 0,02

0,00223




h = 0,04

0,00401



Обратного распространения ошибки с моментом

h = 0,02 mom = 0,04

0,00169




h = 0,02 mom = 0,02

0,00169




h = 0,02 mom = 0,6

0,00171



Обратного распространения ошибки с динамическим шагом

h от 0,01 до 0,06 mom = 0,04

0,00177




h от 0,015 до 0,025 mom = 0,15

0,00169




h от 0,015 до 0,025 mom = 0,15

0,00280



LMS

h = 0,1

0,00237




h = 0,5

0,00169




h = 0,65

0,00181

1

2

3

4

5



Дельта-правило

h = 0,1

0,00278




h = 0,3

0,00191




h = 0,5

0,00198


15 нейронов в скрытом слое k = 1

Обратного распространения ошибки

h = 0,01

0,00211




h = 0,02

0,00192




h = 0,04

0,00345



Обратного распространения ошибки с моментом

h = 0,02 mom = 0,04

0,00101




h = 0,02 mom = 0,02

0,00111




h = 0,02 mom = 0,6

0,00121



Обратного распространения ошибки с динамическим шагом

h от 0,01 до 0,06 mom = 0,04

0,00155




h от 0,015 до 0,025 mom = 0,15

0,00145




h от 0,015 до 0,025 mom = 0,15

0,00191



LMS

h = 0,1

0,00191




h = 0,5

0,00152




h = 0,65

0,00155



Дельта-правило

h = 0,1

0,00212




h = 0,3

0,00139




h = 0,5

0,00171

Сигмоидальная

10 нейронов в скрытом слое, k = 1

Обратного распространения ошибки

h = 0,01

0,00292




h = 0,15

0,00183




h = 0,5

0,00150



Обратного распространения ошибки с моментом

h = 0,5 mom = 0,5

0,00183




h = 0,6 mom = 0,3

0,00133

1

2

3

4

5




h = 0,25 mom = 0,25

0,00172



Обратного распространения ошибки с динамическим шагом

h от 0,01 до 0,5 mom = 0,15

0,00179




h от 0, 0,01 до 0,5 mom = 0,25

0,00182




h от 0,01 до 0,5 mom = 0,05

0,00178



LMS

h = 0,15

0,00228

0,00179




h = 0,55

0,00149



Дельта-правило

h = 0,15

0,00260




h = 0,35

0,00245




h = 0,65

0,00215


15 нейронов в скрытом слое k = 1

Обратного распространения ошибки

h = 0,01

0,00289




h = 0,15

0,00177




h = 0,5

0,00118



Обратного распространения ошибки с моментом

h = 0,02 mom = 0,04

0,00177




h = 0,02 mom = 0,02

0,00130




h = 0,02 mom = 0,6

0,00114



Обратного распространения ошибки с динамическим шагом

h от 0,01 до 0,06 mom = 0,04

0,00165




h от 0,015 до 0,025 mom = 0,15

0,00153

1

2

3

4

5




h от 0,015 до 0,025 mom = 0,15

0,00143



LMS

h = 0,1

0,00201




h = 0,5

0,00176




h = 0,65

0,00139



Дельта-правило

h = 0,1

0,00214




h = 0,3

0,00234




h = 0,5

0,00199

Тангенциальная

10 нейронов в скрытом слое k = 2

Обратного распространения ошибки

h = 0,01

0,00196




h = 0,15

0,00086




h = 0,12

0,00086



Обратного распространения ошибки с моментом

h = 0,13 mom = 0,02

0,00087




h = 0,12 mom = 0,14

0,00086




h = 0,05 mom = 0,05

0,00115



Обратного распространения ошибки с динамическим шагом

h от 0,04 до 0,15 mom = 0,05

0,00108




h от 0, 0,01 до 0,15 mom = 0,15

0,00109




h от 0,11 до 0,14 mom = 0,09

0,00086



LMS

h = 0,15

0,00151




h = 0,35

0,00095




h = 0,55

0,00091



Дельта-правило

h = 0,15

0,00169




h = 0,25

0,00152




h = 0,5

0,00107

1

2

3

4

5


15 нейронов в скрытом слое k = 2

Обратного распространения ошибки

h = 0,01

0,00192




h = 0,10

0,00086




h = 0,12

0,00085



Обратного распространения ошибки с моментом

h = 0,13 mom = 0,02

0,00086




h = 0,12 mom = 0,14

0,00087




h = 0,05 mom = 0,05

0,00112



Обратного распространения ошибки с динамическим шагом

h от 0,04 до 0,15 mom = 0,05

0,00103




h от 0, 0,01 до 0,15 mom = 0,15

0,00107




h от 0,11 до 0,14 mom = 0,09

0,00086



LMS

h = 0,15

0,00131




h = 0,35

0,00110




h = 0,55

0,00085



Дельта-правило

h = 0,15

0,00145




h = 0,35

0,00126




h = 0,5

0,00109

Функция гаусса

10 нейронов в скрытом слое σ = 0,5

Обратного распространения ошибки

h = 0,01

0,00155




h = 0,10

0,00086




h = 0,12

0,00100



Обратного распространения ошибки с моментом

h = 0,13 mom = 0,02

0,00149




h = 0,12 mom = 0,14

0,00089




h = 0,05 mom = 0,05

0,00104

1

2

3

4

5



Обратного распространения ошибки с динамическим шагом

h от 0,04 до 0,15 mom = 0,05

0,00149




h от 0, 0,01 до 0,10 mom = 0,15

0,00089




h от 0,11 до 0,14 mom = 0,09

0,00087



LMS

h = 0,01

0,00181




h = 0,02

0,00152




h = 0,04

0,00128



Дельта-правило

h = 0,05

0,00128




h = 0,12

0,00095




h = 0,15

0,00145


15 нейронов в скрытом слое σ = 0,5

Обратного распространения ошибки

h = 0,01

0,00152




h = 0,10

0,00087




h = 0,12

0,00099



Обратного распространения ошибки с моментом

h = 0,13 mom = 0,02

0,00143




h = 0,12 mom = 0,14

0,00088




h = 0,05 mom = 0,05

0,00102



Обратного распространения ошибки с динамическим шагом

h от 0,04 до 0,15 mom = 0,05

0,00115




h от 0, 0,01 до 0,10 mom = 0,15

0,00088

1

2

3

4

5




h от 0,11 до 0,14 mom = 0,09

0,00087



LMS

h = 0,01

0,00176




h = 0,02

0,00143




h = 0,04

0,00119



Дельта-правило

h = 0,05

0,00119




h = 0,12

0,00093




h = 0,15

0,00115


Вывод: Как видно из таблицы, наиболее удачный набор параметров для обучения нейронной сети следующий: Тангенциальная функция активации с параметром k=2 и числом нейронов в скрытом слое равным 15, алгоритмами обратного распространения ошибки и LMS. Этот вариант показал самую маленькую ошибку, равную 0,00086. Согласно примененному методу исследования [11], в 95% случаев полученная ошибка при данной комбинации параметров обучения будет меньше этого значения.

3. БЕЗОПАСНОСТЬ ЖИЗНЕДЕЯТЕЛЬНОСТИ

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

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

-       экономию времени, затрачиваемого пользователем на процесс сегментирования и колоризации изображения;

-       снижение трудоемкости рабочего процесса;

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

.1 Обеспечение безопасности на стадии функционирования АС

Внедряемая автоматизированная система: автоматизированная система колоризации полутонового изображения (АСКПИ).

Назначение системы: автоматизация процесса колоризации полутонового изображения.

Цели создания системы с точки зрения обеспечения безопасности:

.        снижение трудоемкости процесса сегментирования и колоризации полутонового изображения;

.        повышение скорости обработки и анализа информации при выполнении задачи колоризации изображения;

.        упрощение процесса исследования возможности колоризации монотонного полутонового изображения и процесса сегментирования изображения различными функциями.

К наиболее важным функциям АСКПИ, изложенным в пункте 1.2 дипломного проекта, относятся:

-       сегментация полутонового изображения;

-       колоризация полутонового изображения;

-       расчет погрешности преобразования изображения;

-       сохранение результатов колоризации изображения в файл.

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

Управление рисками обеспечивает снижение количества и последствий отрицательного воздействия рисков, а также:

.определение и классификацию рисков;

.количественную оценку вероятности;

.оценку последствий осуществления рисков и установление стратегии реакции на каждый из них;

.определение статуса рисков;

.принятие соответствующих мер при выходе риска за применимые пределы.

Для управления рисками в автоматизированной системе следует четко определить понятие риска. В широком смысле слова риск - это предполагаемое событие, способное принести кому-либо ущерб или убыток [9]. «Риск» обладает характерными свойствами:

-       Наличие анализа. Риск существует, только когда сформировано субъективное мнение «предполагающего» о ситуации и дана качественная или количественная оценка негативного события будущего периода (в противном случае это угроза или опасность). В процессе исследования предметной области были изучены аналогичные программные продукты (пункт 1.3 дипломного проекта), учтены их основные риски.

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

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

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

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

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

В начале процесса разработки АСКПИ была подробно изучена предметная область дипломного проекта (пункт 1.1 дипломного проекта) и составлено техническое задание в соответствии с ГОСТ 24.201-89 (требования к содержанию документа «Техническое задание»). Проектирование системы осуществлялось на основе общих требований, предъявляемых к автоматизированным системам в соответствии с ГОСТ 24.104-85 (автоматизированные системы управления) [13].

Для разработки АСКПИ были использованы следующие нормативные документы:

-       ГОСТ 34.602-89 («Комплекс стандартов на автоматизированные системы»);

-       ГОСТ ИСО/МЭК 15408-2002 («Информационная технология. Методы и средства обеспечения безопасности информационных технологий. Функциональные требования безопасности»);

-       ГОСТ Р 51904-2002 («Программное обеспечение встроенных систем. Общие требования к разработке и документированию»).

С целью выявления и предотвращения ситуаций риска система была протестирована. Порядок и способы тестирования описаны в нормативно-правовых документах: ГОСТ 34.603-92 и ГОСТ 28.195-89 [14]. В процессе дипломного проектирования выполнялось тестирование системы, и были предприняты меры по предотвращению ошибок, которые могли бы возникнуть в процессе работы с ней. Усилена защита от некорректных действий пользователя, контроль ввода данных, введены всплывающие подсказки и предупреждающие сообщения, которые упрощают диалог пользователя с системой и обеспечивают заданное качество выполнения функций системы.

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

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

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

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

Таким образом, к ситуациям риска в АСКПИ относятся:

.        несанкционированный доступ к данным;

.        системные сбои (возможна потеря данных);

.        неверные действия пользователя (нажатие кнопок в неподходящий момент, ввод некорректных данных);

.        и др.

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

Интерфейс АСКПИ описан в приложении А дипломного проекта. Тип интерфейса - диалоговый. Сделан контроль ввода (при выборе параметров, создании и изменении новых объектов сети). Функциональный аспект качества пользовательского интерфейса согласно ISO 9241-10-1996 определяется как степень соответствия поставленной задаче. Обеспечение практичности интерфейса было проведено в соответствии с ГОСТ Р ИСО/МЭК 9125-93 и постановкой задачи, рассмотренной в разделе 1.2 дипломного проекта.

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

Надежность определяется также соответствием функциональности основным характеристикам программы. Следует учитывать, что разрабатываемый программный продукт является автоматизированной системой, поэтому АСКПИ обладает основными признаками (свойствами) системы [1]:

.        Иерархичность. Элементы системы находятся в различных отношениях между собой и занимают определенное место в иерархической лестнице системы. В то же время сама система может быть подсистемой, (частью), входящей в состав системы более высокого порядка. Иерархичность систем обусловлена иерархичностью целей. У системы есть цель. А для достижения этой цели необходимо решить ряд более мелких подцелей, каждую из которых решает конкретная подсистема. Проектирование структуры модулей, пакетов, классов, взаимосвязанных сущностей системы осуществлено с использованием широко распространенной и удобной нотации UML (пункт 1.4 дипломного проекта).

.        Целостность. Система рассматривается как единое целое, состоящее из взаимодействующих частей. АСКПИ включает в себя несколько взаимосвязанных подсистем (подсистема сегментации изображения, подсистема обучения нейросети, подсистема колризации), работа которых в совокупности направлена на автоматизацию процесса колоризации полутонового изображения. Все подсистемы (модули) взаимодействуют между собой по определенной схеме (пункт 2.1 дипломного проекта), что обеспечивает гибкое взаимосвязанное управление данными и целостность системы в целом.

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

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

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

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

При внедрении АСКПИ следует учитывать, насколько сложно будет обучить сотрудников работать с данной системой. Это зависит от нескольких факторов.

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

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

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

АСКПИ функционирует автономно на локальной рабочей станции пользователя: не требуется дополнительных подключений к интернету, сети организации или серверу базы данных. Система функционирует в офисном помещении (предположительно учебные аудитории, кабинеты научных сотрудников). Согласно ГОСТ 12.1.005.-88 "Система стандартов безопасности труда. Общие санитарно-гигиенические требования к воздуху рабочей зоны". Работа такого рода, производимая сидя и сопровождающаяся незначительным физическим напряжением, относится к категории 1а [13].

Для оценки безопасности разработанной АСКПИ на стадии функционирования, проведем анализ напряженности рабочего процесса пользователя. Напряженность рабочего процесса оценивается в соответствие с руководством Р2.2.2006-05 «Руководство по гигиенической оценке факторов рабочей среды и трудового процесса. Критерии и классификация условий труда» [13].

3.2 Нагрузки интеллектуального характера

.2.1 Содержание работы

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

Одной из проблем старых изображений является отсутствие цвета на них. Ручная обработка изображений требует работы квалифицированных работников и большие затраты времени. Такой класс сложности выполняемой деятельности можно отнести к классу 3.1.

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

-       колоризация полутонового изображения;

-       обучение нейронных сетей на реальных изображениях;

-       сохранение результирующего изображения в файл.

К задачам пользователя при работе с нейронной сетью следует отнести:

-       определение структуры нейронной сети, включающее задание числа нейронов скрытого слоя и выбора функции активации;

-       ведение справочников нейронных сетей, предназначенных для колоризации изображений;

-       выбор изображений, сети для колоризации и выполнение запуска процесса;

-       оценка результата работы нейронной сети.

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

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

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

3.2.2 Восприятие сигналов (информации) и их оценка

При работе с системой пользователю предлагается работать с небольшим количеством объектов: изображение и выбранные нейронные сети. Эксперт системы работает со справочником нейронных сетей и процессом обучения сети. Разработанная система предоставляет информативный интерфейс, для решения возникающих вопросов разработана специальная справка. Пользователь может выполнить высокоинформативные действия простейшим нажатием одной кнопки. Для вывода информации в системе используются текстовые сообщения, диалоговые окна с выбором решения. Наиболее важная информация представляется в форме графиков и изображений.

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

3.2.3 Распределение функций по степени сложности задания

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

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

Функции, возложенные на систему, перечислены в пункте 1.2 главы дипломного проекта. Система предназначена для восстановления цвета монотонного полутонового изображения с помощью обученной нейронной сети, реализующей модель многослойного персептрона. К функциям системы относятся действия, которые системы выполняет значительно быстрее, чем это может сделать человек (см. пункт 1.1). Человек выполняет действия по настройке системы и выбору изображения (см. пункт 1.1). В ходе работы эксперта система автоматизирует функцию процесса обучения системы. Система автоматизирует функцию восстановления цвета изображения при работе пользователя. Это позволяет снизить степень сложности работы пользователя до минимума.

Таким образом, с помощью разработанной системы автоматизируется примерно 85% общей работы по колоризации (включая наиболее длительную часть работы).

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

Эксперт должен вести справочник сетей и производить обучение каждой из них. Учитывая, что обучение может занимать довольно длительный промежуток времени, но при этом не требует участия человека, класс напряженности можно оценить как 2.

3.2.4 Характер выполняемой работы

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

3.3 Сенсорные нагрузки

.3.1 Длительность сосредоточенного наблюдения

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

Пользователь выполняет ряд шаблонных задач, последовательность которых каждый раз одна и та же. Поступающая информация должна восприниматься пользователем в понятной форме, длительность сосредоточенного наблюдения небольшая. Информация, поступающая пользователю, предоставляется в наглядной форме (пункт 1.2), следовательно, длительность сосредоточенного наблюдения должна снижаться. Наиболее длительные операции предлагается выполнять эксперту (см. пункт 1.1), что должно позволить выполнить их в более быстрые сроки. Общее время работы с системой принимаем за 100%. Таким образом, длительность сосредоточенного наблюдения у посетителя составляет до 15 % (класс 1) (к 15% относится ввод параметров, выбор изображения и поиск технических объектов).

3.3.2 Плотность сигналов за один час работы

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

3.3.3 Число объектов одновременного наблюдения

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

Одновременно пользователю может быть предоставлен только один объект наблюдения. Система скрывает объекты, которые в данный момент не участвуют в работе, чтобы пользователь системы сосредоточился на выполняемой в данный момент работе. Напряженность труда по этому показателю можно отнести к 1 классу (до 5 объектов).

3.3.4 Размер объекта различения при деятельности сосредоточенного внимания

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

Пользователь системы по большей части работает с изображениями, которые меняют свой размер автоматически при вводе в систему для более удобного восприятия информации. Объект минимального различения - названия элементов интерфейса с размером шрифта более 5 мм, при расстоянии до объекта наблюдения до 0,5 м. В качестве основы размеров объекта различения взяты категории зрительных работ из СанПиН 2.2.2/2.4.2198-07 «Гигиенические требования к персональным электронно-вычислительным машинам и организации работы» и СНиП 23-05-95 «Естественное и искусственное освещение» за 2003 год.

При этом рассматривается лишь тот объект, который несет смысловую информацию, необходимую для выполнения работы. У пользователя системы минимально различимый объект это буква. Характер зрительной работы средней точности.

Напряженность деятельности можно отнести к классу 2.

3.3.5 Работа с оптическими приборами при длительности сосредоточенного наблюдения

Необходимо учитывать то, что к оптическим приборам не относятся различные устройства для отображения информации (дисплеи, сенсорные мониторы) - в них оптика не используется. Поэтому время, которое работает сотрудник с оптическими приборами, равно 0; а сам класс напряженности такой работы соответствует классу 1.

3.3.6 Наблюдение за экраном монитора в часах

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

3.3.7 Нагрузка на слуховой анализатор

Степень напряжения слухового анализатора определяется по зависимости разборчивости слов в процентах от соотношения между уровнем интенсивности речи и «белого шума».

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

3.3.8 Нагрузка на голосовой аппарат

Степень напряженности голосового аппарата зависит от продолжительности речевых нагрузок. Перенапряжение голоса наблюдается при длительной голосовой деятельности без отдыха. Работа ведется по модели «человек - машина», что предполагает отсутствие нагрузки на голосовой аппарат. Пользователь в процессе деятельности не ведет диалога с системой (класс 1). Взаимодействие производится электронным способом.

3.4 Эмоциональные нагрузки

.4.1 Степень ответственности за результат своей собственной деятельности. Значимость ошибки

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

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

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

3.4.2 Степень риска для собственной жизни

Разрабатываемая система не несет прямой угрозы жизни пользователя системы. Система работает независимо от других систем, не влияет на работу предприятия или чего-либо еще (см пункт 1.3). Автоматизированная система не предполагает использование на производстве, функционирует в офисном помещении. Офисные помещения соответствуют санитарным правилам и нормам СанПиН 2.2.1/2.1.1.1278-03 «Гигиенические требования к естественному, искусственному и совмещенному освещению жилых и общественных зданий», СанПиН 2.2.3.1329-03 «Требования по защите персонала от воздействия импульсных электромагнитных полей» и СанПиН 2.2.4.548-96 «Гигиенические требования к микроклимату производственных помещений» и СанПиН 2.2.2/.2.4.1340-03 при работе с персональным компьютером. Таким образом, система функционирует в безопасной для человека среде, т.е. степень риска для собственной жизни пользователя в данной системе минимальна - класс 1.

3.4.3 Ответственность за безопасность других лиц

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

3.4.4 Количество конфликтных производственных ситуаций за смену

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

3.5 Монотонность нагрузок

.5.1 Число элементов, необходимых для реализации простого задания или многократно повторяющихся операций

Необходимым условием отнесения операций или действий к монотонным является не только их частая повторяемость и малое количество приемов. Это может наблюдаться и при других работах, но и их однообразие и, самое главное, их низкая информационная содержательность, когда действия и операции производятся автоматически и практически не требуют пристального внимания, переработки информации и принятия решений. Этим можно сказать, что в ходе работы практически не задействуют «интеллектуальные» функции. Во время работы системы эксперт выполняет одну и ту же последовательность действий. Пользователь системы так же выполняет шаблонную работу. Различая связаны с выбором различных параметров и работой с различными изображениями. По этому показателю система относится ко 2 классу напряженности.

3.5.2 Продолжительность выполнения простых заданий или повторяющихся операций

Все системы-колоризаторы по этому показателю можно отнести ко 2 классу, так как продолжительности повторяющихся действий не превышает 60 секунд. К повторяющимся действиям относятся:

-       ввод параметров сети (< 25 сек);

-       задание параметров обучения (< 25 сек);

-       запуск обучения с выбором типа отображения (< 10 сек).

.5.3 Время активных действий

Наблюдаемый объект при работе эксперта по большей части не является активным. Время активных действий пользователя примерно 15% (к этому времени относятся: выбор изображение и активация выполнения колоризации), поэтому монотонность нагрузок можно отнести к классу 1.

.5.4 Монотонность производственной обстановки

Монотонность работ связана с пассивными действиями пользователя. В системе большая часть работ автоматизирована, а пользователь ожидает результатов обработки системы. Время пассивного ожидания составляет примерно 85% (к этому времени относятся: обучение сети и выполнение обработки изображения), поэтому монотонность по этому показателю следует отнести к классу 2.

.6.1 Фактическая продолжительность рабочего дня

Все параметры («Фактическая продолжительность рабочего дня», «Сменность работы», «Наличие регламентированных перерывов и их продолжительность (без учета обеденного перерыва)») напряженности режима работы этого класса можно отнести к классу 1, так как у системы нету привязки к режиму рабочего дня - система ориентирована на обычного пользователя.

3.6.2 Сменность работы

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

3.6.3 Общая оценка напряженности трудового процесса

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

Таблица 3.1 - Оценка условий труда по показателям напряженности трудового процесса

Показатели

Класс условий труда



1

2

3.1

3.2

3.3

1 Интеллектуальные нагрузки

1.1

Содержание работы


+




1.2

Восприятие сигналов и их оценка


+




1.3

Распределение функций по степени сложности задания


+




1.4

Характер выполняемой работы


+




2 Сенсорные нагрузки

2.1

Длительность сосредоточенного наблюдения

+





2.2

Плотность сигналов за 1 час работы

+





2.3

Число объектов одновременного наблюдения

+





2.4

Размер объекта при длительности сосредоточенного внимания


+




2.5

Работа с оптическими приборами при длительности сосред. внимания

+





2.6

Наблюдение за экраном видеотерминалов


+




2.7

Нагрузка на слуховой аппарат

+





2.8

Нагрузка на голосовой аппарат

+





3 Эмоциональные нагрузки

3.1

Степень ответственности за результат собственной деятельности

 +





3.2

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

+





3.3

Ответственность за безопасность других лиц

+





3.4

Количество конфликтных ситуаций производственных ситуаций

+





4 Монотонность нагрузок

4.1

Число элементов, необходимых для реализации простого задания или многократно повторяющихся операций

+





4.2

Продолжительность простых заданий


+




4.3

Время активных действий


+




4.4

Монотонность производственной обстановки


+




5 Режим работы

5.1

Фактическая продолжительность рабочего дня

+





5.2

Сменность работы


+




5.3

Наличие регламентированных перерывов и их продолжительность

+





 

Количество показателей в каждом классе

13

10

0

0

0

 

Общая оценка напряженности труда

+






При оценке напряженности труда пользователя, работающего с системой, были получены следующие данные: 13 показатель относятся к 1 классу и 10 показателя ко 2 классу.

Общая оценка напряженности труда администратора относится к «оптимальному» классу 1.

4. ТЕХНИКО-ЭКОНОМИЧЕСКОЕ ОБОСНОВАНИЕ СОЗДАНИЯ АВТОМАТИЗИРОВАННОЙ СИСТЕМЫ

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

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

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

Чтобы доказать целесообразность создания АСКПИ, необходимо произвести расчет следующих показателей:

-       единовременных затрат на создание;

-       единовременных затрат на внедрение;

-       текущих затрат на обеспечение функционирования системы;

-       экономические результаты от внедрения.

По результатам этих расчетов определяется экономическая эффективность разработки АСКПИ.

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

Таблица 4.1 Программы аналоги

Название продукта

Цена (за 2011год), руб.

Adobe Photoshop

26000

AKVIS Coloriage v.8.0

20000

Photomania DX

22000


В пункте 1.2 дипломного проекта был сделан краткий обзор систем-аналогов. В таблице 4.1 указаны цены на рассматриваемые аналоги.

Рассмотренные аналоги обладают большой функциональностью, когда как разрабатываемая АС направлена на решение узкого круга задач. Для решения конкретно поставленной задачи будет экономически более выгодно и целесообразно воспользоваться АСКПИ, которая обладает более низкой стоимостью.

4.1 Планирование и организация процесса разработки

Планирование и организация процесса разработки системы выполняется по следующему плану:

-       составление перечня работ по разработке АСКПИ;

-       определение состава и количества исполнителей каждой работы;

-       установление последовательности и взаимосвязи работ;

-       составление плана-графика выполнения работ.

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

.(4.1)

Экспертные оценки и расчетные величины трудоемкости приводятся в таблице 4.2.

Таблица 4.2 - Экспертные оценки и расчетные величины трудоемкости работ

Вид работ

Оценка трудоемкости

Ожидаемая трудоемкость





1

2

3

4

5

1. Организационная подготовка к созданию АСКПИ. Определение ее функций и целей, требований к системе

4

6

7

5,83

2. Концептуальное проектирование системы

6

10

12

9,67

3. Анализ функциональной схемы системы, определение структуры потоков данных

4

5

6

5

4. Анализ структуры файлов входных данных, детализация требований к системе

3

5

10

5,5

5. Разработка алгоритмов. Разработка интерфейса пользователя

25

33

35

32

6. Разработка и отладка программного обеспечения интерфейсной части системы

6

8

10

8

7. Разработка и отладка программного обеспечения, реализующего алгоритмы функционирования системы

37

38

42

38,5

8. Тестирование и отладка системы

2

4

9

4,5

9. Разработка документации на систему

5

5

5

5


Продолжительность каждой работы  определяется по формуле:

, (4.2)

где  − численность исполнителей, чел.

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

Таблица 4.3 - Сводная таблица для планирования работ

Наименование работы

Какие работы нужно выполнить перед данной

Исполнители

Труд-сть работы чел.дн.

Прод-ность работы, дн.



Должность

Коли-во



1

2

3

4

5

6

1. Организационная подготовка к созданию АСКПИ. Определение ее функций и целей, требований к системе

программист

1

6

6

2. Концептуальное проектирование системы

1

программист

1

10

10

3. Анализ функциональной схемы системы, определение структуры потоков данных

2

программист

1

5

5

4. Детализация требований к системе

3

программист

1

6

6

5. Разработка алгоритмов. Разработка интерфейса пользователя

4

программист

1

32

32

1

2

3

4

5

6

6. Разработка и отладка программного обеспечения интерфейсной части системы

5

программист

1

8

8

7. Разработка и отладка программного обеспечения, реализующего алгоритмы функционирования системы

6

программист

1

39

39

8. Тестирование и отладка системы

7

программист

1

5

5

9. Разработка документации на систему

8

программист

1

5

5


Рисунок 4.1 - План график разработки системы

План-график разработки системы (рисунок 4.1) имеет линейно-последовательный вид, поскольку все работы проведены одним исполнителем и, соответственно, те работы, которые могли бы выполняться параллельно, на практике были осуществлены последовательно. Длительность разработки 116 дней.

4.2 Технико-экономическое обоснование АСКПИ

Задачи и содержание технико-экономического обоснования разработки АСКПИ состоят в следующем:

.        Доказательство целесообразности создания АСКПИ на основе анализа следующих составляющих:

-       научная потребность в системе;

-       качественная оценка системы (технические, математические и информационные возможности);

-       экономическая целесообразность разработки АСКПИ;

.        Доказательство целесообразности внедрения АСКПИ на основе расчетов:

-       единовременных затрат на внедрение;

-       текущих затрат на функционирование системы;

-       показателей экономической эффективности.

.3 Расчет затрат на разработку АСКПИ

Укрупненный расчет затрат на разработку Кп АСКПИ можно выполнить по формуле:

, (4.3)

где − фонд основной заработной платы разработчиков, р.,

 − коэффициент дополнительной зарплаты,

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

 − коэффициент накладных расходов организации, разрабатывающей проект,

 − коэффициент прочих расходов,

 − машинное время, затраченное для отладки программного обеспечения АСКПИ, ч.,

 − стоимость машино-часа работы ЭВМ, р.

Укрупненный расчет фонда основной заработной платы исполнителей работ по разработке АСКПИ производится по формуле:

, (4.4)

где  − суммарная трудоемкость работ по разработке АСКПИ,

 − тарифная ставка дневная разработчиков и других исполнителей работ, р.

− количество дней рабочего времени разработчиков;

Себестоимость машино-часа работы ПК определяется по формуле:

См-ч = ,(4.5)

где А − годовая сумма амортизации, р.,

Зэ − затраты на силовую электроэнергию, р.,

Зм − затраты на материалы в год, р.,

Зн − накладные расходы, р.,

Фд − действительный годовой фонд времени работы ПК, ч.

Расчет затрат на заработную плату обслуживающего персонала производится по формуле:

Зп = 10000· 12 · 1,1 · 1,34 = 183 312 р. (4.6)

для количество работников = 10, месячный оклад работника = 10000 р., коэффициент, учитывающий дополнительную заработную плату = 1,1, коэффициент, учитывающий отчисления на социальные нужды = 1,34, получаем Зп = Зп / 10 = 18 331,2 р.

Годовые амортизационные отчисления по ПК считаются по формуле:

А=5 000 р.,(4.7)

где  − стоимость ПК, используемого при отладке АСКПИ.

Затраты на электроэнергию в год Зэ определяются следующим образом:

Зэ = Wу ∙ Cэ ∙ Tв = = 15 300 р.,(4.8)

где  − установленная мощность, кВт,э − стоимость силовой электроэнергии, р./кВт,в − время, в течение года, когда ПК потребляет электроэнергию, ч.

Затраты на текущие ремонты Зр и на материалы Зм при укрупненном расчете (10% от стоимости КСА) можно принять: Зр + Зм = = 2 000р.

В накладные расходы включаются затраты на оплату труда АУП, затраты на амортизацию и содержание площадей, затраты на отопление, освещение и прочие. Накладные расходы возьмём равными 70% от суммы заработной платы и учитываем, что количество компьютеров в лабораторном классе равно 10: Зн=(18331,2 *0,7/10)*10=12834 р.

В накладные расходы Зн включаются затраты на оплату труда АУП, затраты на амортизацию и содержание площадей, затраты на отопление, освещение и прочие.

Фонд времени Фд устанавливается, исходя из номинального фонда времени и времени профилактики оборудования и ремонтов:

Фд = S · h · D - Tпр=8· 1· 255 - 40 = 2000 ч, (4.9)

где S - продолжительность смены, ч. - 8 часов,- количество смен - одна,- число рабочих дней в году, дн. - 255 дней,пр - время ремонтов и профилактики оборудования в год, ч., 1 раз в месяц по 8 ч. - 96 ч. в год.

Отсюда, себестоимость машино-часа работы ПК:

См-ч==(18331,2+5000+15300+2000+12834)/2000= 26,73р.

Затраты на разработку АСКПИ:

Кп =83520· [(1 + 0,14) · (1 + 0,34) + 0,7 +0,1] + 480 · 26,73= 207231,55 р.

Результаты расчета затрат на разработку АСКПИ приведены в таблице 4.4.

Таблица 4.4 - Результаты расчета затрат на разработку АСКПИ

Параметр

Значение

Фонд основной заработной платы  р.83520


Годовые амортизационные отчисления по КСА А, р.

5000

Затраты на электроэнергию в год Зэ, р.

15 300

Затраты на текущие ремонты Зр и на материалы Зм, р.

2000

Накладные расходы Зн, р.

12834

Фонд времени Фд

2000

Себестоимость машино-часа работы КСА См-ч, р.

26,73

Суммарные затраты на разработку AC Кп, р.

207231,55

.4 Расчет-прогноз минимальной цены разработки АСКПИ

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

min = Кп + Пmin.  (4.10)

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

Пmin = Кп · (Rmin /100), (4.11)

где  − минимальный уровень рентабельности, 20 %.

Тогда прибыль равна: Пmin = 207231,55· 0,2 = 41446,31 р.

min = Кп + Пmin= Кп + Кп (Rmin /100). (4.12)

min = 248 667,86 р. - цена разработки при минимальном уровне рентабельности 20%.

.5 Расчет целесообразного объема продаж и оценка безубыточности

Для анализа целесообразности затрат на разработку АСКПИ, следует применить метод анализа безубыточности проекта и рассчитать целесообразный объем продаж.

-       затраты (единовременные) на разработку АСКПИ, р.;

-       затраты на рекламу, сопровождение на одну сделку S1, p. (4000р.);

-       цена продажи Z, р.

Объем продаж в стоимостном выражении Q является функцией от количества продаж N и рассчитывается по формуле:

(N) = ZN.(4.13)

Суммарные затраты на разработку и реализацию проекта определяются по формуле:

(N) = КП + S1N.(4.14)

ТБ находится из соотношения:

(NТБ) = S(NТБ).(4.15)

Подставив в выражение (4.15) формулы (4.13) и (4.14), получим:

· NТБ = КП + S1N,(4.16)

Откуда

.(4.17)

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

Цену одной копии программы возьмем равной 19000 рублей. При оценке спроса изучались аналогичные продукты конкурентов, их ценовые каталоги. Оценка издержек осуществлялась на основе анализа уровня и структуры издержек. Тогда по формуле 4.17, получим:ТБ = 207231,55/(19000-4000) = 13,8→14 (экз.).

Точка безубыточности служит разработчику хорошим ориентиром в оценке риска затрат на разработку. График безубыточности приведен на рисунке 4.2.

Затраты на разработку считаются эффективными, если доходы покроют все затраты на разработку, продажу системы и будет получена минимально необходимая сумма прибыли Пmin

Рисунок 4.2 - График безубыточности и целесообразного объема продаж

Поэтому рассчитывается целесообразный объем продаж NЦ из соотношения:

ZNЦ = (КП + S1N) + Пmin .(4.18)

 .(4.19)

Откуда NЦ ≥ (207231,55+41446,31)/(19000 - 4000) =16,57=17 (экз.).

Анализ точки безубыточности и целесообразного объема продаж при разных ценах продаж приведен в таблице 4.5

Таблица 4.5 - Анализ безубыточности при разных ценах продаж

Цена продажи (р.)

NТБ (р.)

NЦ (р.)

16000

17

21

17000

16

19

18000

15

18

19000

14

17

20000

13

16

21000

12

15

22000

12

14

23000

11

13


Таким образом, в системе заинтересованы научные организации, средние и крупные фирмы, в деятельность которых входят подобные задачи колоризации полутоновых изображений. При N ≥ 14 разработка АС будет безубыточной. Для получения минимальной прибыли объем продаж должен быть больше или равен 15.

4.6 Расчет единовременных затрат на внедрение

Единовременные затраты на внедрение АСКПИ () определяются по формуле:

К = Зпр + Кк · di, (4.20)

где Зпр = 207231,55 р. − затраты на разработку проекта АСКПИ,

Кк − величина капитальных затрат,

 − коэффициент участия ПК.

Величина капитальных затрат определяется по формуле:

,(4.21)

где = 20000 р. − сметная стоимость ПК, сюда входит: системный блок, монитор, клавиатура и мышь,

 = 1500 р. − затраты на установку, монтаж и запуск ПК в работу,

 = 800 р. − транспортно-заготовительные расходы.

Капитальные затраты составят:

 р.

Таким образом, единовременные затраты на внедрение составят:

K = 207 231,55 + 22399 * 1 = 229 630,55 р.

.7 Расчет текущих затрат на функционирование АСКПИ

Текущие затраты на функционирование АСКПИ рассчитываются путем определения суммарных затрат, вызываемых решением комплекса задач (процедур) АСКПИ и общесистемных затрат по формуле:

Зтек =  Зi + Зсист, (4.22)

где Зсист − общесистемные затраты за год, р./год,

Зi − затраты, при решении i-ой задачи АСКПИ, р./год,

 − число задач, решаемых в течение года.

Затраты  могут быть рассчитаны по формуле:

Зтекпм.в., (4.23)

где Зп − годовые затраты на заработную плату научных работников, решающих данную задачу с учетом всех начислений в условиях АСКПИ, р.;

Зм.в. − стоимость работы комплекса средств автоматизации по данной задаче, р./год.

Затраты, связанные с работой ПК по данной задаче, могут быть рассчитаны по формуле:

Зм.в .= См-ч*t,(4.24)

где См-ч − себестоимость часа работы ПК, руб./ч.,

t − время решения задачи с использованием ПК в год, ч.

Себестоимость машино-часа работы ПК рассчитана выше и составляет:

См-ч = 26,73 р.

Отсюда, Зм.в = 12830,4 р.

Зтек =183 312 + 12 830,4= 196 142,4 р.

.8 Расчет экономических результатов от внедрения

Для оценки экономических результатов от внедрения АСКПИ необходимо выявить ее влияние на конечные результаты деятельности предприятия (организации).

Рассмотрим три ситуации внедрения автоматизированной системы в различные по размеру организации в таблице 4.6.

Таблица 4.6 - Внедрение АС в различные по величине организации

Количество решаемых задач

Необходимое количество научных сотрудников

Необходимое количество научных сотрудников компьютеров с использованием АСКПИ

Количество высвобождающихся работников

30

3

1

2

60

4

1

3

90

6

1

5

Годовая экономия от внедрения АСКПИ  определяется по формуле:

Эг = Эi − Зтек,(4.25)

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

Эi − экономия по i-ой статье затрат (равняется заработной плате 2 работников), т.р.,

Зтек − затраты на функционирование АСКПИ.

Э1=2*10000*12*(1+0,34)*(1+0,14)= 366 624 р.

Таким образом, годовая экономия от внедрения рассматриваемой задачи в рамках АСКПИ Эг будет равна: Эг=366 624 - 207 231,55=159392,45р.

.8 Расчет экономической эффективности инвестиционных затрат на внедрение

Метод расчета чистой дисконтированной стоимости предполагает, что предприятие заранее задает минимально допустимую ставку процента, при которой капитальные вложения могут считаться эффективными. Такая ставка процента называется расчетной ставкой процента (“субъективная” ставка процента фирмы).

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

Реальная ставка процента рассчитывается по формуле:

.(4.26)

Номинальная ставка процента , уровень инфляции .

Отсюда, .

Чистая дисконтированная стоимость (интегральный эффект) рассчитывается по формуле:

ЭI = Эjг dj - Kj dj ,(4.27)

где  − период функционирования проекта, г.,j − инвестиционные затраты в j-м году, т.р.,

Эjг − экономический результат (экономия, прибыль) в j-м году, т.р.,

 − коэффициент дисконтирования для года.

Коэффициент дисконтирования  можно рассчитать по формуле:

. (4.28)

Чистая дисконтированная стоимость равна:

ЭI =Эiг di-K. (4.29)

Расчета чистой дисконтированной стоимости будем проводить с использованием таблицы 4.7.

Таблица 4.7 - Расчет чистой дисконтированной стоимости

Год

Единовременные затраты на внедрение, руб.

Дополнительная прибыль и амортизация руб.

Ряд платежей и поступлений, руб.

Расчетная процентная ставка, 7,96 %





Коэффициент дисконтирования

Текущая дисконтированная стоимость, руб.

0

229 630

-

-229 630--229 630



1

-

159 392

159 392

0,93

148235

2

-

159 392

159 392

0,858

136785

3

-

159 392

159 392

0,795

126717

Всего

229 630

478176

248546

-

182 107


Интегральный эффект составил ЭI = 182 107 > 0, поэтому затраты на внедрение АСКПИ можно считать эффективными.

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

На рисунке 4.3 представлен график интегрального эффекта от внедрения АСКПИ за три года.

Рисунок 4.3 - Интегральный эффект от внедрения АСКПИ

ЗАКЛЮЧЕНИЕ

В соответствии с требованиями дипломного проекта была разработана автоматизированная система колоризации полутоновых изображений. В ходе работы над дипломным проектом были изучены методики обработки изображения, способы преобразования изображения с помощью нейронной сети, различные способы сегментации изображения. Были проведены испытания на различных функциях активации нейронной сети и различных параметрах обучения. Выявлено, что линейная и тангенциальная функция активации показывают наилучший показатель обучения. Оптимальным значением числа нейронов в скрытом слое является 15, наиболее удачным алгоритмом обучения являются алгоритмы обратного распространения и LMS. Создана информационно-логическая модель автоматизированной системы в нотации UML с помощью инструментального средства Enterprise Architect 8.0. В ходе работы были сформулированы требования к техническому обеспечению и обоснован выбор средств автоматизации. Программное обеспечение системы разработано в среде IDEA 10.0 на языке высокого уровня Java 1.6 под управлением ОС Windows 7. Программное обеспечение полностью соответствует требованиям, описанным в техническом задании.

В разделе безопасности жизнедеятельности проведен анализ напряженности труда пользователя системы. Общая оценка напряженности труда пользователя относится к «оптимальному» классу 1, результаты анализа представлены в таблице 3.1.

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

Список использованных источников

1        Онлайн энциклопедия [Электронный ресурс]. - www.wikipedia.org <#"564417.files/image134.gif">

Рисунок А.1 - Главная форма приложения

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

Рисунок А.2 - Окно выбора изображения

После выбора изображения появляется окно выбора параметров сегментирования. Здесь можно выбрать функцию сегментирования (Гаусса либо Лапласа) и задать параметры функции, после чего нажать кнопку «Сегментировать», либо выполнить сегментацию вручную, нажав кнопку «Выполнить вручную».

Рисунок А.3 - Выбор параметров сегментирования

В разработанном приложении перед сегментацией изображения пользователь задает следующие параметры: Функция сегментирования (Лаплас или Гаусс), коэффициент размытия (для функции Гаусса), коэффициент сегментирования (на основании которого принимается решение о соединении двух графов), минимальный размер сегмента (в пикселях). После этого происходит автоматическая сегментация изображения на основе выбранных параметров (рисунок А.4).

Рисунок А.4 - Сегментированное изображение

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

Рисунок А.5 - Выполнение сегментации вручную

В случае выбора в пункте меню главного окна пункта «Нейронная сеть» появится окно редактирования параметров нейронных сетей:

Рисунок А.6 - Окно работы с нейронными сетями

В появившемся окне отображается список всех сетей, полученных в приложении. Каждую сеть можно удалить и отредактировать. Также отсюда производится создание новых сетей. Для обучения выбранной сети нужно нажать кнопку «Обучить». Обучение сетей производится так же пользователем:

Рисунок А.7 - Обучение нейросети

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

Рисунок А.8 - График ошибки обучения

Приложение 2. Листинг основных классов программы

В качестве алгоритма сегментации изображения был реализован алгоритм Efficient Graph-Based Image Segmentation авторов PedroF. Felzenszwalb (MIT) и DanielP. Huttenlocher (Cornell University). Для повышения производительности работы приложения было решено хранить изображение в форме одномерного вектора:

public class Image {w;h;[] data;cache;Image(BufferedImage image) {= image.getWidth();= image.getHeight();= new int[w * h]; // allocate space for image data(int i = 0; i < w * h; i++)[i] = image.getRGB(i % w, i / w);

}Image(int width, int height) {= width;= height;= new int[w * h]; // allocate space for image data

}(int i, int j) {data[j * w + i];

}void setIJ(int i, int j, intval) {[j * w + i] = val;

}

//caching buffered image for more high speed workvoid resetCache() {= null;

}() {(null == cache) {= new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);(int i = 0; i < w; i++) {(int j = 0; j < h; j++) {.setRGB(i, j, getIJ(i, j));

}

}

};

}

}

В качестве универсальной структуры работы с графами, позволяющей быстро соединять несколько графов и пересчитывать минимальные веса для решения «задачи Штейнера», была выбрана структура Disjoint-setdatastructure:

public class DisjointSet {;[] elts;(int elements) {= new UniElt[elements];(int ii = 0; ii <elts.length; ii++)[ii] = new UniElt();= elements;(int i = 0; i < elements; i++) {[i].rank = 0;[i].p = i;[i].size = 1;

}

}find(int x) {y = x;(y != elts[y].p)= elts[y].p;[y].p = y;y;

}void join(int x, int y) {(elts[x].rank >elts[y].rank) {[y].p = x;[x].size += elts[y].size;

} else {[x].p = y;[y].size += elts[x].size;(elts[x].rank == elts[y].rank)

elts[y].rank++;

}

num--;

}

}

Для реализации понятия «множество» в алгоритме Краскала применяется структура данных Disjoint-setdatastructure. Работа с ней оптимизирована на выполнение двух основных операций: узнать для некоторой вершины, какому множеству в текущий момент она принадлежит; быстро объединить эти множества в одно.

Обучение сети производится в классах наследниках класса LearningRule:

public abstract class LearningRule extends Observable implements Runnable,{static final long serialVersionUID = 1L;NeuralNetwork neuralNetwork;transient TrainingSet trainingSet;transient volatile boolean stopLearning = false;LearningRule() {

}void setTrainingSet(TrainingSet trainingSet) {.trainingSet = trainingSet;

}TrainingSet getTrainingSet() {trainingSet;

}NeuralNetwork getNeuralNetwork() {neuralNetwork;

}void setNeuralNetwork(NeuralNetwork neuralNetwork) {.neuralNetwork = neuralNetwork;

}void run() {.learn(this.trainingSet);

}public void setStarted() {.stopLearning = false;

}public void stopLearning() {.stopLearning = true;

}public boolean isStopped() {this.stopLearning;

}void notifyChange() {();();();

}abstract void learn(TrainingSet trainingSet);

}

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

public class BackPropagation extends SigmoidDeltaRule {static final long serialVersionUID = 1L;BackPropagation() {();

}

@Overridevoid updateNetworkWeights(double[] patternError) {.adjustOutputNeurons(patternError);.adjustHiddenLayers();

}void adjustHiddenLayers() {layerNum = this.neuralNetwork.getLayersCount();(int i = layerNum - 2; i > 0; i--) {layer = neuralNetwork.getLayerAt(i);(Neuron neuron : layer.getNeurons()) {delta = this.calculateDelta(neuron);.setError(delta);.updateNeuronWeights(neuron);

} // for

} // for

}double calculateDelta(Neuron neuron) {<Connection> connectedTo = ((Neuron) neuron).getOutConnections();delta_sum = 0d;(Connection connection : connectedTo) {d = connection.getToNeuron().getError()

* connection.getWeight().getValue();_sum += d; // weighted sum from the next layer

} // fortransferFunction = neuron.getTransferFunction();netInput = neuron.getNetInput();f1 = transferFunction.getDerivative(netInput);delta = f1 * delta_sum;

return delta;

}

}

Базовый класс функций активации:

public abstract class TransferFunction implements Serializable {static final long serialVersionUID = 1L;public double getOutput(double net);double getDerivative(double net) {1d;

}

@OverrideString toString() {getClass().getName();

}

}

Тангенсальная функция активации:class Tanh extends TransferFunction implements Serializable {static final long serialVersionUID = 2L;double slope = 2d;Tanh() {

}Tanh(double slope) {.slope = slope;

}Tanh(Properties properties) {{.slope = (Double) properties.getProperty("transferFunction.slope");

} catch (NullPointerException e) {new RuntimeException("properties are not set just leave default values");

} catch (NumberFormatException e) {new RuntimeException("Invalid transfer function properties! Using default values.");

}

}

@Overridepublic double getOutput(double net) {

// conditional logic helps to avoid NaN(net > 100) {1.0;

} else if (net < -100) {-1.0;

}E_x = Math.exp(this.slope * net);(E_x - 1d) / (E_x + 1d);

}

@Overridepublic double getDerivative(double net) {out = getOutput(net);(1d - out * out);

}double getSlope() {this.slope;

}void setSlope(double slope) {.slope = slope;

}

}

Класс нейросети:class NeuralNetwork extends Observable implements Runnable, Serializable {static final long serialVersionUID = 4L;NeuralNetworkType type;List<Layer> layers;List<Neuron> inputNeurons;List<Neuron> outputNeurons;LearningRule learningRule;transient Thread learningThread;Map<Class, PluginBase> plugins;String label = "";NeuralNetwork() {.layers = new ArrayList<Layer>();.plugins = new HashMap<Class, PluginBase>();.addPlugin(new LabelsPlugin());

}void addLayer(Layer layer) {.setParentNetwork(this);.layers.add(layer);

}void addLayer(int idx, Layer layer) {.setParentNetwork(this);.layers.add(idx, layer);

}void removeLayer(Layer layer) {.layers.remove(layer);

}void removeLayerAt(int idx) {.layers.remove(idx);

}Iterator<Layer> getLayersIterator() {this.layers.iterator();

}List<Layer> getLayers() {this.layers;

}Layer getLayerAt(int idx) {this.layers.get(idx);

}int indexOf(Layer layer) {this.layers.indexOf(layer);

}int getLayersCount() {this.layers.size();

}void setInput(double... inputVector) throws RuntimeException {(inputVector.length != inputNeurons.size()) {new RuntimeException("Input vector size does not match network input dimension!");

}i = 0;(Neuron neuron : this.inputNeurons) {.setInput(inputVector[i]);++;

}

}double[] getOutput() {[] outputVector = new double[outputNeurons.size()];i = 0;(Neuron neuron : this.outputNeurons) {[i] = neuron.getOutput();++;

}outputVector;

}void calculate() {(Layer layer : this.layers) {.calculate();

}

}void reset() {(Layer layer : this.layers) {.reset();

}

}void run() {.calculate();

}void learnInNewThread(TrainingSet trainingSetToLearn) {.setTrainingSet(trainingSetToLearn);= new Thread(learningRule);.setStarted();.start();

}void learnInNewThread(TrainingSet trainingSetToLearn, LearningRule learningRule) {(learningRule);.setTrainingSet(trainingSetToLearn);= new Thread(learningRule);.setStarted();.start();

}void learnInSameThread(TrainingSet trainingSetToLearn) {.setTrainingSet(trainingSetToLearn);.setStarted();.run();

}void learnInSameThread(TrainingSet trainingSetToLearn, LearningRule learningRule) {(learningRule);.setTrainingSet(trainingSetToLearn);.setStarted();.run();

}void stopLearning() {.stopLearning();

}void pauseLearning() {(learningRule instanceof IterativeLearning)

((IterativeLearning) learningRule).pause();

}void resumeLearning() {(learningRule instanceof IterativeLearning)

((IterativeLearning) learningRule).resume();

}void randomizeWeights() {(Layer layer : this.layers) {.randomizeWeights();

}

}void randomizeWeights(double minWeight, double maxWeight) {(Layer layer : this.layers) {.randomizeWeights(minWeight, maxWeight);

}

}void initializeWeights(double value) {(Layer layer : this.layers) {.initializeWeights(value);

}

}void initializeWeights(Random generator) {(Layer layer : this.layers) {.initializeWeights(generator);

}

}void initializeWeights(double min, double max) {(Layer layer : this.layers) {.initializeWeights(min, max);

}

}NeuralNetworkType getNetworkType() {type;

}void setNetworkType(NeuralNetworkType type) {.type = type;

}List<Neuron> getInputNeurons() {this.inputNeurons;

}void setInputNeurons(List<Neuron> inputNeurons) {.inputNeurons = inputNeurons;

}List<Neuron> getOutputNeurons() {this.outputNeurons;

}void setOutputNeurons(List<Neuron> outputNeurons) {.outputNeurons = outputNeurons;

}LearningRule getLearningRule() {this.learningRule;

}void setLearningRule(LearningRule learningRule) {.setNeuralNetwork(this);.learningRule = learningRule;

}Thread getLearningThread() {learningThread;

}void notifyChange() {();();();

}void createConnection(Neuron fromNeuron, Neuron toNeuron, double weightVal) {connection = new Connection(fromNeuron, toNeuron, weightVal);.addInputConnection(connection);

}

@OverrideString toString() {(plugins.containsKey("LabelsPlugin")) {labelsPlugin = ((LabelsPlugin) this.getPlugin(LabelsPlugin.class));label = labelsPlugin.getLabel(this);(label != null) return label;

}super.toString();

}void save(String filePath) {out = null;{file = new File(filePath);= new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(file)));.writeObject(this);.flush();

} catch (IOException ioe) {new RuntimeException("Error while saving:", ioe);

} finally {(out != null) {{.close();

} catch (IOException e) {new RuntimeException("Error while saving network", e);

}

}

}

}static NeuralNetwork load(String filePath) {oistream = null;{file = new File(filePath);(!file.exists()) {new RuntimeException("Cannot find file: " + filePath);

}= new ObjectInputStream(new BufferedInputStream(new FileInputStream(filePath)));nnet = (NeuralNetwork) oistream.readObject();nnet;

} catch (IOException ioe) {new RuntimeException("Cannot load network: ", ioe);

} catch (ClassNotFoundException cnfe) {new RuntimeException("Cannot load network: ", cnfe);

} finally {(oistream != null) {{.close();

} catch (IOException ioe) {new RuntimeException("OIStream error: ", ioe);

}

}

}

}static NeuralNetwork load(InputStream inputStream) {oistream = null;{= new ObjectInputStream(new BufferedInputStream(inputStream));nnet = (NeuralNetwork) oistream.readObject();nnet;

} catch (IOException ioe) {new RuntimeException("Cannot load network: ", ioe);

} catch (ClassNotFoundException cnfe) {new RuntimeException("Cannot load network: ", cnfe);

} finally {(oistream != null) {{.close();

} catch (IOException ioe) {new RuntimeException("OIStream error: ", ioe);

}

}


}void addPlugin(PluginBase plugin) {.setParentNetwork(this);.plugins.put(plugin.getClass(), plugin);

}PluginBase getPlugin(Class pluginClass) {this.plugins.get(pluginClass);

}void removePlugin(String pluginName) {.plugins.remove(pluginName);

}String getLabel() {label;

}void setLabel(String label) {

this.label = label;

}

}

Класс многослойного персептрона:

public class MultiLayerPerceptron extends NeuralNetwork {static final long serialVersionUID = 2L;MultiLayerPerceptron(List<Integer> neuronsInLayers) {neuronProperties = new NeuronProperties();.setProperty("useBias", true);.setProperty("transferFunction", TransferFunctionType.SIGMOID);.createNetwork(neuronsInLayers, neuronProperties);

}MultiLayerPerceptron(int... neuronsInLayers) {neuronProperties = new NeuronProperties();.setProperty("useBias", true);.setProperty("transferFunction",.SIGMOID);.setProperty("inputFunction", WeightedSum.class);<Integer> neuronsInLayersVector = new Vector<Integer>();(int i = 0; i < neuronsInLayers.length; i++).add(new Integer(neuronsInLayers[i]));.createNetwork(neuronsInLayersVector, neuronProperties);

}MultiLayerPerceptron(TransferFunctionType transferFunctionType, int... neuronsInLayers) {neuronProperties = new NeuronProperties();.setProperty("useBias", true);.setProperty("transferFunction", transferFunctionType);.setProperty("inputFunction", WeightedSum.class);<Integer> neuronsInLayersVector = new Vector<Integer>();(int i = 0; i < neuronsInLayers.length; i++).add(new Integer(neuronsInLayers[i]));.createNetwork(neuronsInLayersVector, neuronProperties);

}MultiLayerPerceptron(List<Integer> neuronsInLayers, TransferFunctionType transferFunctionType) {neuronProperties = new NeuronProperties();.setProperty("useBias", true);.setProperty("transferFunction", transferFunctionType);.createNetwork(neuronsInLayers, neuronProperties);

}MultiLayerPerceptron(List<Integer> neuronsInLayers, NeuronProperties neuronProperties) {.createNetwork(neuronsInLayers, neuronProperties);

}void createNetwork(List<Integer> neuronsInLayers, NeuronProperties neuronProperties) {.setNetworkType(NeuralNetworkType.MULTI_LAYER_PERCEPTRON);inputNeuronProperties = new NeuronProperties(InputNeuron.class, TransferFunctionType.LINEAR);layer = LayerFactory.createLayer(neuronsInLayers.get(0), inputNeuronProperties);useBias = true;(neuronProperties.hasProperty("useBias")) {= (Boolean) neuronProperties.getProperty("useBias");

}(useBias) {.addNeuron(new BiasNeuron());

}.addLayer(layer);prevLayer = layer;(int layerIdx = 1; layerIdx < neuronsInLayers.size(); layerIdx++) {neuronsNum = neuronsInLayers.get(layerIdx);= LayerFactory.createLayer(neuronsNum, neuronProperties);(useBias && (layerIdx < (neuronsInLayers.size() - 1))) {.addNeuron(new BiasNeuron());

}.addLayer(layer);(prevLayer != null).fullConnect(prevLayer, layer);= layer;

}.setDefaultIO(this);.setLearningRule(new MomentumBackpropagation());(Neuroph.getInstance().shouldFlattenNetworks()) {.flattenNeuralNetworkNetwork(this);

}

}void connectInputsToOutputs() {.fullConnect(getLayers().get(0), getLayers().get(getLayers().size() - 1), false);

}

}

Структура для работы с выборками:

public class TrainingElement implements Serializable, EngineData {double[] input;TrainingElement(double... input) {.input = input;

}double[] getInput() {this.input;

}void setInput(double[] input) {.input = input;

}boolean isSupervised() {false;

}double[] getIdealArray() {null;

}double[] getInputArray() {this.input;

}void setIdealArray(double[] data) {

}void setInputArray(double[] data) {.input = data;

}

}

Похожие работы на - Автоматизированная система колоризации полутонового изображения

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!