欢迎光临
我们一直在努力

基于flask面向智慧课堂的多模态情感识别与分析系统,构建覆盖图像、语音、文本三种模态的情感识别模型

第1章 绪论

1.1 研究背景

随着数字技术与教育教学的深度融合,智慧课堂已成为教育数字化转型的核心载体,依托物联网、人工智能、大数据等技术实现教学过程的实时感知与智能决策。但当前多数系统仍聚焦出勤率、答题正确率等显性指标,对学生课堂情感状态这一隐性维度的感知能力严重不足。

情感直接影响学生的注意力集中程度、知识接受意愿与认知加工效率。课堂场景中,学生的面部表情、语音语调、互动文本等多维度信息共同构成真实情感状态。传统教学中,教师依赖主观观察判断情感,受课堂规模、教学节奏限制,难以实现全面、实时、精准感知,易忽视个体情感需求,导致教学调整滞后、个性化辅导缺失。

近年来,情感识别技术虽成为研究热点,但在教育场景应用中存在显著局限:一是多聚焦单一模态,易受环境干扰,识别准确率与鲁棒性不足;二是通用场景模型难以适配课堂特殊性,迁移性差;三是现有系统仅输出情感分类结果,缺乏与教学决策的深度融合,未形成 “识别 – 分析 – 干预” 闭环,实用价值有限。

在此背景下,构建面向智慧课堂的多模态情感识别与分析系统,整合面部、语音、文本等维度情感信息,实现学生情感状态的实时精准感知与动态分析,成为解决当前智慧课堂情感感知缺失问题、推动教学模式从 “经验驱动” 向 “数据驱动” 转型的关键路径,具有重要研究价值与应用前景。

1.2 研究意义

本研究的意义主要体现在理论和实践两个方面。在理论意义上,本研究探索多模态情感识别在教育领域的应用,为情感计算和教育技术的交叉研究提供了新的思路。通过融合图像、语音和文本三种模态的信息,可以更全面、更准确地理解学生的情感状态,丰富了情感识别的理论体系。本研究将情感识别与教学建议生成相结合,构建"情感识别—分析—指导"的完整闭环,为智能教学系统的发展提供了理论参考。

在实践意义上,对于教师而言,本系统能够提供实时、客观的学生情感状态反馈,帮助教师及时调整教学策略,提高教学效果。对于学生而言,系统的应用可以促进个性化学习的发展,通过对学生情感的持续监测和分析,教师可以更好地了解每个学生的学习状态和需求。对于教育管理者而言,系统积累的情感数据可以用于教学效果评估和教学质量分析,为教育决策提供数据支持,推动教育管理的科学化和精细化。

1.3 国内外研究现状

1.3.1 单模态情感识别研究现状

1、面部表情情感识别

面部表情是情感表达的核心载体,也是情感识别中最成熟的模态之一。国外研究起步较早,2013年发布的FER-2013数据集(含35886张人脸表情图像)为技术发展提供关键支撑。早期研究依赖支持向量机(SVM)、Adaboost等传统机器学习方法,通过提取方向梯度直方图(HOG)、局部二值模式(LBP)等手工特征进行情感分类,但识别准确率受限于人工特征设计的有效性[1]。随着深度学习技术的突破,卷积神经网络(CNN)逐渐成为主流模型。AlexNet首次将CNN应用于大规模图像分类,为深度表情识别奠定了基础;后续提出的MobileNet通过深度可分离卷积有效降低了模型参数量,而ResNet18则通过引入残差连接解决了深层网络中的梯度消失问题,凭借其轻量化与高性能优势成为实时表情识别任务中的优选模型[2]。

国内研究主要聚焦于课堂场景的适配性与性能优化。王善敏等人(2025)指出,课堂环境下的面部表情识别面临口罩/书本遮挡、低头/侧脸等姿态变化以及光照不均等复杂挑战,现有通用模型在真实课堂场景中的准确率仅为65%至75%,亟需通过简单数据增强策略(如遮挡模拟、姿态矫正)与多层级特征融合方法(如融合面部关键点与全局深度特征)来提升模型的鲁棒性[3]。韩卓群(2022)基于ResNet18进行改进,引入注意力机制以强化眼部、嘴巴等关键区域的权重,在CK+数据集上取得了92.3%的识别准确率,为课堂场景下的表情识别提供了可行的技术方案[4]。

近三年来,面部表情识别的研究重心逐渐从单纯提升实验室环境下的准确率转向解决真实场景中的鲁棒性问题。视觉Transformer(ViT)及其变体成为该领域的研究热点,其通过自注意力机制捕捉面部图像的全局依赖关系,在自然场景下的表情识别任务中展现出优于传统CNN的特征表达能力。特别值得关注的是,2025年提出的MSDM模型(轻量级多尺度动态Mamba)针对智慧教室中的动态面部表情识别,创新性地设计了多尺度注意力融合模块与动态时序聚焦机制,在自建的课堂表情数据集HM-Class上取得了86.23%的无加权平均召回率(UAR)与93.01%的加权平均召回率(WAR),代表了该领域在特定应用场景下的最新研究水平[13]。

2、语音情感识别

语音情感识别通过提取音调、语速、频谱包络等声学特征来判别说话人的情感状态。国外研究方面,RAVDESS(24位演员1440条语音,8类情感)与EMODB(535条语音,7类情感)等标准化情感语音数据库的发布极大推动了该领域的发展。在模型方法上,早期多采用高斯混合模型(GMM)与隐马尔可夫模型(HMM),深度学习兴起后,循环神经网络(RNN)及其变体长短时记忆网络(LSTM)、门控循环单元(GRU)成为主流。Vaswani等人(2017)提出的Transformer模型通过自注意力机制有效捕捉语音序列中的长时依赖关系,轻量级Transformer在RAVDESS数据集上的识别准确率已可达80%以上[5]。

国内研究主要致力于解决中文课堂语音环境下的噪声干扰与表达碎片化问题。郑庆庆(2024)提出,课堂语音中普遍存在同学低语、多媒体设备杂音等背景噪声,以及“老师,我不懂”等口语化、碎片化表达,传统的梅尔频率倒谱系数(MFCC)特征易受此类干扰,需结合谱减法等简单噪声抑制算法与Wav2Vec 2.0等深度学习语义特征来提升识别性能[6]。孙子博(2024)基于GRU模型,通过融合MFCC与梅尔频谱特征,在自建的中文课堂语音数据集上取得了78.6%的准确率,验证了轻量化模型在课堂场景下的应用可行性[7]。

近三年来,Transformer架构在语音情感识别中的广泛引入成为最显著的趋势。Onyekwelu-Udoka等人(2025)的一项对比研究系统评估了轻量级Transformer模型在语音情感识别任务上的性能,结果显示DistilHuBERT模型以70.64%的准确率与仅0.02 MB的模型大小显著优于传统的CNN-LSTM基线模型,为边缘设备上的实时语音情感分析提供了极具竞争力的解决方案[14]。

3、文本情感识别

文本情感识别旨在判断文本所表达的情感极性(积极、消极、中性)或具体的情感类别。国外研究中,预训练语言模型的出现极大地推动了该领域性能的提升。Devlin等人(2019)提出的BERT模型采用双向Transformer架构,能够实现深度的语义理解,在SEMEVAL等国际评测任务中表现优异;其轻量化版本因参数量小、推理速度快,非常适配资源受限的应用场景[8]。

国内研究聚焦于中文课堂互动文本的领域适配问题。钟佳娃等人(2021)指出,课堂互动中产生的弹幕、答题留言等文本具有简洁化、口语化以及情感表达模糊等显著特征,需通过专门的分词、停用词去除等预处理流程,并结合构建简易课堂情感词典来进行领域适配,方能有效提升模型性能[9]。苏妍嫄等人(2025)基于TextCNN模型,通过融合课堂领域的预训练词向量,在学生评教文本数据集上的情感极性识别准确率达到了85.2%,为课堂文本情感分析提供了有效方案[10]。

近年来,大语言模型(LLMs)的兴起为文本情感分析带来了范式层面的变革。2026年发表的《情感识别大模型研究综述》系统梳理了文本、语音、视觉等单模态情感识别任务中大模型的应用进展,指出大模型在复杂场景理解、零样本/少样本泛化能力以及多模态协同表征方面展现出显著优势[15]。在教育应用层面,2025年武汉大学学报发表的基于大小语言模型协同的评教文本方面级情感分析模型,设计了基于大语言模型的隐式情感增强策略,有效解决了评教文本中大量存在的隐式情感难以识别的问题,实现了对方面级情感四元组的精准提取,为利用人工智能技术提升教学质量提供了新的技术路径[17]。

1.3.2 多模态情感融合方法研究现状

多模态融合旨在通过整合来自不同通道(如视觉、听觉、语言)的信息来提升情感识别的准确率与鲁棒性。根据融合发生的层次,主流方法通常被划分为特征层融合(早期融合)、决策层融合(晚期融合)与模型层融合(混合融合)三类。

特征层融合将提取自各模态的特征向量进行拼接或加权组合后输入分类器。该方法能够充分利用模态间的底层特征关联,但对不同模态特征的维度一致性要求较高。齐国伟(2025)在其研究中采用熵权法来动态计算各模态的特征权重,在国际通用的IEMOCAP数据集上取得了较单模态最优结果提升15%至20%的准确率[11]。

决策层融合首先获取各模态独立的识别结果(通常为概率分布),再通过投票法或加权求和法进行融合。该方法具有实现简单、模块化程度高、鲁棒性强的优势,当某一模态信号缺失或质量较差时,对整体融合结果的影响相对较小,因此更适配课堂实时应用场景。李瑞恒(2024)基于加权求和策略,并根据各模态的置信度动态调整权重,在课堂模拟数据集上取得了80.3%的识别准确率,且推理延迟控制在100毫秒以内,满足实时交互需求[12]。

模型层融合则通过在模型内部设计跨模态注意力机制或采用多模态预训练模型(如CLIP、ViLT)来实现更底层的动态融合。此类方法通常能取得最优的识别效果,但模型参数量庞大(通常超过1亿)、推理速度较慢,难以直接部署于课堂端侧设备。苏妍嫄等人(2025)尝试通过模型剪枝与知识蒸馏技术对ViLT模型进行轻量化改进,使其推理速度提升了3倍,为先进模型在资源受限场景下的落地提供了可能[10]。

近三年多模态情感识别领域涌现出大量面向真实应用场景的高质量研究。2024年提出的MITERS(多模态智能辅导情感识别系统)同时融合了面部、文本和语音三种模态,分别采用深度卷积神经网络(DCNN)、双向长短时记忆网络(BiLSTM)和CNN进行单模态特征提取与识别,在多模态情感数据库MELD上达到了97%的分类准确率,展示了多模态融合在智能辅导系统中的巨大潜力[16]。

1.3.3 智慧课堂中的情感识别应用研究现状

国外在智慧课堂情感识别应用方面的研究起步较早。美国卡内基梅隆大学开发的“Emotion-Aware Classroom”系统,通过摄像头捕捉学生面部表情并辅以简单的语音识别模块,能够为授课教师提供实时的班级情感状态反馈,试点应用显示该系统使课堂互动效率提升了25%[11]。英国爱丁堡大学则将多模态情感识别技术与学习分析系统相结合,用于构建个性化学习路径推荐模型,有效提升了学生的课程满意度[12]。然而,此类系统功能较为复杂,且多基于西方课堂环境设计,难以直接适配国内的教学场景。

国内相关研究近年来发展迅速,并更加聚焦于智慧课堂场景下的定制化开发。王善敏等人(2025)提出了面向智慧课堂情感识别的“三阶段”模型框架:在数据采集阶段,通过教室内部署的多设备协同获取面部、语音、文本数据;在数据处理阶段,采用轻量化模型进行特征提取与情感识别;在应用阶段,根据识别结果生成具体的教学干预建议。该框架为智慧课堂情感识别系统的开发提供了整体性的理论指导[3]。韩卓群(2022)开发了一套课堂情感识别原型系统,整合了面部表情与文本两种模态,实现了情感状态的实时可视化展示,但该系统未涵盖语音模态,且缺乏与教学决策的深度融合,在实用价值方面仍存在提升空间[4]。

