Авнер Пелед и я делимся уроками, извлеченными на этапе разработки Костного мозга . В этой статье рассказывается, как мы работали с GauGan в реальном времени в среде 360 °.

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

Marrow - это история о возможности психического заболевания в моделях машинного обучения, в основном посвященная Генеративным состязательным сетям (GAN). Мы задаемся вопросом, какие психические расстройства могут возникать при использовании продвинутых ИИ, и приглашаем участников сыграть в интерактивном театре, управляемом GAN. Вместе они играют как одна неблагополучная семья ИИ. Поскольку мы имеем дело с очень абстрактными и сложными концепциями, мы хотели изучить несколько способов передачи истории, а не просто диалог между членами семьи. Наша тактика заключалась в том, чтобы сделать комнату более живой, отражая психическое состояние воплощенных моделей. Мы хотели разрушить барьеры между участниками и окружающей средой; медленно погрузить их в незнакомый магический опыт в этой комнате. Комната и сцена ужина были приглашением отпустить и погрузиться в эмоциональный роман с тремя другими незнакомцами.

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

Стандартные и условные GAN

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



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

Именно здесь на сцену выходят условные GAN. Вместо обучения на одном наборе изображений мы обучаем сеть на парах, состоящих из изображения и метки (числовой ввод), при условии, что они будут генерировать один тип изображения при представлении определенного типа метки. . Это дает пользователю полный контроль над тем, как GAN генерирует свои выходные данные для определенных входных данных. Результат по-прежнему меняется вместе с вектором шума, как в исходном GAN. Однако теперь автор может создавать значимые взаимодействия с окружающей средой. Один из самых известных условных GAN - это Pix2Pix.

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



ГАУГАН

В чем Pix2Pix находит свою силу, будучи универсальным переводчиком любого изображения в любое изображение, у него также есть свои слабые стороны. Если полагаться только на цвет, упускаются из виду метаданные, которые можно передать в сеть. Алгоритм смотрит только на формы и цвета. Он не может отличить обеденную тарелку от летающей тарелки, если они визуально похожи на фотографии. Именно к этому обратились исследователи NVIDIA при создании GauGAN. Названный в честь художника-постимпрессиониста Поля Гогена, GauGAN также создает реалистичные изображения из цветовых карт. Однако вместо изучения значений пикселей он изучает семантические данные изображения. Проект также известен как SPADE: Синтез семантического изображения с пространственно-адаптивной нормализацией. Вместо того, чтобы определять, где на картинке находятся зеленый и синий, GauGAN узнает, где находятся трава и небо. Это возможно, потому что изображения, используемые в обучающем наборе, такие как универсальная база данных COCO-Stuff, содержат семантические классификации различных элементов изображения. Затем исследователи смогли продемонстрировать возможности GauGAN, создав интерактивный инструмент рисования, в котором цвета - это не просто цвета, но и имеют значения. Когда вы рисуете зеленым на исходном эскизе, вы говорите GauGAN, что здесь лежит трава. Попробуйте сами здесь.

Подключение GauGAN к среде 360 ° в реальном времени

GauGAN может создавать фотореалистичные изображения из рисованных эскизов. Нашей целью было взаимодействие с физической средой в реальном времени. Решение этой проблемы было похоже на сборку кусочков головоломки:

  1. Мы знаем, что NVIDIA обучила GauGAN семантическим данным: они использовали сеть DeepLab v2 для анализа базы данных COCO-Stuff и изготовления этикеток.
  2. Мы знаем, что DeepLab V2 может сегментировать поток камеры в реальном времени.
  3. 1 + 2: если мы передадим вывод DeepLab потока камеры непосредственно в GauGAN, мы должны получить его зеркальное состояние реальности.

Сам код был относительно простым и в основном касался преобразования формата между двумя сетями. Мы также обновили код веб-камеры DeepLab для потоковой передачи с нашей камеры 360: RICOH THETA Z1. Сети сегментации настолько надежны, что мы можем направлять расширенное сшитое изображение прямо на сегментацию и генерацию. Результат оказался на удивление точным.

