前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >改进表情识别方法:基于CBAM和GELU的优化方案

改进表情识别方法:基于CBAM和GELU的优化方案

作者头像
Srlua
发布2024-11-13 08:33:28
540
发布2024-11-13 08:33:28
举报
文章被收录于专栏:CSDN社区搬运

1.概述

表情识别在计算机视觉和人机交互中具有广泛的应用前景。基于深度学习的表情识别系统可以帮助识别和分析人脸上的情绪状态,应用于智能安防、情感计算和社交机器人等领域。本文将介绍我们基于改进的MobileNetV3模型进行表情识别的工作。通过引入CBAM注意力机制和GELU激活函数,我们有效地提升了模型的性能和准确度。

1.1 数据展示及介绍

RAF-DB(Real-world Affective Faces Database)是一个广泛应用于表情识别研究的数据集。该数据集由英属哥伦比亚大学的研究人员构建,旨在为表情识别和情感计算领域提供一个高质量且具有挑战性的资源。RAF-DB数据集包含了大量的真实世界人脸图像,涵盖了各种不同的表情、年龄、性别和种族等多种多样的情况。

数据集特点
  1. 真实世界数据:RAF-DB中的图像来自互联网上的各种来源,包括社交媒体、新闻网站和在线视频。这些图像反映了现实生活中的多样性和复杂性,比实验室环境下拍摄的标准化数据更具有挑战性。
  2. 丰富的标注:每张图像都经过专业的情感分析师标注,确保标注的准确性和一致性。图像被标注为不同的情感类别,并且还附有相应的置信度评分。
  3. 多种情感类别:RAF-DB包含了7种基本表情类别,涵盖了人类情感表达的主要类型,便于研究者进行全面的表情识别研究。
数据集结构

RAF-DB数据集包含29,672张人脸图像,这些图像被分为训练集和测试集。数据集中的每张图像都被标注为7种基本表情之一。具体的表情类别及其对应的编号如下:

  1. 愤怒(Angry):表现为眉头紧皱、眼睛睁大、嘴角下拉等特征。
  2. 厌恶(Disgust):表现为皱眉、鼻子翘起、嘴唇微微闭合或张开等特征。
  3. 恐惧(Fear):表现为眉毛上扬、眼睛睁大、嘴巴张开等特征。
  4. 高兴(Happy):表现为嘴角上扬、眼睛眯起、面部放松等特征。
  5. 伤心(Sad):表现为眉头下压、眼神忧郁、嘴角下拉等特征。
  6. 惊讶(Surprise):表现为眉毛抬起、眼睛睁大、嘴巴张开等特征。
  7. 中性(Neutral):表现为面部放松,无明显情感特征。
数据集应用

RAF-DB数据集在表情识别、情感计算、人机交互等研究领域有着广泛的应用。研究人员可以利用该数据集训练和测试各种深度学习模型,以提高模型在复杂环境下的表情识别准确度。此外,RAF-DB还可以用于研究跨文化情感表达的差异、情感识别算法的鲁棒性等课题。

数据集优势
  1. 多样性:图像来自不同年龄、性别、种族和背景的人,具有高度的多样性和代表性。
  2. 真实性:图像来自真实世界的场景,反映了现实生活中的复杂情感表达。
  3. 高质量标注:专业情感分析师对图像进行了准确和一致的标注,为研究提供了可靠的数据基础。

通过对RAF-DB数据集的利用和研究,表情识别领域的研究人员可以开发出更为先进和准确的模型,从而推动情感计算和人机交互技术的发展。

2.原始网络不足之处

MobileNetV3是一种轻量级的卷积神经网络架构,以其高效的计算性能和较小的模型大小而受到广泛关注。然而,在复杂的表情识别任务中,原始的MobileNetV3仍然存在一些显著的问题。

