胶囊网络、MobileNet、坐标注意力机制的应用
文章目录
- 摘要
- Abstract
- 1.胶囊网络
- 1.1 动态路由
- 2.坐标注意力机制
- 3.MobileNet
- 3.1 深度卷积
- 3.2 逐点卷积
- 3.3 深度可分离卷积
- 3.3.1 深度可分离卷积与标准卷积的对比
- 3.3.2 卷积操作的代码实现
- 3.3.2.1 函数原型
- 3.3.2.2 标准卷积
- 3.3.2.3 分组卷积
- 3.3.2.4 深度可分离卷积
- 3.4 MobileNetV1
- 3.5 MobileNetV2
- 4.论文总结
- 5.总结
摘要
本周学习了一篇“基于注意力机制和预训练卷积胶囊网络的EEG情感识别”模型的论文。该论文中模型以基线校正的EEG信号为输入,首先通过坐标注意力模块加强重要特征区域的关注度,再通过预训练的MobileNet提取深度特征。MobileNet利用深度可分离卷积降低计算成本,保持模型性能;而胶囊网络凭借其敏感的位置信息保持和多维度向量输出,能够有效保留数据的结构信息并提升情感识别的准确性。该方法在DEAP数据集上的被试依赖实验中表现出高精度(93.89%、95.04%、95.08%),并且由于其不依赖大规模数据集训练,有望解决EEG样本不足的问题,为脑机接口和情感计算领域提供了新的发展思路。
Abstract
This week I studied a paper on “EEG Emotion Recognition Based on Attentional Mechanisms and pre-trained Convolutional capsule Networks” model. In this paper, the model takes baseline EEG signals as input, first enhances the attention of important feature areas through coordinate attention module, and then extracts depth features through pre-trained MobileNet. MobileNet uses detachable convolution to reduce computational costs and maintain model performance. With its sensitive location information retention and multi-dimensional vector output, capsule network can effectively retain the structural information of data and improve the accuracy of emotion recognition. The proposed method shows high accuracy (93.89%, 95.04%, 95.08%) in the subject-dependent experiments on DEAP datasets, and is expected to solve the problem of insufficient EEG samples because it does not rely on large-scale dataset training, providing a new development idea for BCI and affective computing.
以下是本周的学习笔记:
1.胶囊网络
相比于Neuron网络输出的是一个值,而胶囊网络输出的是一个向量。
胶囊网络最初是为了解决cnn的不足,特别是空间位置的保留问题。卷积神经网络在平移不变性和特征提取上表像良好,但是在处理位置信息关系(旋转、缩放)和对象姿态上存在局限。胶囊可以在特征图中通过卷积操作提取空间信息,同时保留对象姿态和空间关系信息。
在卷积网络中,过滤器用于提取特征,并生成特征图。在胶囊网络中,可以直接将卷积过滤器替换为胶囊单元,使得每一个胶囊单元都具有多维输出,而不仅仅是一个标量值。
一个neuron只能判断一种具体的pattern,其向量的长度代表这个pattern是否存在。
Capsule网络的具体工作方式:
u 1 = W 1 v 1 u 2 = W 2 v 2 u^1=W^1v^1\quad u^2=W^2v^2 u1=W1v1u2=W2v2
对于Squash(s)只会改变s的长度,不会改变s的方向
v = ∥ s ∥ 2 1 + ∥ s ∥ 2 s ∥ s ∥ v=\frac{\|s\|^2}{1+\|s\|^2}\frac s{\|s\|} v=1+∥s∥2∥s∥2∥s∥s
上述c1,c2是由动态路由决定的
1.1 动态路由
从上图中,从u到s的过程中,其就是反映了整个动态路由的过程
对更新cij通过压缩后处理得到aj与所有的uj相比的特征更像,就增加对应uj的权重cij+1,下面是对于T=3的情况,其过程类似于RNN
对于动态路由更新过程公式如下:
b 1 0 = 0 , b 2 0 = 0 , b 3 0 = 0 F o r r = 1 t o T d o c 1 r , c 2 r , c 3 r = s o f t m a x ( b 1 r − 1 , b 2 r − 1 , b 3 r − 1 s r = c 1 r u 1 + c 2 r u 2 + c 3 r u 3 a r = S q u a s h ( s r ) b i r = b i r − 1 + a r ⋅ u i \begin{aligned} &b_{1}^{0}=0,b_{2}^{0}=0,b_{3}^{0}=0 \\ && For && r=1 &&to&&T&&do \\ &c_{1}^{r},c_{2}^{r},c_{3}^{r}=softmax(b_{1}^{r-1},b_{2}^{r-1},b_{3}^{r-1} \\ &s^{r}=c_{1}^{r}u^{1}+c_{2}^{r}u^{2}+c_{3}^{r}u^{3} \\ &a^{r}=Squash(s^{r}) \\ &b_{i}^{r}=b_{i}^{r-1}+a^{r}\cdot u^{i} \end{aligned} b10=0,b20=0,b30=0c1r,c2r,c3r=softmax(b1r−1,b2r−1,b3r−1sr=c1ru1+c2ru2+c3ru3ar=Squash(sr)bir=bir−1+ar⋅uiForr=1toTdo
胶囊网络的输出通常是一个高级胶囊层,通过进行分类和目标检测。在经典的CapsNet中,输出层使用了动态路由,用于确定底层胶囊和高层胶囊之间的连接强度。
使用胶囊网络识别数字1的流程,通过每一个胶囊得到的特征的长度来判断是属于哪一个数字。
capsnet在minist数据集上的应用:
-
对于第一层,输入一张28 * 28大小的minist灰度图像,只有一个通道,使用256个9 * 9的卷积核大小,s=1,得到输出特征图大小为20*20,每个位置有256个特征图。这一层主要负责提取低级特征,如边缘、线条等,为下一层胶囊网络提供基础特征信息。
-
对于第二层(主胶囊层–将256个特征图通过卷积转换成32个胶囊,每个胶囊对应8个维度),对于上一层的输出20* 20 * 256,卷积核大小为9 * 9,s=2,得到输出大小为6 * 6 * (32 * 8)=1152*8
-
第三层,DigitCaps是一个全连接的胶囊层,用于分类任务。输入为1152 * 8 输出为16 * 10;也就是将输入传递到一个包含10个数字胶囊的层中,每个胶囊表示一个数字类别(0-9),每个数字胶囊的维度为16。每个类别输出表示网络对该类别的概率估计,通常使用L2范数作为类别的置信度。最终稿选出最大的类别作为预测结果。
有一个问题就是为什么构成32*8维的胶囊,是出于以下几个考虑:
- 减少了参数数量,减低计算复杂度,同时增强网络对不同特征模式的表达能力。
- 每一个8维胶囊代表了图像中一个特定区域的复杂特征,这些胶囊可以看作低层次特征的压缩。有效的对输入特征进行空间降维,并保留与特征相关的重要信息,还为后续的DigitCaps传递了更抽象的特征信息。
- 主胶囊层能够学习到更丰富的特征表达,不同的胶囊分别表示不同特征和对象的属性,为后续的动态路由机制提供更充足的信息。
2.坐标注意力机制
为了提高精确位置信号的捕获能力以及重要特征关注度,CA模块可以将图像中的空间信息建模到通道中,是网络在仅增加很小一部分参数量与计算量的同时,提升模型对重要特征区域的关注程度。坐标注意力机制使用空间、通道两个方向的一维特征编码进行建模,一个用来保留空间方向的原始信息,一个用来丰富的位置信息。然后结合通道、空间两个维度的并联信息,增强模型对重要特征的关注程度。
3.MobileNet
3.1 深度卷积
深度卷积dw不同于寻常卷积操作,深度卷积中一个卷积只有一维的,负责一个通道,一个通道只被一个卷积核卷积;常规卷积每个卷积核的维度核输入维度相同,每个通道单独做卷积运算后相加。深度卷积完成后的输出特征图通道数于输入层的通道数相同,无法扩展通道数。对于通道数独立进行卷积运算,没有有效利用不同通道在相同位置空间的特征信息。需要逐点卷积来将生成的特征图进行组合生成新的特征图。
3.2 逐点卷积
逐点卷积pw的运算于标准卷积运算相似。逐点卷积卷积核大小为11m(m为输入数据的维度)每次卷积一个像素点的区域。逐点卷积云散将上一层的特征图的通道在方向上加权组合,生成新的特征图,新的特征图的大小与输入数据大小一致(这种卷积被用来混合通道之间的信息)
3.3 深度可分离卷积
其是由一层深度卷积与一层逐点卷积组合而成,每一层卷积之后都紧跟着批规范化(BN)和ReLu激活函数。跟标准卷积的区别就是精度基本不变的情况下,参数与计算量都明显减少
深度可分离卷积 = 深度卷积 + 逐点卷积
3.3.1 深度可分离卷积与标准卷积的对比
参数量比值:
深度可分离卷积 标准卷积 = D K × D K × M + M × N D K × D K × M × N = 1 N + 1 D K 2 \frac{\text{深度可分离卷积}}{\text{标准卷积}}=\frac{D_K\times D_K\times M+M\times N}{D_K\times D_K\times M\times N} = \frac1N + \frac1{D_K ^2} 标准卷积深度可分离卷积=DK×DK×M×NDK×DK×M+M×N=N1+DK21
计算量比值:
深度可分离卷积 标准卷积 = D K × D K × M × D F × D F + M × N × D F × D F D K × D K × M × N × D F × D F = 1 N + 1 D K 2 \frac{\text{深度可分离卷积}}{\text{标准卷积}}=\frac{D_K\times D_K\times M\times D_F\times D_F+M\times N\times D_F\times D_F}{D_K\times D_K\times M\times N\times D_F\times D_F} = \frac{1}{N} + \frac{1}{{D_K}^2} 标准卷积深度可分离卷积=DK×DK×M×N×DF×DFDK×DK×M×DF×DF+M×N×DF×DF=N1+DK21
上述N(输出通道数)一般较大,1/N可以忽略不计,Dk表示卷积核的大小,通常使用的3*3的卷积核,也就是说深度可分离卷积的参数量和计算量下降到原来的1/9.
3.3.2 卷积操作的代码实现
3.3.2.1 函数原型
torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride=1, padding=0, dilation=1, groups=1, bias=True, padding_mode='zeros', device=None, dtype=None)
参数groups用来表示卷积的分组,in_channels和out_channels都要被groups整除。当groups设置不同时,可以区分分组卷积或深度可分离卷积:
- 当groups=1时,表示标准卷积
- 当groups<in_channels时,表示普通的分组卷积。例如,当groups=2时,该分组卷积有两组并列的卷积,每组看到一半的输入通道,并产生一半的输出通道,最后将两组的结果连接起来。
- 当groups=in_channels时,表示深度可分离卷积,每一个通道都有自己的过滤器。
3.3.2.2 标准卷积
import torch.nn as nn
import torch
from torchsummary import summaryclass Conv_test(nn.Module):def __init__(self, in_ch, out_ch, kernel_size, padding, groups):super(Conv_test, self).__init__()self.conv = nn.Conv2d(in_channels=in_ch,out_channels=out_ch,kernel_size=kernel_size,stride=(1, 1),padding=padding,groups=groups,bias=False)def forward(self, input):out = self.conv(input)return out# 标准卷积,(3, 64, 64) -> (4, 64, 64)
# 参数量: in_ch * (k*k) * out_ch,则3x(3x3)x4 = 108
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
conv = Conv_test(3, 4, 3, 1, 1).to(device)
print(summary(conv, input_size=(3, 64, 64)))
3.3.2.3 分组卷积
# 分组卷积层,(4, 64, 64) -> (6, 64, 64)
# 参数量: groups * (in_ch//groups) * (k*k) * (out_ch//groups),则2x2x(3x3)x3 = 108
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
conv = Conv_test(4, 6, 3, padding=1, groups=2).to(device)
print(summary(conv, input_size=(4, 64, 64)))
3.3.2.4 深度可分离卷积
import torch.nn as nnclass myModel(nn.Module):def __init__(self):super(myModel, self).__init__()self.dwconv = nn.Sequential(nn.Conv2d(3, 3, kernel_size=3, stride=2, padding=1, groups=3, bias=False),nn.BatchNorm2d(3),nn.ReLU(inplace=True),nn.Conv2d(3, 9, kernel_size=1, stride=1, padding=0, bias=False),nn.BatchNorm2d(9),nn.ReLU(inplace=True),)
3.4 MobileNetV1
MobileNet网络拥有更小的体积,更少的计算量,更高的精度。在轻量级网络中拥有极大的优势。
其核心思想是使用深度可分离卷积来降低计算量核参数量,同时保持模型性能。
深度可分离卷积将标准卷积分解为两个部分:
- Depthwise Convolution(逐通道卷积):每个卷积核只作用于输入的一个通道,不跨通道混合。
- Pointwise Convolution(点卷积,1*1 卷积):使用1x1卷积将不同通道的信息组合,从而实现特征融合。
上面这种结构减少了大约8-9倍的计算量,使得MobileNet在保持精度的同时大幅度降低了模型的计算成本。
这段重复5次的深度可分离卷积操作主要作用于中间层,其设计的目的可以有如下:
- 提取更丰富的特征:随着网络层数的增加,模型能够逐步提取到更加抽象、复杂的特征。重复的深度可分离卷积层能够不断捕获空间信息核通道信息,以便对输入数据进行多层次的特征提取。
- 减少计算开销:深度可分离卷积相比传统卷积计算量更低,即使重复5次,计算开销依然比使用标准卷积要小。在这保持较高特征能力提取的前提下,极大地降低了计算成本。
- 提高模型深度与表达能力:通过层层堆叠深度可分离卷积,模型在空间维度上进一步压缩,同时在通道维度上逐步增加,增加了网络的深度,提升了模型的非线性表达能力。
上面每一个卷积层(包含常规卷积、深度卷积、逐点卷积)之后都紧跟着批规范化BN和ReLu激活函数。最后一层全连接层不使用激活函数。-----这种组合的作用主要为了加速模型训练、增强模型的稳定性以及提升模型的非线性表达能力。
下面是在基于注意力机制和预训练卷积胶囊网络的EEG情感识别模型中MobileNet在特征提取的框架图。
特性 | 作用 |
---|---|
深度可分离卷积 | 替代常规卷积操作,减少参数量,减少计算量 |
宽度因子α | 灵活调整每一层的卷积通道数,从而控制模型的计算量和参数规模 |
分辨率因子β | 控制输入图像和特征图的分辨率,从而影响模型的空间尺寸 |
批规范化BN | 加快训练收敛速度,提升准确率 |
3.5 MobileNetV2
相比于V1主要引入线性瓶颈结构和反向残差结构。MobileNetV2网络模型中共有17个Bottleneck层(每个Bottleneck包含两个逐点卷积层和一个深度卷积层),线性瓶颈和反向残差结构优化了网络,使得网络层次更深了,但是模型体积更小,速度更快。
-
反向残差网络
在传统的残差模块中,输入通常先被压缩到较低维度,再通过卷积得到特征。MobileNetV2中的残差模块则先扩展到高维度(通过1*1的卷积),然后通过深度可分离卷积进行计算,最后再压缩到低维度。当输入和输出的维度一致时(s=1),采用残差连接,即将输入加到输出上,这样既有助于梯度传播,也能减少信息丢失。 -
线性瓶颈
传统的网络结构通常在激活函数加一个非线性变换。但在MobileNetV2,在低维空间上去掉最后的飞线性变换,能有效避免特征失真,同时在压缩特征的同时保留特征信息,提高模型表达能力。
4.论文总结
在"EEG emotion recognition based on the attention mechanism and
pre-trained convolution capsule network"中,提出了一种基于注意力机制和预训练卷积胶囊网络的EEG情感识别模型,该模型显著提高了基于EEG的情感识别准确率。该模型以基线校正的EEG信号作为输入,加入坐标注意力模块,并通过预训练的MobileNet提取深度特征。最后,使用双层胶囊网络进行情感识别。胶囊网络对位置信息敏感,能够保持更多的数据结构信息和细节信息,有助于提高情感识别的精度。所提出的模型不需要大量数据进行训练,从而解决了网络训练成本高和EEG样本不足之间的矛盾,为脑机接口的发展提供了新思路。在DEAP数据集上进行了大量实验。在依赖被试的实验中,准确率分别达到了93.89%、95.04%和95.08%
5.总结
该论文提出了一种结合注意力机制与预训练卷积胶囊网络的EEG情感识别方法,通过一系列特征提取和优化策略显著提升了EEG情感识别的准确性。该方法首先通过坐标注意力模块嵌入空间位置信息,提升模型对重要特征的关注度。接着,利用预训练的MobileNet进行深度特征提取,以深度可分离卷积替代标准卷积,显著减少参数量和计算量。最后,双层胶囊网络利用其对位置信息的敏感性,通过动态路由机制保留更多数据结构信息,实现了高效的情感识别。实验结果显示,在DEAP数据集上,该模型在被试依赖实验中达到了93%以上的准确率。该模型的优势在于其对大规模数据集的依赖较小,训练效率较高,这有效地缓解了EEG数据采集难度大、样本不足的问题,为未来人机交互技术的发展奠定了基础。
下面是这篇论文不足之处:
1.跨被试性能有待提高:跨个体识别效果仍有限,个体差异影响模型泛化性。
2.模型复杂度较高:使用预训练网络和胶囊网络增加了计算开销,影响实际应用。
3.数据集单一:仅在DEAP数据集上测试,数据多样性不足,限制了普适性。
4.缺乏特征可解释性分析:未深入分析EEG特征与情感的关联,欠缺可解释性。