Манипулирование реальностью GAN

Теперь у нас было сгенерированное зеркальное отображение, отображающее версию GAN (COCO-Stuff) того, что камера видит в комнате. Но мы хотели большего; нам нужно было пространство, которое меняется в зависимости от сюжета и напоминает душевное состояние персонажа. Мы искали способы создания визуальных эффектов, которые будут связаны с миром историй. Чтобы найти значения между словами и побудить пользователей продолжать действовать, перемещайте объекты, смотрите на отражение и задавайтесь вопросом, о чем все это.

Мы поняли, что можем вмешиваться в процесс восприятия и порождения. Почему бы сразу после того, как DeepLab проанализирует метки в потоке камеры, их нельзя заменить чем-то другим? Например, давайте сопоставим любую известную чашу с морем.

Мы начали искать закономерности, которые могут проявиться в рассказах наших персонажей и которые физическое пространство может поддерживать во всей визуальной форме: лицо, пейзаж, объект, цветок. Истории - это узнаваемые шаблоны, и в этих шаблонах мы находим смысл. Это сигнал в шуме.

Когда мы наконец добрались до лаборатории, чтобы проверить все это, мы обнаружили эффект физических условий. Мы начали играть с расстановки (и перестановки) странных элементов и изучения результатов, которых мы можем достичь. Мы разработали платформу сценариев, которая позволяет нам легко сопоставлять объекты с другими объектами. Мы могли замаскировать определенные объекты сцены, выбрать сразу несколько объектов или инвертировать выделение, чтобы отобразить все, кроме указанных объектов. Например: «Обеденный стол», «стол», «стол», «рабочий стол», «пол», «кровать,« машина »- внезапно стали одним и тем же предметом и были нанесены на карту моря, в то время как все остальное было выброшено. Хотя у нас не было ни машины, ни пластика, ни кровати в космосе. Или «фрисби», «бумага», «мышь», «металл», «камень», «чаша», «бокал», «бутылка» - все они отображаются как «камень». Опять же, интересно отметить, что у нас не было мыши, фрисби, металла, камня или бумаги в реальной сцене, но сеть их обнаружила. Поэтому и их нужно было рассмотреть.

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

Мы играли вместе с нашей сетью, мало контролируя визуальные эффекты, мы старались визуализировать историю внутреннего мира наших персонажей.

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

Размышления

  • Разрешающая способность предварительно обученной сети SPADE / GauGan генерирует изображения с низким разрешением 256x256. Было сложно вовлечь людей в такие визуальные эффекты и заставить их понять то, что они видят. Достижение более высокого разрешения потребовало бы от нас вложить больше ресурсов в наше обучение, что было невозможно в то время.
  • Поскольку GauGAN поддерживает семантику, контекст изображений имеет большое значение. Например, если сопоставить стол с морем, оставив бетонную стену на заднем плане, образуется мутное озеро или пруд. Но сопоставьте стену с голубым небом, и теперь море больше похоже на океан.
  • Из-за этой контекстной осведомленности также было трудно передать смысл изолированными объектами. Изображения обычно выглядели лучше всего, когда мы показывали их целиком.

Хотя мы все еще чувствуем, что есть гораздо больше возможностей для экспериментов и полировки образов вокруг нашей истории, результаты дают нам первое представление о «сознании» GAN как воспринимающей сущности, которая порождает свой внутренний мир. Такой процесс перекликается с философией человеческого сознания.

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

Мы уверены, что одно не нанесет вреда этой творческой работе - это то, что ею будет пользоваться как можно больше людей. Вы не будете знать, что делаете, если не будете делать это много раз, особенно в этом сложном проекте. Просто сделай make make.

Вот проект Репозиторий GitHub с открытым исходным кодом. Пожалуйста, поделитесь с нами тем, что вы делаете и думаете!

Этап разработки был выполнен в сотрудничестве с Philippe Lambert, звукооператором, и Paloma Dawkins, аниматором. В совместном производстве NFB Interactive и Atlas V.