首先,MobileNetV3设计初衷是为了在移动设备和嵌入式系统上运行,因此它在追求轻量化的同时,对特征提取的能力有所折中。在表情识别中,需要对面部的细微变化进行准确捕捉,这对特征提取的能力提出了更高的要求。MobileNetV3中的深度可分离卷积虽然减少了计算量,但在捕捉局部细节特征方面存在不足,可能会影响到模型的准确性。

其次,原始的MobileNetV3使用了ReLU(Rectified Linear Unit)激活函数。ReLU是一种常用的激活函数,具有计算简单和收敛速度快的优点。然而,ReLU在输入为负值时直接输出零,可能会导致特征信息的丢失,特别是在处理具有微小变化的表情时,这种信息丢失会对识别效果产生负面影响。此外,ReLU函数还存在“死亡ReLU”问题,即当大量神经元的输出恒为零时,网络的学习能力会受到限制。

3.改进点

为了克服原始MobileNetV3在表情识别任务中的局限性,我们对模型进行了两方面的改进:引入CBAM注意力机制和使用GELU激活函数。

3.1 CBAM注意力

首先,我们在MobileNetV3的基础上引入了CBAM(Convolutional Block Attention Module)注意力机制。CBAM通过通道注意力和空间注意力两个模块,增强了模型对重要特征的关注。通道注意力模块通过自适应地调整各个通道的权重,使得模型能够重点关注具有重要信息的通道,而忽略无关或噪声信息。空间注意力模块则通过自适应地调整各个空间位置的权重,使得模型能够重点关注具有显著特征的位置。通过引入CBAM,模型在特征提取阶段能够更有效地捕捉和利用面部的细微变化,从而提高了表情识别的准确性。其中CBAM的网络结构图如下:

其次,我们将原始网络中的ReLU激活函数替换为GELU(Gaussian Error Linear Unit)激活函数。GELU函数在保留输入信息的同时,引入了随机性,使得激活函数的输出更加平滑和连续,能够更好地保留特征信息。与ReLU相比,GELU可以更有效地处理负值输入,减少了特征信息的损失,从而提高了模型的学习能力和泛化性能。此外,GELU还具有良好的数学性质和计算稳定性,有助于提高模型的训练效率和收敛速度。 好的,以下是关于GELU激活函数相对于ReLU激活函数的优势,特别是在表情识别中的应用优势的详细说明:

3.2 GELU相对于ReLU的优势

1. 激活函数简介

ReLU(Rectified Linear Unit):ReLU是深度学习中最常用的激活函数之一,定义为

ReLU函数的主要特点是简洁且计算效率高,但它在输入为负值时直接输出零,可能导致信息丢失,并且存在“死亡ReLU”问题。

GELU(Gaussian Error Linear Unit):GELU是一种较新的激活函数,定义为

其中

是标准正态分布的累积分布函数。GELU在输入较小时的输出接近于零,而输入较大时的输出接近于输入值本身,使其具有平滑和连续的特点。

2. GELU相对于ReLU的优势

2.1 平滑性和连续性 GELU的输出是平滑和连续的,而ReLU的输出在输入为零时存在不连续性。这种平滑和连续性使得GELU在保留输入信息的同时,能够更好地捕捉特征,从而提高模型的表达能力。在表情识别中,面部表情的细微变化往往需要精细的特征捕捉,GELU的平滑性有助于提高识别的精确度。

2.2 随机性处理 GELU引入了标准正态分布的累积分布函数,使得激活函数在处理负值输入时不完全归零,而是根据概率逐渐减小。相比之下,ReLU在负值输入时直接输出零,可能导致信息丢失。在表情识别中,面部表情的变化有时是微弱且复杂的,GELU可以更好地保留这些微弱特征,提高模型的鲁棒性和泛化能力。

2.3 避免“死亡ReLU” ReLU存在“死亡ReLU”问题,即当大量神经元的输出恒为零时,网络的学习能力会受到限制。而GELU由于其平滑的输出函数,不会出现大规模神经元输出为零的情况,从而避免了“死亡ReLU”问题。在表情识别中,这意味着模型可以更稳定地学习和捕捉面部表情特征。

