---
id: mania-beetz-self-training-with-vr-2019
title: 'Машинное обучение роботов в виртуальных средах'
---

*Оригинал: [A Framework for Self-Training Perceptual Agents in Simulated Photorealistic Environments, Patrick Mania and Michael Beetz, 2019](https://ai.uni-bremen.de/papers/mania19scenarios.pdf)*

## Введение

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

Алгоритмы машинного обучения требуют больших датасетов. И это их узкое место. Изображения, которые генерируются людьми не подходят, потому что там объект съёмки всегда правильно сфокусирован, позиционирован и хорошо освещён, тогда как в реальности часто бывает по-другому. В тоже время игровые движки позволяют создавать фотореалистичные сцены для датасетов, где положение объектов нам заранее известно. Обладая этим знанием легче вычислить какие из полученных через сенсоры данных относятся к тем или иным объектам.

Модуль UnrealCV позволяет генерировать изображения с RGB, глубиной и маской объекта из камеры внутри виртуальной реальностти, что может быть использовано, например, для обучения моделей визуального распознавания объектов.

## Архитектура системы

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

Фреймворк состоит из следующих компонентов:
* ___Training Data Collector___. Генерирует наборы изображений из сцен, связывая их с определёнными задачами робота.
* ___Scenario Description Language___ - язык семантической спецификации, который позволяет программистам специфицировать сценарии поведения роботов более понятным и модульным способом. Базовый сценарий модифицируется вероятностным образом, добавляя и убирая объекты и изменяя их положение. Дополнительно, параметризированное высокоуровневое описание поведения робота может быть специфицировано тогда, когда параметризация может быть изменена.
* ___Semantic Scenario Sampler___ (сэмплер семантических сценариев). Принимает вероятностное описание сценария и превращает его в стохастический процесс, который рисует примеры, подразумеваемые распределением, определенным в сценарии SDL.

![Архитектура фреймворка для самообучения в фотореалистичных средах](img/self_training_framework_architecture.png)

*Сценарии из различных предметных областей могут быть выражены с помощью SDL и помещена в специальную базу данных. Эти сценарии могут быть настроены в виртуальной среде(симуляторе), где действуют воспринимающие агенты. Агент воспринимает сенсорные данные от среды и использует свою систему восприятия, чтобы выполнить поставленную задачу.*

___Scenario Runner___ создаёт сцены в симуляторе в соответствии со сценариями и использует модуль ___High-Level Agent Control___, чтобы параметризировать совершенствуемого агента, исходя из обратной связи от ___Critic___. Симуляционная среда составляется из игрового движка и т.н. ___Interface Layer___, который обеспечивает эффективную коммуникацию и необходимую логику для программного управления виртуальной средой. После того как сцена и агент вводятся в симуляционную среду, агент использует высокоуровневую программу управления и систему восприятия, чтобы чувствовать среду, выводить движения и решать задачу. Каждый акт восприятия может быть помещён в ___Percept Database___ для логгирований и обеспечивать базис для вычисления и дальнейшего усовершенствования моделей.
Каждая ситуация, которой агент должен быть противопоставлен модет моделироваться как ___Scenario___ на языке SDL. Каждый сценарий содержит в себе три основных части: ___Scenario Meta Data___ используется, чтобы присвоить уникальные идентификаторы сценарию и его компонентам. Чтобы снизить "искусственность" сенсорных данных, в SDL можно задать модели шума. Описание виртуальной среды, где агент должен действовать, задаётся в ___Environment Parametrization___, которая включает в себя, например, такие сущности как примитивы, 3D-модели и параметры света, влияющие на алгоритмы визуального восприятия. Для поддержки обучения агентов различным моделям поведения внутри фреймворка High-Level Control тоже может быть параметризирован в сценарии. Все сценарии собираются в базу данных и могу быть заданы несколькими способами. Сценарии можно создавать и вручную - с помощью инструментов Move, Rotate и т.п. После того как всё настроено, структура среды может быть сохранена как сценарий и помещена в базу данных.

Чтобы генерировать обширное количество сценариев для мобильных роботов предлагается использовать вероятностные модели. С помощью этих моделей можно создавать различные случайные сцены из объектов и использовать их для обучения агента. Scenario Runner может настроить выбранное количество из семплированных сценариев в среде симуляции, разместить и запустить внутри неё агента, дождаться завершения и обозреть достигнутые результаты. Внутри цикла ___восприятие-действие-обратная связь___ агент может усовершенствовать свои механизмы восприятия, основываясь на полученных семплированных сценах и обратной связи от Critic.

## Scenario Description Language

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

```clojure
(a scenario
	(identified-by (a date) (an #id)
	(an environment
		(an object (type class1) (pose p1) (distribution dist1))
		(a light (pose p2) (with light-parameters(...))))
	(an agent
		(task-description (a task(...)))
		(with startup-parameters
			(param-type1 val1)
			...
			(param-typen valn))))
```

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

Поддержка инициализации и параметризации различных агентов осуществляется Высокоуровневой частью параметризации (High-Level Parametrization) SDL, которая позволяет определить процесс запуска агента и задачу описания действия объекта. Это описание используется для запуска агента, запускаемого исполнителем сценариев(Scenario Runner), который координирует выполнение агента, а также настройку и уничтожение виртуальной среды.

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

Процесс генерации новых сценариев в соответствии с типичными распределениями сущностей реализуется семантическим шаблоном сценариев. Во-первых, мы разделяем сценарии на два типа: нормативные и конкретные. Оба сценария объявлены в одном и том же SDL, но необходимы для двух разных задач: Нормативные сценарии используются в качестве предварительного
для моделирования абстрактной структуры сцены. В примере настройки таблицы это будет включать потенциальное положение и количество всех объектов, имеющих отношение к задаче. Используя эту базовую структуру в дополнение к свойствам распределения для каждого объекта в параметризации среды, мы можем выбрать бесконечное количество различных сценариев для улучшения в стохастическом процессе. В рамках этого процесса сэмплер будет решать, будут ли объекты из Нормативных сценариев удалены со сцены, изменены в их количестве или будут размещены в других областях. Эти новые, сгенерированные сценарии будут описаны в нашем SDL и называются Конкретными сценариями. Такой сценарий будет создан в среде моделирования и будет использоваться для улучшения перцептивных возможностей агента.

## Интерфейсы для симуляции

Основным компонентом среды моделирования в предлагаемой нами структуре является Unreal Engine 4, который представляет собой современный игровой движок, способный создавать очень реалистичные рендеринги. UE4 использует собственный формат данных для описания виртуальной среды в нем. Для настройки среды, которая была определена в нашем SDL в этом игровом движке, был реализован коммуникационный уровень, который позволяет изменять среду моделирования во время выполнения. Это позволяет нашей платформе настраивать различные среды без необходимости длительных перезапусков среды моделирования и, следовательно, более высокой пропускной способности выполнения сценариев. Наш коммуникационный уровень основан на ROS (Robot Operating Systems), который является широко используемым роботизированным фреймворком в научном сообществе. Каждое действие, такое как появление или разрушение объектов или изменение настроек освещения, может быть выполнено с использованием стандартных методов связи ROS. Центральной конечной точкой этого уровня связи является реализованный интерфейсный уровень внутри UE4. Этот уровень обрабатывает стек связи и предоставляет методы для управления данной виртуальной средой. Центральным компонентом является модуль порождения SDL, который обрабатывает запросы на создание объектов. Можно либо создавать геометрические примитивы, либо 3D-сетки. Примитивы могут быть полезны для визуализации состояния робота или изучения результатов физических процессов, как в [13], в то время как 3D-mesh незаменимы при изучении распределения изображений в реальных задачах с текстурированными объектами, такими как предметы домашнего обихода. Чтобы записать пространственное соотношение объектов во время выполнения, мы реализовали ROS tf2 в UE4 для анализа движения объектов во время выполнения агента или для записи заданной настройки в качестве сценария. Мы публикуем наш интерфейс между UE4 и ROS, который необходим для программного управления виртуальными средами и позволяет другим исследователям проводить свои собственные эксперименты в этом игровом движке.

## Оптимизация перцептивных агентов

В этом разделе объясняется интеграция перцептивных агентов в этой фреймворке. Самый важный источник данных для перцептивных агентов - это данные, которые генерируются из Среды моделирования. Эти данные должны быть захвачены компонентом восприятия агента, который может резко измениться в зависимости от поставленной задачи. Чтобы иметь дело с различными системами восприятия и интерфейсами, мы интегрировали ROS в среду моделирования, чтобы обеспечить
сенсорные данные в систему восприятия. Поскольку UE4 доступен на наиболее распространенных платформах, мы использовали rosbridge для обеспечения независимого от платформы интерфейса моделирования.

Основные сенсорные данные нашего агента - это восприятие виртуальной среды в RGBD. Поскольку эти потоки данных восприятия требуют большой пропускной способности канала, необходимо компактно передавать эти двоичные данные. Rosbridge использует JSON для связи, который не имеет встроенной поддержки двоичных данных и поэтому должен быть преобразован в base64, что является вычислительно дорогостоящим. Чтобы увеличить производительность связи, мы расширили rosbridge для поддержки сериализации BSON. Это улучшение было объединено в официальный репозиторий rosbridge, чтобы помочь другим приложениям с аналогичными требованиями к производительности.

Генерация данных RGB-D осуществляется специализированной виртуальной камерой в моделируемой среде, которая генерирует данные RGB, маски объектов и глубины. Код рендеринга этой камеры основан на UnrealCV. Он был расширен для поддержки кодирования данных датчиков в формате BSON, включения моделей шума датчиков и необходимой интеграции для его использования в ROS, включая базовые координатные фреймы и параметры камеры.

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

В качестве образцовой системы восприятия для мобильных роботов мы интегрировали RoboSherlock[17] в нашу структуру. Он совместим с ROS и обертывает различные алгоритмы машинного зрения для того, чтобы для классификации объектов в данных от датчиков. При получении данных RoboSherlock может их анализировать и поддерживать внутреннее состояние окружающей среды. После анализа данных каждый акт восприятия может быть сохранено во внутренней базе данных вместе со всеми отдельными алгоритмами восприятия внутри RoboSherlock. Зарегистрированные акты восприятия и аннотации могут не только использоваться для решения задач обучения, но также подходят для отладки уже обученных моделей на уровне восприятия или сценария.

Критик(Critic) измеряет производительность текущего агента в выбранном сценарии. Это происходит путем наблюдения за текущим состоянием Scenario Runner, High-Level Agent Control и собранных метаданных о текущем выполняемом сценарии. Кроме того, Критик захватывает вычисленное состояние от системы восприятия и сравнивает его с исходными данными текущего сценария. Полученная в результате этой оценки обратная связь будет отправлена обратно в
систему восприятия, которая способна улучшить свои собственные модели, включив соответствующие методы обучения.
Несмотря на то, что предлагаемая система способна предоставлять данные для задач контролируемого обучения, она также может быть использована
для систематической оценки алгоритмов зрения. Различные настройки совокупностей объектов или
изменения ориентации могут быть смоделированы в нашем SDL, а затем систематически протестированы с помощью предлагаемой нами программной системы.

## Сопутствующие исследования

Qiu et al.[6] представили UnrealCV, который является основой для использования UE4 для задач машинного зрения. В своей работе они создали синтетический набор данных изображений с аннотациями и протестировали модель нейронной сети на изображениях с разных точек зрения сцены. Чжун[20] использовал UnrealCV в обучении с подкреплением, где движущиеся агенты должны научиться избегать столкновений. Наш подход позволяет использовать аналогичный набор функций, но также включает инструменты для управления виртуальной средой во время выполнения и обработки выполнения пакеты сценариев. Скиннер и др.[5] изучали использование игровых движков в компьютерном зрении. Они показали связь между производительностью алгоритмов машинного зрения в реальном мире и синтетическими данными в эксперименте SLAM. Авторы также заявили, что интеграция игрового движка в среду ROS позволит нам запустить алгоритм роботизированного зрения аналогично аппаратному симулятору в цикле, с его выходом, командующим позой камеры в симуляторе и отображаемым изображением, служащим входным сигналом. С нашим опубликованным коммуникационным интерфейсом ROS эта интеграция стала возможной. Шах и др.[21] представили симулятор на основе UE4 для мультикоптеров и связанных с ними задач обучения. Наша работа расширяет этот подход, используя язык описания сценариев для начальной загрузки различных сред обучения, управляя произвольным сложным агентом в нем и предоставляя более обобщенный способ доступа к симулятору путем интеграции хорошо известной платформы ROS вместо специфичного для домена API RPC. Ганони и др.[22] также создали моделирование на основе UE4 для мультикоптеров и измерили влияние изменений ветра или света на производительность алгоритмов слежения в фиксированном природная среда. Связанная с этим работа над описаниями сценариев варьируется в разных доменах. Формат описания Сцены [23] часто используется с роботизированным симулятором Gazebo для описания виртуальных сред. Однако он не включает в себя необходимые метаданные сценария и Высокоуровневую параметризацию для обработки серии экспериментов, выполняемых на основе различных описаний сценариев. Симулятор транспортного средства STIM[24] использовался в исследованиях для изучения эффектов различных сценариев для автомобилей. Субъект столкнется с запрограммированными сценариями, которые определены на языке определения сценариев.
Возможные определения на этом языке сосредоточены на размещении заранее определенных объектов, связанных с движением, в сцене или изменении условий дорожной среды. Точность визуализации не соответствует UE4, что делает невозможным использование STIM для задач машинного зрения реального мира.

## Заключение

Мы представили новый фреймворк со специализированным языком описания сценариев для автоматического создания обучающих данных в соответствии с распределением задач. Соблюдение этого
распределения для обучающих данных важно, поскольку многие алгоритмы обучения предполагают, что обучающие данные следуют тому же распределению, что и входные данные целевой области. Собранные данные ценны для роботов, поскольку современные игровые движки позволяют нам создавать обучающие данные из
среды фотореалистичного моделирования. Это может повысить надежность будущих алгоритмов машинного зрения, поскольку они могут быть обучены на более реалистичных данных при учете фактического
распределения целевой области.
В наших экспериментах мы показали правдоподобность
фреймворка, продемонстрировав пример распознавания объектов системы на реальном роботе. Система показала аналогичные результаты производительности при обучении с реальными данными по сравнению с той
же системой, обученной с данными, сгенерированными нашей платформой.
В будущей работе мы стремимся использовать этот фреймворк в контексте мобильной бытовой робототехники. Робот с базовой системой
восприятия будет сталкиваться с множеством домашних задач. Затем он должен улучшить свои показатели восприятия, используя нашу структуру, чтобы извлечь выгоду из обучающих данных, которые следуют за распределением конкретных задач.
Мы также исследуем использование виртуальной реальности(VR) в сочетании с нашим фреймворком. Чтобы изучить распределение объектов в реальном мире в конкретных задачах, испытуемым может быть предложено
выполнить эту задачу в виртуальной среде с помощью устройств виртуальной реальности. Виртуальная реальность позволяет субъекту почти естественным образом взаимодействовать с виртуальным миром и, следовательно, манипулировать окружающей средой аналогично тому, как это было бы сделано в той же задаче в реальном мире, получая более реалистичные данные.

## Ссылки

[1] C. D. Manning, P. Raghavan, and H. Schutze, ¨ Introduction to Information Retrieval. New York, NY, USA: Cambridge University Press,2008.

[2] G. Ros, L. Sellart, J. Materzynska, D. Vazquez, and A. M. Lopez, “The synthia dataset: A large collection of synthetic images for semantic segmentation of urban scenes,” in 2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR), June 2016, pp. 3234–3243.

