EdgeFace: 边缘设备高效人脸识别模型

论文标题:EdgeFace: Efficient Face Recognition Model for Edge Devices
论文地址:https://arxiv.org/pdf/2307.01838

彻底理解需要先看EdgeNeXt,我还没看
EdgeFace 受到了 EdgeNeXt 混合架构的启发,结合了卷积神经网络(CNN)和Transformer模型的优势,并引入了一个低秩线性层,从而在保持低计算成本和紧凑存储的同时,实现了出色的面部识别性能,使其非常适合部署在边缘设备上。

研究背景

面部识别领域近年来取得了显著进展,主要得益于深度神经网络和基于边界的损失函数(Margin-based Loss Functions)的发展。然而,当前最先进的面部识别模型通常涉及大量参数和复杂的计算,难以在资源有限的设备上部署。

为了解决这一问题,研究者们开始设计轻量化且高效的神经网络,以在保持高识别准确度的同时,降低内存需求和计算复杂度。最近,有些工作尝试利用轻量级卷积神经网络(如MobileNets、ShuffleNet等)和视觉Transformer(ViTs)的优势,进一步提升面部识别模型的效率和性能。

"基于边界的损失函数"是一种在面部识别中使用的损失函数,通过在特征空间中拉开不同类别样本之间的距离,缩小同一类别样本的距离,来增强模型的区分能力。这种方法使模型能够更准确地识别人脸,提高识别性能。

EdgeFace的实现

传统高效面部识别网络大多基于CNN,但CNN存在两个主要限制:其局部感受野难以捕捉全局上下文,并且在推理过程中权重静态,缺乏对不同输入的适应性。为了解决这些问题,引入了Transformer和CNN-Transformer混合模型,虽然计算成本较高,但它们提供了改进的全局表示能力。本文使用EdgeNeXt的CNN-Transformer混合架构,并对其进行了调整,以减少参数和FLOPs,使其更适合面部识别任务。

1. EdgeFace面部识别模型的设计

  • 将EdgeNeXt网络中的线性层替换为低秩的LoRaLin层,以减少模型的参数和浮点运算量(FLOPs)。
  • 添加了一个分类头,由自适应平均池化层、层归一化和LoRaLin层组成,最终输出一个512维的特征表示。
  • 输入分辨率调整为112×112。
  • 采用端到端训练,并结合CosFace分类头来优化模型。

在这里插入图片描述

2. EdgeNeXt 结构

EdgeNeXt架构是一种轻量级的混合设计,结合了Transformer和卷积神经网络(CNN)的优势,专为低功耗边缘设备优化。与MobileViT和EdgeFormer等模型相比,EdgeNeXt在参数数量、模型大小和乘加运算量(MAdds)方面更小,但在图像识别性能上表现更优。
EdgeNeXt架构中一个关键组件——分组深度可分解转置注意力(STDA)编码器通过结合卷积和自注意力机制,解决了传统Transformer自注意力计算量大、延迟高的问题。STDA(分组深度可分解转置注意力)编码器通过以下几个关键步骤来实现其功能:

(1) 输入分组:

输入数据分组:首先,将输入的张量(通常是特征图)按通道维度分成多个小组。例如,如果输入特征图有128个通道,可以将其分成4个小组,每个小组包含32个通道。
这种分组使得每个小组都可以被独立处理,从而增加了模型的灵活性和并行处理能力。

(2) 深度卷积(Depth-wise Convolution):

  • 标准卷积:
    在标准卷积中,卷积核不仅会在空间维度(如图像的宽度和高度)上滑动,还会在通道维度上操作。
    举个例子,假设你有一个大小为32×32×3的彩色图像输入(3个通道代表RGB颜色),并且你使用3×3的卷积核。如果你使用32个3×3的卷积核,输出将是32个通道的特征图。每个卷积核与输入的所有3个通道进行计算,输出1个特征图。
    计算复杂度较高,因为每个输出特征图都结合了所有输入通道的信息。
  • 深度卷积:
    深度卷积的不同之处在于,它只对每个通道单独进行卷积操作,而不跨通道进行操作。
    有一个大小为32×32×3的彩色图像输入(3个通道代表RGB颜色),如果你使用深度卷积,每个3×3的卷积核只作用于输入的一个通道。因此,对于3个输入通道,你只需要3个卷积核,每个核产生一个特征图。
    输出的特征图仍然是3个通道,但每个通道仅包含来自输入对应通道的信息。
    计算量大大减少,因为你没有进行跨通道的计算。