2.4 数学性质和计算稳定性 GELU具有良好的数学性质和计算稳定性。它的定义基于标准正态分布的累积分布函数,具有明确的数学意义和稳定的计算过程。这种稳定性有助于在训练过程中保持梯度的平滑传递,避免梯度消失或爆炸的问题。在表情识别中,这有助于提高模型的训练效率和收敛速度。

3. GELU在表情识别中的应用优势

3.1 提高识别准确度 由于GELU的平滑性和连续性,模型在处理面部表情的细微变化时表现更好。这有助于提高表情识别的准确度,特别是在处理复杂和多样化的表情数据时。

3.2 增强模型的鲁棒性 GELU能够更好地处理负值输入并保留输入信息,使得模型在面对不同表情和面部特征时具有更强的鲁棒性。这对于在实际应用中处理各种不同场景和光照条件下的表情识别尤为重要。

3.3 改善训练过程 GELU具有良好的数学性质和计算稳定性,有助于在训练过程中保持梯度的平滑传递,避免梯度消失或爆炸的问题。这使得模型训练更为高效和稳定,有助于在较短时间内达到收敛,从而提高表情识别系统的开发效率。

通过以上优势的综合作用,GELU在表情识别中的应用显著提升了模型的性能和准确性,使得识别系统能够更准确地捕捉和分析面部表情,满足实际应用中的高要求。

通过这两方面的改进,我们的改进版MobileNetV3模型在表情识别任务中取得了显著的性能提升,能够更准确地识别和分析面部表情,满足实际应用中的需求。

需要本文的详细复现过程的项目源码、数据和预训练好的模型可从该地址处获取完整版:Aspiringcode - 编程抱负 即刻实现

4.核心代码

代码语言:javascript
复制
class MobileNetV3_small(nn.Module):
    cfg = [
        (16, 3, 16, 2, True, 'RE'),
        (24, 3, 72, 2, False, 'RE'),
        (24, 3, 88, 1, False, 'RE'),
        (40, 5, 96, 2, True, 'HS'),
        (40, 5, 240, 1, True, 'HS'),
        (40, 5, 240, 1, True, 'HS'),
        (48, 5, 120, 1, True, 'HS'),
        (48, 5, 144, 1, True, 'HS'),
        (96, 5, 288, 2, True, 'HS'),
        (96, 5, 576, 1, True, 'HS'),
        (96, 5, 576, 1, True, 'HS')
    ]

5.结果展示

baseline:

加入CBAM模块后:

对比于baseline获得了0.4个点的提升。 加入CBAM+GELU函数后:

获得了1个点的提升 识别效果展示如下:

参考论文链接:

mobilenetV3:https://ieeexplore.ieee.org/document/9008835 CBAM Attention:https://link.springer.com/chapter/10.1007/978-3-030-01234-2_1 GELU:https://arxiv.org/abs/1606.08415

使用方式

在附件中即可所得代码,安装所需要的环境即可运行,运行pip install -r requrement.txt后,运行python train.py即可。数据集下载地址在附件的readme文件中。

希望对你有帮助!加油!

若您认为本文内容有益,请不吝赐予赞同并订阅,以便持续接收有价值的信息。衷心感谢您的关注和支持!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-11-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.概述
    • 1.1 数据展示及介绍
      • 数据集应用
      • 数据集优势
  • 2.原始网络不足之处
  • 3.改进点
    • 3.1 CBAM注意力
      • 3.2 GELU相对于ReLU的优势
        • 1. 激活函数简介
        • 2. GELU相对于ReLU的优势
      • 5.结果展示
      • 参考论文链接:
        • 使用方式
        相关产品与服务
        腾讯云小微
        腾讯云小微,是一套腾讯云的智能服务系统,也是一个智能服务开放平台,接入小微的硬件可以快速具备听觉和视觉感知能力,帮助智能硬件厂商实现语音人机互动和音视频服务能力。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档