1. 技术路线
1.1 整体架构
本研究设计包括由阿里云数据库存储结合Vue的组件化开发的APP端应用,通过Flask应用架构开发的桌面端系统,算法模块作为系统核心,通过使用本地摄像头来采集用户面部数据。随后,AKConv卷积层针对面部图像特征,进行高效的特征提取与变换,强化关键面部特征;CBAM注意力机制则聚焦于重要区域,提升特征表征能力。在此基础上,通过引入YOLOv11算法对面部情绪进行检测,YOLOv11凭借其快速的检测速度与较高的精度,精准识别开心、难过、愤怒等不同情绪类型,完成对面部的高精度识别分析。
用户交互模块通过使用APP端和桌面端将面部识别分析结果直观地呈现,最终实现对面部情绪的检测,提升识别精度与应用体验,为面部情绪分析等场景提供高效精准的技术支撑。

图2通过调用我们手机的摄像头,系统会拍摄并录入情绪图片。移动端借助“情绪识别”技术实时处理图像数据,借助人物表情等一系列特征分析人物情绪。通过移动端 “输出情绪”模块将人物的情绪表现,使用户直观地看到自己的情绪从而达到检测情绪的功能。这个情绪识别的背后,有强大的“研发模型”支持,确保识别的准确性。为了达到长期监测情绪变化的功能,移动端中设计开发了情绪日记板块,通过用户填充每日心情,比如开心、难过或者生气。即可以观察自身情绪变化,又可以达到情绪宣泄的目的。通过程序设计,移动端内部开发了许多的工具,“冥想工具”“深呼吸工具”,会在我们焦虑情绪下提供心灵帮助。“情绪抒发”模块让你可以表达和分享自己的情绪,找到共鸣。同时,“问卷调查”会收集一些关于我们的情绪数据,更好地了解用户,提供必要的帮助。
1.2 核心算法
检测结果以百分比表示。如果CBAM模块插入到检测头和主干部分,虽然准确度可能会略有下降,其他指标显示改善。在Backbone部分引入AKConv也会提高性能。每一次改变,模型的指标都会在一定程度上得到改善。结合上下文转换器(Context Transformer)模块后,该模型的查全率、查全率和平均预测值分别为77.3%、71.2%和71.4%。图3是我们所采用算法的深度学习模型架构图:

(1) 数据集的准备和收集
为了训练面部表情识别模型,我们选取了公开可用的情绪图像数据集human-face-emotions,该数据集包含约9400张标注良好的面部情绪图像,覆盖多样人种、性别、年龄及光照场景。我们使用Roboflow平台对数据集进行了标准化处理和自动划分,按 7:2:1的比例将数据集划分为训练集、验证集和测试集,确保模型训练与评估的科学性与可靠性。
为满足模型输入要求,所有图像被统一调整为640×640分辨率。在正式训练前,我们对图像数据进行了多项预处理操作,包括校正、标准化、归一化等,确保图像特征分布的一致性。此外,为提升模型的泛化能力,我们引入了多种数据增强策略,如随机旋转、平移、缩放、拉伸、添加高斯噪声、遮挡模拟等。这些策略能够有效模拟真实场景中的各种干扰因素,扩展数据的多样性,有助于模型更好地学习表情在不同条件下的稳定特征。
在标注阶段,我们对每张图像进行了情绪标签标记,共分为8类:anger(愤怒)、content(满足)、disgust(厌恶)、fear(恐惧)、happy(高兴)、neutral(中性)、sad(悲伤)和surprise(惊讶),为模型提供了明确的监督信号以实现精细化的表情分类。
在编译器中我们采取了CBAM中的通道注意力机制,并且还用到AKConv和C3K2模块。

在图4中,图(a)是柱状图,横坐标标注了不同的情绪类别,如“anger”(愤怒)、“content”(满足)等,纵坐标是“instances”(实例数量),展示了不同情绪的实例数量分布。图(b)是一个各种目标数量的分布图。

