Исследование и разработка методов и алгоритмов повышения быстродействия обработки больших объемов видеоданных, полученных с БПЛА тема диссертации и автореферата по ВАК РФ 00.00.00, кандидат наук Хейн Хтет Зо
- Специальность ВАК РФ00.00.00
- Количество страниц 175
Оглавление диссертации кандидат наук Хейн Хтет Зо
ВВЕДЕНИЕ
Глава 1 Анализ современных средств обработки больших объемов данных, полученных с беспилотных летательных аппаратов
1.1Анализ принципов обработки видеоизображений, получаемых с БПЛА
1.2 Анализ используемых методов распознавания объектов в видеопотоке
1.3 Сравнительный анализ нейронных сетей для классификации и выделения объектов
1.4 Анализ существующих программных средств обработки больших данных, поступающих в процессе съемки с БПЛА
1.5 Анализ существующих методик планирования выполнения потоков обработки больших данных
1.6 Постановка задач диссертации
Выводы по главе
Глава 2. Разработка методов и алгоритмов детектирования и распознавания объектов в видеопотоках, полученных с БПЛА
2.1. Разработка метода выделения однородных областей на изображении и вычисления дескрипторов ключевых точек
2.2 Разработка математической модели обнаружения объектов в видеопотоке
2.3 Разработка модели и алгоритма распознавания объекта в видеопотоке
Выводы по главе
Глава 3. Разработка моделей и алгоритмов обработки больших объемов данных
3.1 Формализованное представление обработки больших объемов данных на основе теории массового обслуживания
3.2 Разработка алгоритмов планирования потоков обработки больших объемов данных
3.3 Разработка методики планирования обработки больших объемов видеоданных
Выводы по главе
Глава 4. Программная реализация и оценка эффективности разработанных методов и алгоритмов повышения быстродействия обработки больших объемов видеоданных, полученных с БПЛА
4.2 Программная реализация разработанных алгоритмов планирования обработки больших объемов видеоданных
4.3 Оценка эффективности программного модуля планирования обработки больших объемов видеоданных
Выводы по главе
Заключение
Список литературы
ПРИЛОЖЕНИЕ
ПРИЛОЖЕНИЕ
ВВЕДЕНИЕ
Рекомендованный список диссертаций по специальности «Другие cпециальности», 00.00.00 шифр ВАК
Исследование нейросетевых алгоритмов обнаружения объектов на видеоизображениях в медицинских системах прикладного телевидения2022 год, кандидат наук Лебедев Антон Александрович
Вычислительный метод и алгоритмы нейро-нечеткого распознавания людей, транспортных средств и ситуаций на основе видеонаблюдения2019 год, кандидат наук Жиганов Сергей Викторович
Технология подготовки изображений лиц к распознаванию личности в видеопотоке в режиме реального времени на основе компенсации ракурса и трекинга лиц2017 год, кандидат наук Небаба Степан Геннадьевич
Автоматизированные системы научных исследований угроз безопасности личности2023 год, кандидат наук Бабичева Маргарита Вадимовна
Обнаружение объектов видеоряда на основе технологии машинного обучения (на примере лесных пожаров)2023 год, кандидат наук Лаптев Никита Витальевич
Введение диссертации (часть автореферата) на тему «Исследование и разработка методов и алгоритмов повышения быстродействия обработки больших объемов видеоданных, полученных с БПЛА»
Актуальность темы диссертации.
Современные технологии дистанционного контроля и мониторинга, включая использование беспилотных летательных аппаратов (БПЛА), играют все более важную роль в различных областях, таких как геодезия, сельское хозяйство, экология, оборонная промышленность и другие. Высокоэффективная обработка изображений, полученных с помощью БПЛА, связана с получением, анализом и хранением больших объемов данных, и извлечением полезной информации.
В настоящее время очевидна обоснованность и успешность применения БПЛА для задач мониторинга природных и технических объектов. Однако вопросам, связанным с повышением точности и быстродействия обработки больших объемов видеоданных, полученных в ходе съемки, должного внимания не уделялось.
Существующие на данный момент алгоритмические и программные решения по регистрации и обработке видеосигнала, в основном, используют подход распределенной сети, то есть обеспечивают масштабируемость и доступность обработки получаемого видеопотока, но за счет существования единого центра обработки данных требуют большой пропускной способности канала обмена, что накладывает высокие требования на обеспечение поддержки функционирования канала и поддержание работоспособности центра обработки данных.
Вопросами создания методв и алгоритмов обработки видеоданных, создании моделей детектирования и распознавания объектов в потоковом видео занимались российские и зарубежные ученые John Johnston, А.И. Попович, Jong-Hyeon Kim, Agnieszka Rowniak, Сойфер B.A., Потапов A.A., Пахомов A.A., Никитин С.А., Я.А. Фурман, Jain P., Shandliy V., Szeliski R., Levin A. , Zomet A., Peleg S. и многие другие.
В настоящее время алгоритмы SIFT и SURF являются одними из наиболее популярных в задачах детектирования и обработки изображений. Они достаточно эффективны при поиске и сопоставлении характерных точек, однако при наличии поворотов, масштабных изменений или искажений в изображениях их использование нецелесообразно. Для улучшения процесса сопоставления и уменьшения вероятности ошибок можно применить комбинированные методы, которые используют не только информацию о характерных точках, но и о их окружении, взаиморасположении и других признаках изображений. Например, можно сочетать алгоритмы SIFT или SURF с методами глубокого обучения, такими как CNN (Convolutional Neural Networks), для более точного и надежного сопоставления объектов на изображениях. Также важно проводить предварительную обработку изображений, такую как фильтрацию шума, улучшение контраста и яркости, чтобы улучшить качество характерных точек и сделать процесс сопоставления более стабильным.
Метод скользящего окна, хоть и является одним из наиболее распространенных методов детектирования объектов, имеет свои ограничения, особенно в плане времени выполнения. Для увеличения производительности этого метода могут быть применены различные подходы, но каждый из них имеет свои ограничения в зависимости от конкретной задачи и алгоритма идентификации объектов. В современном мире, с развитием технологий искусственного интеллекта, становится все более важным использование более эффективных средств для идентификации и детектирования объектов на изображениях. Методы искусственного интеллекта, такие как нейронные сети и глубокое обучение, могут быть использованы для решения этих задач более эффективно и точно. Такие подходы позволяют автоматически извлекать признаки изображений и обучать модели для распознавания объектов с высокой точностью. Таким образом, для более эффективного решения проблемы идентификации и детектирования объектов на изображениях
рекомендуется использовать современные методы искусственного интеллекта, которые позволяют достичь более точных и быстрых результатов.
Еще одной важной проблемой, связанной с обработкой видеоизображений, полученных с БПЛА, является организация передачи и хранения данных. Планирование ЕТЬ-процессов и потоков обработки данных является важной частью процесса обработки больших объемов данных. Правильное планирование позволяет минимизировать время выполнения задач, улучшить качество данных и повысить эффективность процесса обработки данных в целом. Основными недостатками стандартных решений являются большие трудозатраты со стороны разработчика при ручном планировании, а так же формирование расписания без учета загрузки кластеров, что привод к неравномерной нагрузке на кластер и неоптимальному использованию вычислительных ресурсов.
Таким образом, актуальной является проблема повышения быстродействия обработки больших объемов данных за счет реализации методики и алгоритма планирования потоков обработки данных с использованием специализированных средств.
т-ч и и
В этой связи актуальным является проведение исследований, направленных на разработку методов и алгоритмов, обеспечивающих повышение эффективности обработки больших объемов видеоданных, полученных с БПЛА, отличающихся высоким быстродействием, а также повышенной точностью распознавания.
Объектом исследования являются процессы обработки больших объемов видеоданных, полученных с БПЛА
Предметом исследования являются модели и алгоритмы, позволяющие повысить эффективность обработки больших объемов видеоданных, полученных с БПЛА.
Целью диссертационной работы является повышение эффективности
процессов получения, обработки и хранения большого объема видеоданных за
счет создания моделей и алгоритмов детектирования объектов, архитектур
6
нейронных сетей, а также методов планирования ЕТЬ-процессов и формирования расписаний обработки потоков данных.
Для выполнения поставленной в работе цели необходимо решение следующих основных задач:
- анализ методов, алгоритмов и программных средств распознавания объектов видеоизображений и обработки больших данных, поступающих в процессе съемки с БПЛА;
-разработка методов и алгоритмов детектирования и распознавания объектов в видеопотоках, полученных с БПЛА;
- разработка моделей и алгоритмов обработки больших объемов данных;
-программная реализация и проведение экспериментальных исследований
по оценке эффективности предложенных методов и алгоритмов.
Методы исследования. В ходе проведения диссертационных исследований были использованы основы теории обработки изображений, методы нейросетевой обработки сигналов, основы теории массового обслуживания, методы математического моделирования и парадигмы объектно-ориентированного программирования.
В ходе проведения диссертационных исследований получены следующие новые научные результаты.
1. Разработан метод поиска однородных областей и вычисления дескрипторов ключевых точек, основанный на построении усеченных пирамид иерархически огранизованных видеоданных и обеспечивающий значительное повышение быстродействия процессов сегментации.
2. Разработан алгоритм распознавания объектов в видеопотоке, который состоит из двух блоков: блока генерирования гипотез, который формирует карту признаков F, содержащую М сгенерированных гипотез и их оценки по классам, а также блока поиска результирующих детекций и их классов.
3. Разработан метод подготовки данных для обучения нейронной сети
и алгоритмы нейросетевой обработки, основанные на применении
7
модифицированных сверточных нейроных сетей YOLO5 и блочной декомпозиции сети на обобщающую и набор идентифицирующих сетей с использованием эвристики оценки разности количества выходных классов.
4. Разработаны алгоритмы и методика планирования потоков обработки больших объемов данных, основанные на сборе информации по загрузке кластера для дальнейшего формирования расписания, включающего время готовности источников, для которых требуется валидация, ограничений по времени готовности, рассчитываемых витрин и загрузки кластеров.
Теоретическая и практическая значимость работы заключается в том, что предложенные методы и алгоритмы обеспечивают повышение эффективности процессов получения, обработки и хранения большого объема видеоданных.
Разработан алгоритм распознавания объектов на видеоизображениях , который состоит из двух блоков: блока генерирования гипотез, формирующего карту признаков F, содержащую M сгенерированных гипотез и блока поиска результирующих детекций и их классов, который осуществляется с помощью алгоритма Non-Maximum Suppression.
Предложен метод распознавания объектов изображения, основанный эвристическом способе разделения сверточной нейронной сети на блоки, обеспечивающий повышение быстродействия идентификации объектов
Разработан метод поиска и иерархической организации последовательности однородных областей, основанный на построении усеченных пирамид изображений по исходному видеокадру и обеспечивающий значительное повышение быстродействия процессов сегментации.
Разработаны архитектуры нейронных сетей, основанные на модификации нейросети YOLO5 и блочной декломпозиции, которые обеспечивает уменьшение времени обработки одного кадра видеоизображения в среднем в 2,52 раза по сравнению со стандартной сетью CenterNet, при этом точность распознавания уменьшается всего на 0,09%.
Разработаны программные модули детектирования и распознавания объектов, а также планирования обработки больших объемов видеоданных.
Достоверность исследований подтверждается результатами испытаний, подтвердившими высокую эффективность разработанных методов и алгоритмов, которые определяются повышением быстродействия процессов получения, обработки и хранения большого объема видеоданных, полученных с БПЛА.
Личный вклад автора. Все основные результаты диссертационной работы получены автором лично.
Реализация и внедрение полученных результатов.
Результаты проведенных диссертационных исследований внедрены в Научно-исследовательскую работу по теме " Разработка и создание универсальной открытой программно-аппаратной платформы для проектирования устройств обработки потокового видео для беспилотных летающих аппаратов мониторинга экологической ситуации и состояния природных объектов" (шифр заявки «2019-05-576-0001-004») и учебный процесс института СПИНТех. Акты внедрения прилагаются
Основные положения, выносимые на защиту:
• Алгоритм нейросетевой обработки, основанный на применении модифицированных сверточных нейроных сетей YOLO5 и блочной декомпозиции сети на обобщающую и набор идентифицирующих сетей с использованием эвристики оценки разности количества выходных классов.
• Алгоритмы и методика планирования потоков обработки данных, основнные на моделировании обработки запросов кластера в соответствии с моделью системы массового обслуживания и формировании расписаний на основе временных параметров готовности источников, для которых требуется валидация.
• Метод выделения однородных областей изображений, основанный на иерархическом представлении изображения в виде усеченной пирамиды,
обеспечивающий значительное повышение быстродействия процессов сегментации.
• Метод подготовки данных для обучения нейронной сети и архитектура нейронных сетей, основанных на модификации нейросети YOLO5 и блочной декомпозиции, которые обеспечивают уменьшение времени обработки одного кадра видеоизображения в среднем в 2,52 раза по сравнению со стандартной сетью CenterNet, при этом точность распознавания уменьшается всего на 0,09%.
Апробация и внедрение результатов работы.
Основные положения диссертационной работы были апробированы на следующих конференциях: Всероссийская межвузовская научно-техническая конференция «Микроэлектроника и информатика ». (2023 г.). Всероссийская научно-практическая конференция «Актуальные проблемы информатизации в науке и образовании» ( 2015, 2019, 2021, 2023 гг.). IEEE Russia Section Young Researchers in Electrical and Electronic Engineering Conference, ElConRus. (2019, 2021, 2024 гг.) International Conference on Industrial Engineering, Applications and Manufacturing (ICIEAM) (2023 г).
Публикации. По результатам исследований опубликовано 16 печатных научных работ, в том числе четыре статьи в журналах из перечня российских рецензируемых научных журналов, в которых должны быть опубликованы основные научные результаты диссертаций на соискание ученых степеней доктора и кандидата наук и 4 публикации, входящие в базы данных Scopus и Web of Science.
Структура и объем работы. Диссертация состоит из введения, 4 глав, заключения, списка литературы из 91 наименований и двух приложений. Общий объем диссертационной работы 175 страницы, включая 14 таблиц и 40 рисунков.
Глава 1. Анализ современных средств обработки больших объемов данных видеоизображений, полученных с беспилотных летательных аппаратов
В настоящее время очевидна обоснованность и успешность применения БПЛА для задач мониторинга природных и технических объектов. Однако вопросам, связанным с повышением точности и быстродействия обработки больших объемов видеоданных, в связи с отсутствием таких задач, должного внимания не уделялось.
Существующие на данный момент алгоритмические и программные решения по регистрации и обработке видеосигнала, в основном, используют подход распределенной сети, то есть обеспечивают масштабируемость и доступность обработки получаемого видеопотока, но за счет существования единого центра обработки данных требуют большой пропускной способности канала обмена, что накладывает высокие требования на обеспечение поддержки функционирования канала и поддержание работоспособности центра обработки данных.
В связи с этим необходимо рассмотреть существующие методы решения задачи обработки и хранения больших объемов видеоданных.
1.1Анализ принципов обработки видеоизображений, получаемых с БПЛА
Первым этапом обработки видеоизображений, получаемых с БПЛА, является фильтрация видеосигнала, которая включает процедуру устранения шумов с целью повышения эффективности последующих этапов обработки. Рассмотрим несколько наиболее популярных алгоритмов фильтрации изображений, описанных в [1-4].
1. Выделение контуров на изображении.
Данный метод применяется для выделения границ, в которых наиболее сильно изменяются характеристики изображения, такие как яркость или контрастность, и для поиска вспомогательных признаков изображения.
Одним из наиболее часто используемых алгоритмов выделения контуров является оператор Собеля [5,6], основанный на нахождении вектора направления возрастания градиента цифрового изображения, который в свою очередь показывает направления изменений яркости изображения. Поиск направлений изменений градиента производится с помощью плавающей квадратной матрицы третьего порядка (Р1 Р2 Р3Л
Р4 Р5 Р6 (1.1)
Р7 Р8 Р9,
ч У
где матрица (1.1) поэлементно (один элемент - это один пиксель) последовательно накладывается на все возможные участки изображения.
Пусть Gx и Gy - это изображения, каждый элемент которых является приближённой производной по х и у
(1.2)
Для того, чтобы вычислить направление изменения яркости в отдельном пикселе с координатами х и у, используется оператор Собеля [7] = (Р7 + 2 * Р8 + Р9) - (Р1 + 2 * Р2 + Р3),
(-1 -2 -11 (-1 0 11
II 0 0 0 , я = -2 0 2
V 1 2 1 У V-1 0 1У
G = (Р3 + 2 * Р6 + Р9) - (Р1 + 2 * Р 4 + Р7)
(1.3)
Далее по формуле (1.4) рассчитывается значение перепада яркости в точке с коодинатами х и у
а = 7 с;2+а; (1.4)
Результатом этого оператора будет вектор, направленный в сторону увеличения яркости изображения, или, если точка находится в области изображения с одинаковой яркостью, то результатом данного оператора будет нулевой вектор.
2. Адаптивное повышение контрастности изображений.
Данный метод применяется для выделения информативных областей
изображения и их специальной обработки [8]. Повышение контрастности
12
можно производить достаточно сложными способами, но наиболее часто
используемым на практике является преобразование снимка A в
высококонтрастное изображение A* следующего типа:
, ч A * - A * ■
VC e{R, G, B}: A * C = - _ A mm (Ac - Amin) + A *min (1.5)
max min
где Amin = min AC(X, y), Amax = max Ac(x, у), а A*min и А*тах -
C,x,y C,x,y
характеристики контрастности. Как правило, выбирают значения A^in = 0 и А* — 255.
max
Адаптивное увеличение контрастности позволяет улучшить визуальные качества кадра для человека, но этот метод никак не улучшает параметры изображения, необходимые для более успешной последующей обработки. К примеру, если дальнейшее изображение будет анализироваться на наличие особых точек, то на нём наоборот необходимо снижать уровень зашумлённости помехами.
3. Оптимальный фильтр Винера.
Для формального определения фильтра Винера введём следующие
обозначения. Пусть Ä - это идеальное изображение, которое не содержит шумов, а А - это реальное изображение, которое является неким
преобразованием идеального, А — Ä + N, где N - параметр зашумления. Для шума реального, идеального и преобразованного изображений введём следующие новые обозначения [9-10].
xlj — Ac(i mod Wj mod H), yj — Ac(i mod Wj mod H),
¿¡—A*c(i mod Wj mod н), n) — Nc(i mod Wj mod н) . (16)
где C — это компонента цвета {R, G, B} (каждый канал определённого
цвета фильтруется отдельно), а оператор «mod» - это остаток от деления чисел.
Следовательно, имеем: Ху ,ylj,Xj ,n'j— это функции периода (6) для
определённых ранее функций Ac, Ас, А*с, Nc, расширяющие изображение размером W*H на всю плоскость.
Определение оценки «хорошего» сигнала, то есть сигнала без шума, производится по формуле:
X' =1 < • X"т
¡-¿^ип-У1 - п (1.7)
т,п
где сумма вычисляется по области [1,W] х [1,Н].
Формула (1.7) - это выражение линейного фильтра с параметрами а™, где т £ [1,W], п £ [1,Н], которые носят название импульсных характеристик данного фильтра. Чтобы применить фильтр Винера, необходимо ввести предположение, что х и у — это некие случайно выбранные величины, при этом импульсные характеристики пт подбирают так, чтобы математическое ожидание погрешности £ = х — х , возведённой в квадрат, для значения х, представляющего собой оценку сигнала, было минимально:
с Г- -1 2 Л
аС} = а^тт Ме2 = а^тт М X -У ат. У~т п у ]-п
V т,п )
(1.8)
Введём следующие формулы Вху(к,1) = М(х] • у]!?) и Ву(к — т,1 — п) = • у)2п)> тогда
M£2 = м((XJi)2) — 2Im,na-•Bxy(m,n)+Im,na-•By(fc — т,1 — п) -квадрат функции \а)} • Таким образом, решение уравнения (8) удовлетворяет
формулам Винера, дифференцированным по параметру а1-:
(Вху(к, 0 = Ето,п а™ • Ву(к — т,1 — n), (1 9)
I к £ [1, Ш], 1 £ [1, Н].
Для того, чтобы решить системы уравнений (1.9) используется быстрое преобразование Фурье [11]. В итоге, получаем следующее соотношение
схуа,]) = а) • суа,]) => А) = (1.10)
где Л),Сху(1,7'),Су(1,7') - параметры функций alj,Bxy(i,j),By(i,j) для быстрого преобразования Фурье.
После формирования и предварительной обработки полученное изображение поступает в блок последующей обработки и распознавания [1214].
1.2 Анализ используемых методов распознавания объектов в видеопотоке
Квадратичный дискриминантный анализ.
Условимся считать, что вектор 1@}=(х1,...,хп} является случайной величиной [15-17]. Предположим также, что внутри каждого класса К
признаки объектов распределены по нормальному закону, т.е. если 1(5) = х,
то х Е Ы(т1, Ш) при условии, что 5 Е К1 (обозначим плотность данного
распределения ш1(х)). Этой информации достаточно, чтобы посчитать по
формуле Байеса условную вероятность для объекта 5 (1(5) = х) принадлежности классу К [18]:
Р(Б Е кит = х) = . (1.11)
4 У Р(Б Е К1) Р(1($) = х) У '
Если событие 1(5) = х интерпретировать как событие хеП, где О-некоторая малая окрестность признака х, то мы получим, что Р(/(5") = х|5" е )= /ПшЬ(х)йх « «¿(х)цП, где цО — мера множества О.
Формула (1.12) преобразуется к виду:
е К, I1 ($) = х) = Щх) ^. (1.12)
Допустим, что объекты каждого класса встречаются с одинаковой частотой, тогда Р(Б Е К() не зависит от класса К^, и значит, согласно формуле (1.12) вероятность Р(Б Е К1)Р(1(Б) = х) максимальна для того класса К^, у которого плотность распределения од максимальна в точке х. Плотность распределения ш^х) вычисляется по формуле:
^ =-¡Г-Техр (--(х- т1)ТЯ-1(х - тА (1.13)
Алгоритм А(10,1(5)) строится следующим образом: 1-ая компонента
вектора аА(5), соответствующая максимуму шах «¿(/(5")), устанавливается равной единице, а оставшиеся компоненты устанавливаются равными нулю.
Так как значения тj и Ri изначально нам не известны, то необходимо произвести их оценку относительно известной информации /0:
mt = 2-iSeKi I(S), (1.14)
Ri=]^T1ZseKi(KS)-mi) (1.15)
где \Ki \ - количество элементов в множестве Kt.
Формулы (1.14) и (1.15) соответствуют подготовке начальных данных для алгоритма A, иначе говоря, обучению алгоритма. На этапе обучения требуется выполнить порядка О (I) операций.
Линейный дискриминантный анализ.
Метод линейного дискриминантного анализа направлен на уменьшение размерности пространства признаков Rn на основе линейной проекции в пространство р . Задается с помощью следующего преобразования:
т
у = VTx, (1.16)
где V — матрица размерности n*m, которая обеспечивает уменьшение размерности признакового пространства c n до m. Правило k ближайших соседей.
Обозначим через V (S) выборку из k ближайших в признаковом пространстве элементов множества L\S по отношению к объекту S, т.е.
= (S±,...,Sk),^e Sj = arg minSleLX[SSi.....s._i} p(S,S'), (1.17)
$') — расстояние между j($) и I(S') в признаковом пространстве ^ . Алгоритм A(I0,I(S)) определяет, что S Е Ki (другими словами, результирующее значение алгоритма aA(S) = где — это символ Кронекера), если выборка У(^) содержит наибольшее количество элементов из
класса Ki. В случае, когда максимум числа элементов в выборке У(^) достигается одновременно для нескольких классов, алгоритм A выдает неопределенный результат [19].
Модель искусственных нейронных сетей.
В настоящее время глубокие нейронные сети становятся одним из наиболее востребованных методов машинного обучения.
Формулы для нейронной сети можно записать в следующем виде:
ik
где — это ¿-ый вес у-го нейрона на fc-ом уровне.
В 1989 году для обучения нейронной сети Ян Лекун использовал метод обратного распространения ошибки [20]. Его сеть состояла из сверточных слоёв с идентичными весами и слоёв под-выборки. Помимо этого, в его работе предложен набор изображений MNIST, который содержит рукописные цифры, ставшие очень популярными в машинном обучении. Глубокие сверточные нейронные сети, обученные распознавать рукописные цифры с помощью метода обратного распространения ошибки, показали очень хорошие результаты [21-23].
Самыми популярными функциями активации сегодня являются функции семейства RELU, поскольку они решают проблему «исчезающего» градиента и ускоряют процесс обучения нейронных сетей [24-25]. Эффективным методом начальной инициализации весов является нормализованная инициализация
[26], при которой начальные значения для весов нейронной сети ^ вычисляются по следующей формуле:
Vë Vë
W-U
(1.19)
где U — это равномерное распределение на каждом из отрезков, Пу — число нейронов на конкретном слое нейронной сети, а Пу+1 — число нейронов на последующем слое. Такой подход приводит к значительному улучшению сигнала распространения ошибки.
Также весьма популярными являются слои пакетной нормализации (так называемые batch normalization), которые значительно повышают качество обучения глубоких нейросетей [27,28]. Такая нормализация производится
17
поэтапно для каждого из пакетов данных (mini-batch), как правило, используются модификации метода стохастического градиентного спуска. Каждый из пакетов в состоит из m входных элементов xt: В = { х1,...,хт].
Нормализованные значения ~ вычисляются по следующей формуле:
Xi
Xj =
_ Xj-ßя
(1.20)
где ,, — среднее значение входных данных в отдельном пакете, _2 —
дисперсия, е — константа, влияющая на стабильность работы метода. Для сохранения данных, выполняется сдвиг и перемасштабирование:
Л = т + Р, (1-21)
где jj — результирующее значение, у и Р — параметры, определяемые по ходу обучения.
С 2014 года, когда компанией Google была представлена новая архитектура нейросетей - Inception [29,30], начинается масштабная популяризация свёрточных нейронных сетей. Представленная сеть содержит совокупность блоков, состоящих из комбинации слоёв свёртки и подвыборки различных размерностей, и существенно снижает вероятность переобучения и число обучаемых параметров сети. Первоначальный вариант такого блока сети Inception представлен на рис. 1.1.
Рис. 1. 1 Блок нейронной сети Google Inception.
На основе представленной архитектуры Google Inception создана и весьма успешно обучена нейросеть GoogLeNet, которая состоит из 22 слоев. Это очень эффективная нейронная сеть для решения задач компьютерного зрения, которая частично используется и в настоящей работе [31].
Видоизменяя архитектуру нейросети и значения весовых коэффициентов нейронов, можно так разделить пространство признаков объектов, что результат работы алгоритма A :
A(lo(K;,...,Kp,Ks)) = aA(S), (1.22)
будет соответствовать значениям нейронной сети на входных признаках
х = I(S). Для построения подобного нейросетевого алгоритма (1.22) и для его обучения, необходимо последовательно выполнить следующие действия:
• Выбрать архитектуру нейронной сети, т.е. задать количество слоев, нейронов и весов.
• С использованием истинных векторов информации О (S) , составить функцию
E(W) = I.seL(Y(I(s),w) — ад)2, (1.23)
и вычислить веса w* = argmin E (w) методом градиентного спуска [32].
• Задать начальные значения весов и пороговые функции активации.
В процессе обучения, заключающегося в минимизации функции ошибки
(1.23), вычисляется порядка O(L*n*I) операций, где n - суммарное число нейронов в сети, I - число итераций. Для решения задачи распознавания нейронной сетью необходимо всего O(n) операций.
В среднем для качественного обучения нейросети необходимо минимум 105 итераций, по этой причине нейронные сети обучаются очень долго. Тем не менее, уже обученная сеть довольно быстро решает различные многомодальные задачи распознавания. Именно поэтому нейросетевые алгоритмы применяются чаще всех остальных в системах видеонаблюдения. Помимо этого, в последнее время исследователям удалось разработать
Похожие диссертационные работы по специальности «Другие cпециальности», 00.00.00 шифр ВАК
Модель, метод и нейросетевое оптико-электронное вычислительное устройство распознавания изображений2020 год, кандидат наук Волков Денис Андреевич
Математическое моделирование и исследование алгоритмов обучения и выбора гиперпараметров искусственных нейронных сетей для классификации объектов на цифровых изображениях2023 год, кандидат наук Толстых Андрей Андреевич
Разработка моделей и алгоритмов для повышения эффективности автоматизированных технологических процессов формирования панорамных изображений2021 год, кандидат наук Наинг Линн Аунг
Идентификация с детальной оценкой состояния объектов и их массового количества системами компьютерного зрения2018 год, кандидат наук Остапов Дмитрий Сергеевич
Алгоритмы распознавания гистологических и эндоскопических изображений для систем прикладного телевидения в медицине2019 год, кандидат наук Степанова Ольга Анатольевна
Список литературы диссертационного исследования кандидат наук Хейн Хтет Зо, 2024 год
Список литературы
1. Ярославский, Л.П. Введение в цифровую обработку изображений / Л.П. Ярославский - М.: Изд-во «Советское радио», 1979 - 312 с.
2. Грузман, И.С. Цифровая обработка изображений в информационных системах: учебоне пособие / И.С. Грузман, В.С. Киричук, В.П. Косых, Г.И. Перетягин, А.А. Спектор - Новосибирск: ИПК НГТУ, 2000 -168 с.
3. Применение цифровой обработки сигналов / Под ред. Э. Оппенгейма - М.: Изд-во «Мир», 1980 - 552 с.
4. Прэтт, Е. Цифровая обработка изображений / Е. Прэтт - М.: Изд-во «Мир», 1982 - кн. 1 - 312 с..
5. Ахмед, Н. Ортогональные преобразования при обработке цифровых сигналов. Под ред. Фоменко И.Б. / Н. Ахмед Н, К. Рао - М.: Изд-во «Связь», 1980 - 248 с.
6. Даджеон, Д. Цифровая обработка многомерных сигналов» / Д. Даджеон, Р. Мерсеро - М.: Изд-во «Мир», 1988 - 486 с.
7. Калиниченко Ю.В Анализ алгоритмов выделения контуров цифровых изображений//Научные труды SWorld. 2015. Т. 4. № 1 (38). С. 14-17.
8. Калиниченко Ю.В. Локально-адаптивные методы повышения контрастности изображений// Научные труды SWorld. 2016. Т. 2. № 44. С. 4043.
9. Салыкова Д.А., Утемисов А.Н., Рудникович А.С. Повышение контрастно-частотных характеристик изображений с применением фильтра Винера// Сборник избранных статей научной сессии ТУСУР. 2018. № 1-1. С. 109-112.
10. Хейн Хтет Зо Разработка программного модуля голосовой идентификации пользователя//8-я Всероссийская научно-практическая конференция «Актуальные проблемы информатизации в науке, образовании и
экономике - 2015».Тезисы доклада - М.: МИЭТ, 2015. С.97.
133
11. Хейн Хтет Зо. Разработка математической модели задачи распознавания рукописных символов // Аспирант и соискатель»,2024.- № 1.-С.6-9.
12. Шевелев, Ю.П. Дискретная математика: учебное пособие / Ю.П. Шевелев. -Санкт-Петербург: Лань, 2008. - 592 с.
13. Йе Тху Аунг, Хейн Хтет Зо Кластеризация набора данных Iris с использованием алгоритма k-средних// Международная научно-практическая конференция «Актуальные проблемы информатизации в цифровой экономике и научных исследованиях - 2019». - М.: МИЭТ, 2019. С.63.
14. Галушкин, А.И., Единый подход к решению задач обучения и самообучения систем распознавания образов / А.И. Галушкин // Труды МИЭМ. №6, 1970 - С. 104-120.
15. Вапник, В.Н. Теория распознавания образов. Статистические проблемы обучения / В.Н. Вапник, А.Я. Червоненкис - М.: ИД «Наука», 1974 -274 с.
16. Журавлев, Ю.И. Непараметрические задачи распознавания образов / Ю.И. Журавлев // Кибернетика. №6, 1976 - С. 93-103.
17. Журавлев, Ю.И. Об алгебраическом подходе к решению задач распознавания или классификации / Ю.И. Журавлев // Проблемы кибернетики. №.33, 1978 - С. 5-68.
18. Вентцель Е. С., Овчаров Л.А. Задачи и упражнения по теории вероятностей. - Учеб. пособие для втузов. - 3-е изд., стер. - М: Высш. шк., 2000. - 366 с.: ил.
19. Мокеев А.В., Мокеев В.В.Об эффективности распознавании лиц с помощью линейного дискриминантного анализа и метода главных компонент// Бизнес-информатика. 2015. № 3 (33). С. 44-54.
20. Галеев С.Ф. Модификация алгоритма Виолы-Джонса для распознавания лиц в режиме реального времени// Современная техника и технологии. 2017. № 5 (69). С. 29.
21. LeCun, Y. Back-Propagation Applied to Handwritten Zip Code Recognition / Y. Lecun, B. Boser, J. Denker, D. Henderson, R. Howard, W. Hubbard, L. Jackel // Neural Computation. Vol. 1, no. 4, 1998 - pp. 541-551.
22. LeCun, Y. Handwritten Digit Recognition with a Back-Propagation Network / Y. Lecun, B. Boser, J. Denker, D. Henderson, R. Howard, W. Hubbard, L. Jackel // Advances in Neural Information Processing System. Vol. 2, 1990 - pp. 396404.
23. Baldi, P. Neural Networks for Fingerprint Recognition / P. Baldi, Y. Chauvin // Neural Computation. Vol. 5, no. 3, 1993 - pp. 402-418.
24. Glorot, X. Deep Sparse Rectifier Neural Networks / X. Glorot, A. Bordes, Y. Bengio // Journal of Machine Learning Research. Vol. 15, 2011 - pp. 315323.
25. Glorot, X. Understanding the Difficulty of Training Deep Feedforward Neural Networks / X. Glorot, Y. Bengio // Proceedings of the International Conference on Artificial Intelligence and Statistics. Vol. 9, 2010 - pp. 249-256.
26. He, K. Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification / K. He, X. Zhang, Sh. Ren // Proceedings of IEEE International Conference on Computer Vision. Vol. 7, no.13, 2015 - pp. 1026-1034.
27. Ioffe, S. Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift / S. Ioffe, C. Szegedy // In Proceedings of the 32nd International Conference on Machine Learning. Vol. 37, 2015 - pp. 448-456.
28. Arora, S. Provable bounds for learning some deep representations / S. Arora, A. Bhaskara, R. Ge, T. Ma // International Conference on Machine Learning, 2014 - pp. 584-592.
29. Szegedy, C. Rethinking the Inception Architecture for Computer Vision / C. Szegedy, V. Vanhoucke, S. Ioffe, J. Shlens, Z. Wojna // In Proceedings of the 16th IEEE Conference on Computer Vision and Pattern Recognition, 2016 - pp. 28182826.
30. Szegedy, C. Inception-v4, Inception-ResNet and the Impact of Residual Connections on Learning / C. Szegedy, V. Vanhoucke, S. Ioffe, J. Shlens, Z. Wojna // In Proceedings of the Thirty-First AAAI Conference on Artificial Intelligence, 2017 - pp. 4278-4284.
31. Chen J., Tu X. An identification method of pinus massoniana pest area using improved Googlenet//Fresenius Environmental Bulletin. 2021. Т. 29. № 12. С. 10788-10798.
32. Воронцова Е.А., Гасников А.В., Горбунов Э.А. Ускоренные спуски по случайному направлению и безградиентные методы с неевклидовой прокс-структурой // e-print, 2017. - URL: https://arxiv.org/pdf/1710.00162.pdf
33. Wen L., Jo K.H. Fast lidar R-CNN: residual relation-aware region proposal networks for multiclass 3-D object detection//IEEE Sensors Journal. 2022. Т. 22. № 12. С. 12323-12331.
34. Arora N., Kumar Y., Karkra R., Kumar M. Automatic vehicle detection system in different environment conditions using fast R-CNN//Multimedia Tools and Applications. 2022. Т. 81. № 13. С. 18715-18735.
35. Fang K. Recurrent Autoregressive Networks for Online Multi-object Tracking / K. Fang, Y. Xiang, X. Li, S. Savarese. // 2018 IEEE Winter Conference on Applications of Computer Vision (WACV). - 2018. - Pp. 466-475.
36. Ren, S. Faster R-CNN: Towards real-time object detection with region proposal networks / S. Ren, K. He, R. Girshick, J. Sun // Advances in Neural Information Processing Systems, 2015 - pp. 91-99.
37. Everingham, M. The Pascal Visual Object Classes (VOC) Challenge / M. Everingham, L. Van Gool, C. K. Williams, J. Winn, A. Zisserman // International Journal of Computer Vision. Vol. 88. no 2, 2015 - pp. 303-338.
38. He, K. Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Vecognition / K. He, X. Zhang, S. Ren, J. Sun // The 13th European Conference on Computer Vision, 2014 - pp. 4729-4841.
39. Lazebnik, S. Beyond bags of features: Spatial pyramid matching for recognizing natural scene categories / S. Lazebnik, C. Schmid, J. Ponce // In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, 2006 - pp. 2169-2178.
40. Huang Z., Wang J., Fu X., Yu T., Guo Y., Wang R. DC-SPP-YOLO: Dense connection and spatial pyramid pooling based YOLO for object detection//Information Sciences. 2020. Т. 522. С. 241-258.
41. Dewi Ch., Juli Christanto H. Combination of deep cross-stage partial network and spatial pyramid pooling for automatic hand detection// Big Data and Cognitive Computing. 2022. Т. 6. № 3. С. 85
42. Redmon, J. You only look once: Unified, real-time object detection / J. Redmon, S. Divvala, R. Girshick, A. Farhadi // In Proceedings of the 16th IEEE Conference on Computer Vision and Pattern Recognition, 2016 - pp. 779-788
43. Zayar Aung, Fedrorov Alexey Roaldovich, Hein Htet Zaw Search engine database systems tools for building literature//2021 IEEE Conference of Russian Young Researchers in Electrical and Electronic Engineering (EIConRus), "MIET" (Moscow). Jan.26-29 (2021).P. 2081-2084.
44. Русаков А.М., Горин Д.С., Лисютенко А.С., Долженков С.С., Карев А.Д., Астафьев И.А. Интеллектуальный анализ работы хранилища данных greenplum на основе обработки лог-файлов//Современная наука: актуальные проблемы теории и практики. Серия: Естественные и технические науки. 2023. № 6. С. 142-149.
45. Часовских В.П., Кох О.С.СУБД GREENPLUM для BIG DATA и машинного обучения //В сборнике: BI-технологии и корпоративные информационные системы в оптимизации бизнес-процессов цифровой экономики. Материалы X Международной научно-практической очно-заочной конференции. Екатеринбург, 2023. С. 116-120.
46. Календарев А. Clickhouse в системах сбора статистики Системный администратор. 2017. № 3 (172). С. 56-59.
47. Imasheva B., Nakispekov A., Sidelkovskaya A., Sidelkovskiy A. The practice of moving to big data on the case of the NoSQL database, Clickhouse// Advances in Intelligent Systems and Computing. 2020. Т. 991. С. 820-828
48. Терских М.Г. Развертывание кластера для хранения и обработки статистики с помощью Yandex Clickhouse//Теория и практика современной науки. 2017. № 11 (29). С. 540-547.
49. Картанова А.Д., Абдрасакова А.Б., Иманбеков Т.И. Инструмент Hadoop и оптимизация хранилища данных//Современные проблемы механики. 2020. № 42 (4). С. 67-82.
50. Стаселько И.Д., Сычев А.Ю., Протасов А.П., Позняков Т.Д., Алексеев Ю.И. Форматы файлов больших данных: хранение данных в экосистеме Hadoop// Big Data and Advanced Analytics. 2020. № 6-2. С. 335-339.
51. Гайдамако В.В. К вопросам планирования и балансировки нагрузки в Hadoop Mapreduce// Проблемы автоматики и управления. 2022. № 3 (45). С. 167-176.
52. Майорова Е.В. Использование Hadoop-технологий для хранения и обработки больших данных//Современное образование: традиции и инновации. 2023. № 2. С. 219-223.
53. Что такое Teradata? Её отличия от аналогов. — Текст : электронный // — URL: https://vc.ru/dev/111923-chto-takoe-teradata-ee-otlichiya-ot-analogov (дата обращения: 06.11.2022).
54. Васильева А.Д., Бруттан Ю.В. Анализ эффективности работы СУБД Oracle и Teradata при обработке больших данных//Вестник Псковского государственного университета. Серия: Технические науки. 2021. № 12. С. 2429.
55. Талгатова З.Т. Анализ и сравнение существующих моделей процессов ETL для хранилищ данных// Технические науки - от теории к практике. 2016. № 54. С. 85-94.
56. Старков В.В., Горбатова С.С., Водолага В.И. Разработка ETL процесса на базе Open Source технологий для решения задачи доставки данных потребителям// Моделирование и анализ данных. 2023. Т. 13. № 2. С. 180-193.
57. Пантелеев А.В. Методы оптимизации в примерах и задачах: Учеб, пособие / А.В. Пантелеев, Т.А. Летова. - 2-е изд., испр. - М.: Высшая школа, 2005. - 544 с.
58. Теория расписаний. Методы и алгоритмы : монография / А. А. Лазарев ; Федеральное государственное бюджетное учреждение науки Институт проблем управления имени В. А. Трапезникова Российской академии наук. - Москва : ИПУ РАН, 2019. - 407 с.
59. Севастьянов С.В. Геометрические методы и эффективные алгоритмы в теории расписании // Дис. док. физ.-мат. наук.- Новосибирск: 2000.- 280 с.
60. Vysochkin A.V., Zaw Hein , Aung Kyaw Myo, Hein Htet Zaw Development of a selective control algorithm of the production logistics flows// Proceedings of the 2019 IEEE Russia Section Young Researchers in Electrical and Electronic Engineering Conference, ElConRus 2019, Pages 2157-2161.
61. Таха Х. А. Введение в исследование операций. — 7-е изд.: Пер. с англ. — М.: Изд. дом «Вильямс», 2005. — 912 с.
62. Федосеев А.А., Гаязова Е.Э. Детектирование изображения алгоритмом особых точек SIFTZ/Ученые заметки ТОГУ. 2020. Т. 11. № 1. С. 224-228.
63. Емельянова Н.Ю. Исследование метода SURF для поиска объектов на изображении//В сборнике: Теоретические и практические аспекты развития научной мысли в современном мире. Сборник статей Международной научно-практической конференции. 2016. С. 53-55.
64. Горегляд В.В. Проблемы преобразования и интеграции данных во время ETL-процесса/М.ктуальные направления научных исследований XXI века: теория и практика. 2018. Т. 6. № 6 (42). С. 90-92.
65. Вл. Д. Мазуров. Математические методы распознавания образов. Уч. пособ. 2-е изд., доп. и перераб. - Екатеринбург: Изд-во Урал, ун-та, 2010. -101 с.
66. Ishchenko A., Nesteryuk A., Polyakova M. The technique of extraction text areas on scanned document image using linear filtrationApplied Aspects of Information Technology. 2019. Т. 2. № 3. С. 206-215.
67. Портнов Е.М., Хейн Хтет Зо. К вопросу повышения эффективности передачи информации в мобильных следящих системах // Аспирант и соискатель», 2024.- № 1.-C.18-22.
68. Портнов Е.М., Хачумов В.М., Баин А.М., Хейн Хтет Зо Разработка математической модели решения задачи классификации данных обработки потокового видео// Перспективы науки».-№ 11(158), 2022.- C.22-26.
69. Жертунова (Ишкова) Т.В., Янакова E.C. Адаптивный алгоритм на основе нелокальных усреднений при обработке изображений// Вопросы радиоэлектроники. 2018. № 8. С. 79-86.
70. Belyaev A.A., Kuzmina V.V., Bychkov A.A., Yanakova E.S., Khamukhin A.V. The hierarchical high-speed neural network image classification algoritm for videp surveillance systems// Proceedings of the 2018 IEEE Conference of Russian Young Researchers in Electrical and Electronic Engineering, ElConRus, 2018.- С. 1840-1843.
71. Черняева С.Н. Разработка алгоритма контурного анализа для определения границ морских объектов//Вестник Морского государственного университета. 2023. № 90. С. 11-16.
72. Левицкий М.С., Голованов Р.В. Алгоритм сегментации текста на изображении на основе фильтра гаусса//В сборнике: Микроэлектроника и информатика - 2018. Материалы научно-технической конференции. Сборник статей. 2018. С. 137-142.
73. Сериков А.Ю., Манжиков Т.В., Савельев Б.И. Применение бинаризации в задаче выделения четырехугольников на
полутоновых изображениях//Электронный научный журнал. 2015. № 2 (2). С. 99-104.
74. Huynh Kh.Tu., Ly Tu.N., Le-Tien T. An efficient model for copy-move image forgery detection//International Journal of Web Information Systems. 2022. Т. 18. № 2/3. С. 181-195.
75. Волков А.С., Колдаев В.Д. Алгоритм распознавания объектов видеоизображений на основе нейронных сетей// В сборнике: OPEN INNOVATION сборник статей VII Международной научно-практической конференции. Ответственный редактор Г.Ю. Гуляев. 2018. С. 54-59.
76. Хтет А., Бобков А.В. Обнаружение лиц в реальном времени на основе алгоритма YOLO// В сборнике: Наука, технологии и бизнес. Сборник материалов III Межвузовской конференции аспирантов, соискателей и молодых ученых = Conference Proceedings and Papers III Interacademic Conference for Graduate Students and Young Researchers. Москва, 2022. С. 184-191.
77. Al-Furaiji O.S.M., Tuan N.A., Yurevich T.V.A new fast efficient nonmaximum suppression algorithm based on image segmentation//Indonesian Journal of Electrical Engineering and Computer Science. 2020. Т. 19. № 2. С. 1062-1070.
78. Е.М. Портнов, А.Р., Федоров, П.А. Федоров, Хейн Хтет Зо Разработка алгоритма обнаружения фальсификации номерного знака// Перспективы науки, 2024.-№2.
79. Тет Паин Тху, Хейн Хтет Зо. Разработка методики обработки видеоизображений с БПЛА// 30 Всероссийская межвузовская научно-техническая конференция студентов и аспирантов "Микроэлектроника и информатика-2023".Тезисы доклада.-М.:МИЭТ, 2023.- С. 231.
80. Кхант Зин Вин, Хейн Хтет Зо. Разработка методики детектирования зрелости плодов на основе использования нейросетевых технологий // IV научно-практическая конференция с международным участием «Актуальные
проблемы информатизации в цифровой экономике и научных исследованиях -2023».-М.: МИЭТ, 2023. С.87.
81. Khant Zin Win, Hein Htet Zaw, Evgeni M Portnov. Development of a method for detecting fruit maturity based on the use of neural network technologies//2024 IEEE Russia Young Researchers in Electrical and Electronic Engineering Conference (ElConRus), January 29 - 31, 2024,St. Petersburg, Russia, Pages. 176-179.
82. Hein Htet Zaw, Zaw Hein, Evgeni M.Portnov. Development of mathematical methods and algorithms for filtering images obtained from unmanned aerial vehicle camera.//2023 International Conference on Industrial Engineering, Applications and Manufacturing (ICIEAM),2023.- May 15-19 (Sochi). Page. 837 -844.
83. Гнеденко, Б. В. Введение в теорию массового обслуживания / Б.В. Гнеденко, И.Н. Коваленко. - М.: Наука, 2017. - 432 c.
84. Рыков, В. В. Основы теории массового обслуживания. Основной курс. Марковские модели, методы марковизации. Учебное пособие / В.В. Рыков, Д.В. Козырев. - М.: ИНФРА-М, 2016. - 224 c.
85. Портнов Е.М., Хачумов В.М., Хейн Хтет Зо. Разработка способа ускоренной обработки потокового видео с беспилотных летательных аппаратов// Перспективы науки,2022.-№11.- C.27-33.
86. Зо Хейн, Хейн Хтет Зо. Общее представление о схеме алгоритма балансировки нагрузки в системе с передачей больших объёмов данных по шлюзам с ограниченной пропускной способностью //Международная научно-практическая конференция «Актуальные проблемы информатизации в цифровой экономике и научных исследованиях - 2021». М.: МИЭТ, 2021. С.53.
87. Портнов Е.М., Хейн Хтет Зо Методика применения свёрточных нейронных сетей для решения задач мониторинга природных объектов и окружающей среды// Аспирант и соискатель»,2023.- № 1. С.8-12.
88. Е.М. Портнов, А.Р., Федоров, П.А. Федоров, Хейн Хтет Зо. Разработка алгоритма прогнозирования состояния транспортных потоков
и светофорных объектов// Научно-технический вестник Поволжья.- № 11, 2023.-С.249-253.
89. Лутц Марк. Изучаем Python / Марк Лутц; пер. с англ. Ю.Н. Артеменко. - М.: Вильямс, 2019. - 832 с.
90. Любанович Билл. Простой Python. Современный стиль программирования / Билл Любанович; пер. с англ. Е.В. Зазноба, И.А. Пальти. -Прогресс книга, 2021. - 592 с.
91. Welcome to cx_Oracle's documentation!. — Текст: электронный // cx_Oracle: [Электронный ресурс]. — URL: https://cx-oracle.readthedocs.io/en/latest/ (дата обращения: 06.05.2023).
ПРИЛОЖЕНИЕ 1
Программное средство планирования потоков обработки больших
объемов данных
Текст программы
Фрагмент файла gen_schedule.py.
Данный файл содержит в себе код, отвечающий за формирование расписания потоков.
import sys import json import requests import argparse import impala from impala.dbapi import connect import logging import teradatasql import hive_service import pyhive import oracledb import cx_Oracle
#функция генерации запросов к базам данных для валидации
источников def create_check(source, flow):
print(source) match
source["Type_Check"]: case
"macVldRepBuilt":
query = "SELECT * FROM RDS_REPORT WHERE REPORT_CD = &"
+ source["Database"] + "." + source["TableName"] db = "Oracle" case
"macVldTableHasData":
query = "SELECT DISTINCT " + source["Reporting_Date"] + ",
processed_dttm FROM " + source["Database"] + "." + source["TableName"] + "
ORDER BY " + source["Reporting_Date"] +
144
", processed_dttm;" db = "Teradata" case "macVldTableHasDataSSCD":
query = "SELECT * FROM PROD_CDM.PROMO_MESSAGE_BOX WHERE
ETL_FLOW_NAME = " + flow
db = "Oracle" case "macVldDatalsReady":
query = "SELECT * FROM EFW_V_STAT_LAYER WHERE LAYER_NAME =
" + source["Database"] + " AND TRG_TABLE_NAME = " + source["TableName"] db = "Oracle" case
"macVldSourcelsReady": query =......WITH R0 AS (
SELECT t.TABLE_DB_NAME, t.TABLE_NAME, j.ETL_JOB_NAME, COALESCE(emfl .ETL_FLOW_NAME, emf.ETL_FLOW_NAME) AS ETL_ROOT_FLOW_NAME, emf.ETL_FLOW_NAME,
COALESCE(emf1 .ETL_FLOW_ID, emf. ETL_FLOW_ID) AS ETL_ROOT_FLOW_ID,
COALESCE(emf1 .PROCESSED_DTTM, emf.PROCESED_DTTM) AS ETL_ROOT_FLOW_ID,
FROM EFW_MD_TABLE t INNER JOIN EFW_MD_JOB_X_TABLE jxt ON (t.TABLE_ID = jxt.TABLE_ID AND t.DELETED_FLG = '0' AND jxt. DELETED_FLG = '0')
INNER JOIN EFW_MD_JOB j ON (jxt. ETL_JOB_ID = j.ETL_JOB_ID AND j.DELETED_FLG = '0')
INNER JOIN EFW_MD_FLOW emf ON (j.ETL_FLOW_ID = emf.ETL_FLOW_ID AND emf.DELETED_FLG = '0')
LEFT JOIN EFW_MD_FLOW emfl ON (emf.ETL_FLOW_PARENT_ID = emf1.ETL_FLOW_ID AND emf1.DELETED_FLG = '0')
WHERE t.TABLE_NAME =......+ source["TableName"]
AND jxt.RELATION_TYPE_ID = 2
)
SELECT DISTINCT R0.*, ft.FILE_TYPE_NAME
FROM R0
INNER JOIN EFW_STAT_FILE_LOAD fls ON R0.ETL_ROOT_FLOW_ID = fls.ETL_FLOW_ID
INNER JOIN EFW_STAT_FILE f ON f.FILE_ID = fls.FILE_ID INNER JOIN EFW_CLS_FILE_TYPE ft ON
ft.FILE_TYPE_ID = f. FILE_TYPE_ID...... db = "Oracle"
case "macVldMartFileIsReady":
query =......SELECT DISTINCT
evsl.TRG_TABLE_NAME, evsl.LAYER_NAME,
evsf. SOURCE_SYSTEM_CODE, evsl.LAYER_DESC, evsf. FILE_TYPE_NAME
FROM EFW_V_STAT_LAYER evsl INNER JOIN EFW_V_STAT_FILE evsf ON evsl. SOURCE_SYSTEM_CD_LIST LIKE '%'''|| evsf. SOURCE_SYSTEM_CODE| |"'%'
WHERE evsl.TRG_TABLE_NAME =......+
source["TableName"] +......AND evsl.LAYER_NAME =......+
source["Database"] db = "Oracle" case "macVldTableIsUpdate":
query =......SELECT COALESCE(TO_CHAR(MAX(REPORT_DT), 'YYYY-
MM-DD'), '1900-01-01') AS REPORT_DT, PROCESSED_DTTM,
FROM RDS_REPORT_SYSTEM_EVEN sys_event LEFT JOIN RDS REPORT rep ON sys_event.REPORT_RK = rep. REPORT_RK
WHERE REPORT_CD =......+ flow +......
AND EVENT_TYPE_CD = 'CREATE_REPORT_BY_FLOW'
AND EVENT_RC >= 0;...... db = "Oracle" case _:
print("Error: macros donft find") return query,db
#Функци,я осуществляющая поиск информации о времени
функционирования потока под управлением Spark parser =
argparse.ArgumentParser () parser.add_argument("--out", help="Output
filename", required=True) parser.add_argument("--app_name",
help="Application Ids", required=True) parser.add_argument("--
cluster", help="Cluster: rrdrp, adh_users, bdaetl, rrdapp",
default='rrdrp')
args = parser.parse_args()
if args.cluster == 'rrdrp' api =
"https://path_for_rrdrp:18488/api/v1/applications" elif args.cluster == 'bdaetl':
api = "https://path_for_bdaetl:18488/api/vi1/applications" else:
exit () apps_id = args.apps.split(',')
result = [] for ai in apps_name: url_name = f'{api}" r =
requests.get(url_name, verify=False) json_data = r.json() app_name =
json_data['name'] for st in reversed (json_data):
147
result.append([st["id"], st["name"], st["duration"]]) res = result.where(app_name == ai) return res
#j_file_path = sys.argv[1] j_file = open('file.json')
#Получение основных параметров из json parameters = json.loads(j_file.read()) flow = parameters["name"] macros = parameters["macros"] cluster = parameters["cluster"]
#Если поток реализован средствами SAS, то проверка его источников осуществляется с помощью валидационных макрос if (cluster == "Teradata" or cluster == "Impala")
#Если информация о валидации заполнена непосредственно в json файле if (macros == ""):
sources = parameters["sources"] i = 0 for s in sources:
source = sources[s] create_check(source, flow) #Если информация о валидируемых источниках получается из макроса else:
vld_macros = open(parameters["macros"]) for line in vld_macro s. readline s():
if (line.find("macVldDataIsReady ") or line.find("macVldTableHasData")) != -
1:
Database = line[line.find("='", line.find("mpLayerName"))+2:line.find("',", line.find("mpLayerName"))]
Table = line[line.find("-", line.find("mpTargetTableName"))+2:line.find("',", line.find("mpTargetTableName"))]
Type_Check = line[0:line.find("(")]. strip() Date = line[line.find("='", line.find("Reporting_Date"))+2:line.find("',", line.find("Reporting_Date"))] check = json.dumps({"Database": Database, "TableName": Table, "Type_Check": Type_Check, "Reporting_Date": "report_date"}) create_check(check, flow) else:
print("Error: macros dontt find " + line)
#Если поток реализуется средсвами Airflow, то проверка осуществялется непосредственно через исполнение, приведенных разработчиком скриптов else:
sources = parameters["sources"] for s in sources:
source = sources[s] query = source["query"]
Файл check_spill.py
Данный скрипт используется для проверки спилла на диск для потоков, обрабатываемых средствами Spark. Данный скрипт может использоваться для выбора потока, которому требуется перепланирование, а так же для последующего контроля. На вход получает application_id для запусков данного потока, может быть запущен вручную, а так же из других скриптов.
import requests import sys import argparse import urllib3 urllib3.disable_warnings (urllib3. exceptions. InsecureRequestWarning) import csv parser = argparse.ArgumentParser () parser.add_argument("--out", help="Output filename", required=True) parser.add_argument("--apps", help="Application Ids", required=True) parser.add_argument("--cluster", help="Cluster: rrdrp, adh_users, bdaetl, rrdapp", default='rrdrp') args = parser.parse_args() if args.cluster == 'rrdrp' api =
"https://path_for_rrdrp:18488/api/v1/applications" elif args.cluster == 'bdaetl':
api = "https://path_for_bdaetl:18488/api/vi1/applications" elif args.cluster == 'adh_user':
api = "https://path_for_adh_users:18488/api/vil/applications" elif args.cluster == 'rrdapp':
api = "https://rrdapp:18082/api/vi/applications" else: print("Unknown cluster") exit () apps_id = args.apps.split(',') result = [] for ai in apps_id:
print (f"processing application_id={ai}") url_name = f"{api}/{ai}" r = requests.get(url_name, verify=False) json_data = r.json() app_name = j son_data['name']
url_attemptl = f"{api}/{ai}/1/stages" r = requests.get(url_attempt1, verify=False) json_data = r.json() for st in reversed (json_data):
result.append([ai, app_name, st["stageId"], st["memoryBytesSpilled"], st["diskBytesSpilled"]])
header = ["application id", "application name", "stageId", "memoryBytesSpilled", "diskBytesSpilled"] with open(args.out, 'w', encoding='UTF8', newline='') as f: wr = csv.writer(f, delimiter=',', quoting-csv.QUOTE_ALL) wr. writerow (header) wr.writerows (result) print (header) for r in result: print (r)
Фрагмент файла mod_clust.py
Данный фрагмент отвечает за моделирование работы кластера с использованием системы массового обслуживания.
import sys import time import random from queue import Queue from threading import Thread class Customer: def __init__(self, id):
self.id = id self.arrival_time = time.time()
class ServiceChannel(Thread): def_init_(self,
channel_id, service_times):
super()._init_() self.channel_id = channel_id
self.service_times = service_times self.queue =
Queue() self.total_service_time = [0] * 24
151
self.num_served_customers = [0] * 24 self.total_waiting_time = [0] * 24 self.num_waiting_customers = [0] * 24 self.running = True
def run(self): while self.running: if not self.queue.empty():
customer = self.queue.get() print(f'Channel
{self.channel_id}: Serving customer {customer.id}") start_time = time.time()
waiting_time = start_time -customer. arrival_time
self.total_waiting_time[customer.arrival_time.tm_hour] +=
waiting_time
self.num_waiting_customers[customer. arrival_time.tm_hour] += 1 service_time =
self. service_times[customer. arrival_time.tm_hour] time. sleep(service_time)
self.total_service_time[customer.arrival_time.tm_hour] +=
service_time
self.num_served_customers[customer.arrival_time.tm_hour] += 1 print(f'Channel {self.channel_id}: Customer {customer.id} served in {service_time:.2f} seconds") else:
time.sleep(l) def get_average_service_time(self, hour): if self.num_served_customers[hour] > 0:
return self.total_service_time[hour] / self. num_served_customers [hour] else: return 0
def get_average_waiting_time(self, hour): if self.num_waiting_customers[hour] > 0:
return self.total_waiting_time[hour] / self. num_waiting_customers [hour] else: return 0 def terminate(self): self.running = False
class CustomerGenerator(Thread): def_init_(self,
channels, arrival_rates):
super()._init_() self.channels = channels
self.arrival_rates = arrival_rates self.running = True
def run(self): customer_id = 1 while self.running:
current_hour = time.localtime().tm_hour arrival_rate =
self.arrival_rates[current_hour] channel =
random.choice(self.channels) customer = Customer(customer_id)
customer_id += 1 channel.queue.put(customer)
print(f"New customer {customer.id} arrived at Channel {channel.channel_id}")
time.sleep(random.expovariate(arrival_rate)) # Exponential inter-arrival time def terminate(self): self.running = False
# Задание каналов обслуживания num_channels = int(sys.argv[1]) if len(sys.argv) > 1 else 3 arrival_rates = [float(arg) for arg in sys.argv[2:26]] if
len(sys.argv) > 2 else [1.0] * 24 service_times = [float(arg) for arg in
sys.argv[26:]] if len(sys.argv) > 26 else [5.0] * 24
# Number of service channels channels = [ ServiceChannel(channel_id=i, service_times=service_times) for i in
range(num_channels)
] generator = CustomerGenerator(channels, arrival_rates) for channel in channels: channel.start() generator.start()
# Время функционирования системы time.sleep(60)
# Остановка генерации заявок generator.terminate() for channel in channels: channel.terminate()
# Вычисление среднего времени обслуживания заявок и их нахождения в очереди for channel in channels: for hour in range(24):
average_service_time = channel.get_average_service_time(hour) average_waiting_time = channel.get_average_waiting_time(hour) print(f"Channel
{channel.channel_id}, Hour {hour}: Average service time: {average_service_time:.2f} seconds") print(f"Channel
{channel.channel_id}, Hour {hour}: Average waiting time: {average_waiting_time:.2f} seconds")
Текст программы обучения нейронной сети
#define MAX_CONTOURS 100
#define MAX_CONT_LENGTH 500
float alf = 3.0F, timestep = 7.0F, lambda = 4.0F;int iter = 200;
int win = 27;
int dw = 12;
const float epsilon = 1.5; const float c1 = 0.5/epsilon; const float c2 = CV_PI/epsilon; const float gauss_sigma = 1.5;//1.2; const int gauss_win = 15;//11; //================================================
void gradient(CvMat* f, CvMat* g, int order_x, int order_y) {
float scale = 1;
for(int i=0 ;i<order_x+order_y;i++) {
scale = scale*0.125; }
cvSobel(f,g, order_x, order_y, 3);
cvScale(g,g,scale); }
//============================================================
CvRect BoundingRect(CvPoint* Pts, int length) {
int min_x,min_y,max_x,max_y;
min_x = Pts[0].x;
min_y = Pts[0].y;
max_x = Pts[0].x;
max_y = Pts[0].y;
for(int i=1;i<length;i++) {
if(min_x>Pts[i] .x) min_x = Pts[i].x; if(min_y>Pts[i] .y) min_y = Pts[i].y; if(max_x<Pts[i] .x) max_x = Pts[i].x; if(max_y<Pts[i] .y)
max_y = Pts[i].y;
}
return cvRect(MAX(min_x-1,0),MAX(min_y-1,0),max_x-min_x+3,max_ymin_y+3); }
//============================================================
int FindLevelSet(CvMat* z, CvPoint contours[] [MAX_CONT_LENGTH], int*
lengths, float c) {
int dx=1,dy=1; int h,w,H,W; int enter_edge = -1; int ncontours;int length; int cx,cy;
CvPoint Cp,Cprev = {-1, -1}; h = z->height; w = z->width; H=(h-1)/dy; W=(w-1)/dx;
int sq[4][2]={{0,0},{1,0},{1,1},{0,1}}; float t;
float sq_z[4];
int sq_x,sq_y,sq_x0,sq_y0;
CvMat* visited = cvCreateMat(H,W,CV_8UC1);
uchar* p_v = cvPtr2D(visited,0,0,0);
uchar* p_v1;
cvSetZero(visited);
ncontours = 0;
length = 0;
for(int y=0;y<H;y++) {
for(int x=0;x<W;x++,p_v++) {
if(!(*P_v)) {
sq_x = x; sq_y = y;
p_v1=p_v;
do
{
sq_z[0] = cvmGet(z,sq_y*dy,sq_x*dx); sq_z[1] = cvmGet(z,sq_y*dy,(sq_x+1)*dx); sq_z[2] = cvmGet(z,(sq_y+1)*dy,(sq_x+1)*dx); sq_z[3] = cvmGet(z,(sq_y+1)*dy,sq_x*dx);
for(int i=0;i<4;i++) {
if( ! ((*p_v 1 )&(0x01 <<i))&&(enter_edge ! =i)&&(((sq_z [i] >c)&&(sq_z [(i+1 )%4]<
=c))||((sq_z[i]<=c)&&(sq_z[(i+1)%4]>c)))) {
t = (c-sq_z[i])/(sq_z[(i+1)%4]-sq_z[i]);
cx = cvRound(dx*((sq_x+sq[i][0])+t*(sq[(i+1)%4][0]-
sq[i][0])));
cy = cvRound(dy*((sq_y+sq[i] [1])+t*(sq[(i+1 )%4] [1]-
sq[i][1])));
Cp = cvPoint(cx,cy); if(Cp.x!=Cprev.x || Cp.y!=Cprev.y)
{
contours[ncontours][length] = Cp; length++;
Cprev = Cp; }
if(enter_edge<0){ enter_edge = i; sq_x0 = sq_x;
sq_y0 = sq_y; }
else {
*P_v1 |= (0x01 <<i) |(0x01 <<enter_edge); enter_edge = (i+2)%4;
break; }
}
else if((i==3)&&(enter_edge>=0)) {
*p_v1 |= (0x01<<enter_edge);
enter_edge = -1; }
}
switch(enter_edge)
{
case -1: break;
case О:
sq_y++;
p_v1+=W;
break;
case 1:
sq_x--;
p_v1--;
break;
case 2:
sq_y--;
p_v1-=W; break; case 3:
sq_x++; p_v1++;
break; }
if((sq_x>W-1)| I (sq_y>H-
1 )I I (sq_x<0)| I (sq_y<0)| I((*p_v1 )&&(sq_x0==sq_x)&&(sq_y0==sq_y))) {
enter_edge = -1; lengths[ncontours] = length; ncontours++;
length = 0;
if(ncontours==MAX_CONTOURS) {
cvReleaseMat(&visited);
return ncontours; }
} }
while(enter_edge>=0); }
} }
cvReleaseMat(&visited);
return ncontours; }
//====================
CvMat* Evolution(CvMat* u0, CvMat* g, CvMat* vx, CvMat* vy, CvMat* gux, CvMat* guy,
CvMat* gux2, CvMat* guy2, CvMat* del2u) {
int h = u0->height; int w = u0->width;
float mu=0.2/timestep;
//NeumannBoundCond:
cvmS et(u0,0,0, cvmGet(u0,2,2));
cvmS et(u0,0,w-1, cvmGet(u0,2,w-3));
cvmSet(u0,h-1,0,cvmGet(u0,h-3,2));
cvmSet(u0,h-1,w-1,cvmGet(u0,h-3,2));
for(int j=1;j<w-1;j++) {
cvmS et(u0,0,j, cvmGet(u0,2,j));
cvmSet(u0,h-1 ,j,cvmGet(u0,h-3 ,j)); }
for(int j=1;j<h-1;j++) {
cvmS et(u0,j,0, cvmGet(u0 ,j,2));
cvmSet(u0,j,w-1,cvmGet(u0,j,w-3)); }
//end NeumannBoundCond gradient(u0,gux, 1,0); gradient(u0,guy,0,1); cvLaplace(u0,del2u,1);
float* p_gux = (float*)cvPtr2D(gux,0,0,0);
float* p_guy = (float*)cvPtr2D(guy,0,0,0);
float gx,gy,gnorm,Nx,Ny;
for(int i=0 ;i<h*w;i++,p_gux++,p_guy++) {
gx = *p_gux;
gy = *p_guy;
gnorm = sqrt(gx*gx + gy*gy + 1e-10f); Nx = gx/gnorm; *p_gux = Nx; Ny = gy/gnorm;
*P_guy = Ny; }
gradient(gux,gux2,1,0);gradient(guy,guy2,0,1);
p_gux = (float*)cvPtr2D(gux,0,0,0);
P_guy = (float*)cvPtr2D(guy,0,0,0);
float* p_vx = (float*)cvPtr2D(vx,0,0,0);
float* p_vy = (float*)cvPtr2D(vy,0,0,0);
float* p_u0 = (float*)cvPtr2D(u0,0,0,0);
float* p_g = (float*)cvPtr2D(g,0,0,0);
float* p_gux2 = (float*)cvPtr2D(gux2,0,0,0);
float* p_guy2 = (float*)cvPtr2D(guy2,0,0,0);
float* p_del2u = (float*)cvPtr2D(del2u,0,0,0);
float weightedLengthTerm, weightedAreaTerm, penalizingTerm;
float Vx,Vy,K,d2u,gx2,gy2,diracU,gg,U0;
for(int
i=0;i<h*w;i++,p_gux++,p_guy++,p_vx++,p_vy++,p_g++,p_gux2++,p_guy2++,p_de
l2u++,p_u0++) {
Nx = *p_gux;
Ny = *p_guy; Vx = *p_vx;
Vy = *p_vy; gg = *p_g;
gx2 = *p_gux2; gy2 = *p_guy2; d2u = *p_del2u; U0 = *p_u0;
if((U0 > epsilon) || (U0 < -epsilon))
diracU = 0;
else
diracU = c1*(1+cos(c2*U0)); K = gx2 + gy2;
weightedLengthTerm = lambda*(Vx*Nx + Vy*Ny + gg*K); penalizingTerm = d2u-K; weightedAreaTerm = alf*gg;
U0 += timestep*(mu*penalizingTerm + diracU*(weightedLengthTerm + weightedAreaTerm));
*p_u0 = U0; }
return u0;
}
int LevelSetEvolution(CvMat* u0, CvPoint contours[][MAX_CONT_LENGTH],
CvPoint* points, int length, int* lengths, int num_iter) {
float c0 = 4.0; float dist;
float func_eps = 0.1; int h = u0->height; int w = u0->width; int length_prev = 0; int ncontours = 0;int i,j; CvMat* u;
Обратите внимание, представленные выше научные тексты размещены для ознакомления и получены посредством распознавания оригинальных текстов диссертаций (OCR). В связи с чем, в них могут содержаться ошибки, связанные с несовершенством алгоритмов распознавания. В PDF файлах диссертаций и авторефератов, которые мы доставляем, подобных ошибок нет.