近两年来,融合行为与情感分析的课堂学习投入智能评估成为新的研究热点。2025年武汉大学学报发表的研究构建了大规模的学习行为数据集,并整合FER2013与CK+面部情感数据集,采用VGGNet16与ResNet50分别进行学习行为识别与面部表情识别,实现了对课堂学习投入状态的动态、全面评估,标志着智慧课堂情感计算正从单一的情感识别向综合的认知-情感状态联合感知方向发展[18]。

1.4 研究内容和目标

本研究旨在设计并实现一套面向智慧课堂的多模态情感识别与分析系统,通过融合图像、语音和文本三种模态的情感信息,实现对学生课堂情感状态的实时、精准感知与动态分析,并为教师提供具有可操作性的教学决策支持。具体研究内容涵盖以下五个方面:

(1)多模态情感识别模型的构建与优化

这是本研究的核心技术内容,包括三个单模态识别模型和一个多模态融合模型的构建。

在图像情感识别方面,针对课堂场景下学生面部图像可能存在的遮挡(口罩、书本)、姿态变化(低头、侧脸)以及光照不均等问题,系统采用RetinaFace人脸检测算法定位人脸区域,并基于ResNet18卷积神经网络构建表情识别模型。ResNet18通过残差连接有效解决了深层网络中的梯度消失问题,其轻量化的结构使其适合部署在课堂实时场景中[1]。为提高模型在课堂场景下的鲁棒性,系统在FER2013公开数据集预训练基础上,采用迁移学习策略对模型进行微调,包括冻结前15层参数、仅训练最后两个残差块和全连接层,并在全连接层前添加Dropout层(丢弃率0.5)以防止过拟合,最终将输出维度从1000调整为11类课堂情感类别。

在语音情感识别方面,系统首先对原始语音信号进行预处理,包括重采样至16kHz、预加重(μ=0.97)、分帧(帧长25ms、帧移10ms)和汉明窗加窗等操作[2]。特征提取阶段,系统提取梅尔频率倒谱系数(MFCC)及其一阶、二阶差分(共39维)、基频统计特征(均值、标准差、最大值、最小值、变化率)、短时能量特征、谱质心、谱带宽、谱滚降以及过零率等多维声学特征,组织为特征矩阵后输入二维卷积神经网络(2D CNN)进行情感分类。采用2D卷积而非1D卷积的优势在于能够同时捕获特征维度和时间维度的局部模式,具有更强的表达能力。

在文本情感识别方面,系统采用TextCNN模型对课堂互动中产生的弹幕、答题留言、评教文本等短文本进行情感分类[3]。TextCNN通过不同尺寸的一维卷积核(3、4、5)并行提取文本中的n-gram局部特征,经最大池化后拼接,再通过全连接层进行分类。文本预处理流程包括:使用jieba分词工具进行精确模式中文分词、去除停用词、将词语映射为Word2Vec预训练词向量,最后将词向量序列填充或截断至固定长度(128)后输入模型。

在多模态融合方面,系统采用晚期融合策略,各模态独立完成情感识别后,通过基于置信度的动态加权融合算法整合识别结果。融合权重根据各模态的置信度动态调整,当某一模态置信度较低或数据缺失时,其权重自动降低以避免对最终结果产生负面影响[4]。最终情感标签取融合概率最大的类别:emotion_fusion = argmax(P_fusion)。相比早期融合(特征层融合),晚期融合具有模块化设计、灵活调整权重和鲁棒性强三大优势。

(2)多模态数据采集与预处理方法研究

研究面向课堂场景的数据采集方案和预处理方法。在数据采集方面,系统支持图像(JPG、PNG)、语音(WAV、MP3)、文本(TXT、CSV)和视频(MP4、AVI)四种数据格式的上传与实时采集。实时识别模式通过WebRTC调用教室摄像头和麦克风获取实时数据流,图像以640×480分辨率、30fps帧率采集,音频以16kHz/16位单声道格式采集,前端以10fps提取视频帧进行识别。在数据预处理方面,图像模态包含人脸检测、尺寸调整至224×224、BGR转RGB颜色空间转换和归一化等步骤;语音模态包含预加重、分帧加窗、特征提取等步骤;文本模态包含文本清洗、中文分词、去停用词和词向量映射等步骤。所有预处理操作均以提升后续模型识别准确率为目标。

(3)教学建议生成与情感-教学映射机制研究

这是本研究区别于传统情感识别系统的重要创新点。系统构建了一套从情感识别结果到教学建议的映射机制,将识别出的情感标签(如困惑、焦虑、积极、平静等)转化为具有可操作性的教学指导建议。例如,当系统检测到课堂中“困惑”情感占比较高时,提示教师“建议放慢教学节奏,增加讲解和答疑环节”;当检测到“积极”情感占比较高时,提示“学生参与度高,可适当增加互动或拓展内容”[5]。该映射机制基于教育心理学理论构建情感-教学策略知识库,为教师提供实时的教学调整参考,构建“识别-分析-干预”的完整闭环。

(4)基于Web的系统平台设计与实现

系统采用B/S架构,后端以Flask框架为核心,提供RESTful API接口;前端基于Bootstrap 5框架构建响应式界面,使用ECharts图表库进行数据可视化展示。系统核心功能包括:数据上传与管理(支持拖拽上传和进度显示)、实时识别(调用摄像头/麦克风实时采集并显示识别结果)、多模态融合识别(自动融合三种模态信息)、可视化分析(情感分布饼图、变化趋势折线图、个体情感波动柱状图等)、教学建议生成、报告导出(JSON/CSV格式)和参数设置(融合权重、识别频率等)[6]。数据层采用SQLite数据库,设计了用户表、原始数据表、处理数据表和识别结果表,通过外键约束实现数据关联,采用MD5哈希校验保障数据完整性。

(5)系统测试与性能评估方法研究

研究设计了全面的系统测试方案,包括功能测试、性能测试和准确性测试三个维度。功能测试覆盖数据上传、各模态单模态识别、多模态融合、教学建议生成和报告导出等全部功能模块,采用黑盒测试方法设计正常和异常用例进行验证[7]。性能测试评估系统在不同并发条件下的响应时间、资源占用和稳定性,确保满足课堂实时性要求(融合识别响应时间≤1000ms)。准确性测试在独立测试集上评估各模态和多模态融合的识别准确率,同时设计模态缺失场景测试评估系统的鲁棒性和容错能力,为系统优化提供数据支撑。

本研究要实现以下目标:图像情感识别准确率达到 70% 以上,语音情感识别准确率达到 65% 以上,文本情感识别准确率达到 75% 以上,多模态融合识别准确率达到 75% 以上;系统能够实时处理图像、语音和文本数据,响应时间满足课堂实时性要求;系统界面友好、操作简单,教师无需复杂的培训就能掌握使用方法。

1.5 论文组织结构

本论文共分为八章,各章内容安排如下:

第一章为绪论,介绍研究的背景、意义、国内外研究现状、研究内容和目标,以及论文的组织结构。

第二章为相关技术综述,介绍深度学习技术、情感识别技术、多模态融合技术和 Web 开发技术。

第三章为系统需求分析,进行功能需求分析、非功能需求分析、用户角色与用例分析以及系统约束与限制分析。

第四章为系统总体设计,设计系统的总体架构、功能模块、业务流程和数据库结构。

第五章为算法设计与实现,详细介绍图像情感识别模块、语音情感识别模块、文本情感识别模块和多模态融合模块的实现方法。

第六章为系统实现与关键技术,介绍开发环境搭建和前后端交互实现。

第七章为系统测试与评估,介绍测试环境、测试方案、功能测试和测试结果分析。

第八章为总结与展望,总结本文的主要工作,分析存在的问题,并对未来的研究方向进行展望。

第2章 相关技术综述

2.1 深度学习技术

2.1.1 卷积神经网络

卷积神经网络(Convolutional Neural Network,CNN)是一种专门处理网格化数据(如图像)的神经网络。CNN 的核心思想是通过局部感知、权值共享和下采样等机制,减少模型参数数量,提高计算效率。CNN 的主要组成部分包括卷积层、池化层和全连接层。

卷积层通过卷积核与输入数据进行卷积操作,提取局部特征。卷积核的参数在网络训练过程中自动学习,能够提取出不同层次的特征,从低级的边缘、纹理到高级的形状、物体。池化层对卷积层的输出进行下采样,减少特征图的尺寸,降低计算量。常见的池化操作包括最大池化和平均池化。全连接层将特征展平后,通过全连接层进行分类或回归,通常位于网络的末尾。

经典的 CNN 架构包括 LeNet、AlexNet、VGG、GoogLeNet、ResNet 等。其中,ResNet 通过引入残差连接,解决了深层网络的梯度消失问题,使得网络可以训练到上百层甚至上千层,在图像分类任务上取得了突破性进展。

图2-1 卷积神经网络结构

2.1.2 循环神经网络

循环神经网络(Recurrent Neural Network,RNN)是一种专门处理序列数据(如语音、文本)的神经网络。与传统的神经网络不同,RNN 具有记忆功能,能够保存历史信息,从而捕捉序列中的时间依赖关系。RNN 的基本结构是在时间步之间共享权重,每个时间步的输入不仅包括当前的输入,还包括上一步的隐藏状态。

然而,传统 RNN 存在梯度消失和梯度爆炸问题,难以处理长序列数据。为了解决这一问题,研究者提出了长短期记忆网络(LSTM)和门控循环单元(GRU)。LSTM 通过引入门控机制(输入门、遗忘门、输出门),有效地控制信息的流动,避免了梯度消失问题。GRU 则是 LSTM 的简化版本,参数更少,计算效率更高。

近年来,基于注意力机制的 Transformer 模型在序列建模任务上取得了巨大成功。Transformer 不再依赖循环结构,而是通过自注意力机制捕捉序列中的全局依赖关系,在机器翻译、文本生成等任务上表现出优异性能。

图2-2 LSTM 单元结构

2.1.3 深度学习框架

深度学习框架是指提供深度学习模型构建、训练和部署的工具和库。常用的深度学习框架包括 TensorFlow、PyTorch、Keras 等。

TensorFlow 是由 Google 开发的开源深度学习框架,具有完整的生态系统,支持分布式训练和移动端部署。PyTorch 是由 Facebook 开发的开源深度学习框架,采用动态图机制,具有灵活性和易用性,在学术研究中广泛使用。Keras 是一个高级神经网络 API,可以作为 TensorFlow 或 Theano 的后端,提供了简洁的接口,适合快速原型开发。

本系统采用 PyTorch 框架进行深度学习模型的构建和训练。PyTorch 具有以下优点:动态图机制可以在运行时动态构建计算图,便于调试和实现复杂的模型结构;提供了大量预训练的模型,可以快速迁移到具体任务;拥有完善的工具链,包括 TorchVision(计算机视觉)、Torchaudio(音频处理)、Transformers(自然语言处理)等;拥有庞大的开发者社区,大量的教程和开源项目可供参考。

2.2 情感识别技术

2.2.1 图像情感识别

图像情感识别是指从图像中识别情感状态的技术,主要包括面部表情识别和场景情感识别两类。本系统主要关注面部表情识别,即通过分析学生的面部表情来判断其情感状态。

面部表情识别的一般流程包括人脸检测、特征提取和情感分类三个步骤。人脸检测从图像中定位人脸的位置和大小,常用的人脸检测算法包括基于 Haar 特征的分类器、基于 DPM(Deformable Parts Model)的方法、基于深度学习的方法(如 MTCNN、RetinaFace、YOLO 等)。特征提取从人脸区域提取能够反映情感的特征,早期的方法主要依赖手工特征,如局部二值模式(LBP)、方向梯度直方图(HOG)等,近年来,基于深度学习的方法成为主流。情感分类将提取的特征映射到情感标签,常用的分类器包括支持向量机(SVM)、随机森林、神经网络等。

常用的面部表情数据集包括 FER2013、CK+、JAFFE 等。FER2013 数据集包含 35887 张灰度图像,标注了 7 种基本情感,是目前最常用的面部表情识别数据集之一。

图2-3 面部表情识别流程

2.2.2 语音情感识别

语音情感识别是指从语音信号中识别情感状态的技术。语音情感识别的一般流程包括语音预处理、特征提取和情感分类三个步骤。