[3] X. Peng, B. Sun, K. Ali, and K. Saenko, “Learning deep object detectors from 3d models,” in Proceedings of the IEEE International Conference on Computer Vision, 2015, pp. 1278–1286.

[4] A. Teichman and S. Thrun, “Tracking-based semi-supervised learning,” in Robotics: Science and Systems, Los Angeles, CA, USA, 2011.

[5] J. Skinner, S. Garg, N. Sunderhauf, P. Corke, B. Upcroft, and M. Milford, “High-fidelity simulation for evaluating robotic vision performance,” in 2016 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS), Oct. 2016, pp. 2737–2744.

[6] W. Qiu and A. Yuille, “Unrealcv: Connecting computer vision to unreal engine,” arXiv preprint arXiv:1609.01326, 2016.

[7] S. Qiao, W. Shen, W. Qiu, C. Liu, and A. Yuille, “Scalenet: Guiding object proposal generation in supermarkets and beyond,” arXiv
preprint arXiv:1704.06752, 2017.

[8] M. Roberts, D. Dey, A. Truong, S. Sinha, S. Shah, A. Kapoor, P. Hanrahan, and N. Joshi, “Submodular trajectory optimization for aerial 3d scanning,” in International Conference on Computer Vision (ICCV) 2017, 2017.