在图5中,图(a)以“x”和“y”为横纵坐标,图(b)以“width”(宽度)和“height”(高度)为横纵坐标,散点分布可能反映变量间关系。
(2) AKConv的工作
在面部情绪识别任务中,选择合适的卷积层对于平衡计算效率与识别精度至关重要。目前,轻量级网络架构如MobileNets、ShuffleNets和GhostNet多采用深度可分离卷积(DSC)来降低计算量。然而,由于DSC会削弱通道间的信息交互,这可能导致对面部细微表情特征的捕捉能力不足,影响情绪分类的准确性。为了解决这一问题,MobileNets依赖1×1卷积来增强通道融合,ShuffleNets采用“通道混洗”提高交互性,而GhostNet通过“分割”SC结构部分保留通道信息。然而,这些方法仍存在计算量增加、信息流失或优化不足等局限性。
在面部情绪检测任务中,面部表情的微小变化对于情绪识别至关重要,仅依赖DSC 可能导致关键特征缺失。为此,我们提出了一种新的卷积模块——AKConv,该模块融合了注意力机制(Attention)、多尺度卷积核转换(Kernel Transformation)和卷积融合(Convolution Fusion),以增强面部表情特征的提取能力。
AKConv通过引入自适应注意力机制,使SC生成的高价值信息能更高效地分配到DSC的不同通道中,实现充分的特征交互。具体而言,该方法利用多尺度核变换增强DSC的特征提取能力,并结合通道自适应策略,动态调整特征图的权重分布,使模型能在不同面部区域提取最具辨别力的表情特征。实验表明,AKConv生成的特征图在结构上更接近 SC,并远优于DSC的特征表达能力。在轻量级面部表情识别网络中,仅用AKConv替换SC 层,就能显著提升情绪识别的准确性;在更复杂的多任务网络中,将SC作为主干网络,并在“瘦颈”部分采用AKConv结构,既保证计算效率,又提高了检测性能。
在CNN的特征提取过程中,输入图像在主干网络中逐步转换,将空间信息映射至通道维度。然而,每次空间压缩和通道扩展都会伴随信息损失。SC有助于保持通道间的相关性,而DSC则削弱了这一联系。AKConv旨在降低计算复杂度的同时,尽可能保留关键表情特征,并结合注意力机制进一步优化特征表达能力。通常,卷积计算的复杂度由浮点运算量(FLOPs)决定,因此SC、DSC和AKConv的计算公式是衡量其效率的重要依据。
SC、DSC和AKConv的计算公式如下:

其中,在公式(1)中,W是输出特征图的宽度;H是输出特征图的高度;K1·K2是卷积核的大小;C1是每个卷积核的通道数,也是输入特征图的通道数;C2是输出特征图的通道数。从计算量来看,AKConv结合DSC的高效性和SC的特征表达能力,在计算量与准确性之间取得了平衡,适用于面部情绪检测等任务。
(3) C3K2模块
在目标检测领域,特别是小目标检测任务中,特征的精细融合对提高检测精度至关重要。C3K2模块在自主修改的YOLOv11框架中,采用了多层次特征融合和增强策略,旨在更好地识别复杂环境中的小目标。该模块包括多尺度特征提取、特征融合、特征增强以及回归与分类优化等核心内容。
多尺度特征提取:C3K2模块通过双分支结构同时进行局部和全局特征提取。一个分支使用3×3卷积来捕捉局部细节信息,另一个分支使用5×5卷积(K2)来提取全局信息,从而保证了特征的多样性和充分性。这种多尺度的特征提取有助于提升模型对不同大小目标的识别能力。
特征融合:该模块采用了一种称为多尺度卷积融合(MSC-Fusion)的策略,结合了3×3卷积和5×5卷积,在Bottleneck结构中有效融合不同深度的特征。通过这种方式,C3K2不仅增强了深层次特征的语义信息,同时也保留了浅层特征的细节,从而提高了模型对各种尺度目标的检测性能。
特征增强:为了提升小目标的检测精度,C3K2在融合后的特征图中引入了空间金字塔池化(SPPF)技术,并通过自适应通道加权机制(如SE或ECA)进一步增强细粒度特征的语义信息。此策略有助于提高对小目标的感知,增强模型在不同场景下的适应性。
回归与分类优化:在YOLOv11中,C3K2模块中的融合特征被输入到解耦的检测头进行目标定位和分类任务。边界框回归分支负责预测边界框,输出通道数设定为4×regmax4,用于提高定位精度。分类分支负责对目标进行分类,输出通道数等于类别数量,并使用Focal Loss来平衡正负样本的不平衡问题。
精细调整:为了优化Anchor的选择,YOLOv11中引入了TaskAligned方法,结合分类得分与IoU值来对Anchor进行加权排序。计算公式如下:

s是分类得分,u是IoU值,α和β为控制分类与定位权重的超参数。其中:通过该策略,网络能够聚焦于高质量的Anchor,从而提升模型的定位与分类精度。通过该策略,网络能够聚焦于高质量的Anchor,从而提升模型的定位与分类精度。
C3K2计算量分析:C3K2结构的卷积层参数量和计算量由以下公式给出:

是输入通道数, 是输出通道数, , 是卷积核的宽度和高度,H,W分别是输入特征图的高度和宽度。
通过优化C3K2的结构,YOLOv11在特征融合的同时控制了计算量,使得模型在小目标检测任务中更加高效,同时保持较高的精度。
(4)CBAM注意力通道机制
①输入特征图
CBAM模块首先接收一个输入特征图,特征图的尺寸为H×W×C,其中H是特征图的高度,W是宽度,C是通道数。该特征图经过CBAM处理后,能够在空间和通道两个维度上都得到增强,提升特征表达的能力。
②通道注意力机制(Channel Attention)
通道注意力机制的目标是根据不同通道的重要性来调整特征图中各通道的权重。通过这一机制,网络能够自动地关注更为关键的通道。
首先,输入特征图经过全局平均池化(GAP)和全局最大池化(GMP)操作,得到两个通道描述符。这些描述符反映了每个通道的全局信息。接下来,这两个描述符被拼接起来,并输入到一个共享的多层感知机(MLP)中,生成通道注意力图。通过这一过程,网络根据每个通道的全局信息为各个通道分配一个权重,突出关键通道。最后,通过将通道注意力图与输入特征图相乘,得到调整后的特征图。此时,特征图的各通道已经根据其重要性进行了加权。
全局平均池化和全局最大池化得到两个描述符:

过MLP得到通道注意力图:

最终得到调整后的特征图:

③空间注意力机制(Spatial Attention)
空间注意力机制则通过关注特征图中的空间位置来增强重要区域的表达。通过这一机制,网络可以自动聚焦于图像中最关键的部分,从而进一步提升目标的识别能力。
首先,对通过通道注意力调整后的特征图进行降维操作,得到两个二维图像。这两个图像分别是通过全局平均池化(GAP)和全局最大池化(GMP)得到的。然后,这两个二维图像被拼接在一起,并通过一个卷积层进一步处理,生成空间注意力图。通过这一过程,网络能够关注图像中的关键区域。最后,空间注意力图与通过通道注意力调整后的特征图相乘,得到最终的输出特征图。此时,特征图的空间区域已经根据其重要性得到了增强。
通过全局平均池化到两个二维图像:

拼接并经过卷积得到空间注意力图:

最终得到输出特征图:

④最终输出
经过通道和空间注意力机制的加权处理后,最终得到的特征图被送入网络的后续层,用于目标检测、分类或其他任务。通过CBAM,网络能够自动地为每个通道和空间位置分配权重,从而突出关键特征,提升模型在任务中的表现。
(5)图像输出突出项目特点
在数据处理方面,我们通过目标检测模型的发展趋势,YOLO系列因其“单阶段检测”特性,在实时性上具有显著优势。在实现中,首先遍历输入的特征图和步长,并分别获取它们的高度、宽度和步长值。然后,使用PyTorch的arange()函数生成一组横向和纵向的位移值,并添加一个偏移量(即grid_cell_offset)以将锚点的中心对准每个网格单元的中心。接下来,使用PyTorch的meshgrid()函数生成所有可能的锚点位置,并将其保存在anchor_points列表中。其中,每个锚点的位置由两个坐标值表示,即(x, y),并被转换为形状为(n,2)的张量,其中n表示特征图上的像素点数量。同时,在每个特征图上都需要保存相应的步长信息,以便后续计算。因此,使用PyTorch的full()函数创建一个形状为(h*w,1)的张量,其中h和w分别表示特征图的高度和宽度,每个元素都被初始化为当前特征图的步长值。最终,通过将所有锚点位置和步长信息连接起来,可以得到形状为(n*nl,2)和(n*nl,1)的张量,其中nl表示特征图的数量,n表示每个特征图上的像素点数量。这些张量将被用于计算每个锚点的位置和预测信息,并生成最终的预测结果。
下图表明该模型在不同阈值下都获得高精度、召回率、混淆矩阵和mAP的优秀表现。

图6是目标检测模型训练评估指标可视化结果,含训练与验证损失、精确率、召回率、mAP等,展示模型性能变化。

图7是一张精确率-召回率(Precision-Recall)曲线图表,展示了愤怒、满足等多种情绪类别及所有类别的曲线,还给出了各情绪的mAp值,并且总体mAp值为0.779。

图8中,横轴是模型预测的置信度,纵轴是召回率。不同颜色曲线对应不同情感类别,像愤怒、开心等。粗蓝线是所有类别的汇总,表明置信度为0时,综合召回率达0.98,可用于评估分类模型性能。

图9中,关于情绪检测该精度的置信度阈值为0.999,在精度-召回曲线在阈值为0.9 99下,检测出所有的类别的平均精度为1,它表明模型在情绪检测任务中表现良好。

图10中,横坐标是模型对预测结果的自信程度,从0到1越来越自信。纵坐标是F1值,用来评价模型分类的好坏,数值越高越好。不同颜色曲线代表不同情绪类别,像愤怒、开心等,展示各情绪在不同自信程度下的F1值变化。最粗的蓝线是所有类别的综合情况,还标了在置信度为0.417时,综合F1值是0.71。

图11是用于评估情绪识别模型的性能。横向表示真实情绪类别,包括愤怒(anger)、满足(content)、厌恶(disgust)等;纵向是预测的情绪类别。矩阵中的数值代表预测为某类情绪的样本在真实为该类情绪样本中的比例,颜色深浅对应数值大小,颜色越深比例越高。比如,真实情绪为“happy”时,模型正确预测为“happy”的比例是0.78,能直观反映模型在不同情绪分类上的准确性和混淆情况。
2. 拟解决的问题
进一步优化算法,提升复杂环境下对用户情绪识别鲁棒性,使情绪检测精确度进一步提升。继续完善系统功能界面,实现情绪检测、心理工具等的优化,细化场景覆盖与用户交互。不断提高系统的流畅性和隐私保障,优化用户的使用体验。
3. 预期成果
参加相关的省级及以上比赛,期望发表理论研究相关论文或申请软件著作权。