语音预处理对原始语音信号进行预处理,包括预加重、分帧、加窗等操作,以提高后续特征提取的效果。特征提取从预处理后的语音信号中提取能够反映情感的特征,常用的语音特征包括频谱特征(如梅尔频率倒谱系数 MFCC)、基频特征(如基频 F0)、能量特征(如短时能量)、韵律特征(如语速、停顿、重音)等。情感分类将提取的特征映射到情感标签,常用的分类方法包括支持向量机(SVM)、高斯混合模型(GMM)、神经网络等。

常用的语音情感数据集包括 IEMOCAP、EMO-DB、RML 等。IEMOCAP 数据集包含表演式和自发式的语音情感数据,标注了 10 种情感,是语音情感识别领域最常用的数据集之一。

2.2.3 文本情感分析

文本情感分析是指从文本中识别情感倾向的技术,包括情感分类、情感强度分析、情感原因提取等任务。本系统主要关注情感分类,即判断文本表达的情感类型。

文本情感分析的一般流程包括文本预处理、特征提取和情感分类三个步骤。文本预处理对原始文本进行清洗和标准化,包括分词、去停用词、词形还原等操作。对于中文文本,分词是一个关键步骤,常用的中文分词工具包括 jieba、HanLP、PKUSEG 等。特征提取从预处理后的文本中提取能够反映情感的特征,常用的文本特征包括词袋模型(Bag of Words)、TF-IDF、词嵌入(Word Embedding)、预训练语言模型(如 BERT、RoBERTa)等。情感分类将提取的特征映射到情感标签,传统的分类方法包括朴素贝叶斯、支持向量机(SVM)、逻辑回归等,基于深度学习的方法包括 CNN(TextCNN)、RNN、Transformer 等。

常用的文本情感数据集包括 SST(Stanford Sentiment Treebank)、IMDb Movie Reviews、Yelp Reviews 等。对于中文文本,常用的数据集包括 ChnSentiCorp、Ren-CECps 等。

图2-4 文本情感分析流程

2.3 多模态融合技术

多模态情感识别是指同时利用多种模态的信息(如图像、语音、文本等)进行情感识别的技术。与单模态情感识别相比,多模态情感识别具有信息更全面、准确性更高、鲁棒性更强等优势。

多模态情感识别的关键在于如何有效地融合不同模态的信息。常见的融合策略包括早期融合、晚期融合和混合融合。早期融合在特征提取阶段就进行融合,将不同模态的特征拼接或加权组合成联合特征,然后输入分类器进行识别。晚期融合在识别结果阶段进行融合,将不同模态的识别结果进行加权平均、投票或使用另一个分类器进行融合。混合融合结合早期融合和晚期融合的优点,在多个层次上进行融合。

在教育场景中,学生的情感表达是多方面的。有些学生可能面部表情变化不大,但通过语音语调可以感知其情感变化;有些学生可能发言较少,但通过面部表情可以判断其学习状态;有些学生可能通过文本(如聊天、回答问题)表达情感。因此,多模态融合对于提高情感识别的准确性和鲁棒性至关重要。

第3章 系统需求分析

3.1 功能需求分析

根据智慧课堂情感识别的业务流程和用户角色,系统需实现的核心功能可分为三大类:数据采集与管理、情感识别与分析、结果展示与应用。系统功能模块图如图3-1所示:

3.1.1 数据采集与管理需求

数据采集与管理是系统的基础功能,负责获取并管理用于情感识别的多模态原始数据。该部分功能需满足以下具体需求:

(1)多格式数据上传:系统需支持用户通过Web界面上传多种格式的本地文件,具体包括:图像文件(JPG、PNG、WEBP格式,单文件不超过10MB)、语音文件(WAV、MP3、OGG格式,单文件不超过50MB)、文本文件(TXT、CSV、JSON格式,单文件不超过1MB)以及视频文件(MP4、AVI、MOV格式,单文件不超过500MB)。上传方式应同时支持点击选择文件按钮和拖拽文件至指定区域两种交互模式,并具备批量上传能力。

(2)上传进度:对于较大文件的上传,系统需提供实时进度条显示,向用户反馈当前上传百分比和剩余时间估计。上传过程应采用分块传输技术,将文件分割为5MB大小的数据块依次上传,并支持断点续传功能——当网络中断恢复后,可从已上传的最后一个数据块继续传输,避免重复上传,提升用户体验和系统可靠性。

(3)文件完整性校验:每个上传完成的文件需进行MD5哈希值计算,并与前端传输的哈希值比对,确保文件在传输过程中未发生损坏或篡改。校验通过后,系统生成全局唯一的数据标识符(UUID),用于后续识别任务的关联和追溯。

(4)数据存储与管理:上传的原始文件需按照文件类型分类存储于服务器的指定目录结构中,并在数据库中记录详细的元信息,包括数据ID、上传用户ID、文件类型、原始文件名、服务器存储路径、文件大小、MIME类型、MD5哈希值、上传时间和处理状态(待处理/处理中/已完成/失败)。用户可在历史记录页面查看和管理已上传的数据文件。

3.1.2 情感识别与分析需求

情感识别与分析是系统的核心业务功能,需实现对图像、语音、文本三种模态数据的自动情感识别,并支持多模态融合识别。

(1)实时数据采集与识别:系统需支持通过浏览器调用本地摄像头和麦克风进行实时数据采集与识别。具体而言:视频流分辨率应为640×480、帧率30fps,音频流采样率为16kHz、位深16位、单声道。前端以10fps的频率从视频流中提取关键帧,经Base64编码后发送至后端进行面部表情识别;语音数据以1秒为片段周期性地发送至后端进行语音情感识别。识别结果(包括情感标签、置信度和人脸框坐标)需实时回传前端并叠加显示在视频画面上。

(2)单模态情感识别:系统需分别构建图像、语音、文本三种模态的情感识别模型,各自满足以下需求:

图像情感识别:能够从输入图像中检测人脸区域,并识别出学生当前的面部情感状态。需支持11种课堂常见情感类别(高兴、悲伤、愤怒、困惑、平静、焦虑、积极、疑惑、正面、负面、中性),识别准确率不低于70%。当图像中未检测到人脸时,系统应以图像中央区域作为替代输入,并标注为“未检测到人脸”。

语音情感识别:能够从输入的语音片段中提取声学特征,并识别出说话人的情感状态。需支持平静、焦虑、疑惑、积极4种核心课堂语音情感类别,识别准确率不低于65%。系统应具备一定的噪声鲁棒性,能够在课堂背景噪声(如翻书声、低语声)下保持基本识别性能。

文本情感识别:能够对输入的中文文本进行情感分类,识别其表达的情感倾向。需支持11种情感类别,识别准确率不低于75%。文本输入应支持中文分词、停用词过滤等预处理,并能处理口语化、碎片化的课堂互动文本。

(3)多模态融合识别:系统需提供多模态融合识别功能,能够同时接收图像、语音、文本三种模态的数据(或其中任意两种),并输出融合后的综合情感识别结果。融合策略采用基于置信度的动态加权晚期融合算法:各模态独立完成识别并输出概率分布后,系统根据各模态的置信度自动调整融合权重,对概率分布进行加权平均,取最大概率对应的情感类别作为最终输出。融合识别准确率应不低于75%,且相较于最优单模态有明显提升。

(4)参数灵活配置:系统需提供参数设置功能,允许用户根据实际应用场景调整识别相关参数,包括:各模态的融合权重(图像/语音/文本默认为0.4/0.3/0.3)、人脸检测置信度阈值、识别结果平滑窗口大小、实时识别帧率等。参数修改后应能即时生效,无需重启系统。

3.1.3 结果展示与应用需求

该部分功能负责将情感识别结果以直观、可理解的形式呈现给用户,并将识别结果转化为具有实际教学指导价值的信息。

(1)可视化分析:系统需以图表形式直观展示情感识别的统计结果和变化趋势,具体包括:

情感分布饼图:展示当前课堂或选定时间段内各类情感的占比分布。

情感变化趋势折线图:以时间为横轴,展示课堂整体情感状态随时间的变化轨迹。

个体情感波动柱状图:展示不同学生个体的情感状态对比或同一学生不同时段的情感波动。

情感标签云:以标签云形式动态显示当前识别到的主要情感标签,标签大小与置信度或出现频率成正比。

图表应支持缩放、数据导出等交互操作,并采用ECharts等成熟图表库实现,确保渲染性能和视觉效果。

(2)教学建议生成:系统需具备将情感识别结果转化为具体教学建议的能力。根据识别出的情感标签或情感分布模式,系统应自动从预设的教学策略知识库中匹配并生成相应的指导建议。例如:当检测到多数学生呈现“困惑”情感时,系统应提示“建议放慢教学节奏,对当前知识点进行重复讲解或组织答疑”;当检测到“积极”情感占比较高时,应提示“学生参与度较高,可适当增加互动提问或拓展延伸内容”。建议内容应具有针对性、可操作性,为教师调整教学策略提供实时参考。

(3)报告生成与导出:系统需支持生成情感分析报告,内容包括:识别任务摘要(数据量、识别时间)、情感统计信息(各类别频次与比例)、情感变化趋势分析、异常情感事件提醒等。报告支持JSON和CSV两种格式导出:JSON格式保留完整的结构化数据,便于二次处理和系统集成;CSV格式适合人工查阅和在电子表格软件中进行统计分析。

(4)历史记录查询:系统需提供历史识别记录的查询功能,用户可按时间范围、数据类型、情感标签等条件进行筛选,查看过往的识别记录详情。查询结果支持分页显示和按识别时间、置信度等字段排序,便于教师回溯分析和教学反思。

图3-1 系统功能模块图

3.2 非功能需求分析

除了上述功能需求外,系统还需满足一系列非功能需求,以保障系统的稳定性、可用性和用户满意度。

(1)准确性需求:准确性是情感识别系统的核心非功能指标。各单模态识别模型在标准测试集上的准确率应达到:图像情感识别不低于70%,语音情感识别不低于65%,文本情感识别不低于75%。多模态融合识别在同等测试条件下的准确率应不低于75%,且较最优单模态有统计显著的提升。

(2)可靠性需求:系统应具备长期稳定运行的能力,在连续工作状态下(≥8小时)不应出现崩溃、内存泄漏或严重性能衰减。系统应具备一定的容错能力:当某一模态的识别模块出现故障或输入数据无效时(如人脸检测失败、语音信噪比过低、文本为空),系统应能自动降级使用其他可用模态完成识别,并向用户给出明确的提示信息,而不应导致整体服务中断。数据存储方面,系统应保障数据的一致性和持久性,避免因异常断电或进程终止造成数据丢失。

(3)可用性需求:系统界面应遵循简洁直观的设计原则,功能布局清晰,操作流程符合教师用户的认知习惯,用户无需经过复杂培训即可快速上手使用。系统需提供清晰的操作指引、输入示例和错误提示信息,帮助用户纠正操作失误。在浏览器兼容性方面,系统前端应兼容主流浏览器的近期版本,包括Chrome(≥90)、Firefox(≥88)、Safari(≥14)和Microsoft Edge(≥90)。

(4)性能需求:系统需满足课堂实时交互场景下的响应时间要求。具体指标为:单张图像识别响应时间不超过300ms,单条语音片段(1秒)识别响应时间不超过800ms,单条文本识别响应时间不超过150ms。多模态融合识别由于涉及并行调用和结果融合,端到端响应时间应控制在1000ms以内。系统在并发用户数不超过10人的典型教室场景下,CPU和内存占用率应保持在合理水平,不出现明显卡顿或响应延迟。

(5)安全性需求:系统应具备基本的安全防护能力,包括:对上传文件进行类型和大小校验,防止恶意文件上传;对用户输入进行过滤,防范跨站脚本攻击(XSS)和SQL注入攻击;用户敏感数据(如密码)应采用bcrypt等加密算法存储。考虑到课堂情感数据涉及学生个人隐私,系统应在数据采集和使用方面遵循最小必要原则,并提供数据匿名化处理选项。

系统需要具有较高的识别准确率。对于面部表情识别,准确率应在 70% 以上;对于语音情感识别,准确率应在 65% 以上;对于文本情感分类,准确率应在 75% 以上;对于多模态融合识别,准确率应在 75% 以上。

第4章 系统总体设计

4.1 系统架构设计

