В наши дни чат-боты очень распространены. Мне не нужно объяснять, что такое чат-бот, что он делает и т. Д. Вы все должны были использовать Alexa, Siri, Google Assistant или каких-то специальных чат-ботов, предназначенных для определенных задач.

Изначально средством ввода для чат-бота был текст. В настоящее время мы также можем использовать голос для ввода данных в чат-бот.

Что самое человечное в разговоре двух человек? Ответ - это «выражения». Разве не было бы скучно, если бы два друга все время разговаривали с покерным лицом?

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

Содержание

  1. Сбор данных
  2. Предварительная обработка данных
  3. Выбор модели и обучение
  4. Прогноз
  5. Что дальше?
  6. использованная литература

Сбор данных

В iPhone и iPad есть функция мемоджи, в которой вы можете создавать собственное оцифрованное лицо и стикеры.

Я создал разные лица и сделал снимок этих наклеек. Впоследствии эти скриншоты были обрезаны и помечены соответствующим настроением.

В наборе данных есть 6 разных настроений. Смех, любовь, взорванный разум, сонный, удивленный и грустный.

При создании мемодзи я изменил следующие черты лица.
Прическа, глаза, брови, голова, рот.

Набор данных для обучения. В наборе данных для обучения использовалось 90 различных лиц. С 6 настроениями для каждого лица, всего 540 изображений.

Тестовый набор данных: в тестовом наборе данных использовались 7 разных лиц. С 6 настроениями для каждого лица, всего 42 изображения.

Набор данных: https://www.kaggle.com/kartikeyarana/emoticon-dataset

Предварительная обработка данных

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

Выбор модели и обучение

Для создания своих моделей я использовал фреймворк PyTorch.

Классов / меток всего 6, поэтому я начал с классификатора нейронной сети. Я использовал предварительно обученную модель Resnet50 и изменил последний слой модели. Другие гиперпараметры следующие:

Эпох: 50
Оптимизатор: SGD
Скорость обучения: 0,0001
Потеря: потеря кросс-энтропии

Ниже приведены графики тренировок.

Сбой модели классификации.

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

Поэтому я использовал Triplet Loss для обучения моей модели реснета. Вам следует прочитать о тройном проигрыше, если вы не знаете об этом.

Ниже приведены гиперпараметры.

Эпох: 50
Оптимизатор: SGD
Скорость обучения: 0,0001

Этот пост станет скучным, если я включу сюда весь код: P
Поэтому обратитесь к следующему блокноту jupyter. Я объяснил весь код там.

Https://github.com/kartikeya-rana/emoticon

Добился 100% точности! : D

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

Что дальше?

По этой модели можно идентифицировать разные Яблочные мемоджи с разными чертами лица.

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

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

использованная литература

  1. Шрофф, Флориан, Дмитрий Калениченко и Джеймс Филбин. «Facenet: единое вложение для распознавания лиц и кластеризации». Материалы конференции IEEE по компьютерному зрению и распознаванию образов. 2015 г.
  2. РЕСНЕТ
  3. Тройной проигрыш

Спасибо за чтение! Продолжай учиться :)