Найти тему

Неделя науки

Оглавление

АННОТАЦИЯ

Пояснительная записка 39 с., 12 рис., 4 таб., 14 источников, 4 приложения

СИСТЕМА, ВЫБОРКА, МОДЕЛЬ, СВЁРТОЧНАЯ НЕЙРОННАЯ СЕТЬ, РАСПОЗНАВАНИЕ, ИЗОБРАЖЕНИЕ, АНАЛИЗ, ОБУЧЕНИЕ, КАПИЛЛЯРОСКОП, МИКРОЦИРКУЛЯЦИЯ

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

Предмет исследования — выборка из 496 фотографий состояний микроциркуляции, содержащая 343 фотографии с наличием патологии и 153 — с условной нормой.

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

В ходе работы был изучен метод машинного обучения «с учителем». Была произведена работа с библиотеками Matplotlib, PIL и Keras, в частности, с моделью обучения — VGG16. Также были сформированы обучающая и контрольная выборки, содержащие изображения обоих типов.

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

СОДЕРЖАНИЕ

ТЕРМИНЫ И ОПРЕДЕЛЕНИЯ 4

ПЕРЕЧЕНЬ СОКРАЩЕНИЙ И ОБОЗНАЧЕНИЙ 6

ВВЕДЕНИЕ 7

1 МОДЕЛИ ОБУЧЕНИЯ БИБЛИОТЕКИ KERAS 9

2 СИСТЕМА ОБУЧЕНИЯ «С УЧИТЕЛЕМ» 12

3 моделЬ VGG16 ДЛЯ РАЗРАБОТКИ СИСТЕМЫ РАСПОЗНАВАНИя НАЛИЧИЯ ПАТОЛОГИИ СОСТОЯНИЯ МИКРОЦИРКУЛЯЦИИ ЧЕЛОВЕКА 15

4 ФОРМИРОВАНИЕ И ПОДГОТОВКА ДАННЫХ ДЛЯ РАЗРАБОТКИ СИСТЕМЫ РАСПОЗНАВАНИЯ НАЛИЧИЯ ПАТОЛОГИИ СОСТОЯНИЯ МИКРОЦИРКУЛЯЦИИ ЧЕЛОВЕКА 18

5 РАЗРАБОТКА СИСТЕМЫ РАСПОЗНАВАНИЯ НАЛИЧИЯ ПАТОЛОГИИ СОСТОЯНИЯ МИКРОЦИРКУЛЯЦИИ ЧЕЛОВЕКА 21

5.1 Система распознавания образов 21

5.2 Система распознавания изображений 23

5.3 Свёрточные нейронные сети в системе распознавания изображений 24

6 АНАЛИЗ РЕЗУЛЬТАТОВ СИСТЕМЫ РАСПОЗНАВАНИЯ НАЛИЧИЯ ПАТОЛОГИИ СОСТОЯНИЯ МИКРОЦИРКУЛЯЦИИ ЧЕЛОВЕКА 30

6.1 Анализ качества обучения системы 30

6.2 Анализ качества распознавания системы 30

ЗАКЛЮЧЕНИЕ 32

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 33

ПРИЛОЖЕНИЕ A 35

ПРИЛОЖЕНИЕ Б 37

ПРИЛОЖЕНИЕ В 38

ПРИЛОЖЕНИЕ Г 39

ТЕРМИНЫ И ОПРЕДЕЛЕНИЯ

В настоящей работе применяют следующие термины с соответствующими определениями:

Вес — сила связи между нейронами

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

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

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

Капилляроскоп — медицинский прибор для наблюдения за состоянием мельчайших сосудов в организме — капилляров

Компьютерное зрение — теория и технология создания машин, которые могут производить обнаружение, отслеживание и классификацию объектов

Машинное обучение — это направление искусственного интеллекта, сосредоточенное на создании систем, которые обучаются и развиваются на основе получаемых ими данных

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

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

Нейронная сеть (также искусственная нейронная сеть) — это метод машинного обучения, называемый глубоким обучением, использующим взаимосвязанные узлы и нейроны в слоистой структуре, напоминающей человеческий мозг

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

