В наши дни чат-боты очень распространены. Мне не нужно объяснять, что такое чат-бот, что он делает и т. Д. Вы все должны были использовать Alexa, Siri, Google Assistant или каких-то специальных чат-ботов, предназначенных для определенных задач.
Изначально средством ввода для чат-бота был текст. В настоящее время мы также можем использовать голос для ввода данных в чат-бот.
Что самое человечное в разговоре двух человек? Ответ - это «выражения». Разве не было бы скучно, если бы два друга все время разговаривали с покерным лицом?
Точно так же скучно разговаривать с чат-ботом, используя только текст и голос. Поэтому я создал модель ИИ, которая может определять тип отправленных пользователем смайлов.
Содержание
- Сбор данных
- Предварительная обработка данных
- Выбор модели и обучение
- Прогноз
- Что дальше?
- использованная литература
Сбор данных
В 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
Некоторые прически в наборе тестовых данных даже не используются в наборе обучающих данных, что означает, что модель изучает основные функции независимо от изменения черт лица, таких как цвет, прическа и т. Д.
Что дальше?
По этой модели можно идентифицировать разные Яблочные мемоджи с разными чертами лица.
Мы также можем попробовать и проверить эту информацию с помощью других смайликов и стикеров.
Мы можем создать модель, используя выражения человеческого лица.
использованная литература
- Шрофф, Флориан, Дмитрий Калениченко и Джеймс Филбин. «Facenet: единое вложение для распознавания лиц и кластеризации». Материалы конференции IEEE по компьютерному зрению и распознаванию образов. 2015 г.
- РЕСНЕТ
- Тройной проигрыш
Спасибо за чтение! Продолжай учиться :)