От ResNet до фильтра Snapchat…

В этом уроке мы обучим модель машинного обучения и сделаем ее совместимой с Lens Studio.

Чтобы попробовать фильтр:



Шаг 1: Получите набор данных

Мы будем использовать знаменитый набор данных FER под лицензией Open Database(ODbL) и состоящий из 28 709 изображений лиц в оттенках серого размером 48x48 пикселей, помеченных по семи категориям. (0=Злость, 1=Отвращение, 2=Страх, 3=Радость, 4=Грусть, 5=Удивление, 6=Нейтрально)

Вы можете скачать набор данных здесь, построить архитектуру обучающих данных с помощью:

Шаг 2: Обучите модель

Мы используем здесь ResNet-подобную архитектуру:

Результаты тренировочного процесса:

Модель достигает 60% точности с 30 эпохами. Хотя может показаться, что эта оценка не очень высока, модель неплохо справляется с видеоизображениями, снятыми камерой телефона.

Шаг 3: Преобразуйте модель в ONNX

Чтобы сделать модель совместимой с Lens Studio, мы должны преобразовать ее в формат ONNX. Открытый обмен нейронными сетями — это модель машинного обучения, обеспечивающая взаимодействие между несколькими различными платформами.

Вот код для преобразования модели pytorch в ONNX:

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

Шаг 4. Импортируйте модель в Lens Studio.

1. Создайте проект Lens Studio

Файл -> Новый проект

Вот структура проекта, который мы настроим со следующими шагами:

Обязательно создайте его сейчас.

2. Настройте компонент машинного обучения

  • Модель: вам необходимо импортировать ранее созданный файл onnx.
  • Текстура:«Текстура кадрирования лица», потому что входными данными модели является лицо пользователя.

3. Настройте текстовое поле

  • Привязка заголовка: выберите точку, к которой нужно прикрепить текстовое поле.
  • Вариант текста: пользовательский стиль текста.

4. Создайте сценарии для обновления текстового поля с прогнозом.

Нам нужно создать два скрипта на панели ресурсов перед ее использованием:

мл-скрипт:

Затем в объекте логики классификации добавьте скрипт:

изменение текстового скрипта:

Затем свяжите его с объектом поведения:

Это оно ! Теперь вы готовы протестировать свой фильтр!