Ошибка — это процентная величина, отражающая расхождение между ожидаемым и полученным ответами

Тензор — объект линейной алгебры, линейно преобразующий элементы одного линейного пространства в элементы другого

Python — высокоуровневый динамический язык программирования общего назначения, который относится к интерпретируемым языкам

ПЕРЕЧЕНЬ СОКРАЩЕНИЙ И ОБОЗНАЧЕНИЙ

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

НС — нейронная сеть

СНС — свёрточная нейронная сеть

ИНС — искусственная нейронная сеть

МО — машинное обучение

ГО — глубокое обучение

ВВЕДЕНИЕ

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

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

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

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

Задачи работы:

- изучить тему МО;

- изучить тему капилляроскопии и микроциркуляции;

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

- сформировать обучающую и контрольную выборки;

- произвести обучение НС;

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

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

1 МОДЕЛИ ОБУЧЕНИЯ БИБЛИОТЕКИ KERAS

Перед тем, как выбрать модель обучения, мы изучили какие бывают модели МО в библиотеке Keras.

Keras — это гибкая модульная, легко настраиваемая, библиотека для языка программирования Python, предназначенная для глубокого обучения (далее - ГО). Она позволяет быстро создавать и настраивать модели искусственных нейронных сетей (далее - ИНС). Она является бесплатной и имеет открытый исходный код [2].

Библиотека Keras имеет узкую специализацию, поскольку это инструмент для специалистов по МО, которые работают с языком Python: именно его чаще всего используют благодаря удобству математических вычислений. Keras применяют разработчики, которые создают, настраивают и тестируют различные системы МО искусственного интеллекта, в первую очередь — НС [2].

Особенности библиотеки Keras:

- написана на чистом Python, чтобы код был понятнее и легче поддерживался;

- работает на большинстве платформ: не только на операционных системах Windows и Linux, но и на микрокомпьютерах, мобильных устройствах, в облаке или в браузере;

- поддерживает работу с CPU и GPU — с обычным или графическим процессором;

- поддерживает разные виды НС: классические перцептроны, свёрточные и рекуррентные сети, их комбинации;

- совместима с Python, начиная с версии 2.7 вплоть до современных.

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

Таблица 1 – Список моделей библиотеки Keras

-2

Все модели имеют разные параметры весов, которые загружаются автоматически при создании её экземпляра. Значения столбцов «Топ-1» и «Топ-5» являются результатами взаимодействия модели с набором данных ImageNet. В параметр «Глубина» входит количество слоёв активации, слоёв пакетной нормализации и т.п. Время загрузки и обучения модели зависит от её размера и глубины. Из этого списка мы выбрали модель VGG16, так как из предложенных вариантов именно она чаще всего используется для распознавания изображений, из-за чего она имеет подходящую нам архитектуру.

2 СИСТЕМА ОБУЧЕНИЯ «С УЧИТЕЛЕМ»

Обучение с учителем — это направление МО, объединяющее алгоритмы и методы построения моделей на основе множества примеров, содержащих пары «известный вход — известный выход». Данную систему обучения также часто называют «контролируемым».

Сильные стороны МО с учителем — простота и лёгкость структуры. Такая система полезна при прогнозировании возможного ограниченного набора результатов, разделении данных на категории или объединении результатов двух других алгоритмов МО. Однако маркировка миллионов немаркированных наборов данных является сложной задачей [3].

Маркировка данных — это процесс категоризации входных данных с соответствующими им определёнными выходными значениями. Помеченные обучающие данные необходимы для обучения с учителем. Например, миллионы изображений яблок и бананов должны быть помечены словами «яблоко» или «банан». Это делается для того, чтобы НС могла использовать эти обучающие данные, чтобы угадывать название фрукта по его изображению [3]. Пример такой операции показан на рисунке 1.

-3

Рисунок 1 – Пример маркировки данных

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

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

-4

Рисунок 2 – Общая схема системы обучения «с учителем»

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

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

К числу алгоритмов обучения с учителем для решения задач классификации относятся:

- деревья решений;

- машины опорных векторов;

- байесовский классификатор;

- линейный дискриминантный анализ;