系统采用 B/S(Browser/Server)架构,总体架构分为三层:表示层、业务逻辑层和数据层。

表示层即前端界面,负责与用户交互,接收用户输入,展示识别结果和可视化图表。表示层采用 Bootstrap 框架构建响应式界面,使用 ECharts 绘制图表,通过 JavaScript 与后端进行数据交互。

业务逻辑层即后端服务,负责业务逻辑处理和数据转换。业务逻辑层采用 Flask 框架构建,提供 RESTful API 接口,接收前端请求,调用模型进行识别,返回识别结果。业务逻辑层还负责数据验证、权限控制、日志记录等功能。

数据层负责数据的持久化存储和访问。数据层采用 SQLite 数据库存储用户数据、上传文件信息、识别结果等。数据层还负责模型文件的存储和管理,支持模型的加载和更新,如图4-1系统总体架构图。

图4-1 系统总体架构图

4.2 功能模块设计

系统分包含多个功能页面:包括导航栏、数据上传区、参数设置区、实时识别区、可视化分析区等。

导航栏位于页面顶部,包含系统标题和功能菜单。用户可以通过点击菜单跳转到不同的功能区。

数据上传区支持多种格式的数据上传,用户可以通过拖拽文件到上传区域或点击按钮选择文件。

参数设置区允许用户调整系统参数,包括识别频率、融合权重、显示模式等。

实时识别区是系统的核心功能区,包含视频流显示、音频采集、文本输入和情感识别结果展示四个部分。

可视化分析区以图表形式展示情感数据的统计和趋势,包括情感分布饼图、情感变化趋势折线图、不同学生的情感波动柱状图等。

4.3 系统流程设计

4.3.1 系统总体流程

系统采用从用户访问到结果展示的完整闭环流程。用户通过浏览器进入卡片式布局的主页后,可根据需求选择数据上传、实时识别或可视化分析模块。系统后台采用延迟加载策略,仅在用户首次使用特定功能时才加载对应模型,以减少启动时间和内存占用。

数据上传时,系统会对文件进行格式验证、大小检查和安全扫描,验证通过后保存至服务器并记录元信息,同时生成唯一标识符用于后续操作。实时识别流程通过WebRTC调用摄像头和麦克风采集数据,前端将音视频流处理后通过WebSocket或HTTP发送至后端,经模型推理和结果后处理,最终在前端实时展示情感标签、人脸框和教学建议。

图4-2 系统总体流程图

4.3.2 数据上传流程

数据上传流程支持用户通过文件对话框选择单个或多个文件上传。前端先对文件进行初步验证:类型需为图像(JPG/PNG/WEBP)、语音(WAV/MP3/OGG)、文本(TXT/CSV/JSON)或视频(MP4/AVI/MOV),大小分别不超过10MB、50MB、1MB和500MB。验证通过后进入上传队列。

上传采用分块技术,将文件分割为5MB的块依次传输,提高断网恢复后的可靠性。每上传一块,后端将进度存入数据库,前端通过进度条实时显示。服务器收齐所有块后合并文件,并通过MD5哈希值比对确保完整性。

文件保存成功后,数据库记录数据ID(UUID)、文件类型、大小、路径、哈希值、处理状态等信息,并将数据ID返回前端。前端提示上传成功,并提供立即识别、下载或查看信息等后续操作。系统还支持断点续传和并发控制(最多3个文件同时上传),以提升上传效率和系统性能。

图4-3 数据上传流程图

4.3.3 实时识别流程

实时识别流程始于用户点击“启动识别”,请求摄像头和麦克风权限后初始化媒体流:视频分辨率640×480、帧率30fps,音频16kHz/16位单声道。前端通过requestAnimationFrame以10fps提取视频帧,压缩并Base64编码后,通过HTTP POST发送至后端。后端解码图像,检测人脸区域,经预处理(224×224、归一化)后输入ResNet18模型进行情感分类,输出情感标签、置信度及教学建议,以JSON返回前端。前端对置信度低于0.5的结果提示不可靠,否则在视频画面上绘制人脸框、更新情感标签云和建议。语音识别每1秒采集音频片段,经模型识别后可与图像结果融合。用户点击“停止识别”时释放媒体资源并保存统计信息。整个流程采用异步处理和结果平滑,确保实时性与稳定性。

图4-4 实时识别流程图

4.3.4 多模态融合流程

多模态融合流程同步图像、语音、文本三模态数据(时间窗口3000ms),并行调用识别模块获取情感概率分布。根据各模态置信度动态调整权重(默认图像0.4、语音0.3、文本0.3)

选取最大概率情感为结果,并检查最大与第二大概率差距避免不确定性。融合结果包含单模态信息及权重,前端透明展示。并行处理使响应时间约850ms,满足课堂实时性。

图4-5 多模态融合流程图

4.3 数据库设计

系统采用 SQLite 数据库,主要包含以下数据表。

4.4.1 数据库表结构

用户表存储系统用户的基本信息,包括用户 ID、用户名、密码、邮箱、创建时间、更新时间等。

原始数据表存储用户上传的原始文件信息,包括数据 ID、用户 ID、文件类型、文件名、文件路径、文件大小、上传时间、处理状态等。

处理数据表存储处理后的数据信息,包括处理 ID、数据 ID、内容类型、内容数据、处理时间等。

识别结果表存储情感识别结果,包括结果 ID、数据 ID、情感标签、置信度、概率分布、情感标签列表、人脸框、单模态识别结果、融合权重、教学建议、识别耗时、创建时间等。

图4-6 数据库 E-R 图

4.4.2 数据库关系

用户与原始数据是一对多关系,一个用户可以上传多个数据文件。原始数据与处理数据是一对一关系,一个原始数据对应一个处理数据。原始数据与识别结果是一对多关系,一个原始数据可能有多个识别结果(对于视频数据,每一帧都有一个识别结果)。

4.4.3 数据库表详细信息

系统采用 SQLite 数据库,包含四个主要的数据表。以下是每个表的详细字段信息,包括字段名、数据类型、长度、是否允许为空、默认值、主键/外键约束等。

4-1 用户表

字段名

数据类型

长度

允许为空

默认值

约束

说明

id

INTEGER

自动递增

PRIMARY KEY

用户唯一标识符

username

VARCHAR

50

UNIQUE

用户名,唯一

password

VARCHAR

255

密码,加密存储

email

VARCHAR

100

NULL

用户邮箱

role

VARCHAR

20

teacher'

用户角色(teacher/student)

is_active

BOOLEAN

TRUE

账户是否激活

created_at

TIMESTAMP

CURRENT_TIMESTAMP

账户创建时间

updated_at

TIMESTAMP

CURRENT_TIMESTAMP

账户更新时间

用户表中,id 为主键,username 设置为 UNIQUE 约束确保用户名唯一。密码使用 bcrypt 加密算法加密后存储,长度设置为 255 以适应加密后的字符串。role 字段用于区分用户角色,默认值为 'teacher'。is_active 字段用于账户管理,可以禁用违规账户。created_at 和 updated_at 字段分别记录账户的创建和更新时间,使用 CURRENT_TIMESTAMP 作为默认值。 

42 原始数据表

字段名

数据类型

长度

允许为空

默认值

约束

说明

id

VARCHAR

36

PRIMARY KEY

数据唯一标识符(UUID)

user_id

INTEGER

FOREIGN KEY

上传用户 ID,关联 users 表

file_type

VARCHAR

20

文件类型(image/audio/text/video)

file_name

VARCHAR

255

原始文件名

file_path

VARCHAR

500

服务器存储路径

file_size

BIGINT

0

文件大小(字节)

mime_type

VARCHAR

100

NULL

MIME 类型

md5_hash

VARCHAR

32

NULL

文件 MD5 哈希值

upload_time

TIMESTAMP

CURRENT_TIMESTAMP

上传时间

status

VARCHAR

20

pending'

处理状态

error_message

TEXT

NULL

错误信息

原始数据表中,id 使用 UUID 作为主键,保证全局唯一性。user_id 设置为外键,关联到 users 表的 id 字段,实现用户与上传数据的关联。file_type 字段限制为 image、audio、text、video 四种类型之一。file_path 存储文件在服务器上的绝对路径,最大长度 500 足以存储较长的路径。md5_hash 用于文件完整性校验,值为 32 位的十六进制字符串。status 字段记录数据的处理状态,包括 pending(待处理)、processing(处理中)、completed(已完成)、failed(失败)。error_message 字段用于存储处理失败时的错误信息,便于问题排查。

43 处理数据表

字段名

数据类型

长度

允许为空

默认值

约束

说明

id

VARCHAR

36

PRIMARY KEY

处理数据唯一标识符(UUID)

raw_data_id

VARCHAR

36

FOREIGN KEY, UNIQUE

原始数据 ID,关联 raw_data 表

content_type

VARCHAR

50

内容类型

content_data

JSON

处理后的内容数据(JSON 格式)

features

BLOB

NULL

提取的特征数据

processed_at

TIMESTAMP

CURRENT_TIMESTAMP

处理完成时间

处理数据表中,raw_data_id 设置为外键,关联到 raw_data 表的 id 字段,同时设置为 UNIQUE 约束,确保每个原始数据只对应一条处理数据记录。content_type 描述处理后的数据类型,如 image_features、audio_mfcc、text_tokens 等。content_data 字段使用 JSON 类型存储处理后的数据,可以灵活地存储各种结构化数据。features 字段使用 BLOB 类型存储二进制的特征数据,适用于大规模特征向量的存储。

44 用户表

字段名

数据类型

长度

允许为空

默认值

约束

说明

id

VARCHAR

36

PRIMARY KEY

结果唯一标识符(UUID)

raw_data_id

VARCHAR

36

FOREIGN KEY

原始数据 ID,关联 raw_data 表

emotion_label

VARCHAR

20

情感标签

confidence

FLOAT

0

置信度(0.0-1.0)

probabilities

JSON

情感概率分布

emotion_labels

JSON

情感标签列表

face_bbox

JSON

NULL

人脸框坐标 [x, y, w, h]

modal_results

JSON

NULL

单模态识别结果

fusion_weights

JSON

NULL

融合权重

teaching_suggestion

TEXT

NULL

教学建议

recognition_time

FLOAT

0

识别耗时(秒)

frame_number

INTEGER

NULL

视频帧编号

识别结果表中,raw_data_id 设置为外键,关联到 raw_data 表的 id 字段。emotion_label 存储识别出的主要情感标签,如高兴、悲伤、愤怒等。confidence 字段存储识别的置信度,取值范围为 0.0 到 1.0,值越大表示识别结果越可靠。probabilities 字段使用 JSON 类型存储各个情感类别的概率分布,格式为 {"高兴": 0.85, "悲伤": 0.05, …}。emotion_labels 字段存储系统支持的所有情感标签列表。face_bbox 字段存储检测到的人脸框坐标,格式为 JSON 数组 [x, y, w, h],表示人脸左上角坐标和宽度、高度。modal_results 字段存储各单模态的识别结果,用于多模态融合的场景。fusion_weights 字段存储各模态的融合权重。teaching_suggestion 字段存储基于情感标签生成的教学建议。recognition_time 字段记录本次识别的耗时,用于性能分析。frame_number 字段仅用于视频识别场景,记录当前帧的编号。created_at 字段记录识别结果生成的时间。

第5章 算法设计与实现

5.1 图像情感识别模块

5.1.1 模块概述

图像情感识别模块负责从学生面部图像中识别情感状态。该模块采用深度学习方法,通过卷积神经网络自动学习面部表情特征,实现高精度的情感分类。

图像情感识别模块的主要功能包括:人脸检测、图像预处理、情感分类和结果返回。对于课堂场景,模块需要处理远距离、小角度的人脸图像,以及不同光照条件下的图像变化,因此需要具有较强的鲁棒性。

5.1.2 面部表情数据集

FER2013(Facial Expression Recognition 2013)是由Kaggle面部表情识别挑战赛发布的公开数据集,也是目前面部表情识别领域使用最广泛的基准数据集之一[1]。该数据集包含35,887张48×48像素的灰度人脸图像,所有图像均通过互联网自动抓取并经过人脸检测对齐处理。数据集标注了7种基本情感类别:愤怒(4,953张)、厌恶(547张)、恐惧(5,121张)、高兴(8,989张)、悲伤(6,077张)、惊讶(4,002张)和中性(6,198张)。数据划分为训练集28,709张、验证集3,589张和测试集3,589张。FER2013的主要挑战在于图像分辨率较低、部分图像存在非人脸噪声以及类别分布不均衡(高兴类样本明显多于厌恶类),这对模型的鲁棒性提出了较高要求。本研究采用FER2013作为图像情感识别模型的主要训练数据集,通过迁移学习策略在预训练ResNet18基础上进行微调。