[9] A. Farhadi, I. Endres, D. Hoiem, and D. Forsyth, “Describing objects by their attributes,” in Computer Vision and Pattern Recognition, 2009. CVPR 2009. IEEE Conference on. IEEE, 2009, pp. 1778–1785.

[10] C. H. Lampert, H. Nickisch, and S. Harmeling, “Attribute-based classification for zero-shot visual object categorization,” IEEE Transactions on Pattern Analysis and Machine Intelligence, vol. 36, no. 3, pp. 453–465, 2014.

[11] I. D. Horswill, “Specialization of perceptual processes,” Ph.D. dissertation, Massachusetts Institute of Technology, 1993.

[12] Epic Games, “What is Unreal Engine 4,” http://www.unrealengine.
com, 2018, [Online; accessed 10-09-2018].

[13] A. Lerer, S. Gross, and R. Fergus, “Learning physical intuition of block towers by example,” CoRR, vol. abs/1603.01312, 2016. [Online]. Available: http://arxiv.org/abs/1603.01312

[14] Open Source Robotics Foundation, “tf2,” http://wiki.ros.org/tf2, 2018, [Online; accessed 10-09-2018].

[15] C. Crick, G. Jay, S. Osentoski, B. Pitzer, and O. C. Jenkins, “Rosbridge: Ros for non-ros users,” in Robotics Research. Springer, 2017, pp. 493–504.