- метод k-ближайших соседей.

Алгоритмами обучения с учителем для решения задачи регрессии являются:

- линейная регрессия;

- логистическая регрессия;

- нейронные сети.

Это деление является нестрогим поскольку, например, НС могут быть адаптированы для классификации, а некоторые виды деревьев решений позволяют производить численное предсказание [4].

3 модель VGG16 ДЛЯ РАЗРАБОТКИ СИСТЕМЫ

РАСПОЗНАВАНИЯ НАЛИЧИЯ ПАТОЛОГИИ СОСТОЯНИЯ

МИКРОЦИРКУЛЯЦИИ ЧЕЛОВЕКА

VGG16 — модель свёрточной нейронной сети (далее - СНС), предложенная Кареном Симоняном и Эндрю Зиссерманом из Оксфордского университета в статье «Very Deep Convolutional Networks for Large-Scale Image Recognition». Модель достигает точности 92.7% при тестировании на «ImageNet» в задаче распознавания объектов на изображении. Эта выборка состоит из более чем 14 миллионов изображений, принадлежащих к 1000 различным классам [5].

VGG16 — одна из самых знаменитых моделей, отправленных на соревнование ILSVRC-2014. Она является улучшенной версией «AlexNet, в которой заменены большие фильтры (размерами 11 × 11 и 5 × 5 в первом и втором свёрточных слоях, соответственно) на несколько фильтров размера 3 × 3, следующих один за другим.

2D архитектура этой модели представлена ниже на рисунке 3, а более подробная 3D архитектура представлена на рисунке 4.

-5

Рисунок 3 – 2Dархитектура VGG16

-6

Рисунок 4 – 3D архитектура VGG16

На вход слоя Сonv1-1, изображённого на рисунке 9, подаются изображения размером 224 × 224. Далее изображения проходят через стек свёрточных слоёв (на рисунке 10 - convolution + ReLU), в которых используются фильтры с очень маленьким рецептивным полем размера 3 × 3 (который является наименьшим размером для получения представления о том, где находится право/лево, верх/низ, центр) [5].

После стека свёрточных слоёв идут три полносвязных слоя (на рисунке 10 - fully connected + ReLU): первые два имеют по 4096 каналов, третий — 1000 каналов. Так как в соревновании ILSVRC требовалось классифицировать объекты по 1000 категориям; следовательно, классу соответствовал один канал. Последним идёт, как показано на рисунке 10, softmax слой. Softmax — это то, насколько сеть уверена в том, что определённое изображение принадлежит к определённому классу [5].

Все скрытые слои снабжены функцией ReLU (англ. Rectified Linear Unit), которая возвращает 0, если она принимает отрицательный аргумент, и возвращает само число, если же аргумент положителен. К сожалению, модель VGG16 не содержит слоя нормализации (англ. Local Response Normalisation).

При этом VGG16 имеет два серьёзных недостатка:

1) Очень медленная скорость обучения;

2) Сама архитектура сети весит слишком много (появляются проблемы с пропускной способностью).

Из-за глубины и количества полносвязных узлов, VGG16 весит более 533 МБ. Это делает процесс её развёртывания утомительной задачей, поэтому меньшие архитектуры будут более предпочтительны, например, SqueezeNet или GoogLeNet. Однако, несмотря на эти недостатки, данная модель является отличным строительным блоком для обучения, так как её легко реализовать [5].

4 ФОРМИРОВАНИЕ И ПОДГОТОВКА ДАННЫХ ДЛЯ РАЗРАБОТКИ СИСТЕМЫ РАСПОЗНАВАНИЯ НАЛИЧИЯ ПАТОЛОГИИ

СОСТОЯНИЯ МИКРОЦИРКУЛЯЦИИ ЧЕЛОВЕКА

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

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

Для капилляроскопии глаз пациентов использовался капилляроскоп «ОКО», представленный на рисунке 5. Капилляроскоп «ОКО» представляет из себя офтальмологический видеомикроскоп, состоящий из регистрирующего устройства — цифровой скоростной монохромной видеокамеры со скоростью съемки 100 кадров в секунду, системы фокусировки и позиционирования, позволяющей увеличивать фиксируемое изображение в 200 раз, системы фиксации головы пациента и системы освещения. Записанный видеофрагмент, который может быть разбит на фотографии, используется для обработки и вычисления параметров микроциркуляции и строения капилляров. При этом определяются следующие параметры:

1. Линейная скорость кровотока в артериолах и венулах в мкм/сек;

2. Стаз движения эритроцитов;

3. Наличие сладжей эритроцитов;

4. Величину артериоло-венулярного соотношения диаметров [6].

-7

Рисунок 5 – Капилляроскоп «ОКО»

Для формирования общей выборки нам было предоставлено 496 фотографий состояний микроциркуляции людей: с наличием патологии и с условной нормой, сделанных при помощи капилляроскопа «ОКО». Далее, из общей выборки мы сформировали обучающую выборку объемом в 366 фотографии, которая содержит 248 изображений состояний микроциркуляции с наличием патологии и 118 — с условной нормой. Из остальных 130 фотографий мы составили контрольную выборку, где 95 фотографий состояний микроциркуляции с наличием патологии и 35 — с условной нормой. Схема формирования данных показана ниже на рисунке 6.

-8

Рисунок 6 – Схема формирования обучающей и контрольной выборок

Исходные изображения были в формате .bmp и имели разрешение 960 × 720 пикселей. Чтобы изображения имели нужные характеристики для входных данных, мы использовали язык программирования Pythonдля их обработки. Для этого мы использовали библиотеку PIL. Обработка изображений происходит с помощью функций, описанных в файле convert.py. Код этого файла представлен в приложении Б.

5 РАЗРАБОТКА СИСТЕМЫ РАСПОЗНАВАНИЯ НАЛИЧИЯ

ПАТОЛОГИИ СОСТОЯНИЯ МИКРОЦИРКУЛЯЦИИ ЧЕЛОВЕКА

5.1 Система распознавания образов

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

Распознавание объектов — это метод компьютерного зрения для идентификации объектов на изображениях или видео. Распознавание объектов является основным результатом алгоритмов глубокого и машинного обучения. При просмотре фотографий или видео, человек может легко распознать людей, предметы, сцены и визуальные детали. Цель состоит в обучении компьютера делать то, что естественно для людей: достичь уровня понимания того, что содержит изображение [7].

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

Задача распознавания объектов является основной в большинстве интеллектуальных систем. Рассмотрим примеры интеллектуальных компьютерных систем.

- символьное распознавание (буквы, цифры);

- машинное зрение;

- медицинская диагностика;

- распознавание речи;

- распознавание лиц;

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

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

1) Какими общими характеристиками и свойствами обладают объекты исследования и чем они различаются;

2) Если необходимые характеристики могут быть получены в результате измерений, какова точность этих измерений;

3) Существует ли подходящая модель (модели) для формального описания и анализа данных характеристик.

На основании проведённых исследований определяется тип и структура системы распознавания [8]. Ниже, на рисунке 7, представлена общая схема разработки системы распознавания объектов.

-9

Рисунок 7 – Общая схема разработки системы распознавания объектов

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

5.2 Система распознавания изображений

Распознавание изображений — информационная технология, созданная для получения и понимания фотографий реального мира, их преобразования в цифровую информацию для дальнейшей обработки и анализа. В эту область вовлечены ГО, расширение базы знаний, интеллектуальный анализ данных, распознавание образов [9].

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

-10

Рисунок 8 – Пример структуры многослойной НС

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

На сегодняшний день лучшие результаты в распознавании изображений получают с помощью свёрточных нейронных сетей. В среднем точность распознавания таких сетей превосходит обычные ИНС на 10-15%. СНС — это ключевая технология ГО. Более детальное описание НС этого типа будет представлено далее.

Алгоритм распознавания изображений (также известный как классификатор изображений) принимает изображение (или фрагмент изображения) в качестве входных данных и выводит то, что содержит изображение. Другими словами, вывод — это метка класса (например, «кошка», «собака», «таблица» и т.д.) [11].

5.3 Свёрточные нейронные сети в системе

распознавания изображений