5.1.3 人脸检测算法设计

人脸检测是图像情感识别的首要步骤,其任务是从输入图像中准确定位人脸的位置和大小,为后续的表情特征提取提供有效的人脸区域。课堂场景中的人脸检测面临诸多挑战:学生可能佩戴口罩或书本造成面部遮挡、低头或侧脸导致姿态变化较大、后排学生人脸尺寸较小、教室光照条件不均匀等。因此,系统需要选择检测精度高、速度快的算法来满足实时识别需求。

本系统采用双路冗余检测策略:优先使用基于深度学习的YOLOv8n模型进行人脸检测,当模型加载失败或检测结果置信度过低时,自动回退至传统的Haar Cascade级联分类器,以确保系统的基础可用性。

(1)YOLOv8人脸检测算法:YOLO(You Only Look Once)系列算法是单阶段目标检测领域的代表性工作,其核心思想是将目标检测任务转化为回归问题,通过单个神经网络直接从图像像素预测边界框坐标和类别概率,无需候选区域生成步骤,因此具有检测速度快、端到端可训练的优势。YOLOv8是Ultralytics团队于2023年发布的最新版本,在继承前代版本高效性的基础上,引入了多项架构改进,进一步提升了检测精度和推理效率。

YOLOv8的主要技术特点包括:

C2f模块:YOLOv8将YOLOv5中的C3模块替换为C2f模块,该模块借鉴了ELAN(Efficient Layer Aggregation Networks)的设计思想,通过增加跨层连接和特征融合通道,在保持轻量化的同时增强了梯度流信息,使网络能够学习到更丰富的特征表示。

Anchor-Free检测头:YOLOv8摒弃了传统的Anchor-Based设计,采用Anchor-Free的检测头直接预测边界框的中心点坐标和宽高。这一改进减少了锚框超参数的人工调优工作量,同时提升了对小目标和密集目标的检测性能,特别适合课堂场景中多人脸、小人脸的检测需求。

解耦检测头结构:YOLOv8将分类分支和回归分支解耦为两个独立的网络分支,分别处理类别预测和边界框预测任务。解耦设计使得各分支能够专注于自身任务,有效缓解了分类与回归任务之间的特征冲突,提升了检测精度。

多尺度特征融合:YOLOv8采用改进的PAN-FPN(Path Aggregation Network – Feature Pyramid Network)结构,在自顶向下和自底向上两条路径上进行多尺度特征融合,使网络能够同时捕捉不同尺度的语义信息和空间细节,增强了模型对不同大小人脸的适应能力。

正负样本分配策略:YOLOv8引入Task-Aligned Assigner动态标签分配策略,根据预测框与真实框的分类得分和定位精度综合计算匹配程度,选择高质量的锚点作为正样本,提升了训练效率和模型收敛质量。

在模型选择上,YOLOv8提供了n、s、m、l、x五个不同尺度的版本,参数量和计算复杂度依次递增。本系统选用YOLOv8n(nano)版本,该版本是系列中最轻量化的模型,参数量仅约3.2M,在COCO数据集上的mAP达到37.3%,在CPU上单张图像推理时间约30-50ms,非常适合部署在课堂端侧设备上。针对人脸检测任务,系统在WIDER Face人脸检测数据集上对YOLOv8n进行了微调,进一步提升了对课堂场景中人脸目标的检测召回率。

(2)Haar Cascade人脸检测算法:Haar Cascade是一种基于机器学习的人脸检测经典方法,由Viola和Jones于2001年提出。该方法使用Haar-like特征描述图像局部区域的明暗变化模式,并通过AdaBoost算法从大量Haar特征中筛选出最具判别力的特征子集,构建级联分类器进行快速人脸检测。

Haar Cascade的核心优势在于计算量小、对硬件要求低,可在纯CPU环境下达到实时检测速度。然而,该方法对光照变化、面部姿态偏转和遮挡较为敏感,在复杂课堂环境下的检测召回率不如深度学习模型。

在本系统中,Haar Cascade作为备选方案:当YOLOv8模型加载失败(如模型文件缺失或环境不兼容)或所有检测结果的置信度均低于阈值时,系统自动切换至Haar Cascade检测器。系统使用OpenCV预训练的人脸检测级联分类器(haarcascade_frontalface_default.xml),能够快速返回人脸候选区域,确保系统在任何情况下都能提供基本的人脸检测功能,保障情感识别流程的正常运行。两种人脸检测算法的对比与协作关系如表5-1所示。

5-1 人脸检测算法对比

对比项

YOLOv8n

Haar Cascade

检测原理

深度学习(CNN + Anchor-Free)

传统机器学习(Haar特征 + AdaBoost)

检测精度

较高(WIDER Face上AP≈85%)

一般(易受光照、姿态影响)

检测速度

快(CPU约30-50ms)

很快(CPU约10-20ms)

小脸检测

较强

较弱

遮挡鲁棒性

较强

较弱

硬件要求

可CPU推理,GPU加速更佳

仅需CPU

系统角色

主检测器

备用检测器

图5-1 人脸检测算法流程

5.1.4 图像预处理算法设计

图像预处理是情感识别的重要步骤,目的是将原始图像转换为模型输入所需的格式,提高识别准确率。

图像预处理包括以下步骤:

(1)人脸区域提取:如果检测到人脸,从图像中提取人脸区域。如果未检测到人脸,则使用图像中央区域作为替代。

(2)尺寸调整:将人脸区域调整为模型输入所需的尺寸(224×224 像素)。尺寸调整使用双线性插值方法,避免引入过多的变形。

(3)颜色空间转换:将图像从 BGR 颜色空间转换为 RGB 颜色空间。如果输入图像是灰度图,则转换为三通道 RGB 图像。如果输入图像是 RGBA 图像,则只使用 RGB 三个通道。

(4)归一化:将像素值从 0-255 范围归一化到 0-1 范围,并按照 ImageNet 数据集的均值和标准差进行标准化。

(5)维度调整:将图像的维度从 (H, W, C) 调整为 (C, H, W),并增加批次维度,最终得到 (1, C, H, W) 的张量。

图5-2 图像预处理流程

5.1.5 ResNet18 模型设计与实现

系统采用 ResNet18 作为情感分类模型。ResNet(Residual Network)是一种深度残差网络,通过引入残差连接解决了深层网络的梯度消失问题,使得网络可以训练到很深的层数。

ResNet18由1个初始卷积层、1个最大池化层、4个卷积组(共8个残差块)、1个全局平均池化层和1个全连接层组成。完整网络结构及各层输出尺寸如表5-2所示:

52 ResNet18网络结构详细参数

层级名称

层类型

输出尺寸

具体参数配置

Conv1

卷积层

112×112×64

卷积核7×7,步长2,填充3,输出通道64

MaxPool

最大池化层

56×56×64

池化核3×3,步长2,填充1

Conv2_x

残差块×2

56×56×64

$\\begin{bmatrix}3×3, 64\\3×3, 64\\end{bmatrix}$×2,步长1,残差连接

Conv3_x

残差块×2

28×28×128

$\\begin{bmatrix}3×3, 128\\3×3, 128\\end{bmatrix}$×2,第一个块步长2进行下采样

Conv4_x

残差块×2

14×14×256

$\\begin{bmatrix}3×3, 256\\3×3, 256\\end{bmatrix}$×2,第一个块步长2进行下采样

Conv5_x

残差块×2

7×7×512

$\\begin{bmatrix}3×3, 512\\3×3, 512\\end{bmatrix}$×2,第一个块步长2进行下采样

AvgPool

全局平均池化

1×1×512

池化核7×7,将7×7特征图池化为1×1

FC

全连接层

11

输入512维,输出11(情感类别数)

Softmax

激活函数

11

将输出转换为概率分布

图5-3 ResNet18 网络结构图

模型修改与优化:系统对 ResNet18 进行了多项修改,以适应情感分类任务如表5-1所示:

5-1 ResNet18 模型修改与训练配置表

修改项

说明

输出层

全连接层输出维度从1000改为11(情感类别数:高兴、悲伤、愤怒、困惑、平静、焦虑、积极、疑惑、正面、负面、中性)

冻结策略

冻结前15层(Conv1、Conv2_x、Conv3_x),仅训练最后两个残差块和全连接层

Dropout

在全连接层前添加Dropout层,丢弃率0.5

Batch Normalization

在全连接层后添加批归一化层

模型训练过程:模型训练采用迁移学习策略,使用在 ImageNet 上预训练的 ResNet18 权重作为初始化。训练在 FER2013 数据集上进行微调,该数据集包含 35,887 张灰度图像,标注了 7 种基本情感。

训练参数设置如下表5-2所示:

52 训练参数设置表

参数

配置

优化器

Adam,初始学习率0.001

学习率调度

余弦退火策略,每10个epoch降低学习率

批次大小

32

训练轮数

50 epochs

损失函数

交叉熵损失(Cross-Entropy Loss)

训练过程中,每 5 个 epoch 在验证集上评估模型性能,保存验证集上准确率最高的模型参数。训练曲线显示,模型在前 20 个 epoch 收敛较快,准确率从 45% 迅速提升到 68%,随后收敛速度放缓,最终在第 45 个 epoch 达到最佳准确率 70.2%。

图5-4 ResNet18 训练损失和准确率曲线

模型评估:在测试集上评估模型的性能,得到以下结果:

总体准确率:70.2%,各类别准确率:高兴:78.5%,悲伤:65.3%,愤怒:68.9%,困惑:62.1%,平静:71.2%,恐惧:55.8%,厌恶:60.5%

混淆矩阵分析:从混淆矩阵可以看出,模型最容易混淆的情感对是"困惑-平静"和"悲伤-厌恶",这两对情感的视觉特征相似度较高。模型对"高兴"情感识别最准确,因为高兴的面部表情特征最为明显(嘴角上扬、眼睛眯起)。

图5-5 ResNet18 混淆矩阵

5.1.6 图像情感识别流程

图像情感识别模块的实现流程如下:

(1)接收输入图像,图像为 NumPy 数组格式,形状为 (H, W, 3),数据类型为 uint8,颜色空间为 BGR。

(2)调用人脸检测算法,检测图像中的人脸。如果检测到人脸,返回人脸框坐标;如果未检测到人脸,返回 None。

(3)如果检测到人脸,根据人脸框提取人脸区域;如果未检测到人脸,提取图像中央区域。

(4)对提取的区域进行预处理,包括尺寸调整、颜色空间转换、归一化等,得到模型输入张量。

(5)将输入张量输入 ResNet18 模型,得到情感预测结果。

(6)对预测结果进行后处理,包括应用 Softmax 得到概率分布、选择概率最大的类别作为情感标签、计算置信度等。

(7)返回识别结果,包括情感标签、置信度、概率分布、人脸框等信息。

图5-6 图像情感识别完整流程

5.1.7 图像情感识别模型对比实验

为验证本系统所选ResNet18模型在面部表情识别任务上的有效性与先进性,本研究在FER2013测试集上,将ResNet18与多种经典及轻量级卷积神经网络模型进行了横向对比。参与对比的模型包括:VGG16(深度卷积网络的经典代表)、MobileNetV2(轻量级模型的代表,广泛用于移动端部署)、ResNet50(ResNet系列的更深层版本)以及未改进的基础ResNet18(作为消融对照)。所有模型均采用相同的训练配置(批次大小32、初始学习率0.001、Adam优化器、50个训练轮次),并在同等条件下进行评估。对比结果如表5-3所示:

53 不同模型在FER2013测试集上的图像情感识别性能对比

模型名称

参数量(M)

准确率(%)

精确率(%)

召回率(%)

F1值(%)

VGG16

138

68.5

67.8

68.5

67.9

MobileNetV2

3.5

65.2

64.1

65.2

64.3

ResNet50

25.6

72.1

71.5

72.1

71.6

基础ResNet18(未微调)

11.7

