В статье рассмотрен подход к дистанционному управлению беспилотным летательным аппаратом по изображениям жестов руки с использованием технологий нейросетей. Представлены результаты моделирования и обучения нейросети для распознавания изображений ключевых точек руки. Проведены экспериментальные исследования разработанной системы дистанционного управления на основе учебного квадрокоптера.
Ключевые слова: беспилотный летательный аппарат, дистанционное управление, распознавание изображений с использованием технологий нейросетей.
Среди современных беспилотных систем наибольшей популярностью пользуются мультироторные беспилотные летательные аппараты (БПЛА) по причине их доступности и простоты эксплуатации. В частности, наиболее распространёнными в настоящее время являются мультироторные системы с четырьмя винтами (квадрокоптеры).
Управление квадрокоптером осуществляется, в основном, с пульта дистанционного управления, который может быть заменен на приложение в смартфоне. Тем не менее, возможности беспилотных аппаратов позволяют программировать траекторию их полета заранее. Кроме того, уже сегодня в функционал специального программного обеспечения внедряются технологии искусственного интеллекта, позволяющие БПЛА действовать самостоятельно в зависимости от складывающейся обстановки [1, 2].
Существует большое количество публикаций по распознаванию жестов руки как метода человеко-машинного взаимодействия [3, 4]. Однако в указанных научных трудах не рассматривается решение какой-либо конкретной задачи с использованием исследуемых подходов.
В работе для решения задачи распознавания жестов руки оператора по изображениям, получаемым с видеокамеры квадрокоптера, было принято решение о применении технологий нейросетей. Обучение нейронных сетей со сложной архитектурой на массиве исходных данных занимает большое количество времени даже при наличии вычислительных мощностей [5]. Значительные ресурсы требуются и на предобработку данных для обучения, которую зачастую делают вручную. Сегодня существует понятие предобученных моделей, которые можно использовать без предварительной настройки или дообучить под конкретную задачу [6]. Применение предобученных нейронных сетей экономит много ресурсов и времени.
В ходе работы был изучен и применен фреймворк Mediapipe от компании Google , представляющий совокупность большого количества уже готовых и оптимизированных модулей для работы с данными [7]. Кроме того, для выполнения численных расчетов была применена библиотека TensorFlow , также разработанная специалистами Google [8]. Помимо прочих возможностей перечисленные программные средства позволяют использовать математический аппарат искусственных нейросетей для распознавания объектов на изображении. Рассмотрим процесс распознавания жестов и применения результата распознавания для управления квадрокоптером.
В рамках проводимых исследований по причине отсутствия готовых наборов датасет был сформирован самостоятельно. В качестве элемента набора данных в работе принят результат распознавания ключевых точек руки, полученных при помощи средств MediaPipe . Пример отдельного изображения из набора данных приведен на рис. 1. Экспериментально установлено, что применение изображения с расположением ключевых точек руки позволяет достичь лучшего значения показателя качества распознавания по сравнению с обработкой реальных снимков руки. Для управления квадрокоптером определено семь жестов (движение вперед-назад-вверх-вниз, поворот по и против часовой стрелки, взлет и посадка — один жест). Количество фотографий на каждый жест составило от 300 до 400 вариаций.
Рис. 1. Примеры изображений с расположением ключевых точек руки
TensorFlow — библиотека с открытым исходным кодом, созданная для языка программирования Python командой Google Brain . TensorFlow компилирует множество различных алгоритмов и моделей, позволяя пользователю реализовать глубокие нейронные сети для решения таких задач, как распознавание и классификация изображений. Данные в TensorFlow представлены n -мерными массивами — тензорами. Граф составлен из данных (тензоров) и математических операций. В узлах графа находятся математические операции. Ребра графа представляют тензоры, которые «перетекают» между операциями. На рис. 2 показана структура модели нейросети, реализованная при помощи средств TensorFlow .
В структуру модели графа, представленного на рис. 2, входят константы, переменные, операции, а также промежуточные результаты вычислений. Отдельными элементами нейронной сети, которые необходимо определить, являются гиперпараметры. В отличие от параметров, которые обновляются во время обучения, указанные значения задаются изначально и остаются постоянными на протяжении всего процесса. К гиперпараметрам относятся: скорость обучения, количество итераций, порог переобучения, функция активации, а также алгоритм оптимизации, используемый для минимизации потерь.
Рис. 2. Структура модели нейросети в виде графа TensorFlow
После того, как модель нейросети скомпилирована, её необходимо обучить. Процесс обучения включает в себя передачу обучающего набора данных через граф и оптимизацию функции потерь. Каждый раз, когда сеть выполняет итерацию по пакету дополнительных обучающих изображений, она обновляет параметры, чтобы уменьшить потери и более точно предсказать изображенные на снимках жесты руки. Процесс тестирования включает в себя запуск тестового набора данных через обученный граф и отслеживание количества правильно предсказанных изображений для расчета точности. Результаты обучения нейросети в виде графиков функций изменения точности предсказания и функции потерь показаны на рис. 3.
Рис. 3. Результаты обучения модели нейросети: график функции изменения точности предсказания (слева) и график функции потерь (справа)
Анализ графиков показывает, что применение нейросети позволяет добиться практически стопроцентной точности распознавания изображений жестов руки. Естественно, что при увеличении количества жестов показатель точности снизится, так как некоторые жесты могут оказаться достаточно похожи. Тем не менее, практика применения нейросетей в подобных задачах показывает, что даже в случае большого количества вариаций исходного набора объектов при правильной организации процесса обучения могут быть достигнуты высокие показатели распознавания.
Для программирования системы управления движением квадрокоптера DJI Ryze Tello разработчиками Python представлен отдельный модуль djitellopy , включающий в себя набор готовых команд [9]. Порядок применения команд управления подробно описан в документации Tello SDK , представляющей собой описание комплекта средств разработки, который позволяет специалистам по программному обеспечению создавать приложения для определённого пакета программ [10].
В работе в качестве базовых команд управления установлены команды на движение летательного аппарата по четырем направлениям пространства (вперед, назад, вверх, вниз), повороты по часовой стрелке и против часовой стрелки, команда «ожидание», а также команда на взлёт и посадку. При этом для двух последних маневров используется один жест, обеспечивающий последовательное выполнение команд на взлет и посадку. На рис. 4 приведена структура предложенной системы управления. Компонентами системы являются:
- Квадрокоптер DJI Ryze Tello в качестве модели БПЛА.
- Оператор БПЛА, демонстрирующий жесты в поле зрения встроенной камеры квадрокоптера.
- Вычислительное устройство, представленное настольной ПЭВМ с установленным программным средством для обработки видеопотока, полученного со строенной камеры квадрокоптера, преобразующее форму жеста в управляющую команду для БПЛА. Передача данных между БПЛА и вычислительным устройством происходит по каналу связи WiFi .
Рис. 4. Система управления движением квадрокоптера
Для естественности управления жесты оператора подобраны таким образом, чтобы форма жеста приблизительно соответствовала направлению движения БПЛА. В таблице 1 приведены выбранные жесты и соответствующие им команды управления DJI Ryze Tello .
Распознавание жестов руки проводится посредством покадровой обработки видеопотока, формируемого встроенной камерой квадрокоптера.
Таблица 1
Жесты руки, соответствующие командам управления квадрокоптера
№ п/п |
Жест |
Изображение ключ. точек |
Обозначение жеста |
Команда управления |
1 |
|
|
G1 |
«Взлет/посадка» |
2 |
|
|
G2 |
«Вверх» |
3 |
|
|
G3 |
«Вниз» |
4 |
|
|
G4 |
«Поворот по часовой стрелке» |
5 |
|
|
G5 |
«Поворот против часовой стрелки» |
6 |
|
|
G6 |
«Вперед» |
7 |
|
|
G7 |
«Назад» |
8 |
|
|
G8 |
«Ожидание» |
Для оценки качества распознавания приведённых жестов предложенный метод запрограммирован и апробирован на базе тестовой выборки из 700 изображений жестов. Результаты распознавания приведены в таблице 2. Точность распознавания вычисляется как доля изображений, действительно принадлежащих к данному виду жеста, относительно всех изображений, которые были отнесены к этому виду. Полнота распознавания определяется как доля найденных нейросетью жестов, принадлежащих к определенному виду, относительно всех жестов этого вида в тестовой выборке. Из таблицы видно, что средняя точность и полнота распознавания составляют 99 %. Установлено, что в основном ошибки работы нейросети связаны с ошибками оператора, демонстрирующего жесты. Так, например, при показе жеста G8 при широко расставленных указательном пальце и мизинце нейросетью распознавался жест G7 . Программа была протестирована на персональном компьютере с четырехядерным процессором без использования видеокарты. Время обработки кадра несущественно и в рамках решаемой задачи соответствует режиму реального времени.
Таблица 2
Характеристики качества распознавания жестов руки
Характеристики качества распознавания |
Значения |
|||||||
G1 |
G2 |
G3 |
G4 |
G5 |
G6 |
G7 |
G8 |
|
Точность распознавания |
0,99 |
1,00 |
1,00 |
1,00 |
1,00 |
0,99 |
0,98 |
0,98 |
Полнота распознавания |
0,98 |
1,00 |
1,00 |
1,00 |
1,00 |
1,00 |
0,96 |
0,95 |
Представленные в данной работе набор команд и метод распознавания жестов предназначены для бесконтактного управления движением квадрокоптера. Преимуществом подхода по сравнению с другими методами является отсутствие необходимости использования дополнительных аппаратных средств для связи с квадрокоптером при формировании управляющих команд. В качестве недостатка необходимо отметить, что применение метода ограничено дальностью прямой видимости и качеством изображения, получаемого камерой квадрокоптера. Набор команд управления может быть легко дополнен новыми жестами.
Результаты работы позволяют утверждать, что разработка альтернативных систем управления движением беспилотных летательных аппаратов является актуальным перспективным направлением исследований. Внедрение элементов искусственного интеллекта в процесс управления и обработки данных беспилотных систем позволит повысить их автономность, защищенность от внешних воздействий, обеспечит безопасность их применения при решении самых различных задач.
Литература:
- Буй Ван Шон, Бушуев А. Б., Шмигельский Г. М., Литвинов Ю. В., Щаев Е. Г. Алгоритмы управления летающим роботом при слежении за подвижным объектом // Известия вузов. Приборостроение. 2015. Т. 58. № 8. С. 593–599.
- Нагапетян В. Э., Хачумов В. М. Распознавание жестов руки в задаче бесконтактного управления беспилотным летательным аппаратом // Автометрия. 2015. Т. 51. № 2. С. 103–109.
- Мурлин А. Г., Пиотровский Д. Л., Руденко Е. А., Янаева М. В. Алгоритм и методы обнаружения и распознавания жестов руки на видео в режиме реального времени [Электронный ресурс]. — URL: http: //ej.kubagro.ru/ 2014/03/pdf/20.pdf. Дата обращения: 03.04.2024.
- Чудновский М. М. Алгоритм распознавания жестов руки человека на видеопоследовательности в режиме реального времени для реализации интерфейсов человеко-машинного взаимодействия // Вестник СибГАУ. 2014. № 3(55). С. 162–167.
- Ярышев С. Н., Рыжова В. А. Технологии глубокого обучения и нейронных сетей в задачах видеоанализа — СПб: Университет ИТМО, 2022. — 82 с.
- Павлюкевич С. Г. Усик В. Ю., Громовой Н. С. Построение классификатора изображений на основе предобученной нейронной сети [Электронный ресурс]. — URL: https: //enigma-sci.ru/domains_data/files/ root_directory/ postroenie % 20klassifikatora % 20izobrazheniy % 20na % 20osnove % 20predobuchennoy %20neyronnoy %20seti.pdf. Дата обращения: 03.04.2024.
- MediaPipe Framework [Электронный ресурс]. — URL: https://developers.google.com/mediapipe/framework. Дата обращения: 03.04.2024.
- Create production-grade machine learning models with TensorFlow [Электронный ресурс]. — URL: https://www.tensorflow.org/. Дата обращения: 03.04.2024.
- DJITelloPy API Reference [Электронный ресурс]. — URL: https:// djitellopy.readthedocs.io/. Дата обращения: 03.04.2024.
- Tello SDK 2.0 User Guide [Электронный ресурс]. — URL: https:// usermanual.wiki/Document/Tello20SDK202020User20Guide.724102581/view. Дата обращения: 03.04.2024.