在当今快速发展的多媒体和技术领域,音乐播放器已经具备了快进、快退、变速播放、本地播放和多播流媒体播放等多种功能。尽管这些功能满足了用户的一些基本需求,但用户仍然需要根据自己的心情和行为来主动浏览音乐播放列表并选择歌曲。本文将介绍一个根据用户当前情绪推荐音乐的系统,该系统使用卷积神经网络(CNN)模型。
人脸检测在视频监控、人机交互、面部识别和面部图像数据库管理等应用中扮演着重要角色。面部表情是人类非言语交流的重要线索,因为人类能够准确高效地识别情绪。自动面部情绪识别在商业上有许多用途,并且可以作为认知处理和分析人脑的生物学模型。总的来说,它们可以增强监控和监控分析、生物医学图像、智能机器人、人机交互和驾驶员警觉系统等应用,并在安全和犯罪调查中发挥重要作用。
提出的系统是一个基于自动情绪检测的音乐控制器。使用网络摄像头捕获图像,这些图像将作为输入用于提出的方法。它将进入表情检测器,将其分类为八类之一:快乐、自然、悲伤、愤怒、蔑视、恐惧、惊讶和厌恶。
作为提出系统的第一步,首先使用内置的笔记本电脑网络摄像头(或任何可以使用的外部摄像头)获取用户的面部图像。为了在提出系统中正确处理,面部图像必须包含一个正面位置的面部,背景均匀照明。此外,用户的面部上不应有任何可能妨碍检测过程的物品,如眼镜。
获取图像后,系统将开始通过应用Viola-Jones算法来检测面部。该算法被认为是实时识别对象的第一个框架之一。Viola-Jones使用子窗口扫描图像,以检测图片中面部的特征。当确定面部后,图像被裁剪为仅包含面部,以增强提出系统的性能。此外,Viola-Jones被重复使用以识别和分别裁剪左右眼和嘴巴。这一步的结果是四个图像:面部、右眼、左眼和嘴巴。
接下来,必须检测用户的情绪。使用Fisher Face方法。这是一个常用的检测面部情绪的方法。它将构建面部空间,并选择具有最高特征值的特征向量。此外,将获取的图像投影到面部空间上。之后,通过计算用户图像的每种情绪的分数来检测情绪。图像的情绪由获得的最大分数决定。
提出系统将根据检测到的情绪呈现相应的音乐播放列表。由于有四种情绪,也有四种播放列表,提供精心挑选的音乐片段。当检测到快乐情绪时,将激活古典音乐播放列表,而新时代音乐播放列表则专门用于自然情绪。对于负面和悲伤的情绪,将启用设计师音乐播放列表,以提升用户的情绪。
在包含各种面部图像的数据集上测试了提出系统,这些图像具有不同的表达、姿势、照明条件和性别。使用CK和CK+数据库来训练情绪检测系统。在IMM数据库和测试图像上测试了算法。这两个数据库都是开源的,算法在两个数据集上都表现良好。对于面部识别,使用网络摄像头捕获面部。实现的算法能够识别单个窗口中的不同人员。如果识别环境在适当的照明条件下并且背景噪音较少,识别率将很高。
将输入图像并将其输入到CNN模型中。在通过几个层次的图像,如二维卷积、最大池化、密集层等之后,将输出图像中表达的面部表情。然后将使用该表情来选择满足用户情绪的歌曲。将这些表情分类为以下几类:快乐、悲伤、愤怒、惊讶等。以下是在这个项目中使用的完整的机器学习管道,以及CNN模型。
import libraries cv2, argparse, time , os , update_Model , glob , random , eel , light.
Take emotions "angry", "happy", "sad", "neutral" , "contempt", "disgust" , “fear" and “surprise” from the directory.
Function crop{
for( all the dimensions ) in face :
faceslice = clahe_image[increase X axis and Y axis]
faceslice = resize(faceslice(to needed dimensions))
arrayfacedict[ ] = faceslice
RETURNS faceslice
}
Function grab_face{
SETS frame = nolight() ;
SETS imwrite(image file , frame)
SETS imwrite(send to directory)
clahe_image = apply(gray) //for the grey scaling
RETURNS clahe_image
}