Подписаться на нашу рассылку

    Комментарии

    Разработка программного обеспечения для бесконтактного управления БПЛА

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

    Неплохие перспективы показывает совмещение технологий искусственного интеллекта и беспилотных летательных аппаратов (БПЛА).

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

    Для наглядности рассмотрим схему работы классической нейросети (рис. 1).

    Классическая нейросеть состоит из нескольких слоев с нейронами: входной слой, скрытые слои и выходной слой. Нейроны соединены между собой синапсами, каждый из которых обладает своим весом W — коэффициентом значимости (рис. 2).

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

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

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

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

    В случае бесконтактного управления БПЛА нейросеть должна принимать в качестве исходных данных цвета пикселей текущего кадра и пытаться обнаружить на кадре искомый объект, который будет служить ориентиром для принятия решения, в какую сторону необходимо переместить аппарат. Например, это может быть рука человека.

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

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

    Разрабатывается и ПО для управления БПЛА с помощью жестов. Авторы работы используют для этого не только видеокамеру, но и трехмерный сенсор Asus Xtion Pro Live, который нечувствителен к условиям освещения и размерам ладони и тела человека. Технология бесконтактного управления БПЛА установлена на дроне DJI Mavic Air (Китай). С помощью определенных жестов можно заставить данный БПЛА выполнять съемку или переходить в режим следования.

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

    Материалы и методы исследования

    Программное обеспечение разрабатывалось в среде PyCharm, версия 2023.2.1 (правообладатель — JetBrains s. r. o., Чехия) на языке Python 3.11. Для распознавания изображений использовалась нейросетьYOLOv8 (правообладатель — Ultralytics, Испания). Для тестирования программы использовался беспилотный летательный аппарат Geoscan Pioneer mini (производитель — ГК «Геоскан», Россия) (рис. 3).

    Разработка и тестирование программного обеспечения осуществлялись в ФГБОУ ВО «Кузбасский государственный аграрный университет им. В.Н. Полецкова» в 2023 г.

    Результаты и обсуждение

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

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

    Весь датасет был поделен на три группы (табл. 1).

    Обучение нейросети осуществлялось при следующих условиях: соотношение количества изображений между тренировочным, валидационным и тестовым датасетом составляло 7:3:1, максимальное количество эпох обучения — 300, размер пакета для загрузчика данных — 8. В качестве оптимизатора использовался стохастический градиентный спуск (SGD).

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

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

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

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

    На рисунке 4б представлен график зависимости функции потерь по классу. В данном случае класс один, и данная функция показывает, насколько точно модель предсказывает, есть ли на изображении рука или нет. Такой критерий качества обучения, как метрика mAP (mean average precision), используется для оценки точности детектирования объектов на изображении, измеряется в диапазоне от 0 до 1. Чем она выше, тем более точно нейросеть находит нужные объекты на изображениях.

    Изначально максимальное количество эпох обучения было задано 300. Как показали ранее проведенные исследования, этого вполне достаточно для обучения модели. Однако в ходе обучения модели через 162 эпохи обучения значение метрики mAP50-95 практически не возрастает и колеблется в диапазоне 0,845–0,855 (рис. 4в).

    По условию обучения данной нейросети если через 50 эпох обучения не наблюдается прогресса в возрастании метрики, то обучение останавливается. Таким образом, обучение было остановлено на 212-й эпохе обучения.

    Из графиков (рис. 4) видно, что в течение первых 20 эпох скорость обучения наибольшая: значение метрики возрастает (от 0,42 до 0,75), а величина функции потерь по классу снижается (от 1,88 до 0,550. При дальнейшем обучении наблюдается снижение скорости изменения указанных показателей, которые по мере продвижения по эпохам обучения стремятся к 0. Количество слоев нейросети составило 168, количество подобранных параметров — 3 005 843.

    Далее в среде разработки PyCharm на языке программирования Python была разработана программа для взаимодействия пользователя с БПЛА через интерфейс нейросети. На рисунке 5 представлена блок-схема данной компьютерной программы.

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

    Пользователь вводит исходные данные: размеры виртуального куба, ограничивающего полетное пространство БПЛА, — координаты x, y и z (в м). Также пользователь вводит шаг перемещения беспилотника. Затем происходят загрузка обученной модели, инициализация необходимых переменных, создание переменной счетчика трекера (изображения руки на кадре) и переменной триггера. Создаются окна с изображением БПЛА в двух проекциях, осуществляется подключение к беспилотнику.

    В данном случае тестирование производилось на коптере Geoscan pioneer mini, подключение которого — через WiFi-соединение.

    После этого следует цикл — основная часть программы. Вначале она получает кадр с камеры. При этом можно использовать изображение с кадра веб-камеры либо с самого БПЛА. Полученный кадр декодируется и передается в нейросеть, которая пытается найти на кадре трекер — изображение руки. Если трекер найден, то рассчитываются его площадь и координаты. После идет проверка: если триггер a активен (значение True) и общее количество обнаруженных трекеров за все предыдущие кадры меньше 10, то значение площади текущего трекера добавляется в список. Когда количество найденных трекеров за предыдущие предсказания станет равным 10, то программа рассчитывает среднее арифметическое площади трекера за все 10 предыдущих измерений.

    Таким образом определяется площадь руки в среднем положении. Вместе с этим значение триггера а устанавливается False. Во всех последующих итерациях указанный блок расчета средней площади трекера будет игнорироваться. Далее производятся оценка координат трекера на текущем кадре относительно ее центра и корректировка пространственных переменных, отвечающих за дальнейшее перемещение самого беспилотника и изображения БПЛА в симуляторе. При этом в программу заложена «нейтральная зона» — это определенная область вокруг осей x и y, проходящих через центр кадра, нахождение трекера в которой не приводит к изменению пространственных переменных. Другими словами, если рука по кадру находится в центральной части, то БПЛА не будет двигаться по осям x и z. В противном случае перемещение руки влево и вправо будет способствовать перемещению БПЛА по оси х в соответствующую сторону, а перемещение руки по кадру вверх и вниз  поднятию или опусканию БПЛА (перемещение по оси z).

    Для того, чтобы перемещать коптер вперед-назад (по оси y), используется полученное ранее значение средней площади трекера. Если пользователь перемещает руку ближе или дальше к камере, то программа, сравнивая значение текущей площади трекера со средним значением, отправляет управляющие сигналы на БПЛА для его перемещения по оси y. Таким образом, двигая рукой перед камерой, можно перемещать беспилотник по всем трем осям внутри полетной области, заданной пользователем.

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

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

    На рисунке 6 представлены рабочие окна программы. Слева приведено окно распознавания трекера в текущем кадре, справа — окно графической симуляции перемещения коптера в двух проекциях. Снизу отображаются относительные координаты БПЛА. За начало отсчета координат x и y принята точка старта коптера. Начальная высота задана в 1,5 м.

    Стоит отметить, что в данном программном обеспечении управляющими сигналами служили команды на перемещение коптера в локальную точку (go_to_local_point) с заданными значениями x, y, z и yaw (рыскание). Последний параметр отвечает за поворот коптера вокруг вертикальной оси (в данном случае он всегда был равен 0).

    Другим способом перемещать коптер является отправка команд по RC-каналам. Он позволяет быстрее реагировать БПЛА на управляющие команды, однако в этом случае возникает сложность в точности позиционирования коптера.

    Выводы

    Таким образом, было разработано программное обеспечение для бесконтактного управления БПЛА с помощью движений руки. На рисунке 7 представлена часть кода программы.

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

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

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

    Об авторах

    Дмитрий Евгеньевич Федоров, кандидат технических наук

    fedorov_de@inbox.ru; https://orcid.org/0000-0002-8641-0662

    Кузбасский государственный аграрный университет им. В.Н. Полецкова, ул. Марковцева, 5, Кемерово, 650056, Россия

    УДК 004.891.4 DOI: 10.32634/0869-8155-2024-379-2-107-112

    Журнал «Аграрная наука»

    Сельское хозяйство, ветеринария, зоотехния, агрономия, агроинженерия, пищевые технологии

    0 Комментарий
    Межтекстовые Отзывы
    Посмотреть все комментарии
      ПОДПИШИТЕСЬ
      БЕСПЛАТНО
      на электронную версию журнала «Аграрная наука» и получайте ежемесячно pdf на свой e-mail.

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