Разработка веб-приложения для масштабирования растровых изображений с использованием нейронных сетей
Процесс масштабирования (увеличения) изображения с минимальной потерей в качестве. Анализ способа соединения классического метода масштабирования и метода машинного обучения. Алгоритм работы нейронной сети, разработанной для масштабирования изображений.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 01.08.2017 |
Размер файла | 2,7 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
83
Размещено на http://www.allbest.ru/
Пермский филиал федерального государственного автономного образовательного учреждения высшего образования
"Национальный исследовательский университет
"Высшая школа экономики"
Факультет экономики, менеджмента и бизнес-информатики
Разработка веб-приложения для масштабирования растровых изображений с использованием нейронных сетей
Выпускная квалификационная работа
по направлению подготовки 38.03.05 Бизнес-информатика
образовательная программа "Бизнес-информатика"
Мальцев Алексей Андреевич
Рецензент к. п. н., доцент, доцент кафедры информационных технологий ПГНИУ, Т.Н. Соловьева
Руководитель к. ф. - м. н., доцент, доцент кафедры информационных технологий в бизнесе В.В. Морозенко
Пермь, 2017 год
Аннотация
Данная выпускная квалификационная работа содержит анализ метода получения сверх-разрешения с помощью свёрточной нейронной сети (SRCNN), а также описание приложения, разработанного для демонстрации работы выбранной нейронной сети. Выпускная квалификационная работы занимает 38 страниц формата А4, включает в себя 14 рисунков, 1 таблицу, 4 приложения и состоит из 3 глав: Анализ предметной области и методов машинного обучения, Проектирование архитектуры нейронной сети и Разработка приложения.
В первой главе произведен анализ предметной области машинного обучения и описан принцип работы свёрточной нейронной сети. Во второй главе описана архитектура свёрточной нейронной сети SRCNN, а также спроектирована её модификация. В третьей главе описана реализация двух версий приложения для демонстрации работы нейронной сети. Целью данной работы является разработка нейросетевого программного модуля для увеличения изображений с минимальной потерей в качестве, а также демонстрация применения данного модуля с помощью веб-интерфейса.
Оглавление
- Аннотация
- Введение
- Глава 1. Анализ предметной области и методов машинного обучения
- Описание понятия машинного обучения
- Структура нейронных сетей и их особенности
- Свёрточные нейронные сети для задач распознавания изображений
- Структура и алгоритм работы свёрточной нейронной сети
- Описание и анализ топологий свёрточных нейронных сетей
- Сравнения цветовых пространств RGB и YCbCr
- Проектирование архитектуры нейронной сети
- Постановка задачи Super-Resolution
- Описание модели SRCNN
- Алгоритм процесса обработки изображения моделью SRCNN
- Модификация оригинальной модели SRCNN
- Разработка и тестирование приложения
- Описание использованных технологий
- Описание архитектуры веб-приложения
- Тестирование качества работы приложения
- Анализ качества результатов
- Тестирование производительности приложений
- Анализ производительности приложений
- Заключение
- Библиографический список
- Приложение А. Листинг кода
- Приложение B. Диаграмма последовательностей загрузки изображения для масштабирования
- Приложение С. Диаграмма классов модуля масштабирования
- Приложение D. Техническое задание
- ЛИСТ УТВЕРЖДЕНИЯ
- Abstract
Введение
Цифровые растровые изображения представляют из себя сетку пикселей, что позволяет хранить в таком формате очень сложные визуальные объекты. В большинстве случаев для хранения цифровых изображений используется именно данный формат за счет его относительной простоты и больших возможностей.
Помимо преимуществ у растрового формата есть существенные ограничения. Так, например, одна из его основных характеристик, это размер изображения в пикселях по длине и ширине. Это означает, что при сохранении изображения было зафиксировано ограниченное количество точек, причем при увеличении этого количества прямо пропорционально увеличивается и размер занимаемого файлом места на диске, что иногда является довольно существенным нюансом.
Именно главная особенность формата вступает в противоречие с потребностью в масштабировании изображения без потери качества, если под масштабированием подразумевается увеличение размеров оригинального изображения, поэтому вопрос увеличения качества полученного результата является довольно актуальным для таких организаций, как, например, различного рода студии, занимающиеся разработкой цифрового контента; различные социальные медиа, вроде новостных сайтов; и т.д. В качестве уточнений можно пояснить, что существующие алгоритмы масштабирования не позволяют достаточно точно предугадать цвет пикселей, добавленных в процессе масштабирования, а иногда некоторые графические детали исчезают или становятся менее заметными (контрастными) при увеличении, из-за чего страдает общее восприятие изображения, которое, возможно, смотрелось даже лучше в оригинальном (до увеличения) размере.
Данное противоречие, также ввиду новой волны популярности искусственного интеллекта, преобразуется в проблему применения современных практик машинного обучения для масштабирования фотографий и растровых изображений в целом.
Данная проблема ещё не решена полностью, или её решение не совсем применимо в работе существующего бизнеса. В работе "A Neural-Network-Based Image Resolution Enhancement Scheme for Image Resizing" [1] приводится способ применения структуры нейронной сети для решения задачи масштабирования изображения, но данная работа была проведена в 2003 году, в то время как появились и были оптимизированы новые виды методов машинного обучения, что обуславливает актуальность проблемы.
Объектом исследования в решении данной проблемы является процесс масштабирования (увеличения) изображения с минимальной потерей в качестве. Предметом исследования будет являться способ соединения классического метода масштабирования и метода машинного обучения.
На основании сформулированной проблемы и выявленных объекта и предмета исследования целью данной работы будет разработка обучаемого инструмента (программного модуля) для масштабирования растровых изображений, а также демонстрация его возможностей на примере веб-приложения.
На текущий момент машинное обучение переживает резко возросший интерес к нейронным сетям со стороны разработчиков, исследователей и владельцев бизнеса. Это обусловлено тем, что в 2012 году выяснилось, что в одной из классических задач компьютерного зрения - задаче классификации изображений, - свёрточная нейронная сеть справилась гораздо лучше, чем все другие методы, которые были разработаны за последние несколько лет. Данные факты были описаны командой победителей соревнования по распознаванию изображений ImageNet LSVRC-2012 в работе "ImageNet Classification with Deep Convolutional Neural Networks" [2]. После 2012 года не нейросетевые структуры данное состязание уже не выигрывали.
Ввиду их успешного использования, интерес к свёрточным нейросетям очень резко возрос, и за несколько лет в задачах классификации изображений свёрточные нейронные сети добились точности, сравнимой с точностью, достигаемой человеческим мозгом.
На текущий момент, это один из самых популярных, относительно точных и универсальных методов для задач, связанных с распознаванием образов на изображении. Так в работе "Recent Advances in Convolutional Neural Networks" [3] описаны способы применения свёрточных нейронных сетей как инструмент отслеживания динамических объектов, определения состояния объектов, а также распознавание текста, что доказывает применение сверхточных нейронных сетей в широком спектре задач, связанных с анализом и преобразованием изображений.
Исходя из цели, список задач будет включать в себя следующее:
1. Изучить структуру и алгоритм работы нейронной сети, разработанной для масштабирования изображений.
2. Спроектировать модель нейронной сети, которую возможно встроить в качестве отдельного модуля, инкапсулирующего логику масштабирования изображения.
3. Подобрать оптимальные, с точки зрения скорости и точности работы нейронной сети, гиперпараметры.
4. Разработать прототип приложения, позволяющего продемонстрировать работу интеллектуального модуля для увеличения изображения.
5. Протестировать разработанный инструмент с последующим исправлением критических ошибок в работе программы или нейронной сети.
нейронная сеть масштабирование изображение
Глава 1. Анализ предметной области и методов машинного обучения
В рамках данной главы будет проанализирована предметная область машинного обучения, описаны основные принципы работы свёрточных нейронных сетей и проделано сравнение основных современных топологий свёрточных нейронных сетей, а также приведены различные подходы работы с изображениями с помощью нейронных сетей.
Описание понятия машинного обучения
Свёрточные нейронные сети, которые в рамках данной работы будут применяться в качестве инструмента для масштабирования изображений, являются одним из видов нейронных сетей, которые в свою очередь являются одним из методов машинного обучения.
Само по себе понятие машинное обучение можно трактовать разными образами. Так, например, Артур Сэмьюэл описывал машинное обучение как процесс, в результате которого машина (компьютер) способна показывать поведение, которое в нее не было явно заложено (запрограммировано) [4]. Так же формальное описание процесса обучения дал Том Митчел: "Говорят, что компьютерная программа обучается на основе опыта E по отношению к некоторому классу задач T и меры качества P, если качество решения задач из T, измеренное на основе P, улучшается с приобретением опыта E." [5]. Данное определение больше относится к индуктивному (статистическому) обучению, в то время как есть дедуктивное, которое активно применяется в экспертных системах. В данной работе под обучением и конкретно машинным обучением будет пониматься именно индуктивное обучение. Это связано в большей степени с тем, что целью данной работы является разработка метода масштабирования, который сможет подстроиться под заданный тип изображений в процессе обучения, то есть сам выработает нужные правила.
Определение обучения по прецедентам
Дедуктивное обучение, это обучение по прецедентам. В рамках терминов машинного обучения, можно представить решение любой поставленной задачи, как значение yi целевой функции y* при заданном объекте xi. Поскольку обучение проводится сразу на массиве объектов X и результатов Y, то весь процесс решения задачи можно представить, как . По определению Константина Воронцова пара, где y при заданном аргументе x являются прецедентом, что в общей их (пар) совокупности представляет обучающую выборку [6]. Так же в литературе можно встретить понятие "обучение на примерах", которое по сути является тем же самым, что и обучение по прецедентам и которое описывается как вид обучения, при котором индивиду или интеллектуальной системе предъявляется набор положительных и отрицательных примеров, связанных с какой-либо заранее неизвестной закономерностью [7]. Несмотря на то что эти понятия равнозначны, в рамках данной работы, мы будет придерживаться первого понятия, так как в современных русскоязычных источниках по теме машинного обучения чаще всего встречается данное понятие. По мнению К. Воронцова, задачей обучения по прецедентам является построение результирующей функции исходя из обучающей выборки [6].
Наиболее распространённым способом описания прецедентов является описание с помощью признаков. Фиксируется совокупность показателей, измеряемых у всех прецедентов. Если все показателей числовые, то признаковые описания представляют собой числовые векторы размерности . Но часто встречаются и более сложные случаи, например, когда прецеденты описываются изображениями, то есть последовательностью пикселей одинаковой размерности. В рамках данной работы приложение будет обучено на совокупности пар оригинальных растровых изображений в высоком разрешении и их уменьшенных в 2 раза копиях. Поскольку результирующее приложение и метод должны по качеству превосходить традиционные методы масштабирования, то обучение приложения на основе увеличенных другими способами изображений будет не оптимально и не позволит добиться необходимого эффекта.
Для решения задачи обучения по прецедентам в первую очередь фиксируется модель восстанавливаемой зависимости. Затем вводится функционал качества, значение которого показывает, насколько хорошо модель описывает наблюдаемые данные. Алгоритм обучения ищет такой набор параметров модели, при котором функционал качества на заданной обучающей выборке принимает оптимальное значение.
Структура нейронных сетей и их особенности
Различают когнитивный и бионический подходы, где первый представлен как математическая модель для эффективного решения узкого спектра задач (с возможностью математического обоснования результата), а второй - попытка воссоздать физическую модель мыслительных процессов.
Искусственные нейронные сети являются ярким представителем бионического подхода, так как моделируют работу биологического аналога - мозга живого существа. В данной работе под нейронной сетью будет пониматься именно искусственная нейронная сеть.
Искусственная нейронная сеть, по определению Семена Хайкина, представляет собой распределенный параллельный процессор, состоящий из элементарных единиц обработки информации, накапливающий экспериментальные знания [8]. Определение, данное в книге "Нечёткая логика и искусственные нейронные сети" во многом похоже на предыдущее, за тем лишь исключением, что под обработкой информации подразумевается обучение путем анализа положительных и отрицательных воздействий [9].
Искусственные нейронные сети могут изменять свое поведение в зависимости от внешней среды. В основном именно этот фактор в большей степени, чем любой другой, ответствен за тот интерес, который они вызывают. После предъявления входных сигналов (возможно, вместе с требуемыми выходами) они самостоятельно настраиваются, чтобы обеспечивать требуемую реакцию.
Отклик сети после обучения может быть до некоторой степени нечувствителен к небольшим изменениям входных сигналов. Эта внутренне присущая способность видеть образ сквозь шум и искажения жизненно необходима для распознавания образов в реальном мире. Она позволяет преодолеть требование строгой точности, предъявляемое обычным компьютером, и открывает путь к системе, которая может иметь дело с тем несовершенным миром, в котором мы живем. Важно отметить, что искусственная нейронная сеть делает обобщения автоматически благодаря своей структуре, а не с помощью использования "человеческого интеллекта" в форме специально написанных компьютерных программ.
Некоторые из искусственных нейронных сетей обладают способностью извлекать сущность из входных сигналов. Например, сеть может быть обучена на последовательности искаженных версий какого-либо объекта. После соответствующего обучения предъявление такого искаженного примера приведет к тому, что сеть породит объект с правильными параметрами. Это свойство можно интерпретировать как способность извлекать идеальные усреднённые прототипы из искаженных данных.
Существуют большое множество различных видов искусственных нейронных сетей, что обусловлено множеством задач, для который более приемлем какой-либо из видов. Любая нейронная сеть состоит из нескольких основных компонентов:
- Входной слой, где на вход подаются значение параметров объекта.
- Скрытый слой, который может быть не один в своем роде, а также быть не только одного вида (например, рекуррентный, полносвязанный, свёрточный и т.д.).
- Выходной слой, где каждому выходу присваивается определенное значение, которое было посчитано в хоте анализа параметров объекта нейронной сетью.
Обычно последний слой используют для разметки классов, тем самым решая стандартную задачу классификации.
Свёрточные нейронные сети для задач распознавания изображений
Часто для задач классификации и распознавания графических образов ранее использовались классические нейросетевые структуры, такие как многослойные персептроны и радиально-базисные сети. Но исходя из анализа основных работ по методам решения данного рода задач, существуют фактические выводы о неэффективности данных структур [10]:
- Из-за большого количество входных параметров (по одному на каждый пиксель изображения) резко возрастает размер нейронной сети, делая процесс её обучения крайне долгим и малоэффективным на небольших выборках.
- В целях повышения точности результата рекомендуется применять несколько видов нейронных сетей, что в целом увеличивает сложность получившейся системы, а также повышает мощностные и временные издержки.
- Модель очень резко реагирует к любым геометрическим изменениям исходного объекта, давая совершенно неверный результат, например, при изменении перспективы анализируемого объекта.
- При преобразовании изображения в векторный вид, теряется топология изображения, то есть взаимосвязь между отдельными её частями.
Также, в работе Best Practices for Convolutional Neural Networks Applied to Visual Document Analysis наиболее подходящими для работы с изображениями названы два вида. Самый примитивный, который так же является универсальным классификатором для большого спектра задач, это полносвязанная искусственная нейронная сеть с двумя слоями.
Более сложным видом является свёрточная нейронная сеть (Convolutional Neural Network, CNN), которая отлично справляется с задачей анализа графических объектов [2, 11]. Исходя из данных исследований и аргументов, для работы с преобразованием изображений была выбранная свёрточная нейронная сеть.
Структура и алгоритм работы свёрточной нейронной сети
Данный тип нейронной сети содержит 3 основных вида скрытых слоёв: свёрточного, слоя субдискретизации (получения подвыборок) и полносвязанного. На Рисунке 1.1 представлен пример архитектуры свёрточной нейронной сети для классификации изображений:
Рисунок 0.1. Пример архитектуры CNN
Свёрточный слой (Convolution) обычно идет сразу после входного слоя. Каждый последующий нейрон свёрточного скрытого слоя получает на вход данные о некотором наборе выходов группы нейронов на предыдущем слое. Данная группа так же называется рецептивным полем слоя [10], которое представляет собой окно (матрицу), как например, на Рисунке 1.2:
Рисунок 0.2. Пример рецептивного окна
Данное окно просчитывает значение выхода для данной области и пересылает его на вход следующему нейрону. Это окно так же называется фильтром, так как при умножении области на данную матрицу, активируются те области (пиксели) которые совпали в фильтре и в матрице. Чем больше совпадений области и фильтра, тем больше вероятность того, что в данной области содержится то, что ищет фильтр. Результат поэлементного умножения двух матриц (области и фильтра) складывается и сохраняется в качестве значения текущего элемента карты свойств.
Данный фильтр перемещается по изображению на один пиксель, формируя новый элемент карты свойств и так продолжается до того момента, пока фильтр не обработает последнюю оставшуюся область на исходном изображении. Пример работы данного фильтра изображен на Рисунке 1.3:
Рисунок 0.3. Пример работы конволюционного фильтра.
Свёрточный слой определяется 3 гиперпараметрами, которые устанавливаются на этапе моделирования архитектуры нейронной сети:
- Глубина, которая равна числу фильтров свёрточного слоя, так как для каждого фильтра формируется своя карта свойств для изображения или матрицы.
- Шаг, который определяет на какое количество пикселей будет перемещаться фильтры по исходному изображению (в примере выше он был равен 1).
- Параметр неявного заполнения нулями, который определяет насколько фильтр на крайних позициях может "вылезть" за границы изображения, позволяя тем обработать больше пикселей изображения, при этом игнорируя область, за которую пришлось выйти, принимая эти пиксели за нули.
Данная идея была взята [12] и адаптирована на основе открытий в области нейробиологии, где было доказано, что различные участки зрительной коры головного мозга реагируют на разные виды объектов [13].
Таким образом свёрточные слои порождают набор карт свойств, где количество карт равно количеству фильтров, на которых был применен фильтр, и где каждая карта содержит обобщение о местонахождении области с определенным элементом, на поиск которого был настроен фильтр.
Субдискретизирующие слои (Pooling) используются для уменьшения размерности карт свойств, усредняя значение каждой напускающейся области на карте признаков, тем самым ещё больше обобщая изображения, усиливая те области, в которых признак оказался доминирующим. Данные слои обычно бывают 3 типов, в зависимости от операций, которые применяют для уменьшения матрицы: максимизирующие, усредняющие и суммирующие. При максимизации, из матрицы выделяется наибольшее значение и применяется в качестве выхода для данной ячейки. В отличии от данного метода, усредняющий слой находит среднее арифметическое значение для данной области. Суммирующий же для выводит сумму элементов каждой области. На практике считается, что максимизирующий слой действует лучше, так как позволяет избавиться от лишних деталей.
Применение субдискретизирующего слоя положительно влияет на состояние свёрточной нейронной сети:
- Размерность входа нейронной сети уменьшается, что делает его более управляемым.
- Уменьшается количество параметров и вычислений, что позволяет контролировать эффект переобучения.
- Модель становится более инвариантной к небольшим изменениям, вроде графического шума, артефактов и трансформаций.
- Поскольку модель становится более инвариантной к трансформациям, то сам процесс поиска объекта с помощью фильтра становится инвариантным и позволяет находить объекты в разных местах изображения.
Традиционная свёрточная нейронная сеть обычно завершается одним или несколькими полносвязанными слоями (Fully Connected), которые принимают на вход значения карт свойств и на выход передают вектор определенной длины, которая, обычно равна количеству классов для решаемой задачи. То есть данный слой формирует вектор с вероятностями отношений исходного изображения к определенным классам. Комбинация полносвязанных слоев имеет вид многослойного персептрона, которая помогает классифицировать высокоуровневые признаки на последних свёрточных и субдискретизирующих слоях.
Данный вид нейронных сетей, как в случае с большинством глубоких нейронных сетей, обучается с помощью алгоритма обратного распространения ошибки. Так же для улучшения и привнесения нелинейности в работу нейронной сети, на выходе у свёрточных, субдискретизирующих или полносвязанных слоев может использоваться активационная функция. При задаче классификации наиболее подходящим вариантом является функция Softmax, так как сумма результатов данной функции для вектора аргументов будет равна 1, тем самым интерпретируя каждый результат как вероятность принадлежности к какому-либо классу:
(1.1)
Наиболее популярным выбором для свёрточного слоя является рамповая функция выпрямленного линейного элемента (ReLU) или функция выпрямитель (Rectifier), а также её вариации. Данный вид нелинейной активационной функции имеет следующий вид:
(1.2)
Результат данной функции можно представить в виде системы, где до 0 по X значение функции равно 0, а после линейно возрастает, что представлена на Рисунке 1.4:
Рисунок 0.4. График ReLU
Применение данной активационной функции привносит в модель, дополнительную нелинейность, так как сама операция конволюции является линейной. В случае применения данной функции для матрицы, все её элементы станут неотрицательными.
Так же помимо ReLU можно использовать любую другую нелинейную функцию, например, Гиперболический Тангенс или Сигмоидальную функцию, но как показывает практика, ReLU имеет лучший эффект в большинстве случаев.
Описание и анализ топологий свёрточных нейронных сетей
Существует несколько основных разновидностей архитектур свёрточных нейронных сетей. Сеть LeNet5 - первая успешная реализация свёрточной нейронной сети, разработанная Яном ЛеКун в 1990-х годах [14]. Она является наиболее простой топологией свёрточных нейронных сетей, где каждый свёрточный слой чередуется с слоем субдискретизации, тем самым уменьшая размерность при поиске абстракций. Данная сеть завершается несколькими полносвязанными слоями, которые, связывают абстракции с классами. Всего в данной топологии 60 тыс. параметров, она является сравнительно небольшой и поэтому толерантна к любым модификациям.
Начиная с 2012, топология AlexNet [2], которая популяризовала свёрточные нейронные сети (и нейронные сети в целом) для задач классификации и была разработана Алексом Крижевским для конкурса ImageNet, показала достаточно хорошие результаты. Она содержит около 60 млн. параметров, что увеличило время на обучение сети. По сравнению с предшественником LeNet, данная сеть по своей структуре во многом аналогична LeNet, с тем условием, что AlexNet в разы превышает предшественника в объемах. Данное решение обоснованно тем, что с момента создания LeNet аппаратные мощности вычислительных процессоров значительно увеличились, а также увеличилось количество открытых данных, с помощью которых можно было обучить нейронную сеть.
Разработанная оксфордскими учеными топология свёрточной нейронной сети VGG является одной из первых свёрточных нейронных сетей, которая использовала небольшие фильтры размерами 3Ч3 в каждом свёрточном слое, которые были объединены в последовательность. Данный подход является противоположностью к подходу, использованному в LeNet5 и в подобных свёрточных сетях. В отличие от AlexNet, по мере продвижения вглубь сети, фильтры уменьшались в размерах, приближаясь к крайне нежелательному для AlexNet фильтру размерами 1Ч1. Но главным достоинством VGG является открытия эффекта от последовательного расположения свёрточных слоев. Так, несколько фильтров 3Ч3 могли давать аналогичных результат, как от применения намного более обширных рецептивных полей, например, размерами 5Ч5 и 7Ч7. Данные открытия в дальнейшем были применены в современных топологиях свёрточных нейронных сетей. К сожалению, данный подход приводит к увеличению издержек на обучение нейронной сети и её дальнейшее использование, что в дальнейшем привело к развитию новых подходов, связанных с оптимизацией данной топологии.
Таким подходом стала топология "Сеть внутри сети" (Network in Network, NiN) [15], которая позволила использовать свёрточные слои с фильтрами размером 1Ч1 для увеличения комбинаций возможных значений на картах свойств. В рамках данной архитектуры, после каждого свёрточного слоя используется подобие многослойного персептрона, чтобы лучше связать свойства перед тем, как передать их на вход следующему свёрточному слою. Такой подход значительно увеличил эффективность каждой свёрточной карты свойств, объединяя их в более сложные группы. Это идея в дальнейшем стала использоваться в более современных глубоких нейросетях. Данная топология так же использует на выходе усредняющий субдискретизирующий слой, что в дальнейшем стало достаточно обыденной и эффективной практикой "сглаживания" результатов свёртки для последующей привязки наиболее абстрактных свойств к необходимым классам.
Идею "Сети внутри сети" в дальнейшем развила компания Google, создав две похожи топологии GoogleLeNet и Inception [16], представленной на Рисунке 1.5 Мотивом к созданию данного рода топологий послужило желание оптимизировать процесс обучения, уменьшив накладные расходы в виде процессорных мощностей и расхода памяти, при этом увеличив качество результата.
Рисунок 0. 1 Модуль Inception.
Разработанный командой Google модуль Inception проектировался для параллельной обработки данных слоями, с разной размерностью рецептивного поля, при этом используя подход NiN для уменьшения количества карт свойство с помощью фильтра единичной размерности. Данный способ был в дальнейшем назван "Бутылочным горлышком" в контексте топологий нейронных сетей.
"Бутылочное горлышко" заключается в первоначальном уменьшении количества свойств для обработки их с помощью обычной операции свёртывания. После, данный уменьшенный набор карт свойств преобразовывался с помощью того же фильтра единичной размерности в новый набор карт свойств, но уже с изначальной размерностью. Такой способ позволяет, не теряя в качестве, сократить несколько раз объем операций на этапе выявления свойств в обычном свёрточном слое.
Анализируя особенности топологий свёрточных нейронных сетей и мотивов их возникновения, можно предположить, что для задачи преобразования изображения низкого качества в изображения повышенной четкости, необходимо использовать более прогрессивный подход сетей NiN или Inception, а именно слой "Бутылочного горлышка" для эмуляции работы многослойного персептрона и для оптимизации вычислительных мощностей на этапе конволюции. Так же размер фильтра должен уменьшатся по мере продвижения вглубь нейронной сети, что доказано опытом разработки топологии VGG.
Сравнения цветовых пространств RGB и YCbCr
На вход свёрточной нейронной сети, если задача заключается в работе с изображениями, подается вектор, где каждый пиксель представлен определенным количеством измерений, в зависимости от цветового пространства, в котором представлено изображение.
Традиционным цветовым пространством для графики является RGB, то есть описание каждого пикселя через интенсивность красного, зеленого и синего каналов. Данное цветовое пространство описывает все данные компоненты, как равнозначные. Данный формат предпочтителен для компьютерной графики, но для изображения реальных фотографий этот формат может быть оптимизирован, поскольку RGB для фотографий зачастую является избыточным.
YCbCr [17] является более оптимальным для данных целей цветовым пространством, так как основано на более экономном принципе кодирования RGB. Сигналы данного пространства формируются с применением гамма-коррекции исходных сигналов RGB. Y - компонента яркости, а Cb и Cr являются специальными цветоразностными компонентами для синего и красного каналов соответственно. Поскольку человеческий глаз менее чувствителен к перепадам цвета, нежели света, данных формат позволяет передать меньше информации о цветообразующих компонентах, настроив должным образом яркость. Поэтому данный метод кодирования, в целях оптимизации затрат памяти, будет использоваться при нормализации и масштабировании изображений.
Проектирование архитектуры нейронной сети
В данной главе будет описана проблема увеличения (масштабирования) изображения без потери качества, а также спроектирована нейронная сеть для увеличения изображений, за основу которой будет взята архитектура Super Resolution Convolutional Neural Network.
Постановка задачи Super-Resolution
В англоязычной литературе решаемая проблема относится к проблемам, решаемым методами SR (Super-Resolution). Данные методы позволяют увеличить изображение, преодолев оптический предел объектива или разрешение любого другого цифрового сенсора, с помощью которого было заснято изображение.
Алгоритмы SR позволяют вычислить результирующее изображение двумя способами: используя фрагменты одного и того же объекта [18] и используя коллекцию образцов разных изображений. Второй способ является гораздо более масштабируемый за счет гибкой настройки параметров структур из области искусственного интеллекта, в частности нейронных сетей.
Описание модели SRCNN
Структура свёрточной нейронной сети для решения задачи SR (SRCNN) [19] предполагает сквозное преобразование (end-to-end mapping) элементов изображений низкого и высокого разрешения. Главным отличием данного метода от других методов, основанных на примерах, является то, что нейронная сеть используется не для непосредственного запоминания коллекций фото, ища совпадения между образцом и текущим изображением. Таким образом предложенная модель [19, 21] является более инвариантной, чем другие методы, основанные на примерах.
Модель задумывалась как простая, но достаточно эффективная вариация, превосходящая по качеству другие аналогичные методы. Для проверки данной гипотезы использовались такие метрики, как пиковое соотношение сигнала к шуму (PSNR), индекс структурного сходства (SSIM) и т.д. Результаты превосходили метод бикубического интерполирование и аналогичный популярный метод основанных на примерах - Sparse Coding [20]. Результаты сравнения преобразованных изображений представлены на Рисунке 2.1:
Рисунок 0.1. Оценка качества по методу PSNR
Данный метод так является одним из наиболее быстрых среди подобных, так является алгоритмом прямого распространения и в ходе его выполнения не возникает проблем с оптимизацией процесса. Так же архитектура нейронной сети для масштабирования позволяет одновременно обрабатывать все три канала цветового пространства (RGB и YCrCb), в котором было закодировано изображение, что повышает производительность.
Большинство предыдущих методов SR работают в монохромном режиме, то есть сам метод применяется только к одному каналу, зачастую я освещенности Y в пространстве YCrCb, а остальные каналы масштабируются билинейной интерполяцией. Так же данный метод основывается не только на эффективности свёрточных слоев в работе с изображениями, но и использует в качестве активационной функции ReLU, так как данная функция повышает скорость обработки изображения (для разных задач), при этом сохраняя приемлемое качество результата, при этом предохраняя от пагубных эффектов переобучения при изобилии примеров в обучающей выборке, как например в задачах в рамках конкурса ImageNet, с которого и начался второй виток популярности данной нейросетевой структуры.
Алгоритм процесса обработки изображения моделью SRCNN
Работа SRCNN начинается с единственного процесса предварительной подготовки, заключающегося в масштабировании исходного изображения до желаемых размеров с помощью бикубической интерполяции. Обозначим интерполированное изображение за Y. Задача модели вернуть из Y изображение F (Y) и главным показателем успешности данного процесса является максимальное соответствие F (Y) оригинальному увеличенному изображению X (ground-truth), которое используется в процессе обучения, но совершенно неизвестно при целевом использовании SRCNN. Для упрощения формулировки, Y далее будет ассоциироваться с ординальным изображением низкого разрешения, несмотря на тот факт, что оно по размерам равно желаемому увеличенному изображению, то есть X. Необходимо обучить систему сквозному преобразованию F, которое концептуально состоит из 3 основных этапов:
1. Извлечение участков изображения (patch extraction): данная операция извлекает частично перекрывающие друг друга участки изображения низкого разрешения Y и преобразует каждый участок в высокоразмерный вектор. Данные вектора содержат в себе карты свойств (feature maps), для которых их количество равно размерности данного вектора.
2. Нелинейное преобразование: данная операция нелинейным образом соотносит каждый высокоразмерный вектор с другим высокоразмерным вектором. Каждый преобразованный высокоразмерный вектор представляет собой тот же участок изображения, только с более высоким разрешением. Данные вектора так же заключают в себе уже другие коллекции карт свойств.
3. Реконструкция изображения: данная операция агрегирует векторизированные образы участка изображения повышенного разрешения, создавая окончательное графическое представление. Предполагается, что результатом этого этапа будет изображение, максимально похожее на X.
Все 3 этапа реализованы на базе свёрточных слоев нейронной сети. Этап извлечения традиционно для задач SR представлен как процесс плотного извлечения участков изображения определенной размерности с последующим применением к ним метод главных компонент, дискретное косинусное преобразование или преобразование Хаара для уменьшения размерности входных параметров с минимальными потерями. Данный процесс аналогичен конволюции изображения набором фильтров. Таким образом работа первого слоя нейронной сети можно представить в виде формулы:
, (2.1)
где W1 и B1 соответствуют фильтру и смещению (bias) соответственно, а знак "*" означает операцию конволюции. W1 представляет собой набор фильтров в количестве n1 с размерностью , где с равно количеству каналов изображения, а f1 размер фильтра. Результат представляет собой набор карт свойств в количестве n1. Так же к данной конволюции применяется функция ReLU ().
Следующий за извлечением этап нелинейного преобразования принимает на вход вектора размерности n1 и преобразовывает их в вектора размерности n2. Данная операция равнозначна конволюции с фильтрами размерами 1*1 в количестве n2. К слову, данная интерпретация действительна только для фильтров с единичной размерностью. Таким образом операцию можно описать формулой:
, (2.2)
где W2 и B2 соответствуют очередным фильтру и смещению (bias) соответственно, а знак "*" означает очередную операцию конволюции. W2 снова представляет собой набор фильтров в количестве n2 с размерностью . К конволюции так же применяется функция ReLU. Каждый новый вектор размерности n2 концептуально представляет собой участок высокого разрешения, связанных с аналогичным участком низкого разрешения. Возможно увеличить количество скрытых свёрточных слоев для увеличения уровня нелинейности преобразования, но данная модификация усложнит систему и приведет к увеличенному времени её обучения, поэтому в рамках данной работы нелинейное преобразование будет состоять из одной конволюции.
На этапе реконструкции в традиционных методах SR значения перекрывающихся областей усредняются, что в итоге складывается в результирующее изображение высокого разрешения. Процесс усреднения так же может быть интерпретирован, как конволюция установленным заранее фильтром для карты свойств, где каждая позиция представляет собой "сглаженную" область высокого разрешения. Имея ввиду данное предположение, последний слой можно описать с помощью формулы:
, (2.3)
где W3 означает набор из линейных фильтров с размерностью в количестве с, а является вектором размерностью с. Структура нейронной изображена на Рисунке 2.2:
Рисунок 0.1. Структура SRCNN
Модификация оригинальной модели SRCNN
Данная модель основана на идеях, развитыми в топологии NiN [15]. На этапе нелинейного преобразования используется свёрточный слой с фильтром единичной размерности, что позволяет эффективно связать вектора разной размерности, тем самым осуществив привязку изображений низкого и высокого качества. Для первого и последнего этапа авторы рекомендуют использовать фильтры размерностью 9 и 5 соответственно, что так же характерно для прогрессивных топологий, вроде VGG, NiN и Inception.
В ходе анализа современных топологий и соотнесения их со структурой SRCNN, в рамках данной работы было выдвинуто предположение, что нейросеть можно улучшить, использовав большее количество слоев. При этом по историческим причинам, топология VGG отлично справляется с данной задачей. Так же, для упрощения модели, было решено спроектировать нейросеть со свёрточными слоями одинаковой размерности фильтра 3Ч3, игнорировав при этом слой единичной размерности, заменив его активационной функцией ReLU после каждого свёрточного слоя.
Разработка и тестирование приложения
В данной главе описана реализация модуля для увеличения изображения с помощью модификации SRCNN и веб интерфейса для демонстрации результата работы, описаны две реализации приложения и приведен их сравнительный анализ по результатам тестов производительности и качества.
Описание использованных технологий
Нейросеть была обучена на 100 изображениях из коллекции ImageNet. Модель нейронной сети состоит из 7 слоев. К сожалению информация об полученной ошибке и значении пикового соотношения сигнала к шуму была потеряна из-за ошибки, в ходе которого была удалена виртуальная машина, на которой обучалась нейросеть с помощью скриптов на языке Lua, но модель была сохранена и преобразована в формат JSON.
В рамках курсовой работы было разработана версия приложения, которая обрабатывала изображение в браузере, без участия серверной части. Из-за ограниченных технических возможностей данной реализации, а именно малое количество ресурсов процессора и памяти, а также из-за использования интерпретируемого языка JavaScript, данная реализация работала крайне медленно, что послужило основной мотивацией к реализации новой версии приложения, с переносом основной логики на сторону сервера.
Обновленная реализация приложения для работы с данным типом нейронных сетей представляет собой клиент-серверное веб приложение. Клиент написан на языке JavaScript (ECMAScript 6), расположение элементов реализовано на языке разметки HTML, а стили были написаны с использованием синтаксиса CSS-препроцессора Less. Пример интерфейса представлен на Рисунке 3.1:
Рисунок 0.1. Интерфейс приложения
Серверная часть веб-приложения реализована на платформе.net Framework и языке C#. Так же для тестирования было разработан консольный интерфейс, принимающий изображения из определенной директории и помещающий результат в другой каталог. Исходный код классов представлен в Приложении А.
Функциональные требования к приложению предусматривают:
· Обработку изображений для увеличения из в 2 раза.
· Возможность в реальном времени отслеживать прогресс обработки изображения (вывод информации о текущем этапе).
· Возможность получения изображения как в режиме реального времени через ajax, так и по прямой ссылке через уникальный тикет (идентификатор) запроса.
На Рисунке 3.2 представлена диаграмма вариантов использования:
Рисунок 0.2. Диаграмма вариантов использования веб-приложения
Описание архитектуры веб-приложения
Приложение физически разделено на 2 части. Первая часть представляется собой пользовательский веб-интерфейс, написанный на клиентских технологиях JavaScript, CSS3 и HTML5. Для написания клиентской логики была выбрана современная ревизия языка JavaScript - ECMAScript 6. Причина данного выбора заключается в более удобном API для работы с коллекциями и массивами, а также технология управления асинхронными операциями Promises. Данная версия языка поддерживается подавляющим большинством современных и актуальных браузеров последних версий.
Клиентская часть веб-приложения реализует обработку пользовательского ввода файла, а также запуск процесса масштабирования изображения, с последующим оповещением о результатах данной операции.
Для реализации структурного паттерна Model-View-ViewModel используется библиотека VueJS. Этот паттерн является аналогом паттерна Model-View-Controller и позволяет разделить бизнес-логику, модель данных и представление на 3 независимые компоненты, а VueJS инкапсулирует механизм двусторонней привязки данных (Model) и представлений (View) через легковесную прослойку (ViewModel), с последующим взаимным обновлением состояния.
Поскольку данная библиотека является достаточно молодой, она вобрала многие полезные функции и возможности таких фреймворков и библиотек, как AngularJS, React и jQuery, предоставляя разработчику очень простой API для работы. Именно за счет агрегирования полезных и нужных функций, а также своей простоты была выбрана именно эта библиотека.
Вторая часть клиент-серверного веб-приложения так же физически разделена на 2 части. Это приложение, принимающее запросы от клиента и выводящее главную веб-страницу системы, и абстрагированный от остального кода модуль обработки изображений, который реализует работу сверхточной нейронной сети SRCNN. Данный модуль был вынесен в отдельную библиотеку, поскольку помимо веб-интерфейса (GUI) был разработан интерфейс командной строки (CLI), поэтому привязка к одному из них в рамках данного модуля была недопустимой.
Серверная часть веб-приложения реализована на фреймворке ASP.net Core, который может реализовать работу веб-приложения как в рамках стандартного для Windows веб-сервера IIS, так и в рамках собственного процесса (отдельный саморазвёртываемый веб-сервер для приложения). Так же для возможности развертывания приложения на операционной системе Linux все проекты были написаны для сборки на новой версии платформы.net Core.
Поскольку процесс масштабирования изображения является достаточно долгим при большой загрузке сервера и большом размере изображений, взаимодействие ASP.net приложения и модуля SRCNN осуществляется через брокера очередей сообщений RabbitMQ. Данный брокер является наиболее популярным бесплатным решением, реализующим протокол для очередей сообщений Advanced Message Queuing Protocol (AMQP) [22], а также имеет реализацию для платформы.net Core, что являлось основной мотивацией выбора RabbitMQ для данной задачи.
Очереди сообщений позволяют балансировать нагрузку на вычислительный модуль SRCNN, обрабатывая столько изображений, сколько позволяет производительность сервера. Так же этот подход позволяет оперативно отслеживать нагрузку на модуль через крайне удобный веб интерфейс, представленный на Рисунке 3.3:
Рисунок 0.1. Мониторинг очередей RabbitMQ
При необходимости есть возможность подключать дополнительные обработчики (модули SRCNN) для параллельной работы с поступающей очередью изображений, тем самым увеличивая пропускную способность всего приложения. В дополнении очереди сообщений позволяют наиболее безопасным способом реализовывать асинхронную обработку задач, так как после того, как ASP.net приложение отправило изображение в очередь, оно не простаивает в ожидании окончания обработки, а возвращает идентификатор задачи (тикет), с помощью которого клиентское приложение может опрашивать брокер о текущем состоянии обработки и о полученном результате в виде масштабированного изображения.
Для реализации асинхронной операции получения увеличенного изображения в брокере сообщений RabbitMQ создано три очереди: ImageInput, ImageProgress и ImageOutput. При получении изображения от клиента, Asp.net приложение формирует объект сообщения для очереди, помещая само изображение в бинарном виде в тело сообщения (Body) и присваивая данной задаче уникальный идентификатор Guid, который прикрепляется ко всем сообщениям, связанным с данной задачей, например, к сообщениям об изменении статуса процесса масштабирования изображения или к сообщению о получении конечного результата. После инициализации сообщения, оно помещается в очередь ImageInput, а клиентской части приложения возвращается тикет, с помощью которого оно периодически опрашивает Asp.net приложение о состоянии задачи. Модуль SRCNN получает сообщение из очереди ImageInput, извлекает из него тикет и изображение, и запускает процесс обработки изображения. При изменении этапа или статуса задачи, модуль SRCNN так же асинхронно отправляет сообщение с данными о текущем статусе в очередь ImageProgress, прикрепляя к нему сохраненный в самом начале тикет задачи. Данные сообщения получает приложение Asp.net, когда к нему приходит запрос на получение последнего актуального состояния задачи с указанным тикетом. При окончании операции, Asp.net приложение получает результат из очереди ImageOutput. Диаграмма последовательностей для процесса отправки файла и получения изображения представлена в Приложении B. Модуль масштабирования может работать как с очередью сообщений, так и через папки, которые имитируют очереди. Последнее использовалась для проведения интеграционных тестов, описанных далее. В Приложении C представлена диаграмма классов модуля масштабирования.
Алгоритм масштабирования так же был переработан по сравнению с предыдущей версией, описанной в рамках курсовой работы. Оптимизация заключается в распараллеливании процессов масштабирования изображения, путем разделения изображения на блоки одинаковых размеров, которые обрабатываются алгоритмом в разных потоках. Так же используется для этих целей библиотека Task Parallel Library, входящая в число стандартных библиотек платформы.net, позволяет задействовать сразу несколько ядер процессора. Таким образом на многоядерных вычислительных машинах процесс будет выполнятся ещё быстрее. Одним из основных достижений применения очередей сообщений и оптимизированного распараллеленного алгоритма является превращения приложения в горизонтально масштабированную систему. Для повышения пропускной способности возможно добавить дополнительные вычислительные машины, что невозможно было реализовать в предыдущем решении на базе клиентского Javascript-приложения. Архитектура приложения представлена на Рисунке 3.4:
Рисунок 0.2 Архитектура приложения
К сожалению, одним из недостатков является повышения количества узлов системы, что так же повышает сложность архитектуры и количественно повышает временные издержки, требуемые для взаимодействия отдельных модулей между собой.
Тестирование качества работы приложения
Данное приложение было успешно протестировано на коллекции из 5 изображений в браузере Google Chrome 59 на компьютере с двухъядерным процессором Intel i5, а результаты были сопоставлены с аналогичным масштабированием (увеличение в 2 раза), но с помощью бикубической интерполяции.
Для оценки качества изображения используется пиковое отношение сигнала к шуму PSNR. Данная метрика измеряется с использованием среднеквадратичной ошибки:
(3.1)
где I и K представляют собой два изображения размером mЧn, причем одно является зашумленной вариацией другого. Таким образом само измерение PSNR имеет следующий вид:
(3.2)
где MAX равно максимально возможному значению каждого пикселя, для в данном случае равно 255. Результаты тестирования двух методов и их сравнение представлены в Таблице 3.1:
Таблица 0. 1. Сравнение результатов интерполяции и SRCNN
Изображение |
PSNR для интерполяции |
PSNR для SRCNN |
|
33.55 дБ |
37.75 дБ |
||
30.69 дБ |
33.23 дБ |
||
24.15 дБ |
32.30 дБ |
||
31.38 дБ |
35.07 дБ |
||
28.83 дБ |
34.78 дБ |
Анализ качества результатов
Анализируя полученные результаты, можно заметить, что особенно отличаются два изображения - 3 и 5 изображение. Ниже на рисунках 3.5 и 3.6 представлено визуальное сравнение оригинала и двух, масштабированных разными способами, изображений:
...Подобные документы
Анализ существующих методов масштабирования изображений. Повышение скорости обработки и изменения картинок. Алгоритм масштабирования с использованием параллелизма. Отбор пикселей для правильного расчета градиента. Выбор метода интерполяции изображения.
курсовая работа [5,8 M], добавлен 17.06.2017Исследование структуры типовой вычислительной сети. Модель процесса вскрытия вычислительной сети и взаимосвязь основных его этапов. Конфликт в информационной сфере между субъектом и объектом познания. Описания алгоритмов динамического масштабирования.
дипломная работа [2,9 M], добавлен 21.12.2012Искусственные нейронные сети как одна из широко известных и используемых моделей машинного обучения. Знакомство с особенностями разработки системы распознавания изображений на основе аппарата искусственных нейронных сетей. Анализ типов машинного обучения.
дипломная работа [1,8 M], добавлен 08.02.2017Анализ средств построения динамически масштабируемых ВС. Разработка алгоритма, обеспечивающего устойчивость функционирования информационно-вычислительных сетей в условиях воздействий компьютерных атак, использующих фрагментированные пакеты сообщений.
дипломная работа [3,8 M], добавлен 21.12.2012Обзор программных продуктов для анализа изображений: ABBYY FineReader и OCR CuneiForm. Понятие и виды нейронных сетей. Алгоритм обучения персептрона. Результаты исследований и описание интерфейса программы. Расчет себестоимости программного обеспечения.
дипломная работа [590,7 K], добавлен 17.08.2011Понятие искусственного нейрона и искусственных нейронных сетей. Сущность процесса обучения нейронной сети и аппроксимации функции. Смысл алгоритма обучения с учителем. Построение и обучение нейронной сети для аппроксимации функции в среде Matlab.
лабораторная работа [1,1 M], добавлен 05.10.2010Изучение набора прикладных программ операционной системы Windows. Особенности редактирования графического объекта и масштабирования рисунка в редакторе Paint. Вычислительные операции и возможности калькулятора. Создание документов в текстовом процессоре.
контрольная работа [577,0 K], добавлен 05.11.2012Разработка приложения, целью которого ставится преобразование черно-белых полутоновых изображений в цветные. Обзор методики обработки изображения, способов преобразования изображения с помощью нейронной сети. Описания кластеризации цветового пространства.
дипломная работа [6,3 M], добавлен 17.06.2012Общие сведения о принципах построения нейронных сетей. Искусственные нейронные системы. Математическая модель нейрона. Классификация нейронных сетей. Правила обучения Хэбба, Розенблатта и Видроу-Хоффа. Алгоритм обратного распространения ошибки.
дипломная работа [814,6 K], добавлен 29.09.2014Общая информация о графическом формате. Описание формата Microsoft Windows Bitmap. Структура файла DDВ исходного формата ВМР. Преобразования графических файлов. Просмотр и редактирование растровых изображений. Создание многодокументного приложения.
дипломная работа [1,5 M], добавлен 06.06.2010Объектно-ориентированные языки моделирования. Разработка различных альтернативных подходов к анализу и проектированию. Взаимосвязь концептуальных и программных понятий. Проблемы масштабирования сложных систем. Диаграммы, описывающие поведение системы.
лабораторная работа [159,4 K], добавлен 26.05.2014Реализация базовых геометрических преобразований: вращения, переноса, отражения и масштабирования. Рекомендации по работе с программой. Ввод в соответствующие поля приложений значений данных по каждой из осей координат для выполнения операции с фигурой.
контрольная работа [642,0 K], добавлен 21.01.2015Описание метода обработки "Выделение контурных линий" и особенностей его применения и программной реализации. Способы увеличения контрастности. Значение правильного подбора формы гистограммы для качества компьютерной обработки растрового изображения.
курсовая работа [940,2 K], добавлен 24.06.2013Анализ влияния сглаживающего шума на различные категории томографических изображений. Разработка программного обеспечения для снижения помех и увеличения четкости очертаний крупных объектов. Метод рисования прямоугольников, ограничивающих все контуры.
практическая работа [1006,7 K], добавлен 28.09.2019Разработка алгоритма и программы для распознавания пола по фотографии с использованием искусственной нейронной сети. Создание алгоритмов: математического, работы с приложением, установки весов, реализации функции активации и обучения нейронной сети.
курсовая работа [1,0 M], добавлен 05.01.2013Математическая модель искусственной нейронной сети. Структура многослойного персептрона. Обучение без учителя, методом соревнования. Правило коррекции по ошибке. Метод Хэбба. Генетический алгоритм. Применение нейронных сетей для синтеза регуляторов.
дипломная работа [1,5 M], добавлен 17.09.2013Математическая модель нейронной сети. Однослойный и многослойный персептрон, рекуррентные сети. Обучение нейронных сетей с учителем и без него. Алгоритм обратного распространения ошибки. Подготовка данных, схема системы сети с динамическим объектом.
дипломная работа [2,6 M], добавлен 23.09.2013Обучение простейшей и многослойной искусственной нейронной сети. Метод обучения перцептрона по принципу градиентного спуска по поверхности ошибки. Реализация в программном продукте NeuroPro 0.25. Использование алгоритма обратного распространения ошибки.
курсовая работа [1019,5 K], добавлен 05.05.2015Прогнозирование на фондовом рынке с помощью нейронных сетей. Описание типа нейронной сети. Определение входных данных и их обработка. Архитектура нейронной сети. Точность результата. Моделирование торговли. Нейронная сеть прямого распространения сигнала.
дипломная работа [2,7 M], добавлен 18.02.2017Цифровые рентгенографические системы. Методы автоматического анализа изображений в среде MatLab. Анализ рентгеновского изображения. Фильтрация, сегментация, улучшение изображений. Аппаратурные возможности предварительной нормализации изображений.
курсовая работа [890,9 K], добавлен 07.12.2013