image caption笔记(五):《SCA-CNN》

     工作的本质仍然是对attention机制的扩展。之前的《show attend and tell》是在空间上对特征图进行加权。

     特征图不同的通道本质上是不同的滤波器提取的特征 ,那么不同的滤波器可能 提取的重点就不一样,可能 第一个滤波器提取的是cake的特征比较多,第二个滤波器提取的person的信息比较多。那么我们是不是应该在这里做一个权重?也就是channel-wise weight.在某种程度上 channel-wise attention可以看作是semantic attention,也就是关注图像中不同的对象。参考《Image Captioning with Semantic Attention》。

     之前的《show attend and tell》是直接在最后一层特征图上做attention机制,但是最后一层 每个神经元对应的感受野是非常大的,会不会几乎覆盖了全图?之间的重合度应该也会很高。所以我们应该不光只挑CNN的最后一层特征图来做attention,应该多挑几个层。

    《show attend and tell》中 的attention关注的是feature的spatial wise,作者新添加的两个想法是channel-wise and multi-layer。

     接下来介绍这几种attention怎么结合

1、multi-layer

                                                     

                 

 

     用l来表示CNN特征图的层数。对于当前层,初始图像特征图()和前一个时刻的隐藏态,经过attenntion机制,加权得到weighted feature,经过卷积得到下一层的初始图像特征图()。

 

2、spatial wise

     我们先不考虑是在哪一层进行的这个操作,去掉l标识.

     这里和后面channel-wise要注意的是,与《show attend and tell》不同的是,此前的加权是权重*特征 然后累加

                                                    

      这里用函数f来做加权的操作 不过是直接像素级的相乘。

      即:

     0.8*[1,2]+0.2*[1,2]    变成了  [0.8*1,0.2*2]

    

     首先计算spitial attention的权重,这和原本的attention有一点像,都是利用 图像特征和前一个时刻的隐藏态来求

                           

        

      即为权重

3、channel-wise

       先把C个特征图摊开,得到U

                     

      每个通道上做平均池化,得到长度为C的向量,表征了不同通道的信息。

                                      

    基于此求channel-wise的权重:           

                        

      

 具体使用的时候,有两种方法:

1、先进行channel wise attention,再进行spatial attention

                               

2、先进行spatial wise attention,再进行channel attention

                                  

 

实验结果: 

首先是channel wise attention的效果,可以看Table1。Table1是在不同数据集和不同主网络上的实验对比。在Method一列中,S表示只采用spatial attention、C表示只采用channel wise attention、S-C表示先进行spatial attention再进行channel wise attention、C-S表示先进行channel wise attention再进行spatial attention、SAT表示论文“Show, ttend and tell: Neural image caption generation with visual attention”中的模型。在S和C的具体操作中,是对最后一个卷积层的输出feature map进行相应的attention操作,然后用得到的weights对输出feature map进行加权得到新的feature map输出,新的feature map再过网络后面的层(VGG中是全连接层,ResNet中是global average pooling)。

从Table1中可以得到几个结论:1、方法S在VGG网络的表现要优于SAT,但是在ResNet网络上的表现要劣于SAT。主要原因在于在VGG网络中,加权后的feature map经过的是全连接层,全连接层不会丢失空间信息;而在ResNet网络中,加权后的feature map经过的是pooling层,会丢失空间位置信息。2、和方法S相比,方法C在ResNet上的表现要远远好于VGG网络,主要原因是前者的最后一个卷积层有更多的channel输出,这样有利于channel wise attention提升效果。3、C-S和S-C的结果比较相近,但是C-S的效果会更好一点。
 

 

                                           

 

     然后是multi-layer的效果,如下面的Table2和Table3所示。For VGG-19, 1-st layer, 2-nd layer, 3-rd layer represent conv5_4; conv5_3; conv5_2 conv-layer, respectively. As for ResNet-152, it represents res5c; res5c_branch2b; res5c_branch2a conv-layer. 从Table2和Table3可以看出总体上multi-layer的效果确实比单层的效果要好一些,但是同时层数过多的话也容易引起过拟合。
                                          

 

 

                                           

 

最后是SCA-CNN算法和其他image caption算法的实验对比,如Table4和Table5所示。其中Deep VS,m-RNN,Google NIC都是结合CNN和RNN的端到端网络;Soft-Attention和Hard-Attention是spatial attention模型;emb-gLSTM和ATT是semantic attention模型。在Table5中SCA-CNN的表现不如ATT和Google NIC,作者认为主要原因在于后二者都采用了模型融合的方式,一般而言融合的效果会优于单模型,只不过速度是劣势,可惜文中没有速度上的对比,不知道速度差异如何。
                                               

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值