Свёрточная нейронная сеть — специальная архитектура ИНС, предложенная Яном Лекуном в 1988 году и нацеленная на эффективное распознавание образов. Она входит в состав технологий глубокого обучения [12].

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

1) Локальные рецепторные поля (обеспечивают локальную двумерную связность нейронов);

2) Общие синаптические коэффициенты (обеспечивают детектирование некоторых черт в любом месте изображения и уменьшают общее число весовых коэффициентов);

3) Иерархическая организация с пространственными подвыборками.

На данный момент СНС и её модификации считаются лучшими по точности и скорости алгоритмами нахождения объектов на изображениях или видео. Начиная с 2012 года, этот тип нейросетей занимает первые места на известном международном конкурсе по распознаванию образов ImageNet Large Scale Visual Recognition Challenge (ILSVRC) [13].

Главной особенностью СНС является «свёртка». Суть этой операции состоит в том, что каждый фрагмент изображения умножается на ядро — матрицу весовпоэлементно, после чего результат суммируется и записывается в аналогичную позицию выходного изображения. Таким образом, изображение, свёрнутое с неким ядром, даст нам уже другое изображение, каждый пиксель которого будет означать степень похожести фрагмента изображения на фильтр. Ниже, на рисунке 9 показан пример такой операции.

-11

Рисунок 9 - Пример свёртки двух матриц размера 5 × 5 и 3 × 3

СНС состоит из трёх основных видов слоёв, изображённых на рисунке 10:

1) Свёрточные слои (convolutional);

2) Субдискретизирующие слои (pooling);

3) Полносвязный слой (full connection).

-12

Рисунок 10 - Архитектура свёрточной нейронной сети

Первый слой СНС (на рисунке 10 - Input) принимает все пиксели изображения. После того, как все данные введены в сеть, к изображению применяются различные фильтры, которые формируют понимание различных частей изображения. Это извлечение признаков, которое создает «карты признаков». Этот процесс извлечения признаков из изображения выполняется с помощью свёрточного слоя (на рисунке 10 - Conv). Операция свёртки просто формирует представление части изображения [14].

Размер фильтра влияет на то, сколько пикселей проверяется за один раз. Общий размер фильтра равен 3, и он охватывает как высоту, так и ширину, поэтому фильтр проверяет область пикселей 3 × 3.

В то время как размер фильтра покрывает высоту и ширину фильтра, глубина фильтра также должна быть указана. Дело в том, что цифровые изображения отображаются в виде высоты, ширины и некоторого значения RGB (англ. Red, Green, Blue), которое определяет цвет пикселя, поэтому отслеживаемая «глубина» — это количество цветовых каналов, которые имеет изображение. Изображения в градациях серого (бесцветные) имеют только 1 цветной канал, в то время как цветные изображения имеют глубину в 3 канала. Это означает, что для фильтра размером в 3, примененного к полноцветному изображению, итоговые размеры этого фильтра будут 3 × 3 × 3 [14].

Для каждого пикселя, охватываемого этим фильтром, сеть умножает значения фильтра на значения самих пикселей, чтобы получить числовое представление этого пикселя. Затем этот процесс выполняется для всего изображения, чтобы получить полное представление. Фильтр перемещается по остальной части изображения в соответствии с параметром, называемым «шаг», который определяет, на сколько пикселей должен быть перемещен фильтр после того, как он вычислит значение в своей текущей позиции. Обычный размер шага равняется двум [14].

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

После того, как карта признаков изображения была создана, значения, представляющие изображение, передаются через функцию активации. Функция активации принимает эти значения, которые благодаря свёрточному слою находятся в линейной форме (то есть просто список чисел) и увеличивает их нелинейность, поскольку сами изображения являются нелинейными. Типичной функцией активации, используемой для достижения этой цели, является выпрямленная линейная единица (англ. ReLU) [14].

После активации данные отправляются через объединяющий слой (на рисунке 10 - Pool). Объединение «упрощает» изображение: берёт информацию, которая представляет изображение, и сжимает её. Процесс объединения делает сеть более гибкой и способной лучше распознавать объекты и изображения на основе соответствующих функций [14].

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

