Автор:Круглов Д.Э., Волуева О.С.
Источник: ХХIV Международная научно-техническая конференция аспирантов и студентов (в рамках Международного Научного форума Донецкой Народной Республики)
(в рамках Международного Научного форума Донецкой Народной Республики)
К 90-летию кафедры «Горная электротехника и автоматика им. Р.М. Лейбова»
28-30 мая 2024 года
Сборник научных трудов конференции
Донецк, 2024
УДК 681.5
Круглов Д.Э., магистрант; Волуева О.С., доц., к.т.н., доц.
(ФГБОУ ВО «Донецкий национальный технический университет», г. Донецк, ДНР, РФ)
В результате активного развития технологий и прогресса в области искусственного интеллекта, искусственные нейронные сети всё чаще применяются в сфере распознавания образов, видеонаблюдения и компьютерного зрения. Нейронные сети обучаются распознавать различные сценарии и объекты на видео и могут самостоятельно выполнять мониторинг видеопотоки в реальном времени.
В результате анализа «классических» методов компьютерного анализа, можно выделить следующие преимущества использования искусственного интеллекта:
Существует множество разновидностей искусственных нейросетей (ИНС), отличающихся архитектурой, особенностями функционирования и сферами применения. Для выбора структуры сети рассматривались три самых популярных архитектуры ИНС: сети прямого распространения, сверточные и рекуррентные ИНС.
Структура ИНС прямого распространения представляет собой совокупность нейронных слоев. Нейросети прямого распространения обрабатывают данные в одном направлении, от входного слоя к выходному. Каждый нейрон взаимодействует со всеми нейронами соседних слоев посредством связей, каждая из которых имеет определенный весовой коэффициент, однако нейроны внутри одного слоя не взаимодействуют друг с другом.
Характерной особенностью сверточных нейросетей (СНС) является наличие операции свёртки, суть которой заключается в поэлементном умножении каждого фрагмента изображения на матрицу (ядро) свёртки. Результат умножения суммируется и записывается в соответствующую позицию выходного изображения (карта признаков). Сверточный слой представляет набор таких карт, число которых зависит от количества анализируемых признаков (границы, цвет, глубина). Архитектура и принцип работы СНС делает их эффективным инструментом анализа графической информации.
В рекуррентных нейросетях (РНС) связи между элементами представляют собой направленную последовательность. Такое строение позволяет обрабатывать серии событий во времени и последовательные пространственные цепочки, что позволяет этим ИНС с высокой точностью распознавать речь и рукописный текст. В РНС нейроны получают информацию не только от предыдущего слоя, но и от самих себя предыдущего прохода. Для генерации изображений РНС используются только вместе с СНС.
Для решения поставленной задачи целесообразно использовать свёрточную нейронную сеть, так как она обладает следующими преимуществами по сравнению с другими ИНС, в частности, сетями прямого распространения:
Свёрточная нейронная сеть чередует свёрточные слои (convolution layers) и субдискретизирующие слои (subsampling layers или pooling layers, слои подвыборки). Структура сети - однонаправленная (без обратных связей), принципиально многослойная.
Операция свёртки заключается в том, что каждый фрагмент изображения умножается на матрицу (ядро) свёртки поэлементно, а результат суммируется и записывается в аналогичную позицию выходного изображения.
Функция активации нейронов (передаточная функция) - любая, по выбору исследователя. В данной работе использованы различные функции активации на слоях.
После нескольких прохождений свёртки изображения и уплотнения с помощью пулинга система перестраивается от конкретной сетки пикселей с высоким разрешением к более абстрактным картам признаков. Карты признаков представляют собой более высокоуровневые признаки изображения, такие как формы или объекты.
Для извлечения признаков используются различные наборы фильтров.
Фильтр представляет собой матрицу весов (ядро), которая “скользит” по двумерному изображению. В процессе этого “скольжения”, ядро поэлементно выполняет операцию умножения с той частью входных данных, над которой оно сейчас находится, и затем суммирует все полученные значения в один выходной пиксель. Этот процесс повторяется для каждой локации, над которой «скользит» ядро, преобразуя двумерную матрицу в другую все еще двумерную матрицу признаков.
Результат работы фильтра объединяется в новую матрицу, к каждому значению которой прибавляют шаг, на который перемещался фильтр по изображению. Признаки на выходе являются взвешенными суммами (где веса являются значениями самого ядра) признаков на входе, расположенных примерно в том же месте, что и выходной пиксель на входном слое.
В свёрточной нейронной сети фильтры применяются последовательно. После того, как первый слой фильтров обработал исходное изображение, создав новую матрицу, следующий слой фильтров применяется уже к этой новой матрице. Это означает, что второй слой фильтров не работает с исходным изображением, а работает с матрицей признаков, созданной первым слоем фильтров.
Этот процесс повторяется для каждого последующего слоя в нейросети. Каждый слой фильтров обрабатывает выход предыдущего слоя, все глубже и глубже проникая в данные и создавая все более сложные представления признаков.
Таким образом фильтры в свёрточной нейронной сети позволяют обнаруживать различные признаки на изображении, такие как края, углы, текстуры и т.д.
После того, как карта признаков изображения была создана, значения, представляющие изображение, передаются через функцию активации или слой активации. Функция активации принимает эти значения, которые благодаря сверточному слою находятся в линейной форме (то есть просто список чисел) и увеличивает их нелинейность, поскольку сами изображения являются нелинейными.
В данной работе обучение нейронной сети производится на изображениях сборки CIFAR10.
CIFAR-10 (Canadian Institute For Advanced Research) - это набор данных, который состоит из 60 000 цветных изображений размером 32x32 пикселя, разделенных на 10 различных классов. Этот набор данных широко используется для обучения алгоритмов машинного обучения и компьютерного зрения.
Написание программы будет производиться в IDE IntelliJ IDEA на языке Python.
Для создания и обучения нейронной сети будет использоваться фреймфорк TensorFlow с использованием функционала Keras.
TensorFlow - это библиотека с открытым исходным кодом, созданная специально для Python. TensorFlow компилирует множество различных алгоритмов и моделей, позволяя пользователю реализовать глубокие нейронные сети для использования в таких задачах, как распознавание и классификация изображений, а также обработка естественного языка. TensorFlow - это мощный фреймворк, который функционирует путем реализации ряда узлов обработки, каждый из которых представляет математическую операцию, а весь ряд узлов называется «графом».
Keras - это высокоуровневый API, который может использовать функции TensorFlow (а также другие библиотеки ML, такие, как Theano). Keras был разработан с удобством и модульностью в качестве руководящих принципов. С практической точки зрения Keras позволяет реализовать множество мощных и сложных функций TensorFlow максимально просто, к тому же он настроен для работы с Python без каких-либо серьезных изменений или настроек.
Программная реализация искусственной нейронной сети будет основываться на следующих классах фреймворка TensorFlow:
Запустим нейронную сеть, подадим на вход изображение в формате 32х32х3 пикселя:
Общая точность нейронной сети по завершении обучения составляет 84,44%, что позволяет использовать данную сеть для анализа изображений с определённым уровнем точности.
Проведём тестирование ИНС на ряде данных, взятых из сети Интернет.
Имеем следующую точность по классам:
Стоит учитывать, что итоговое тестирование в «полевых условиях» проводилось на ограниченной выборке данных, так как создание полноценного тестировочного набора является крайне затратным по времени.
Итоговая средняя точность при подобном ручном тестировании составила 64,65%. Полученный результат можно объяснить влиянием следующих факторов, что полностью согласовывается с теорией и практикой применения ИНС:
> 1. Model.Exponenta.Ru — учебно-методический сайт о моделировании и исследовании систем, объектов, технических процессов и физических явлений. http://model.exponenta.ru/
2. Хайрер Э., Ваннер Г. Решение обыкновенных дифференциальных уравнений. Жесткие и дифференциально-алгебраические задачи. М.: Мир, 1999. 685 с.
3. Сайт разработчиков ПК «МВТУ». http://mvtu.power.bmstu.ru/
4. Shampine L.F., Reichelt M.W. The MATLAB ODE Suite // SIAM J. on Scientific Computing. Vol. 18. 1997. № 1. P. 1-22.
5. Bogacki P., Shampine L.F. A 3(2) pair of Runge-Kutta formulas // Applied Mathematics Letters. Vol. 2. 1989. № 4. P. 321-325.
6. Hosea M.E., Shampine L.F. Analysis and implementation of TRBDF2 // Applied Numerical Mathematics. Vol. 20. 1996. № 1-3. P. 21-37.
7. Скворцов Л. М. Адаптивные методы численного интегрирования в задачах моделирования динамических систем // Изв. РАН. Теория и системы управления. 1999. № 4. С. 72-78.