深度学习 | SENet

点击上方“算法与数据之美”,选择“置顶公众号”

更多精彩等你来!

今天给大家分享的是2017年ImageNet的冠军模型 SENet 。WMW团队以极大的优势获得了最后一届ImageNet 2017竞赛图像分类任务的冠军。虽然不是业界的最新成果,但一些经典模型的学习也是大有裨益的。

 

 

在SENet 之前,已经有不少工作是在空间维度上来提升网络的性能。比较具有代表性的是2015年NIPS 上的文章 Spatial Transformer Networks(STN),这篇文章通过(Attention Mechanism)注意力机制,把原始图片中的空间信息变换到另一个空间中并保留了关键信息。而SENet 的工作则是显式地建模特征通道之间相互依赖的关系,从而提升网络性能。

 

上面的图就是整个网络的核心模块。输入X在通过一系列卷积变换后得到了特征通道数为C的特征。首先是Squeeze操作,也就是S 步,顺着空间的维度进行特征的压缩,把二维特征(H * W)变成一个实数,采用了全局平均池化的操作,让这个实数在某种意义上有着全局感受野。

 

然后是Excitation 操作,也就是E步,是这个模块的核心步骤,通过参数W来为每个特征通道生成权重,其中参数W被学习用来显式地建模特征通道间的相关性。有些通道的特征比较重要,就生成较大的权重,反之则生成相应较小的权重。这可以看作是一种通道上的注意力机制。

 

最后是Scale操作,将已经通过之前S步和E步生成的通道权重通过乘法逐通道加权到原来的特征上,完成在通道维度上的原始特征重标定。

 

该模型的突出特点是可以很容易地嵌入到主流的神经网络结构之中,例如ResNet和Inception系列。

这是文中给出的一个嵌入Inception结构的一个例子。由(H*W*C)全局平均池化得到(1*1*C),即S步;接着利用两个全连接层和相应的激活函数建模通道之间的相关性,即E步。E步中包含参数r的目的是为了减少全连接层的参数。输出特征通道的权重通过乘法逐通道加权到原来的特征上,得到(H*W*C)的数据,与输入形状完全相同。下图是嵌入ResNet的示意图,操作过程大致相同。

想要掌握一种模型最好的方法就是把模型用代码实现出来,下面是SE模块的TensorFlow 实现。input_x 表示输入的张量,reduction_axis 表示池化的维度,out_dim 表示输出的通道数目,ratio 表示缩小比例。张量的形状为[number,channel,h,w]。

def SE(input_x,reduction_axis,out_dim,ratio):
    
    squeeze=tf.reduce_mean(input_x,reduction_axis,keep_dims=True)
    excitation=layers.fully_connected(layers.flatten(squeeze),num_outputs=int(out_dim/ratio),
                    activation_fn=None, normalizer_fn=None,
                    weights_initializer=tf.random_normal_initializer(mean=0., stddev=0.01), 
                    biases_initializer=tf.constant_initializer(0.))
    excitation=tf.nn.relu(excitation)
    excitation=layers.fully_connected(layers.flatten(excitation),num_outputs=out_dim,
                    activation_fn=None, normalizer_fn=None,
                    weights_initializer=tf.random_normal_initializer(mean=0., stddev=0.01), 
                    biases_initializer=tf.constant_initializer(0.))
    excitation=tf.nn.sigmoid(excitation)
    excitation=tf.reshape(excitation, [-1,out_dim,1,1])
    scale=input_x*excitation


    return scale


往期精彩

数据可视化 | 2019中国最好学科排名

自动化篇 | 模糊匹配助力自动答题

自动化篇 | Selenium刷网课

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值