(3) 转置自注意力机制:

  • 传统自注意力机制的计算方式(空间维度)
    在视觉Transformer(ViT)中,自注意力机制的计算是在空间维度上进行的。这意味着它会计算图像中每个像素与其他所有像素之间的关系。这种关系的计算有助于模型捕捉图像中长距离的依赖性和全局信息。举例说明:
    输入图像:假设我们有一张32×32像素的灰度图像,意味着它只有一个通道(即单色)。
    像素点:这张图像有32×32=1024个像素点。
    在传统的自注意力机制中,模型会计算每个像素与其他1023个像素之间的关系。因为每个像素与其他所有像素都要计算相关性,这就需要执行1024 × 1024 = 1,048,576次计算(也就是一百万次)。这种计算量会随着图像尺寸的增大而迅速增加,变得非常庞大。

  • STDA的计算方式(通道维度)
    在STDA编码器中,自注意力机制不是在空间维度上(即像素之间)进行,而是在通道维度上进行。这里,通道指的是图像的不同特征,例如颜色通道或在特征提取过程中生成的特征图。举例说明:
    输入特征图:假设经过某个卷积层的处理后,我们得到一个32×32×128的特征图,这意味着它有128个通道,每个通道都是32×32的空间维度。
    通道:这里的128个通道可以被看作128种不同的特征表示。
    在STDA中,自注意力机制的计算是在这些通道之间进行的。模型会计算每个通道与其他127个通道之间的关系,而不是在每个像素之间进行计算。因为通道的数量通常比像素的数量要少得多,计算复杂度也就大大降低了。举例来说,128个通道的自注意力计算只需要128 × 128 = 16,384次计算,相比之前一百万次的计算量,减少了很多。

(4) 自适应卷积核大小:

  • 卷积核大小调整:在模型的不同阶段,使用不同大小的卷积核。例如,在早期层使用较小的卷积核,以捕捉细节信息;在后期层使用较大的卷积核,以捕捉更广泛的全局信息。
  • 多尺度特征提取:这种方法使模型能够同时提取多尺度的特征,兼顾细节和全局信息。

(5) 输出整合:

整合特征:最终,将各个通道组的特征重新组合起来,形成整体的特征表示。这个过程类似于在全局和局部信息之间进行整合,确保模型能捕捉到完整的信息。

3. Low Rank Linear Module (LoRaLin)

传统的线性层使用一个权重矩阵将输入映射到输出,这个矩阵的大小决定了参数的数量和计算复杂度。LoRaLin通过将这个权重矩阵分解为两个低秩矩阵,从而减少参数数量和乘加运算量。
传统线性层:假设一个线性层的输入大小为 M M M,输出大小为 N N N,那么权重矩阵 W W W 的大小为 M × N M \times N M×N。计算公式为:
Y = W × X + b Y = W \times X + b Y=W×X+b

低秩分解:将权重矩阵 W W W 分解为两个较小的矩阵 W M × r W_{M \times r} WM×r W r × N W_{r \times N} Wr×N,其中 r r r 是一个低秩参数。这样计算公式变为:
Y = W r × N × ( W M × r × X ) + b Y = W_{r \times N} \times (W_{M \times r} \times X) + b Y=Wr×N×(WM×r×X)+b

通过这种分解,原本的一个线性层被实现为两个具有较少参数的线性层,从而减少了计算量和存储需求。

超参数控制:
LoRaLin模块的秩由一个称为Rank-ratio ( γ \gamma γ) 的超参数控制。这个 γ \gamma γ 值决定了分解后的矩阵秩的大小,进而影响模型的参数数量和计算需求。通过调整 γ \gamma γ 值,可以在模型的计算复杂度和性能之间找到一个平衡点。

实例说明:
假设有一个网络 “edgenext-extra-small (XS)” 使用LoRaLin模块,如果 γ ≤ 0.8 \gamma \leq 0.8 γ0.8,那么该模型的参数数量和计算效率相较于原始模型都有明显改善。这意味着在保证模型性能的前提下,LoRaLin成功地减少了模型的资源消耗。

总结:
LoRaLin通过将线性层的权重矩阵进行低秩分解,有效减少了参数数量和计算量。这种方法特别适用于需要在有限资源(如边缘设备)上运行的模型,同时保持较高的性能。

实验结果

在CA-LFW、CP-LFW、IJB-B和IJB-C数据集上,EdgeFace-S( γ = 0.5 \gamma = 0.5 γ=0.5)、EdgeFace-XS( γ = 0.6 \gamma = 0.6 γ=0.6)模型在识别准确率上优于同类的SOTA轻量级模型

结论

EdgeFace为边缘设备提供了一个高效且高度准确的人脸识别模型。未来研究可以通过知识蒸馏策略进一步提升模型性能,同时探索不同的量化方法,以改进存储和推理效率。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值