目录
在看本文之前,需要对filter,即卷积核的channel(通道)有所理解:推荐去看B站的视频。以下是我的简要总结:
推荐视频:看11和12
推荐视频,比较短,有趣好理解
卷积核/滤波器/filter的通道数(channel)与输入图像的channel数相等;
卷积核/滤波器/filter的个数是输出图像的channel数。
如果输入图像只有1个卷积核对其过滤,那得到的输出就是单通道的;
如果输入图像有多个卷积核对其过滤,那得到的输出就是多通道;
1×1的卷积核可以对输入数据的通道做约简,也可以对输入数据的通道做增加,原理来自于上面的两个如果。
摘要理解
(大家都爆改解码器,本文改编码器CNN)
视觉注意力已经成功应用于视觉描述和问题回答等结构预测任务中。现有的空间注意力主要是空间的,即注意力被建模成空间概率,输入图像输入CNN进行编码后,对其最后一个conv-layer map进行重新加权(re-weight)。不过,本文作者们认为这种空间注意力机制不一定符合注意力机制。注意力机制是一种通过结合随时间推移的上下文固定视线的动态特征提取器,因为CNN特征是空间的、通道的、多层的。
在本文中,作者们介绍了一种新颖的卷积神经网络,称为SCA-CNN,**它在CNN中结合了空间和通道方向的关注。**在图像描述任务中,SCA-CNN在多层特征图中动态调整句子生成上下文,编码visual attention(视觉注意力)的位置(即多层的注意力空间位置)和内容(即注意力通道)。
本文在Flick8r、Flickr30k、MSCOCO这三个数据集上评估了SCA-CNN架构,一致观察到SCA-CNN明显优于最先进的基于视觉注意力的图像描述方法。(上一次的读的knowing when to look改的是LSTM,扩展了自适应注意力机制,最后得到的效果比这个好,本文没有拉出来对比,毕竟改的位置不同。所以如果能强强结合是最好的)
介绍(Introduction)
注意力不是将图像编码为静态向量,而是允许图像特征从手头的句子上下文演变而来,从而为杂乱的图像提供更丰富、更长的描述。这样,视觉注意可以被视为一种动态特征提取机制,其结合了随着时间推移的上下文注视。
最先进的图像特征通常是通过深度卷积神经网络(CNNs)提取的。从输入尺寸为W×H×3的彩色图像开始,由C通道的卷积核扫描输入图像并输出
W
′
W'
W′×
H
′
H'
H′×C的feature map(它这儿我咋不理解呢,如果是C个3通道的卷积核我还能理解),该feature map(特征图)将作为下一个卷积层的输入。(这段说的是卷积神经网络CNN的网络结构)。3D的feature map的每个2D切片(这里为啥说是2D切片呢,因为一个卷积核对图像过滤过去,得到的就是一个单通道的feature map图)都对filter channel引发的空间视觉响应进行编码,其中卷积核充当模式检测器——较低层的过滤器检测边缘和角落等低级视觉线索,而较高层的过滤器检测part、object等高级语义线索。通过堆叠各层,CNN通过视觉抽象层次结构提取图像特征(啥玩意是个hierarchy of visual abstractions,看下以下总结的本文内容就可以感受到这个意思了).因此,CNN图像特征本质上是空间的、通道的、多层的(spatial、channel、multilayer)。然而,大多数现有的基于注意力的模型仅考虑空间特征(这里它说的代表是show,attend and tell),即这些注意力模型仅通过空间注意力权重将句子上下文调制到最后一个卷积层特征图中(这里我有点记不清了,但是show,attend and tell应该是从低层的卷积层中提取特征的,但是最后他的上下文就是注释向量与权重乘积的总和)。
在本文中,作者们充分利用CNN特征的三个特点(就是上面说的空间的、通道的、多层的)进行基于visual attention的图像描述。
本文的内容
提出了一种新颖的基于空间和通道注意力的卷积神经网络,被称为SCA-CNN。它学习关注多层3D特征图中的每个特征条目。图1说明了在多层特征图中引入通道注意力的动机。
- 首先,由于channel-wise feature maps本质上是相应滤波器的检测器响应图,**因此通道注意力(channel-wise attention)可以被视为根据句子上下文的需求选择语义属性的过程。**例如:当要预测cake时,通道注意力(比如在conv5_3/conv5_4特征图中)将根据cake、fire、light, and candle-like shapes(蜡烛版的形状)等语义在过滤器生成的通道特征图上分配更多权重(因为蛋糕上有蜡烛,蜡烛点燃有火光,所以是这几个语义)。看上面的图一,发现conv5_4的channel44、89、178就是火、光、蜡烛般的形状生成的特征图,所以在这几个特征图上分配更多的权重。conv5_3的101、191、326太隐晦,看不出来。
- 其次,由于特征图依赖于其下层特征图,因此很自然地在多个层应用注意力,从而获得多个语义抽象的视觉注意力。例如:强调较低层通道的圆柱体(cake的shape)、阵列(蜡烛的排放),即给这些语义生成的通道特征图更大权重,这对预测cake有益。在这儿就知道conv5_3的channel 101、191、326是啥意义了,conv5_3是conv5_4的前层,而前层的feature map含有较低级的semantic attribute。
本文在Flickr8k、Flickr30k、MS COCO上进行验证。SCA-CNN在BLUE4中可以明显超越空间注意力模型(这里指的是show,attend and tell)。总之,作者们提出了一个统一的SCA-CNN框架,以有效地将spatial、channel-wise、 multi-layer visual attention集成到CNN特征中以进行图像描述。此模型是通用的,可以应用到CNN中的任何层,比如流行的VFF和ResNet。SCA-CNN可以帮助我们更好地理解CNN特征在句子生成过程中如何演变。
空间和通道注意力(spatial and channel-wise attention CNN)
概述
本文仍采用流行的编码器-解码器框架来生成图像描述,其中CNN首先将输入的图像编码为向量,然后LSTM将向量解码为单词序列。如以下图2所示:
- SCA-CNN通过多层空间注意力和通道注意力,使原始CNN多层特征图适应句子上下文;比如上图中要生成下一个单词snow,根据上下文的需求,它会在类似snow的语义在过滤器生成的通道特征图上分配更多权重
- 正式地,假设我们想要生成图像描述的第t个单词。在手头,我们在LSTM记忆单元
h
t
−
1
h_{t-1}
ht−1∈
R
d
R^d
Rd中编码了最后一个句子的上下文,其中d是隐藏状态维度。在第l层,空间和通道注意力权重
γ
l
γ^l
γl是
h
t
−
1
h_{t-1}
ht−1和当前CNN特征
V
l
V^l
Vl的函数。因此,SCA-CNN使用注意力权重
γ
l
γ^l
γl以循环和多层方式调制
V
l
V^l
Vl,如下所示:
V l V^l Vl | 前一个卷积层输出的特征图/当前CNN特征 |
---|---|
γ l γ^l γl | 空间和通道注意力权重 |
h t − 1 h_{t-1} ht−1 | 编码了最后一个句子的上下文 |
Φ | 空间和通道注意力函数 |
X l X^l Xl | 调制特征 |
f() | 调制CNN特征和空间注意力权重的线性加权函数,其应用逐元素乘法(逐元素相乘指的是相同位置相乘,比如于两个向量 a = [1, 2, 3] 和 b = [4, 5, 6],它们的逐元素相乘结果为 [14, 25, 3*6] = [4, 10, 18]。),而不是用视觉特征累加求和的方式来调制CNN(show,attend and tell) |
通过以下方式生成第t个word:
在这里顺带总结一下前面读的这几篇文章对
h
t
h^t
ht计算方式的不同:
show,attend and tell | h t h^t ht= o t o_t ot⊙tahn( c t c^t ct),其中 h t h_t ht指的是隐藏状态,⊙指的是逐元素相乘, c t c_t ct指的是LSTM的记忆, o t o_t ot指的是LSTM的输出 |
---|---|
knowing when to look | h t h_t ht=LSTM( x t x_t xt, h t − 1 h_{t-1} ht−1, m t − 1 m_{t-1} mt−1),其中 h t h_t ht指的是LSTM在时间t的隐藏状态, x t x_t xt是输入向量, h t − 1 h_{t-1} ht−1是LSTM在时间t-1时的隐藏向量, m t − 1 m_{t-1} mt−1是LSTM在t-1时的记忆单元向量 |
SCA-CNN | h t h_t ht=LSTM( h t − 1 h_{t-1} ht−1, X L X^L XL, y t − 1 y_{t-1} yt−1),其中L是卷积层的总数, X L X^L XL是调制特征, y t − 1 y_{t-1} yt−1是上一个生成的单词 |
继续解释上面的公式(2):
p t p_t pt∈ R ∣ D ∣ R^{|D|} R∣D∣ | 概率向量 |
---|---|
D | 包含所有caption words的预定义词典 |
softmax | 将一组未归一化的输出值转换为一组概率值,使得每个输出值都在0到1之间,并且所有输出值的总和为1,softmax函数常用在输出层。 |
由于注意力
γ
l
γ^l
γl与
V
l
V^l
Vl或
X
l
X^l
Xl维度一样,即
W
l
W^l
Wl×
H
l
H^l
Hl×
C
l
C^l
Cl,因此注意力计算的空间复杂度达:O(
W
l
W^l
Wl
H
l
H^l
Hl
C
l
C^l
Clk),这里的k指的是卷积神经网络特征
V
l
V^l
Vl和隐藏状态
h
t
−
1
h_{t-1}
ht−1的公共映射空间维度。这个维度k在文章后面被设置为512。当特征图的尺寸很大时会占用巨大GPU,因此本文提出一种近似,分别学习空间注意力权重
α
l
α^l
αl和通道注意力
β
l
β^l
βl:
其中 Φ s Φ_s Φs是空间注意力模型, Φ c Φ_c Φc表示通道注意力模型,分别计算后,空间注意力复杂度为O( W l W^l Wl H l H^l Hlk),通道注意力复杂度为O( C l C^l Clk)。
Spatial attention
一般来说,一个描述词仅与图像的部分区域有关。例如,在图1中,当我们要预测cake时,只有包含cake的图像区域才有用。因此,应用全局图像特征向量来生成描述可能会由于不相关区域而导致次优结果。空间注意力不应该对每个图像区域都平等地考虑,而是应尝试更多地关注语义相关区域。
在不失一般性的前提下,本文舍弃了对层的上标l的考虑,并对原始图像特征V的高度和宽度进行flatten(展平)操作,重塑得到新的向量V=[
v
1
v_1
v1,
v
2
v_2
v2,…,
v
m
v_m
vm],其中
v
i
v_i
vi∈
R
C
R^C
RC,说明
v
v
v是一个C维的实数向量。m=W·H,即m是原始图像特征的宽度和高度的乘积。本文将
v
i
v_i
vi视作第i个位置的视觉特征。给定LSTM的上一个隐藏层
h
t
−
1
h_{t-1}
ht−1,我们使用单层神经网络,然后使用softmax函数来生成图像区域上的注意力分布α,则空间层面的注意力模型
Φ
s
Φ_s
Φs可以写为:
其中
W
s
W_s
Ws∈
R
k
×
C
R^{k×C}
Rk×C,
W
h
s
W_{hs}
Whs∈
R
k
×
d
R^{k×d}
Rk×d,
W
o
W_o
Wo∈
R
k
R^k
Rk均为变换矩阵,将图像视觉特征和隐藏状态映射到相同维度;
⊕是矩阵和向量之间的加法,通过将矩阵与向量的每一列与向量相加来实现的;
b
s
b_s
bs∈
R
k
R^k
Rk,
b
l
b_l
bl∈
R
l
R^l
Rl为模型的偏置。
Channel-wise attention
需要注意的是,公式(3)中的空间注意函数仍然需要视觉特征V来计算空间注意力权重,但是空间注意力中使用的视觉特征V实际上不是基于注意力的。因此,引入通道注意力机制来关注特征 V。
值得注意的是,每个CNN滤波器都充当模式检测器,并且CNN中特征图的每个通道都是相应卷积滤波器的响应激活。因此,以通道方式应用注意力机制可以被视为是一个选择语义属性的过程。
首先将V重塑为U=[
u
1
u_1
u1,
u
2
u_2
u2,…,
u
C
u_C
uC],
u
i
u_i
ui∈
R
W
×
H
R^{W×H}
RW×H,
u
i
u_i
ui表示V中第i个通道的特征,C为通道总数,然后对每个通道进行平均池化以获得通道特征v:
其中标量
v
i
v_i
vi是向量
u
i
u_i
ui的平均值,根据空间注意力的定义,
Φ
c
Φ_c
Φc的定义可写为:
其中符号的意思和空间注意力那儿差不多,也是变换矩阵,偏置。但是⊗代表两个向量的外积。对内积、外积的解释看一下博客:
内积和外积
根据空间注意力和通道注意力的不同实现顺序,SCA-CNN可以被细分为C-S和S-C类型。值得注意的是,此时后一步运算用到的特征样图已不再是原始的特征样图,而是经前一步得到的注意力加权得到的样图。
Channel-Sptaial
C-S类型的流程图如下图2所示:
- 首先,给定初始特征图V,采用通道注意力 Φ c Φ_c Φc来获得通道注意力权重β。
- 通过β与V的线性组合,得到了按通道加权的特征映射
- 将通道加权特征图发馈给空间注意力模型 Φ s Φ_s Φs,得到空间注意力α
- 获得两个注意力权重α和β后,将V,β,α丢到调制函数f以计算调制特征图X
- 这里的 f c f_c fc是特征图通道和相应通道权重的通道惩乘法。
Spatial-Channel
f
s
f_s
fs(.)是每个特征图通道的区域及其相应区域注意力权重的逐元素乘法。
实验
通过以下三个问题验证SCA-CNN模型:
- Q1:通道注意力是否有效?它能提高空间注意力吗?
- Q2:多层注意力是否有效?
- Q3:与其他先进的视觉注意力模型相比,SCA-CNN表现如何?
Dataset and Metric(数据集和衡量标准)
数据集概况 | Flickr8k | Flickr30k | MSCOCO | MSCOCO’ |
---|---|---|---|---|
图片总数 | 8000 | 31000 | ||
Traing set | 6000 | 29000 | 82783 | 82783 |
Validation set | 1000 | 1000 | 40504 | 5000 |
Test set | 1000 | 1000 | 40775 | 5000 |
由于官方数据集MSCOCO的ground truth不可用,因此其验证集进一步分为用于模型选择的验证子集和用于本地实验的测试子集,这种划分是根据李飞飞等学者在2015年的那篇文章的。
对于句子的预处理,遵循Neuraltalk。
评估指标:
- BLUE(B@1,B@2,B@3,B@4)
- METEOR(MT)
- CLDEr
- ROUGE-L(RG)
这四个指标衡量的是生成句子的n-gram出现率与ground-truth句子中的n-gram出现率之间的一致性,这种一致性根据n-gram的显著性和稀有性进行加权。同时,所有四个指标可以通过MSCOCO标题评估工具直接计算。
n-gram出现率与ground-truth句子中的n-gram出现率之间的一致性。解释如下,Chatgpt解释的很通俗易懂。
Setup(实验设置)
- 本文的SCA-CNN模型在Encoder部分使用VGG-19和ResNet-152作为基本的CNN。
- Decoder部分采用LSTM。词嵌入维度和LSTM隐藏状态维度分别设置为100和1000.
- 对于两种类型的注意力。计算注意力权重的公共空间维度都设置为512,应该就是之前提到的k。
- 对于Flickr8k数据集,mini-batch size设置为16。对于Flickr30k和MS COCO数据集,mini-batch size设置为64。
- 采用dropout和early stopping去防止过拟合。
dropput的解释可以去看这个博客
early stopping早停法:博客 - 整个框架用Adadelta进行端到端的训练,Adadelta是一种使用自适应学习率算法的随机梯度下降法。当预测到END标记或达到预定的最大句子长度则停止caption生成。
- 在测试过程中,使用BeamSearch为5。作者们注意到一个将BeamSearch与长度归一化相结合的技巧,这个技巧可以提高性能,但是为了公平比较,所有报告的结果都没有进行长度归一化。
评估Channel-wise Attention(Q1)
只要通道数量很大,我们就可以通过添加通道注意力来显着提高性能。
评估Multi-layer Attention(Q2)
1)在大多数实验中,添加更多的注意力层可以在两个模型中取得更好的结果。原因是在多层中应用注意力机制可以帮助获得多层次语义抽象的视觉注意力。
2)层数过多也容易导致严重的过拟合。例如,当添加更多注意力层时,Flickr8k 的性能比 MSCOCO 更容易下降(这个在表格数据中我觉得体现的不是特别明显),因为 Flickr8k 的训练集大小(即 6,000)比 MSCOCO 的训练集大小(即 82,783)小得多。
与先进的模型进行比较(Q3)
下表是比较结果:在大多数情况下,SCA-CNN优于其他模型。这是因为 SCA-CNN 利用了空间、通道和多层注意力,而大多数其他注意力模型仅考虑一种注意力类型。
下面表5是在MS COCO图像挑战集c5和c40进行评估,但是结果输给了ATT和Google NIC,输的原因如下:
- ATT和Google NIC都使用集成模型,而SCA-CNN是单一模型;集成模型总能获得比单个模型更好的结果。
- 采用更先进的CNN架构;由于Google NIC采用Inception-v3,它比本文采用的ResNet具有更好的分类性能。
- 就算如此:在本地实验中,在 MSCOCO 数据集上,ATT 在 BLEU4 中仅超过 SCACNN 0.6%,在 METEOR 中仅超过 SCACNN 0.1%。对于 MSCOCO 服务器结果,Google NIC 在 BLEU4 中仅超过 SCA-CNN 0.7%,在 METEOR 中仅超过 SCA-CNN 1%。
空间和通道注意力的可视化
为简单起见,我们仅在一个单词预测步骤中可视化结果。例如:在第一个示例中,当SCA-CNN模型尝试预测umbrella时,我们的通道注意力将根据散、棍子和圆形等语义在过滤器生成的特征图通道上分配更多权重。每一层的直方图表示所有通道的概率分布。直方图上方的map是空间注意力map,白色表示模型大致关注的空间区域。对于每一层,本文选择了两个具有最高通道关注率的通道。
下图中,红色区域表示对应层中各个符合语义的区域。
每个可视化的示例图中包含三个描述:第一个是我们的模型生成的描述,第二个(SAT)是硬注意力生成的描述,第三个(GT)是这个图片原本的描述。
下面的385,43,47,267指的是具有最高关注权重的通道。
结论
在本文中,我们提出了一种用于图像字幕的新型深度注意力模型,称为 SCA-CNN。 SCA-CNN 充分利用 CNN 的特性来产生关注的图像特征:空间、通道和多层,从而在流行的基准测试中实现最先进的性能。 SCA-CNN 的贡献不仅在于更强大的注意力模型,而且还可以更好地理解在句子生成过程中演变的 CNN 中注意力的位置(即空间)和内容(即通道方式)。在未来的工作中,我们打算在 SCA-CNN 中引入时间注意力,以便在视频字幕中关注不同视频帧中的特征。我们还将研究如何在不过度拟合的情况下增加注意力层的数量。