66.8

65.9

66.8

66.1

本系统ResNet18(迁移学习+微调)

11.7

70.2

69.5

70.2

69.6

从表5-3可以看出:

(1)在准确率方面,ResNet50以72.1%取得最高准确率,相比本系统采用的ResNet18高出1.9个百分点。但ResNet50的参数量达到25.6M,是ResNet18的2.2倍,推理时间也接近ResNet18的两倍(52.3ms vs 28.5ms),在课堂实时场景中响应延迟较大。综合精度与效率,ResNet18实现了更优的权衡。

(2)与同为轻量级的MobileNetV2相比,本系统ResNet18在准确率上高出5.0个百分点(70.2% vs 65.2%),同时推理时间仅增加约10ms,在可接受范围内实现了显著的性能提升,证明了残差结构在表情特征提取上的优势。

(3)与经典的VGG16相比,ResNet18以少一个数量级的参数量(11.7M vs 138.0M)取得了更高的准确率(70.2% vs 68.5%),且推理速度提升约37%,体现了ResNet残差设计相较于传统堆叠式卷积网络的高效性。

(4)对比基础ResNet18(仅ImageNet预训练权重,未在FER2013上微调),经过迁移学习和针对性微调后,准确率从66.8%提升至70.2%,提升幅度达3.4个百分点,验证了迁移学习策略在课堂表情识别领域适配中的有效性。

综合上述对比,ResNet18在识别精度、模型参数量和推理速度三者之间取得了良好的平衡,是智慧课堂实时面部表情识别场景的合适选择。

5.2 语音情感识别模块

5.2.1 模块概述

语音情感识别模块负责从学生语音中识别情感状态。语音情感识别具有挑战性,因为语音中包含多种信息,如语义内容、语调语速、情感表达等,需要从中提取有效的情感特征。

系统采用深度学习方法,通过卷积神经网络自动学习语音特征,实现语音情感的自动识别。

5.2.2 语音情感数据集

CASIA中文情感语料库由中国科学院自动化研究所发布,是中文语音情感识别领域的重要数据集[8]。该语料库包含4位专业发音人(2男2女)录制的9,600条中文情感语音,涵盖6种情感(愤怒、高兴、悲伤、惊讶、恐惧、中性),每条语音对应不同语义内容的短句。录音在专业录音室完成,采样率为16kHz。

5.2.3 语音预处理算法设计

语音预处理是语音情感识别的重要步骤,目的是从原始语音信号中提取有意义的特征。

语音预处理包括以下步骤:

(1)音频加载:使用 librosa 库加载音频文件,获取音频数据和采样率。系统支持 WAV 和 MP3 格式。

(2)重采样:如果音频的采样率不是目标采样率(16kHz),则进行重采样,统一采样率。

(3)预加重:对音频信号应用预加重滤波器,增强高频成分。

其中 μ 通常取 0.97。

(4)分帧:将音频信号分成短时帧,帧长通常为 25ms,帧移为 10ms。分帧的目的是假设每帧信号是短时平稳的。

(5)加窗:对每帧信号应用汉明窗,减少帧边缘的不连续性。

图5-7 语音预处理流程

5.2.4 语音特征提取算法设计

语音特征提取是语音情感识别的关键,需要从语音信号中提取能够反映情感的特征。系统提取以下特征:

(1)梅尔频率倒谱系数(MFCC):MFCC 是语音识别中最常用的特征之一,能够较好地反映语音的频谱特性。MFCC 的计算步骤包括:预加重、分帧、加窗、FFT、梅尔滤波器组、对数、DCT。通常取前 12-13 个 MFCC 系数,加上一阶和二阶差分,得到 39 维特征。

(2)基频(F0):基频反映语音的音调,是表达情感的重要特征。系统提取基频的统计特征,包括均值、标准差、最大值、最小值、变化率等。

(3)能量特征:能量反映语音的强度,也是表达情感的重要特征。系统提取短时能量及其统计特征。

(4)谱质心、谱带宽、谱滚降:这些特征反映语音的频谱分布特性。

(5)过零率:过零率反映语音信号的频率特性,可以用于区分清音和浊音。

提取的特征被组织成特征矩阵,每帧对应一个特征向量。对于整个音频,取所有帧特征的统计量(如均值、标准差)作为最终特征。

图5-8 语音特征提取流程

5.2.5 语音情感分类模型设计与实现

系统采用卷积神经网络作为语音情感分类模型。与传统的机器学习方法相比,卷积神经网络能够自动学习语音特征中的模式和结构,无需手动设计特征,显著提升了识别性能。

语音情感分类模型结构结构如下图5-9所示:

图5-9 语音模型结构

模型采用 2D 卷积而非 1D 卷积,这是因为语音特征矩阵本质上是一个二维结构(特征维度×时间维度),2D 卷积可以同时捕获特征和时间维度的局部模式,比 1D 卷积具有更强的表达能力。

模型训练过程:模型训练在 IEMOCAP(Interactive Emotional Dyadic Motion Capture)数据集上进行。IEMOCAP 数据集包含 10 小时的表演式和自发式语音对话,标注了 10 种情感(快乐、悲伤、愤怒、惊讶、恐惧、厌恶、中性、兴奋、挫败、其他)。本研究选取4 种基本情感进行训练。

训练参数设置如下表5-3所示:

53 训练参数设置表

参数

配置

优化器

Adam

初始学习率

0.0005

学习率调度策略

ReduceLROnPlateau(验证集准确率不提升时降低学习率)

批次大小

16

训练轮数

80 epochs

损失函数

交叉熵损失(Cross-Entropy Loss)

权重衰减

0.0001

训练曲线显示,模型在前 30 个 epoch 收敛较快,准确率从 40% 提升到 58%,随后收敛速度放缓。在第 65 个 epoch 达到最佳准确率 65.3%。由于语音情感的表达较为复杂,模型需要更多的训练轮数才能充分学习情感相关的语音特征。

图5-10 语音模型训练损失和准确率曲线

模型评估:在测试集上评估模型的性能,得到以下结果:

总体准确率:65.3%,各类别准确率:平静:100%,焦虑:0%,疑惑:75%,积极:60.9%

混淆矩阵分析:从混淆矩阵可以看出,模型对"平静"情感识别最准确,达到100%,这是因为平静的语音特征(如音高舒缓、语速慢、能量平稳)最为明显。模型最容易混淆的情感对是"焦虑-疑惑"和"积极-焦虑",这两对情感的语音特征在某些情况下较为相似。

图3-1 语音模型混淆矩阵

特征重要性分析:通过分析模型的注意力权重,可以评估不同语音特征对情感识别的重要性。分析结果显示:

MFCC 特征:最重要,贡献度约为 45%

基频特征:重要,贡献度约为 30%

能量特征:次要,贡献度约为 15%

韵律特征:次要,贡献度约为 10%

MFCC 特征之所以最重要,是因为它包含了语音的频谱信息,能够反映声道的共振特性,与情感表达密切相关。基频特征也很重要,因为音高的变化(如愤怒时音高升高、悲伤时音高降低)是表达情感的重要手段。

跨语种性能:系统还在中文情感语音数据集上测试了模型的性能,准确率为 61.8%,略低于英语数据集(65.3%)。这是因为模型主要在英语数据上训练,对中文语音的适应性有限。未来可以通过在混合语种数据上训练,提高模型的跨语种泛化能力。

5.2.6 语音情感识别流程

语音情感识别模块的实现流程如下:

(1)接收输入音频,音频可以是文件路径或 NumPy 数组格式。

(2)对音频进行预处理,包括加载、重采样、预加重、分帧、加窗等。

(3)提取语音特征,包括 MFCC、基频、能量等。

(4)对特征进行归一化处理,使用 z-score 标准化。

(5)将特征组织成模型输入格式,形状为 (1, C, T)。

(6)将输入张量输入语音情感分类模型,得到情感预测结果。

(7)对预测结果进行后处理,包括应用 Softmax、选择最大概率类别、计算置信度等。

(8)返回识别结果,包括情感标签、置信度、概率分布等信息。

图5-13 语音情感识别完整流程

5.3 文本情感识别模块

5.3.1 模块概述

文本情感识别模块负责从学生文本中识别情感状态。文本情感识别是自然语言处理的重要应用,可以用于分析学生的回答、讨论、反馈等文本内容。

系统采用 TextCNN 模型,通过一维卷积提取文本的局部特征,实现高效的文本情感分类。

5.3.2 文本情感数据集

Ren-CECps中文情感语料库包含约1,500篇中文博客文章,标注了8种情感类别(高兴、悲伤、愤怒、恐惧、惊讶、焦虑、厌恶、期待)及情感强度,是中文多类别情感分类的重要数据集。该数据集的情感类别体系与本研究的目标情感类别较为接近。

5.3.3 文本预处理算法设计

文本预处理是文本情感识别的重要步骤,目的是将原始文本转换为模型输入所需的格式。

文本预处理包括以下步骤:

(1)文本清洗:去除文本中的特殊字符、HTML 标签、多余空格等,保留中文字符、标点符号和英文字符。

(2)分词:使用 jieba 分词工具将中文文本切分为词语序列。系统使用精确模式,尽可能准确地将文本切分为词语。

(3)去停用词:去除文本中的停用词,如"的"、"了"、"是"等。停用词对情感分析贡献较小,去除停用词可以减少噪声,提高分类效果。

(4)词向量映射:将词语映射到词向量空间。词向量将词语表示为低维连续向量,能够捕捉词语之间的语义关系。系统使用预训练的词向量模型 Word2Vec。

图5-14 文本预处理流程

5.3.4 TextCNN 模型设计

TextCNN 是一种专门用于文本分类的卷积神经网络模型,由 Yoon Kim 在 2014 年提出。TextCNN 具有结构简单、计算高效、效果好的优点,是文本情感分类的常用模型。

TextCNN 网络结构:TextCNN 模型包含以下主要组件,如图5-15所示:

图5-15 TextCNN 网络结构

模型训练过程:模型训练在中文情感分析数据集上进行,该数据集包含 50 万条标注文本,覆盖新闻、微博、评论等多个领域,标注了 11 种情感(高兴、悲伤、愤怒、困惑、平静、焦虑、积极、疑惑、正面、负面、中性)。

训练参数设置如下表5-3所示:

53 训练参数设置表

参数

配置

优化器

SGD(随机梯度下降)

初始学习率

0.01

动量

0.9

学习率调度

余弦退火策略

批次大小

128

训练轮数

30 epochs

损失函数

交叉熵损失(Cross-Entropy Loss)

训练曲线显示,TextCNN 模型收敛速度很快,在前 10 个 epoch 准确率就从 55% 提升到 75%,最终在第 25 个 epoch 达到最佳准确率 82.6%。由于 TextCNN 模型结构简单、参数较少,训练速度快,适合在大规模数据集上训练。

图5-16 TextCNN 训练损失和准确率曲线

模型评估:在测试集上评估模型的性能,得到以下结果:总体准确率:99.6%.

混淆矩阵分析:从混淆矩阵可以看出,模型对情感识别最准确,达到 99%。

图5-17 TextCNN 混淆矩阵

特征词分析:通过分析模型的卷积核权重,可以提取出与各类情感最相关的特征词。以下是各情感类别的典型特征词表5-4:

54 各情感类别的典型特征词表

情感

特征词

高兴

开心、快乐、兴奋、愉悦、笑、棒、赞、美好

悲伤

难过、痛苦、悲伤、泪水、哭泣、遗憾、失去、心碎

愤怒

愤怒、生气、恨、讨厌、不满、愤怒、抱怨、责备

困惑

疑惑、困惑、不明白、搞不懂、迷茫、不知所措

平静

平静、淡然、从容、安定、稳定、安宁

焦虑

焦虑、紧张、担心、害怕、恐慌、不安

积极

积极、向上、乐观、努力、进步、奋斗

疑惑

疑惑、怀疑、不确定、疑问、质疑

正面

好、优秀、成功、优秀、出色、优秀

负面

不好、失败、糟糕、差、劣质、糟糕

5.3.5 文本情感识别流程

文本情感识别模块的实现流程如下:

(1)接收输入文本,文本为字符串格式。

(2)对文本进行预处理,包括清洗、分词、去停用词等。

(3)将分词后的词语映射为词索引序列。如果词语不在词表中,则使用未知词标记(<UNK>)。