изображения, которые действительно представляют суть рассматриваемого объекта. Это помогает предотвратить «переобучение» — когда сеть слишком хорошо изучает все аспекты учебного примера и уже не может обобщать новые данные, поскольку учитывает нерелевантные отличия [14].

Существуют различные способы объединения значений, но чаще всего используется максимальное объединение (англ. Max Pooling). Максимальное объединение подразумевает взятие максимального значения среди пикселей в пределах одного фильтра (в пределах одного фрагмента изображения). Это отсеивает информации, при условии использования фильтра размером 2 × 2. Пример выполнения такого вида объединения изображён на рисунке 11.

-13

Рисунок 11 - Формирование новой карты на основе предыдущей карты с помощью Max Pooling

Максимальные значения пикселей используются для того, чтобы учесть возможные искажения изображения, а количество параметров (размер изображения) уменьшены, чтобы контролировать переобучение. Существуют и другие принципы объединения, такие как среднее (англ. Average Pooling) или суммарное объединение (англ. Total Pooling), но они используются не так часто, поскольку максимальное объединение даёт наибольшую точность [14].

Конечные слои СНС представляют собой плотно связанные слои (на рисунке 10 - FC) или ИНС. Основной функцией ИНС является анализ входных признаков и объединение их в различные атрибуты, которые помогут в классификации. Эти слои образуют наборы нейронов, которые представляют различные части рассматриваемого объекта, а набор нейронов может представлять собой, например, висячие уши собаки или красноту яблока. Когда достаточное количество этих нейронов активируется в ответ на входное изображение, то оно будет классифицировано как объект. Пример структуры ИНС изображён ниже на рисунке 12.

-14

Рисунок 12 - Пример структуры ИНС

Ошибка или разница между рассчитанными значениями и ожидаемым значением в обучающем наборе рассчитывается с помощью ИНС. Затем сеть подвергается методу обратного распространения ошибки, где рассчитывается влияние данного нейрона на нейрон в следующем слое и затем его влияние (вес) корректируется. Это сделано для оптимизации производительности модели. Этот процесс повторяется снова и снова: так сеть обучается на данных и изучает связи между входными признаками и выходными классами [14].

Нейроны в средних полносвязных слоях будут выводить двоичные значения, относящиеся к возможным классам. Если у вас есть 4 класса (например, собака, машина, дом и человек), нейрон будет иметь значение «1» для класса, который представляет изображение, и значение «0» для других классов.

Конечный полносвязный слой (на рисунке 10 - Output), получив выходные данные предыдущего слоя, присваивает вероятность каждому из классов в пределах единицы (в совокупности). Если категории «собака» присвоено значение 0.75 — это означает 75% вероятность того, что изображение является собакой.

6 АНАЛИЗ РЕЗУЛЬТАТОВ СИСТЕМЫ РАСПОЗНАВАНИЯ

НАЛИЧИЯ ПАТОЛОГИИ СОСТОЯНИЯ МИКРОЦИРКУЛЯЦИИ

ЧЕЛОВЕКА

6.1 Анализ качества обучения системы

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

Таблица 3 - Результаты качества обучения

-15

Анализируя результаты, можно сделать вывод, что наша модель хорошо обучилась — она имеет оценку в 93.5% обучения.

6.2 Анализ качества распознавания системы

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

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

Программный код модели находится в приложении А.

Таблица 4 - Результаты распознавания

-16

ЗАКЛЮЧЕНИЕ

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

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

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

В конце работы мы обучили и протестировали нашу модель: VGG16.

В процессе работы нами были освоены такие библиотеки языка программирования Python, как Keras и Matplotlib. Мы научились с ними работать и применять их в глубоком обучении.

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

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

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1 Keras [Электронный источник]. – 2018. – URL: https://blog.skillfactory.ru/glossary/keras/ (дата обращения: 02.03.2023).

2 Абрагин А.В. Перспективы развития и применения нейронных сетей//Современные проблемы науки и образования. – 2015. – N 12. – С. 12-15.

3 Что такое машинное обучение? [Электронный ресурс]. – 2021. – URL: https://aws.amazon.com/ru/what-is/machine-learning/ (дата обращения: 07.03.2023).

