CNN模型复现14 SENet

1 SENet

Squeeze-and-Excitation (SE) 块通过显式建模其卷积特征的通道之间的相互依赖性来提高网络质量 ,它可以学习使用全局信息来选择性地强调信息特征并抑制不太有用的特征。

1.1 结构

在这里插入图片描述

  1. 输入层经过卷机提取特征x[h,w,c].
  2. 对x全局平均池化+激活得到特征x_[1,1,c],每个通道对应的图像感受野信息。
  3. 瓶颈结构:用全连接压缩x_通道数并激活,然后再使用全连接恢复通道数,并用‘sigmoid’激活,得到 特征x的每一个通道的权重x_。
  4. 特征x与权重x_相乘可以对每个特征的重要性进行调整。
    在这里插入图片描述

1.2 应用

(左)ResNet-50 [13]。 (中)SE-ResNet-50。 (右)带有 32×4d 模板的 SE-ResNeXt-50。 括号内列出了残差积木的特定参数设置的形状和操作,而在外列出了一个阶段中堆叠的积木数量。 fc后面的内括号表示SE模块中两个全连接层的输出维度。在这里插入图片描述

1.3 模型比较

实验所得:SENet增加了参数和计算量,同时也降低了错误率
在这里插入图片描述

2 SE模块代码


from keras.models import Model
from keras import layers

def se_block(x,filter,r):
    x = layers.Conv2D(filters=filter,kernel_size=3,strides=2,padding='same',activation='relu')(x)
    x_ = layers.GlobalAveragePooling2D()(x)
    x_ = layers.Dense(units=int(r*filter),activation='relu')(x_)
    x_ = layers.Dense(units=filter,activation='sigmoid')(x_)
    x = layers.Multiply()([x,x_])
    return x


if __name__ == "__main__":
    input = layers.Input(shape=[224,224,3])
    x = se_block(x=input,filter=60,r=0.5)
    model = Model(input,x)
    model.summary()


'''
__________________________________________________________________________________________________
Layer (type)                    Output Shape         Param #     Connected to                     
==================================================================================================
input_1 (InputLayer)            (None, 224, 224, 3)  0                                            
__________________________________________________________________________________________________
conv2d_1 (Conv2D)               (None, 112, 112, 60) 1680        input_1[0][0]                    
__________________________________________________________________________________________________
global_average_pooling2d_1 (Glo (None, 60)           0           conv2d_1[0][0]                   
__________________________________________________________________________________________________
dense_1 (Dense)                 (None, 30)           1830        global_average_pooling2d_1[0][0] 
__________________________________________________________________________________________________
dense_2 (Dense)                 (None, 60)           1860        dense_1[0][0]                    
__________________________________________________________________________________________________
multiply_1 (Multiply)           (None, 112, 112, 60) 0           conv2d_1[0][0]                   
                                                                 dense_2[0][0]                    
==================================================================================================
Total params: 5,370
Trainable params: 5,370
Non-trainable params: 0
__________________________________________________________________________________________________

Process finished with exit code 0
'''
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值