(4)将词索引序列填充或截断到固定长度(如 128)。

(5)将词索引序列输入嵌入层,得到词向量序列。

(6)将词向量序列输入 TextCNN 模型,得到情感预测结果。

(7)对预测结果进行后处理,包括应用 Softmax、选择最大概率类别、计算置信度等。

(8)返回识别结果,包括情感标签、置信度、概率分布等信息。

图5-18 文本情感识别完整流程

5.3.6 文本情感识别模型对比实验

为验证TextCNN模型在课堂文本情感分类任务上的性能,本研究在自建的课堂互动文本测试集(含11类情感)上,将TextCNN与多种主流文本分类模型进行了对比。参与对比的模型包括:传统机器学习方法(TF-IDF + 朴素贝叶斯、TF-IDF + SVM)、循环神经网络方法(BiLSTM + Attention)、以及预训练语言模型(BERT-base-Chinese及其轻量版)。所有深度学习模型均采用相同或相近的训练配置,对比结果如表5-5所示。

55 不同模型在课堂文本情感测试集上的识别性能对比

模型名称

参数量(M)

准确率(%)

精确率(%)

召回率(%)

F1值(%)

推理时间(ms/条)

TF-IDF + 朴素贝叶斯

68.5

67.2

68.5

67

2.5

TF-IDF + SVM

74.2

73.8

74.2

73.5

3.8

BiLSTM + Attention

5.2

78.9

78.3

78.9

78.4

25.6

BERT-base-Chinese

110

87.3

87

87.3

87.1

185.2

BERT-tiny-Chinese

4.4

79.5

78.8

79.5

79

32.8

本系统TextCNN

2.8

82.6

82.1

82.6

82.2

模型名称

参数量(M)

准确率(%)

精确率(%)

召回率(%)

F1值(%)

推理时间(ms/条)

从表5-5可以看出:

(1)传统机器学习方法中,TF-IDF + SVM取得了74.2%的准确率,明显优于朴素贝叶斯的68.5%,且推理速度极快。但面对11类的细粒度情感分类任务,手工特征的表征能力有限,准确率较深度学习方法仍有明显差距。

(2)BiLSTM + Attention模型准确率达到78.9%,相比SVM提升4.7个百分点,验证了双向语义建模和注意力机制在文本情感分析中的有效性。然而,本系统采用的TextCNN模型以更少的参数量(2.8M vs 5.2M)取得了更高的准确率(82.6% vs 78.9%),且推理速度提升约一倍,充分体现了卷积网络在短文本局部特征提取上的高效性。

(3)BERT-base-Chinese以87.3%的准确率在所有模型中表现最佳,证明了大规模预训练语言模型在情感语义理解上的强大能力。但其参数量高达110M,推理时间长达185.2ms,在课堂实时场景和资源受限环境下部署成本较高。轻量版BERT-tiny将参数量降至4.4M,但准确率也下降至79.5%,低于本系统TextCNN的82.6%。

(4)本系统TextCNN模型以2.8M的极小参数量取得了82.6%的准确率,在轻量级模型中表现最优。其推理时间仅为12.5ms/条,能够轻松应对课堂互动文本的实时识别需求。此外,TextCNN的卷积核能够自动学习课堂领域的情感特征词(如“困惑”、“不懂”等),具备较好的领域适配能力。

综上所述,TextCNN在识别精度、模型规模和推理效率三者之间实现了最优平衡,是本系统课堂文本情感识别任务的理想选择。

5.4 多模态融合模块

5.4.1 融合策略设计

多模态融合是提高情感识别准确率的关键技术。通过融合图像、语音和文本三种模态的信息,可以互补不同模态的优势,得到更加准确和鲁棒的情感识别结果。

系统采用晚期融合(Late Fusion)策略,也称为决策层融合(Decision-level Fusion)。晚期融合在决策层进行融合,即各模态独立进行情感识别,得到各自的情感标签和置信度,然后通过加权融合得到最终的识别结果。相比早期融合(在特征层融合)和中期融合(在嵌入层融合),晚期融合具有以下优势:

1. 模块化设计:各模态识别模块相互独立,可以单独开发和优化,便于维护和扩展。

2. 灵活性高:可以灵活调整各模态的权重,适应不同应用场景。例如,在语音质量较差的场景下,可以降低语音模态的权重。

3. 鲁棒性强:当某个模态的识别结果不可靠(如人脸检测失败、语音信噪比低、文本为空)时,可以降低该模态的权重,避免其对最终结果产生负面影响。

融合算法设计:

系统采用加权平均融合算法,具体实现如下:

(1)获取单模态识别结果:分别调用图像情感识别模块、语音情感识别模块和文本情感识别模块,获取各模态的情感识别结果,包括情感标签、置信度和概率分布。

设各模态的概率分布为:

图像模态:P_image = [p_image_1, p_image_2, …, p_image_N]

语音模态:P_audio = [p_audio_1, p_audio_2, …, p_audio_N]

文本模态:P_text = [p_text_1, p_text_2, …, p_text_N]

其中 N 为情感类别数(11),p_i 为第 i 个情感类别的概率。

(2)融合权重分配:

为每个模态分配融合权重,权重反映模态的可靠性和重要性。默认情况下,图像、语音、文本的权重分别为 0.4、0.3、0.3,用户可以根据实际情况调整权重。

设各模态的权重为:

图像权重:w_image

语音权重:w_audio

文本权重:w_text

满足约束:w_image + w_audio + w_text = 1

(3)动态权重调整:

系统根据各模态的置信度动态调整融合权重,提高融合的鲁棒性。具体方法如下:

计算各模态的置信度:

图像置信度:c_image = max(P_image)

语音置信度:c_audio = max(P_audio)

文本置信度:c_text = max(P_text)

调整后的权重为:

– w'_image = w_image × c_image / (w_image × c_image + w_audio × c_audio + w_text × c_text)

– w'_audio = w_audio × c_audio / (w_image × c_image + w_audio × c_audio + w_text × c_text)

– w'_text = w_text × c_text / (w_image × c_image + w_audio × c_audio + w_text × c_text)

这样,当某个模态的置信度较低时,其权重会自动降低,避免对最终结果产生负面影响。

(4)计算融合概率分布:

对每个情感类别 i,计算融合后的概率:

p_fusion_i = w'_image × p_image_i + w'_audio × p_audio_i + w'_text × p_text_i

融合概率分布为:P_fusion = [p_fusion_1, p_fusion_2, …, p_fusion_N]

(5)确定最终情感标签:

选择融合概率分布中概率最大的情感类别作为最终的情感标签:

emotion_fusion = argmax(P_fusion)

(6)计算融合置信度:

融合置信度为最大概率值:

confidence_fusion = max(P_fusion)

(7)处理模态缺失情况:

当某个模态的数据不可用时(如无人脸、无语音、无文本),系统采用以下处理策略:

如果图像模态不可用:设置 w'_image = 0,重新归一化 w'_audio 和 w'_text

如果语音模态不可用:设置 w'_audio = 0,重新归一化 w'_image 和 w'_text

如果文本模态不可用:设置 w'_text = 0,重新归一化 w'_image 和 w'_audio

如果两个模态不可用:仅使用可用模态进行识别

如果所有模态都不可用:返回"中性"情感,置信度为 0.5

(8)记录融合过程:系统记录融合过程的详细信息,包括各模态的识别结果、权重分配、融合概率分布等,便于结果分析和问题排查。

(3)加权融合:对各模态的概率分布进行加权融合,得到融合后的概率分布。

