Назад к списку Аналитика

Как нейросети повлияют на развитие компьютерной графики

Блок ИИ на CG Event в Санкт-Петербурге был посвящен обучению нейросетей. Роман Белов и Виталий Худобахшов, специалисты в области глубинного обучения, рассказали, что уже умеют и чему скоро научатся нейросети в сфере компьютерной графики. Будущее человечества в нашем конспекте лекции.

CG EVENT PITER 2018: Роман Белов. ИИ, нейросети и магия — наводим порядок умах from cgevent on Vimeo.

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

Роман Белов на Cg Event 2018 СПб Периодически вспыхивающий интерес к нейронным сетям напоминает такие же волны интереса к стереокино. С 1950-х годов о нем то говорили с восторгом — после удачного фильма, вроде «Аватара», — то забывали опять. Пока непонятно, что дальше будет с интересом к нейронкам.

Виталий Худобахшов: Вся эта область привлекает людей не только потому, что получаются крутые результаты, но и потому, что это легко. Настолько, что специалисты data science, как правило, даже не умеют программировать — да оно и не нужно. Все упирается в то, как вы настроили видеокарту и подготовили data set – данные, на которых учится сеть. Скажем, привести изображения к единообразному виду. Следом вы должны разработать или, скорее всего, позаимствовать архитектуру сети для вашей задачи. В 99% случаев такие архитектуры есть. Если вы разработаете то, чего нет, вы быстро становитесь знаменитым специалистом по deep learning.

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

За наглядность любят эффект «перенос художественного стиля». Вот, скажем, перенести на видео стиль Пикассо. Или Мунка. Если дело в том, чтобы перенести особенности стиля на статичную фотографию, тут вообще нет проблем. Вспомним бум приложений типа Prisma. Сложнее было достичь стабильных результатов в видео. В процессе обычно вылезают всякие артефакты, которые нужно убирать.

Надо понимать, что одна из основных проблем «сверточных» сетей — огромное количество параметров. Все упирается в их настройку.

Р. Б.: Прорывы, о которых много говорят в последнее время, как правило связаны с нейросетями сверточного типа.

В.Х.: Генерация текстур — полезная задача, хотя бы потому, что полезные текстур нужны везде, хоть в играх, хоть в клипах, хоть в кино. Придется сказать, что в этом случае простыми методами достичь выдающихся результатов довольно сложно. Все модели в машинном обучении делятся на два типа: генеративное и дискриминирующее. Последнее — это когда нам нужно провести границу между двумя множествами.

Генеративная модель сложнее. Вот иллюстрация: вам нужно понять, на каком языке говорит человек. В дискриминирующей модели вы просто вычленяете какие-то характеристики, свойственные определенному языку. В генеративной вы буквально учите язык. Такие модели для некоторых задач лучше, а для некоторых хуже. Лучше они обычно при большом количестве данных. Сегодня большинство моделей генерации построены на так называемых GAN – Generative Advisorial Networks. Фактически это и генеративная сеть, создающая изображение, и дискриминирующая, отмечающая, хорошо получилось или плохо. Сети тренируются друг с другом и выдают интересные результаты.

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

Популярная тема — движение губ, lip sync. Наверняка вы видели ролик, где сгенерированное движение губ накладывается на лицо Барака Обамы, а сгенерированный голос произносит заданную фразу. То есть, президента США можно «заставить» говорить что угодно.

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

Р. Б.: Обучение нейросети может происходить «с учителем» и без. Скажем, у нас есть обучающая выборка, фотографии кошек и собак, которые мы скармливаем нейронке и учим их различать. Обучение без учителя заключается в том, что мы поручаем сети самой найти кластеры и закономерности в большом наборе данных. Бывает также комбинированный подход. Допустим, мы хотим сделать сеть, которая распознает лица. Скажем, Facebook это делает здорово. С одной стороны, у него есть фотографии людей, которые сами загружали и подписывали свои снимки. С другой стороны, Facebook сам учится выделять признаки в большой выборке лиц.

Наконец, есть обучение с подкреплением — когда нейросеть получает поощрения, когда нечто делает «правильно».

Задачи нейросети — классификация и регрессия. Классификация делит объекты по каким-то признакам, а регрессия решает «непрерывные» задачи. Например, выделить объект на фотографии: у такой задачи бесконечно много решений.

В. Х.: Среди других достижений в графике — захват движения, улучшение существующих изображений. Хочется отметить генерацию уровней в видеоиграх: казалось бы, это область естественным образом просится, чтобы «отдать» ее нейросетям, но пока процесс идет небыстро. Может быть, это связано с некоторыми грандиозными провалами в области дизайна уровней в последние годы. И все же перспективы отличные, особенно если присовокупить генерацию текстур и материалов. Рад, что Doom встал на эту дорогу в прошлом году.

Р. Б.: Возможно, у кого-то появилось впечатление, что теперь нейросети будут заниматься всем, и можно расходиться. Проблема в том, что сеть нужно сперва обучить. Чему-то обучить легче, чему-то сложнее. Скажем, распознать лицо уже не просто. При этом для каждой новой задачи обучение нужно повторять. Так, я знаю ребят из Израиля, которые уже четвертый месяц аннотируют для сети человеческие уши — просто потому, что датасета с ушами еще не было.

Некоторые задачи все еще проще решать без нейронной сети. Зато обучившись этому решению, мы можем обучить и нейросеть. Конечно, многие из задач, которые вы решаете сейчас, умрут. Но не быстро — надо еще набрать датасет.

Многие считает, что заняты творческими профессиями, но рисовать маски 20 часов подряд — сомнительное творчество. У меня есть хороший критерий. Есть такая вроде бы странная вещь, как парное программирование. Два человека делают одну сложную задачу, при этом они могут контролировать друг друга, и достигают более высокого результата, чем поодиночке. Но странно было бы вместе рисовать маски или делать трекинг. Другое дело, скажем, композитинг. Так вот, вещи, которым подходит критерий “парного программирования”, где помощь второго человека будет не лишней, такие занятия еще долго не умрут. А то, чем вам приходится заниматься одному, монотонно и подолгу, — умрет уже скоро.

 

Андрей Гореликов