Moodsic – это веб-приложение, созданное для того, чтобы мы могли применить на практике то, чему научились во время программы специализации Холбертона по машинному обучению. Здесь вы прочтете о моделях, используемых в Moodsic, но прежде чем углубляться в подробности, давайте поговорим о том, что делает приложение.

Moodsic – это веб-приложение, помогающее пользователям находить музыку, подходящую для их эмоционального состояния, но как оно это сделает? Что ж, пользователи входят в приложение и позволяют ему сфотографировать свое лицо, а затем благодаря нашей первой модели (помните, что мы углубимся в детали позже) оно сообщит пользователям, а нашей второй модели, их настроение (счастливое, грустное). , злой или нейтральный). Вторая модель отвечает за предложение песни для настроения наших пользователей. И, конечно же, для того, чтобы предлагать песни лучше, пользователи должны оценить песню.

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

Распознавание выражения лица

Распознавание выражений лица — это задача классификации выражений на изображениях лиц по различным категориям, таким как гнев, страх, удивление, печаль, счастье и так далее. Для этого Moodsic использует многозадачные каскадные сверточные нейронные сети (MTCNN), которые распознают лица и лицевые ориентиры на изображениях. Он был опубликован в 2016 году Чжаном и др.

MTCNN представляет собой каскадную структуру, состоящую из относительно легких CNN, включая сеть предложений P-Net. На этом первом этапе извлекаются кандидаты на лицевые области, На втором этапе отфильтрованные кандидаты уточняются с помощью уточняющей сети R-Net. На последнем этапе одна лицевая область и ее пять лицевых ориентиров > очки начисляются через O-Net.

Когда зона лица обнаружена для предсказания эмоций, процесс должен получить больше ориентиров. Для этого в процессе используется предварительно обученная модель openCV(Библиотека компьютерного зрения с открытым исходным кодом), и эта модель возвращает 68 ориентиров лица.

Используя эти 68 точек и используя евклидово расстояние, модель предсказывает преобладающую эмоцию на лице.

Чтобы сделать оптимизированное приложение, при разработке Moodsic мы используем модуль python FER, он обобщает весь описанный ранее процесс распознавания эмоций, и его использование очень простое. .

Следующий фрагмент кода показывает, как использовать модуль FER:

И в основном после анализа изображения и выполнения своего «волшебства» модель вернет строку в приложение, и приложение передаст эту строку (счастливую, грустную, нейтральную или сердитую) нашей второй модели.

Теперь, когда мы рассмотрели, что делает наша первая модель, мы можем понять, что делает вторая.

Совместный фильтр:

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

Что такое совместный фильтр? Определение из Википедии резюмирует это так: «Совместная фильтрация (CF) — это метод, используемый некоторыми рекомендательными системами. В общем, совместная фильтрация — это процесс фильтрации информации или моделей, в котором используются методы, предполагающие сотрудничество между несколькими агентами, источниками данных и т. д.». Системы рекомендаций, такие как Spotify, используют этот метод.

Но что это значит? Мы попытаемся объяснить, как этот метод работает в нашем приложении Moodsic.

Схема или модель базы данных:

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

Для работы нашего приложения мы создали 4 таблицы (по одной на каждую эмоцию), каждая из которых содержит:

  • Имя: имя пользователя
  • Псевдоним: имя пользователя каждого пользователя
  • Эмоция: эмоция пользователя
  • 30 названий песен, выбранных нами вручную

Каждый пользователь имеет рейтинг от 1 до 5 для каждой песни в соответствии с их эмоциями, вот пример таблиц, которые мы создали.

Счастливый:

Грустный:

Злой:

Нейтральный:

Теперь, когда мы это знаем, как это работает? Что ж, для этого проекта мы сосредоточимся на создании базовой системы музыкальных рекомендаций, вот как мы это делаем:

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

Теперь давайте перейдем к работе (CF)

Совместная фильтрация — это метод автоматического прогнозирования (фильтрации) интересов пользователя путем сбора предпочтений или лайков (таблицы выше) от множества разных пользователей (участников). Совместная фильтрация основана на том факте, что если человек A имеет те же предпочтения, что и человек B по теме, в данном случае песни, A > с большей вероятностью будет иметь то же мнение, что и B, о других песнях, отличное от мнения случайного человека.

Приведем трех пользователей из нашей таблицы (Валерия жу, Ноэль ариза, Мария пара), у них уже есть математическая модель или матрица чисел их музыкальных пристрастий на каждую эмоцию, для лучшего понимания приведем две песни в качестве примера в виде график:

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

Все, что нам нужно сделать, это применить уравнение расстояния d (A, B) = √ ((XB — XA) ^ 2).

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

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

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

Moodsicархитектура:

Рабочий процесс приложения выглядит следующим образом:

  1. Пользователи вводят свой никнейм

2. Пользователи активируют камеру, чтобы определить свои эмоции.

3. Модель распознавания лиц предсказывает эмоции

4. Этот прогноз передается в совместный фильтр для поиска людей со схожими музыкальными вкусами.

5. Модель рекомендует песню

6. Пользователи получают песню, слушают ее и ставят оценку от 1 до 5.

7. Этот рейтинг отправляется для обновления базы данных

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

Это MoodSic и его модели за кулисами. Нам было очень весело делать этот проект, создавая таблицы и взаимодействуя с инструментами, которые уже есть на рынке. Узнайте, как крупные компании, такие как deezer и Spotify, объединяют несколько моделей для прогнозирования, и насколько доступны такие модели, как FER. Мы надеемся, что вам понравится читать о нашем проекте, и надеемся, что вы получите удовольствие от экспериментов с ним. Вот ссылка (https://github.com/cristian-fg/Moodsic) на репозиторий, который вы можете скачать и следовать инструкциям в файле readme, чтобы запустить его.