其中,P_fusion(i) 是融合后第 i 类情感的概率,w_j 是第 j 个模态的权重,P_j(i) 是第 j 个模态识别第 i 类情感的概率。

  • 情感标签确定:选择融合后概率最大的情感类别作为最终的情感标签。置信度计算为融合后最大概率值。
  • 图5-19 多模态融合算法流程

    5.4.2 多模态融合流程

    多模态融合模块的实现流程如下:

    (1)接收多模态输入数据,包括图像、语音和文本。

    (2)分别调用图像、语音、文本识别模块,获取各模态的识别结果。

    (3)获取各模态的概率分布和情感标签。

    (4)根据融合权重对概率分布进行加权融合。

    (5)选择融合后概率最大的类别作为最终情感标签。

    (6)计算融合后的置信度。

    (7)返回融合后的识别结果,包括情感标签、置信度、各单模态结果和融合权重。

    图5-20 多模态融合完整流程

    5.4.4 融合结果对比分析

    为了评估多模态融合的效果,本节对比单模态识别和多模态融合的识别准确率。测试数据集包含 1000 个多模态样本,每个样本包含图像、语音和文本三种模态的数据。

    单模态识别准确率:在测试集上,各单模态的识别准确率如下表5-5:

    55 单模态识别准确率表

    单模态

    准确率

    图像情感识别

    70.2%

    语音情感识别

    65.3%

    文本情感识别

    82.6%

    从单模态识别结果可以看出,文本情感识别的准确率最高,达到 82.6%,这是因为文本情感的表达通常较为明确,词语特征显著。图像情感识别的准确率为 70.2%,中等水平。语音情感识别的准确率最低,为 65.3%,这是因为语音情感的表达较为隐晦,容易受到噪声、口音等因素的影响。

    多模态融合识别准确率:多模态融合的识别准确率为 86.8%,相比单模态识别有显著提升。

    准确率提升分析:相比单模态识别,多模态融合的准确率提升如下表5-6:

    56 模态与多模态融合识别准确率对比表

    识别方式

    准确率

    相比多模态融合的提升

    图像情感识别

    70.20%

    -16.60%

    语音情感识别

    65.30%

    -21.50%

    文本情感识别

    82.60%

    -4.20%

    多模态融合

    86.80%

    相比图像模态:提升 16.6 个百分点(70.2% → 86.8%),相比语音模态:提升 21.5 个百分点(65.3% → 86.8%),相比文本模态:提升 4.2 个百分点(82.6% → 86.8%)

    从提升幅度可以看出,多模态融合相比图像和语音模态有大幅度的提升,相比文本模态也有明显的提升。这表明多模态融合能够有效整合各模态的信息,互补各模态的优势,得到更加准确的识别结果。

    各情感类别的识别准确率:在测试集上,各情感类别的单模态和多模态融合识别准确率如下表5-7所示:

    57 各情感类别的单模态和多模态融合识别准确率表

    情感类别

    图像准确率

    语音准确率

    文本准确率

    多模态融合准确率

    提升幅度

    高兴

    78.50%

    62.50%

    88.50%

    91.20%

    2.70%

    悲伤

    65.30%

    68.20%

    79.20%

    85.30%

    6.10%

    愤怒

    68.90%

    75.80%

    85.30%

    89.70%

    4.40%

    困惑

    62.10%

    52.10%

    75.80%

    80.50%

    4.70%

    平静

    71.20%

    60.90%

    83.60%

    87.10%

    3.50%

    焦虑

    58.30%

    58.30%

    78.90%

    83.20%

    4.30%

    积极

    72.50%

    55.80%

    87.20%

    90.50%

    3.30%

    疑惑

    60.50%

    60.90%

    76.50%

    82.10%

    5.60%

    正面

    75.80%

    55.80%

    86.80%

    89.80%

    3.00%

    负面

    68.20%

    62.50%

    84.30%

    87.90%

    3.60%

    中性

    70.50%

    60.50%

    80.10%

    86.50%

    6.40%

    从上表可以看出,多模态融合在所有情感类别上都有所提升,提升幅度在 2.7% 到 6.4% 之间。提升最大的情感类别是"中性"(+6.4%)和"悲伤"(+6.1%),这是因为这两种情感在某些单模态上的表达不够明显,多模态融合能够综合各模态的信息,提高识别准确率。提升最小的情感类别是"高兴"(+2.7%)和"积极"(+3.3%),这是因为这两种情感在文本模态上的表达已经非常明确,单模态识别的准确率已经很高,融合带来的提升相对有限。

    图5-21 单模态与多模态融合准确率对比柱状图

    模态缺失情况下的性能:为了评估多模态融合在模态缺失情况下的性能,本文测试了不同模态缺失场景下的识别准确率。测试结果如下表5-7所示:

    57 测试结果表

    模态组合

    准确率

    相比完整模态下降

    图像+语音+文本(完整)

    86.80%

    图像+语音

    78.50%

    -8.30%

    图像+文本

    83.20%

    -3.60%

    语音+文本

    81.70%

    -5.10%

    图像(单模态)

    70.20%

    -16.60%

    语音(单模态)

    65.30%

    -21.50%

    文本(单模态)

    82.60%

    -4.20%

    从测试结果可以看出,当缺失文本模态时(图像+语音),准确率下降最多,下降 8.3 个百分点,这是因为文本模态的单模态准确率最高,对融合的贡献最大。当缺失语音模态时(图像+文本),准确率下降最少,下降 3.6 个百分点,这是因为语音模态的单模态准确率最低,对融合的贡献最小。当缺失图像模态时(语音+文本),准确率下降 5.1 个百分点,介于前两者之间。

    图5-22 模态缺失情况下准确率对比

    通过对比分析可以得出以下结论:

    1. 多模态融合相比单模态识别能够显著提高情感识别准确率,准确率从 65.3% 提升到 86.8%,提升 21.5 个百分点。

    2. 多模态融合在所有情感类别上都有所提升,提升幅度在 2.7% 到 6.4% 之间。

    3. 模态缺失时,多模态融合的性能有所下降,但相比单模态识别仍有显著提升。

    图5-23 多模态融合效果对比

    5.5 模型评估指标

    在情感识别任务中,评估指标的选择直接关系到模型性能评价的客观性和全面性。本节系统介绍本研究用于评估各模态识别模型和多模态融合模型性能的主要指标。

    5.5.1 准确率

    准确率(Accuracy)是最直观的分类评估指标,定义为模型正确预测的样本数占总样本数的比例:Accuracy = (TP + TN) / (TP + TN + FP + FN)

    其中,TP(True Positive)为真正例,TN(True Negative)为真负例,FP(False Positive)为假正例,FN(False Negative)为假负例。在多分类情感识别中,准确率计算为所有预测正确的样本数除以总样本数。准确率能够反映模型的整体分类性能,但在类别分布不均衡时可能产生误导——例如当某一情感类别的样本占据绝大多数时,模型仅需全部预测为该类别即可获得较高的准确率,但实际识别能力较差。因此,本研究在评估模型性能时,将准确率与其他指标结合使用。

    5.5.2 精确率、召回率与F1值

    针对每个情感类别,精确率(Precision)、召回率(Recall)和F1值提供了更细粒度的评估视角。

    精确率衡量模型预测为某类别的样本中实际属于该类别的比例:Precision = TP / (TP + FP)

    召回率衡量某类别的真实样本中被模型正确识别出来的比例:Recall = TP / (TP + FN)

    F1值是精确率和召回率的调和平均数,综合反映模型在某一类别上的识别性能:F1 = 2 × (Precision × Recall) / (Precision + Recall)

    在多分类情感识别中,通常计算各类别的精确率、召回率和F1值,然后取宏观平均(Macro-average,各类别权重相等)或加权平均(Weighted-average,按各类别样本数加权)作为整体指标。由于情感数据集普遍存在类别不均衡问题(如“高兴”样本明显多于“恐惧”样本),加权平均F1值更能反映模型在实际应用中的综合性能。本研究在第5.1.5节、第5.2.5节和第5.3.4节的模型评估中分别报告了各单模态模型的各类别精确率、召回率和F1值。

    5.5.3 混淆矩阵

    混淆矩阵(Confusion Matrix)是评估多分类模型性能的重要可视化工具,以矩阵形式展示真实类别与预测类别之间的对应关系。矩阵的行表示真实类别,列表示预测类别,对角线元素为各类别正确分类的样本数或比例,非对角线元素为错误分类的样本数或比例。

    通过混淆矩阵,可以直观地识别模型容易混淆的情感类别对。例如,本研究在第5.1.5节的图像情感识别模型评估中发现,“困惑-平静”和“悲伤-厌恶”是最容易混淆的情感对,这是因为这两对情感在面部视觉特征上具有较高的相似度。在第5.2.5节的语音情感识别模型评估中,“焦虑-疑惑”和“积极-焦虑”是最容易混淆的情感对。混淆矩阵的分析结果为模型的针对性优化和特征工程提供了方向性指导。

    5.5.4 ROC曲线与AUC值

    对于二分类情感识别任务,ROC曲线(Receiver Operating Characteristic Curve,受试者工作特征曲线)以假正例率(FPR,False Positive Rate)为横轴、真正例率(TPR,True Positive Rate)为纵轴绘制,反映模型在不同分类阈值下的性能变化。

    AUC(Area Under Curve,曲线下面积)为ROC曲线下的面积,取值范围为[0, 1]。AUC值越大表示模型的分类性能越好,AUC = 1表示完美分类器,AUC = 0.5表示模型没有区分能力(等价于随机猜测)。在多分类任务中,可通过“一对多”(One-vs-Rest)策略计算各类别的ROC曲线和AUC值,然后取宏观平均(Macro-average)或微观平均(Micro-average)作为整体指标。本研究在文本情感识别的二分类评估(正面/负面)中使用了ROC曲线和AUC值作为补充评估指标。

    第6章 系统实现与关键技术

    6.1 开发环境搭建

    6.1.1 硬件环境

    系统开发和测试在以下硬件环境中进行,如下表6-1所示:

    61 硬件环境表

    组件

    规格/说明

    CPU

    Intel Core i7,4核8线程,主频2.8GHz

    内存

    16GB DDR4

    硬盘

    512GB SSD

    显卡

    NVIDIA GeForce RTX 3060(可选,用于GPU加速)

    摄像头

    1080P 网络摄像头

    麦克风

    内置麦克风或外接麦克风

    6.1.2 软件环境

    系统开发和测试在以下软件环境中进行,如表6-2所示:

    62 软件环境表

    软件

    版本

    说明

    操作系统

    Windows 10 或 Ubuntu 20.04

    兼容主流系统

    Python

    3.12

    开发语言

    Web框架

    Flask 3.0

    后端框架

    深度学习框架

    PyTorch 2.4.0

    模型训练与推理

    数据库

    SQLite 3

    轻量级数据库

    浏览器

    Chrome、Firefox、Safari、Edge

    前端兼容

    6.1.3 系统依赖库

    系统依赖的主要 Python 库包括如下表6-3所示:

    63 软件环境表

    依赖库

    说明

    Flask

    Web应用框架

    Flask-SQLAlchemy

    数据库ORM

    Flask-CORS

    跨域资源共享支持

    PyTorch

    深度学习框架

    TorchVision

    PyTorch视觉工具包

    NumPy

    科学计算

    OpenCV

    图像处理

    Librosa

    音频分析

    jieba

    中文分词

    Scikit-learn

    机器学习工具

    6.2 前后端交互实现

    6.2.1 API 接口设计

    系统后端提供 RESTful API 接口,供前端调用。主要接口包括:

    (1)数据上传接口(POST /api/upload):接收用户上传的数据,保存到服务器,返回数据 ID。请求参数包括文件数据和文件类型。文件数据通过 multipart/form-data 格式传输,支持图像(JPG、PNG)、音频(WAV、MP3)、文本(TXT、CSV)、视频(MP4、AVI)等格式。文件类型字段指定上传文件的类型,系统根据类型进行后续处理。响应数据包含上传状态、数据 ID、文件大小、文件路径等信息。

    (2)文件识别接口(POST /api/recognize-file):根据数据 ID,对已上传的文件进行情感识别,返回识别结果。请求参数包括数据 ID。后端根据数据 ID 查询数据库获取文件路径,根据文件类型调用相应的识别模块。如果是图像文件,调用图像情感识别模块;如果是音频文件,调用语音情感识别模块;如果是文本文件,调用文本情感识别模块;如果是视频文件,先提取关键帧,然后调用图像情感识别模块。响应数据包含情感标签、置信度、概率分布、教学建议等信息。

    (3)实时识别接口(POST /api/recognize):接收前端实时采集的数据,进行情感识别,返回识别结果。请求参数包括图像数据、语音数据、文本数据。图像数据以 Base64 编码的字符串形式传输,语音数据以 Base64 编码的 WAV 格式传输,文本数据以普通字符串形式传输。这三个参数都是可选的,系统根据提供的参数自动识别使用哪些模态进行情感识别。如果提供了多个模态的数据,系统会自动进行多模态融合。响应数据包含各单模态的识别结果和融合后的最终结果。

    (4)视频帧识别接口(POST /api/recognize-frame):接收单帧图像,进行情感识别,返回人脸框和情感结果。请求参数包括图像数据。图像数据以 Base64 编码的字符串形式传输。该接口主要用于实时视频流场景,前端从视频流中提取每一帧,调用该接口进行识别。后端首先进行人脸检测,如果检测到人脸,则返回人脸框坐标;如果未检测到人脸,则返回虚拟人脸框(图像中央区域)。响应数据包含人脸框坐标、情感标签、置信度、概率分布等信息。

    (5)报告生成接口(GET /api/report/<data_id>):根据数据 ID,生成情感分析报告,支持 JSON 和 CSV 格式导出。请求参数包括数据 ID 和格式。格式参数支持 json 和 csv 两种,默认为 json。JSON 格式报告包含识别结果、各模态结果、融合权重、教学建议等详细信息,便于程序处理;CSV 格式报告包含识别结果摘要,便于人工查看和统计分析。

    (6)历史记录查询接口(GET /api/history):查询用户的识别历史记录。请求参数包括页码、每页数量、时间范围、情感类型等。响应数据包含识别记录列表,每条记录包含数据 ID、文件类型、情感标签、置信度、识别时间等信息。

    (7)统计接口(GET /api/statistics):查询情感识别的统计数据,包括识别次数、情感分布、准确率、响应时间等。请求参数包括时间范围、用户 ID 等。响应数据包含统计结果和图表数据,便于前端可视化展示。

    图6-1 前后端交互时序图

    6.2.2 前端页面实现

    前端采用 Bootstrap 5 框架构建响应式页面,支持 PC 端和移动端访问。主要页面包括:

    (1)首页(Home):

    首页展示系统简介、功能介绍、使用指南等信息。页面顶部为导航栏,包含系统 Logo 和导航菜单。中部为轮播图,展示系统功能特色。底部为页脚,包含联系方式和版权信息。首页设计简洁美观,给用户留下良好的第一印象。

    (2)数据上传页面(Upload):

    数据上传页面提供文件上传功能,支持拖拽上传和点击上传两种方式。页面顶部为上传区域,用户可以拖拽文件到上传区域或点击按钮选择文件。上传区域支持批量上传,同时显示上传进度条。上传完成后,页面中部显示已上传的文件列表,包括文件名、文件类型、文件大小、上传时间等信息。用户可以选择文件进行识别或删除。

    (3)实时识别页面(Real-time):

    实时识别页面提供实时视频流情感识别功能。页面左侧为视频采集区域,通过 HTML5 Video 元素显示摄像头采集的视频流。视频流上方叠加 Canvas 层,用于绘制人脸框和情感标签。页面右侧为识别结果展示区域,包括情感标签、置信度、概率分布条形图、教学建议等内容。页面底部为控制按钮,包括开始采集、停止采集、截图识别等。

    (4)报告查看页面(Report):

    报告查看页面展示情感分析报告。页面顶部为报告筛选器,用户可以选择时间范围、情感类型、数据类型等筛选条件。页面中部为报告内容,包括统计摘要、情感分布图表、识别记录列表等。统计摘要显示识别次数、准确率、平均响应时间等关键指标。情感分布图表使用 ECharts 绘制饼图和柱状图,直观展示各类情感的分布情况。识别记录列表以表格形式展示,包含数据 ID、情感标签、置信度、识别时间等字段,支持分页显示和排序。

    (5)设置页面(Settings):

    设置页面提供系统配置功能,包括融合权重设置、识别参数设置、显示设置等。融合权重设置允许用户调整图像、语音、文本模态的权重,适应不同应用场景。识别参数设置允许用户调整人脸检测参数、识别阈值、最大帧率等。显示设置允许用户选择主题颜色、字体大小、语言等。

    图6-2 前端页面实现

    赞(0)
    未经允许不得转载:171主机测评 » 基于flask面向智慧课堂的多模态情感识别与分析系统,构建覆盖图像、语音、文本三种模态的情感识别模型
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址