改进表情识别(论文复现)

191 阅读10分钟

改进表情识别(论文复现)

本文所涉及所有资源均在传知代码平台可获取

1.概述

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

1.1 数据展示及介绍

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

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

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

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

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

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

通过对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的优势

激活函数简介

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

在这里插入图片描述

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

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

在这里插入图片描述

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

GELU相对于ReLU的优势

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

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

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

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

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

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

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

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

在这里插入图片描述

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

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

4.核心代码

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.结果展示

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

文章代码资源点击附件获取