4 Обучение с учителем (Supervised learning) [Электронный ресурс]. – 2019. – URL: https://wiki.loginom.ru/articles/supervised-learning.html (дата обращения: 06.03.2023).

5 Муаль М. Н. Б. Использование предобученной нейросети (VGG16) для решения задачи переноса стиля изображения//Modern Information Technologies and IT-Education. – 2022. – Vol. 18, No. 2. P. 241-248.

6 Хейло Т.С., Назаренко Г.Б. Капилляроскопия в комплексном лечении сетчатки и зрительного нерва// Современные технологии в офтальмологии. - 2019. - N 3. - C. 197-200.

7 Object Recognition. 3 things you need to know [Электронный ресурс]. – 2020. – URL: https://ch.mathworks.com/solutions/image-video-processing/object-recognition.html (дата обращения: 04.03.2023).

8 Чабан Л.Н., Теория и алгоритмы распознавания образов. Учебное пособие. – М.: МИИГАиК, 2004. – 70 с.

9 Система распознавания изображений [Электронный ресурс]. – 2021. – URL: https://polygant.net/ru/ai/sistema-raspoznavaniya-izobrazhenij/ (дата обращения: 03.03.2023).

10 Что такое распознавание изображений AI и как оно работает? [Электронный ресурс]. – 2022. – URL: https://ru.shaip.com/blog/what-is-ai-image-recognition-and-how-does-it-work/ (дата обращения: 04.03.2023).

11 Image Recognition and Object Detection : Part 1 [Электронный ресурс]. – 2016. – URL: https://learnopencv.com/image-recognition-and-object-detection-part1/ (дата обращения: 04.03.2023).

12 Lecun, Y., Boser, B., Denker, J. S., Henderson, D., Howard, R. E., Hubbard, W., Jackel, L. D. Backpropagation applied to handwritten zip code recognition//Neural Computation. – 1989. – Vol. 1, No. 4. P. 541-551.

13 Сверточная нейронная сеть, часть 1: структура, топология, функции активации и обучающее множество. [Электронный ресурс]. – 2018. – URL: https://habr.com/ru/post/348000/ (дата обращения: 05.03.2023).

14 Распознавание изображений на Python с помощью Tensorflow и Keras [Электронный ресурс]. – 2020. – URL: https://evileg.com/ru/post/619/ (дата обращения: 06.03.2023).

ПРИЛОЖЕНИЕ А

from os import listdir

import matplotlib.pyplot as plt

from keras.preprocessing.image import ImageDataGenerator

from keras.layers import Dropout, Flatten, Dense

from keras.applications import VGG16

from keras.models import Sequential

from keras.optimizers import Adam

import keras.utils as image

def result(dir, true, pred1, pred2, model): #функция, выводящая результат распознавания каждого изображения в каждой папке контрольной выборки

count_bolen = 0

count_zdorov = 0

img_dir = listdir(dir)

for file in img_dir: #перебор файлов в папке

img = image.load_img(dir + '/' + file, target_size=(399, 399)) #загрузка изображения

x = image.img_to_array(img)

x = x.reshape(1, 399, 399, 3)

x /= 255

prediction = model.predict(x) #обработка нейросетью

if (prediction[0][0] < (0.5)): #вывод результата в зависимости от успешности распознавания

if (true == 'zdorov'):

count_zdorov += 1; #счётчик ошибок "здоровых" (якобы больных)

show(pred1, prediction[0][0], img) #болен

else:

if (true == 'bolen'):

count_bolen += 1 #счётчик ошибок "больных" (якобы здоровых)

show(pred2, prediction[0][0], img) #здоров

print('Якобы здоровых: ', count_bolen)

print('Якобы больных: ', count_zdorov)

def show(title, pred, img): #функция показа результата распознавания с помощью библиотеки matplotlib

plt.imshow(img.convert('RGBA'))

plt.title(title + str(pred))

plt.show()

train_dir = 'train' #установка путей к обучающей и контрольной выборкам

test_dir = 'test'

img_width, img_height = 399, 399 #размеры для изображений

