Machine Learning

В июне 2020 года Snapchat выпустил Lens Studio 3.0. — крупное обновление своего ПО для создания эффектов дополненной реальности (далее AR). Среди всего изобилия новшеств релиза особенно выделялась функциональность SnapML.

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

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

Начало работы с SnapML в Lens Studio

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

Добавление собственных моделей МО выводит на новый уровень погружения и интерактивности. Но их создание до сих пор вызывает сложности.

Шаблоны Lens Studio

5 основных шаблонов Lens Studio охватывают наиболее распространенные задачи мобильного МО. Прежде чем затронуть его аспекты, рассмотрим сначала эти шаблонные проекты. 

Перенос стиля 

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

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

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

Классификация 

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

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

Шаблон классификации содержит пример модели МО, которая определяет, есть ли на пользователе очки или нет, и в случае положительного ответа запускает “салют из конфетти”. Ниже мы подробно обсудим, как реализовать собственную модель классификации изображений.

Обнаружение объектов 

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

  • При классификации образу присваивается метка. Например, изображение собаки получает метку “собака”, и такой же меткой снабжается изображение двух собак. 
  • В свою очередь, метод обнаружения объектов помещает каждое изображение собаки в так называемую ограничительную рамку и подписывает ее как “собака”. Модель прогнозирует, где располагается объект и какую метку ему присвоить. Таким образом, благодаря этому методу мы получаем больше информации об образе, чем в случае с распознаванием. 

В Lens Studio при помощи шаблона обнаружения объектов можно определить местоположение безымянного пальца на изображении или видеокадре и надеть на него кольцо AR во время виртуальной примерки. 

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

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

Настраиваемая сегментация 

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

Сегментация может применяться для добавления эффектов в представленную сегментированную область. В Snap Lense уже была встроенная сегментация для выделения контуров пользователя на каком-либо фоне, но с помощью моделей МО вы можете пойти дальше и, к примеру, сегментировать небо, окрасив его в дивный цвет с розово-оранжевыми оттенками заката. 

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

Сегментация наземной поверхности 

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

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

Внешние шаблоны 

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

Возможности шаблонов

  • Отслеживание ног от Wannaby. С его помощью вы можете прикреплять к ногам 3D или 2D объекты. Помимо этого, шаблон позволяет отследить местоположение ног на изображении и момент их соприкосновения. 
  • Мультисегментация. Что может быть лучше сегментации? Только мультисегментация. Она позволяет сегментировать более одной области изображения и добавлять в него маску текстуры/эффекта. 
  • Добавление и удаление бровей. Как следует из названия, шаблон предоставляет пользователю возможность убрать свои брови или добавить их дурашливую замену. 
  • Классификация и сегментация лицевой маски. Данный шаблон особенно актуален в связи с ситуацией пандемии COVID-19, когда ношение маски стало залогом безопасности. С его помощью вы можете отследить, носит ли пользователь маску, а также выбрать для нее стиль и текстуру на свой вкус. 
  • Добавление и удаление бороды. Шаблон позволяет пользователю убрать бороду или добавить ее. 

Шаблоны МО и блокноты 

Все вышеописанные шаблоны включают не только предварительно настроенный в Lens Studio проект, но также ресурсы для непосредственного создания и реализации в нем конкретных файлов моделей, именуемых ML Components.

С целью непосредственной реализации нами Snap предоставляет блокноты Jupyter для каждого шаблона, которые могут импортироваться напрямую в Google Colab. В таком виде их легко можно изменять, чтобы создавать разнообразные эффекты. Однако если вы стремитесь создать нечто уникальное и более конкретное, то вам потребуется обучить собственную модель МО. 

Блокноты содержат код для обучения модели и пошаговые инструкции, которые помогут вам создавать пользовательские модели МО для собственных наборов данных. При выполнении кода в Jupyter по завершении обучения вы получите файл модели .onnx или pb в качестве вывода. Затем вы можете импортировать данную модель в виде ML Component в шаблоны проектов Lens Studio, рассмотренных выше. 

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

  • Перенос стиля. Это один из самых простых в реализации шаблонов, поскольку вам потребуется лишь предоставить эталонное изображение стиля и тестовое изображение, одно из которых уже предоставляется при загрузке. Обученная модель пытается применить художественный стиль эталонного изображения к тестовому. 
Перенос стиля
  • Классификация изображений. Для обучения модели классификации вам потребуется создать набор данных с большим числом изображений, разделенных на метки целевых классов. Например, набор данных из 500 изображений, на 250 из которых — люди в головных уборах, а на остальных 250 — без них. С этой целью вы можете использовать общедоступные наборы, такие как ImageNet.
  • Обнаружение объектов. Набор данных для этого шаблона должен содержать большое число изображений конкретного объекта и файл с сопроводительными комментариями, включающий метку и координаты ограничительной рамки объекта. Эта информация должна прилагаться к каждому изображению. Здесь вы можете найти общедоступные наборы для обнаружения объектов, предоставленные Google. 
  • Сегментация. Наборы данных для сегментации похожи на те, что требуются для обнаружения объектов, с той лишь разницей, что вам необходимо указать координаты не ограничительной рамки, а маски сегментации, охватывающей определенную область. Большой популярностью пользуется классический общедоступный набор данных COCO Dataset.

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

Теперь вы владеете всей необходимой информацией для того, чтобы смело начать работу со SnapML и шаблонами Lens Studio.

Читайте также:

Читайте нас в Telegram, VK и Яндекс.Дзен


Перевод статьи Harsh Chandra: Working with SnapML Templates in Lens Studio: An Overview

Предыдущая статьяВыбор оптимального алгоритма поиска в Python
Следующая статьяПростой способ взлома сайта для получения его Git-данных