февраль 2020
для vologlobal.com

Задача
Разработать алгоритмическое обеспечение для роя патрульных дронов
Подготовить нейросетевую модель для распознавания следующих классов объектов: пешеход, велосипедист, мотоциклист, автомобиль, автобус, грузовик
Распознавание объектов должно стабильно работать в широком диапазоне углов и размеров объектов
Разработать алгоритм динамического распределения дронов по патрулируемой местности
Все доступные дроны должны динамически распределяться так, чтобы каждый участок оставался без наблюдения минимальное время
Результат
Ракурс объектов:
градусов
градусов
Размер объектов:
пикселей
пикселей
Процесс
Выбираем оптимальный стартовый датасет
Датасет VisDrone2020 содержит более 2.5 миллионов размеченных объектов следующих классов: пешеход, велосипед, машина, автобус, грузовик. Датасет состоит из 10,209 изображений и 265 тысяч кадров из 400 видеоклипов, снятых с помощью различных управляемых платформ и видеокамер в 14 городах Китая и за пределами городов

Выбираем архитектуру нейронной сети и обучаем
RetinaNet - single shot detector (SSD), использующий Feature Pyramid Network (FPN) и функцию ошибок Focal loss для обучения. Такая архитектура сети позволяет получать карты признаков разной детализации на разных уровнях сети, что улучшает классификацию и определения границ объекта при сильной дисперсии размеров искомых объектов.
Функция ошибок Focal Loss позволяет решить при обучении проблему значительного меньше объёма данных для искомых объектов относительно класса фона. Функций ошибок Focal Loss практически не учитывает при обучении примеры, которые изначально проще классифицируются, сосредотачивая "внимание" на сложных примерах и значительно улучшая тем самым качество работы модели.

Тестируем на разных объектах и ракурсах



Разрабатываем алгоритм маршрутизации роя
Разрабатываем алгоритм перемещения N агентов по произвольной маске для патрулирования вне городских улиц. Цель оптимизации - исключить опасные сближения дронов, уменьшить среднее время нахождения территории без наблюдения. Алгоритм должен динамически распределять доступные дроны, моментально реагируя на появление нового дрона или перехват управления оператором
Определяем целевую функцию и обучаем агента методами reinforcement learning:
Каждый агент принимает решение независимо
Наблюдение, которое каждый агент получает о среде - карта, "туман войны", текущие и планируемые позиции остальных дронов в виде маски
Переход агента в область, скрытую "туманом войны", поощряется функцией вознаграждения
Сближение агента с другим агентом штрафуется функцией вознаграждения
Обучаем версию агента, адаптированную для работы с графом городских улиц (получаем данные от openstreetmap)