[16] MongoDB, Inc., “BSON Specification,” http://bsonspec.org, 2018, [Online; accessed 10-09-2018].

[17] M. Beetz, F. Balint-Benczedi, N. Blodow, D. Nyga, T. Wiedemeyer and Z.C. Marton, “Robosherlock: Unstructured information processing for robot perception,” in Robotics and Automation (ICRA), 2015 IEEE International Conference on. IEEE, 2015, pp. 1549–1556.

[18] A. Krizhevsky, I. Sutskever, and G. E. Hinton, “Imagenet classification with deep convolutional neural networks,” in Advances in neural information processing systems, 2012, pp. 1097–1105.

[19] J. Donahue, Y. Jia, O. Vinyals, J. Hoffman, N. Zhang, E. Tzeng, and T. Darrell, “Decaf: A deep convolutional activation feature for generic visual recognition,” in International conference on machine learning, 2014, pp. 647–655.

[20] F. Zhong, “Integrate unreal engine with openai gym for reinforcement learning based on unrealcv,” https://github.com/zfw1226/gymunrealcv, 2016, [Online; accessed 10-09-2018].

[21] S. Shah, D. Dey, C. Lovett, and A. Kapoor, “Airsim: Highfidelity visual and physical simulation for autonomous vehicles in Field and Service Robotics, 2017. [Online]. Available: https://arxiv.org/abs/1705.05065

[22] O. Ganoni and R. Mukundan, “A framework for visually realistic multi-robot simulation in natural environment,” arXiv preprint arXiv:1708.01938, 2017, wSCG 2017 proceedings.

[23] Open Source Robotics Foundation, “SDFormat,” http://sdformat.org/, 2018, [Online; accessed 10-09-2018].

[24] Y. I. Noy, T. L. Lemoine, C. Klachan, and P. C. Burns, “Task interruptability and duration as measures of visual distraction,” Applied Ergonomics, vol. 35, no. 3, pp. 207–213, 2004.