input_shape = (img_width, img_height, 3)

batch_size = 45 #размер мини-выборки

vgg16_net = VGG16(weights='imagenet', include_top=False, input_shape=(399, 399, 3)) #импорт модели VGG16 (загружаем веса "ImageNet")

vgg16_net.trainable = False

vgg16_net.summary()

model = Sequential() #немного кастомизируем модель VGG16, добавляя некоторые слои

model.add(vgg16_net)

model.add(Flatten())

model.add(Dense(256, activation='relu')) #полносвязный слой

model.add(Dropout(0.5)) #Dropout для предотвращения переобучения

model.add(Dense(1, activation='sigmoid'))

model.summary()

model.compile( #компилируем нашу модель

loss='binary_crossentropy',

optimizer=Adam(learning_rate=1e-5),

metrics=['accuracy'])

datagen = ImageDataGenerator(rescale=1./255)

train_generator = datagen.flow_from_directory( #генератор для обучающей выборки

train_dir,

target_size=(img_width, img_height),

batch_size=batch_size,

class_mode='binary')

test_generator = datagen.flow_from_directory( #генератор для контрольной выборки

test_dir,

target_size=(img_width, img_height),

batch_size=batch_size,

class_mode='binary')

model.fit( #обучение модели

train_generator,

steps_per_epoch=train_generator.n // batch_size,

epochs=35,

validation_data=test_generator,

validation_steps=test_generator.n // batch_size)

accuracy = model.evaluate(test_generator) #распознавание контрольной выборки

print("Результат: ", accuracy[1])

result('test/bolen', 'bolen', 'Патология -> ', 'Якобы условная норма -> ', model)

result('test/zdorov', 'zdorov', 'Якобы патология -> ', 'Условная норма -> ', model)

ПРИЛОЖЕНИЕ Б

from os import listdir, remove, rename

from PIL import Image

from glob import glob

def compress_img(dir, quality=100, width=399, height=399):

for file in dir:

img = Image.open(dir + '/' + file)

img = img.resize((width, height), Image.ANTIALIAS)

try:

img.save(dir + '/' + file, quality=quality, optimize=True)

except OSError:

img = img.convert("RGB")

img.save(dir + '/' + file, quality=quality, optimize=True)

def delete(dir):

for file in dir:

remove(file)

def convert_images(dir, name):

i = 0

for file in dir:

img = Image.open(dir + '/' + file)

rgb_img = img.convert('RGB')

rgb_img.save(dir + '/' + file.replace("bmp", "jpg"), quality=100)

new_name = name + str(i) + '.bmp'

i += 1

rename(dir + '/' + img, dir + '/' + new_name)

train_zdorov_dir = listdir('train/zdorov')

train_bolen_dir = listdir('train/bolen')

test_zdorov_dir = listdir('test/zdorov')

test_bolen_dir = listdir('test/bolen')

train_dir = glob('train/**/*.bmp', recursive=True)

test_dir = glob('test/**/*.bmp', recursive=True)

compress_img(train_zdorov_dir)

compress_img(train_bolen_dir)

compress_img(test_zdorov_dir)

compress_img(test_bolen_dir)

convert_images(train_zdorov_dir, 'zdorov.')

convert_images(train_bolen_dir, 'bolen.')

convert_images(test_zdorov_dir, 'zdorov.')

convert_images(test_bolen_dir, 'bolen.')

delete(train_dir)

delete(test_dir)

ПРИЛОЖЕНИЕ В

-17

Рисунок В.1 – Процесс обучения модели VGG16 («accuracy» – оценка обучения, а «val_accurancy» – оценка распознавания контрольной выборки)

-18

Рисунок В.2 – Конечные результаты обучения и распознавания контрольной выборки

ПРИЛОЖЕНИЕ Г

-19

Рисунок Г.1 – Пример неправильно распознанных изображений состояний микроциркуляции

(слева – с патологией, справа – с условной нормой)

-20

Рисунок Г.2 – Пример правильно распознанных изображений состояний микроциркуляции

с условной нормой

-21

Рисунок Г.3 – Пример правильно распознанных изображений состояний микроциркуляции с патологией