CNN模型复现6 SqueezeNet

本文详细介绍了SqueezeNet网络结构,包括Conv+MaxPool、Fireblocks和Conv+AvgPool,并提供了Keras实现的代码示例。SqueezeNet通过高效的Fireblock设计实现了轻量级模型,适合资源受限的设备。代码展示了如何构建网络,包括输入、Fireblock模块、模型主体及最后的全局平均池化和softmax层。
摘要由CSDN通过智能技术生成

CNN模型复现6 SqeezeNet

6.SqueezeNet

SqueezeNet:arXiv:1602.07360v4 [cs.CV] 4 Nov 2016 ;
论文下载link

6.1 网络结构

(1) 网络结构

  1. Conv + MaxPool
  2. Fire blocks + MaxPool
  3. Conv + AvgPool

(2) Fire blocks
在这里插入图片描述


 Conv 1x1
    ↓
Conv 1x1 + Conv 3x3
    ↓
 concatenate  
  

(3) Model diagram
在这里插入图片描述

Conv
MaxPool
    ↓
Fire block * 3 + maxpool
    ↓
Fire block * 4 + maxpool
    ↓        
Fire block
    ↓
Conv2D
GlobalAvgPool
softmax
  

6.2 代码

(1) 代码流程

  1. 导入程序包
  2. 编写Fire blocks
  3. 建立stem
  4. 建立model

(2) 代码

# 1.Imports
from keras import Model
from keras.layers import Input,Conv2D,Concatenate,Activation,MaxPool2D,GlobalAvgPool2D

# 2 Fire block
def fire_block(x,squeeze_filters,expand_filters):
    '''
    conv 1x1 --> squeezed tensor1
    conv 1x1 + conv 3x3 --> tensor2
    concatenate([tensor1,tensor2])
    '''
    squeezed = Conv2D(filters=squeeze_filters,kernel_size=1,activation='relu')(x)
    expanded_1x1 = Conv2D(filters=expand_filters,kernel_size=1)(squeezed)
    expanded_3x3 = Conv2D(filters=expand_filters,kernel_size=3,padding='same')(squeezed)

    expanded = Concatenate()([expanded_1x1,expanded_3x3])
    expanded = Activation('relu')(expanded)
    return expanded

# 3.Model stem
input = Input(shape=(224,224,3))
x = Conv2D(filters=96,kernel_size=7,strides=2,padding='same')(input)
x = MaxPool2D(pool_size=3,strides=2,padding='same')(x)

# 4.Fire block * 3 + maxpool + Fire block * 4 + maxpool + Fire block
x = fire_block(x,squeeze_filters=16,expand_filters=64)
x = fire_block(x,squeeze_filters=16,expand_filters=64)
x = fire_block(x,squeeze_filters=32,expand_filters=128)
x = MaxPool2D(pool_size=3,strides=2,padding='same')(x)

x = fire_block(x,squeeze_filters=32,expand_filters=128)
x = fire_block(x,squeeze_filters=48,expand_filters=192)
x = fire_block(x,squeeze_filters=48,expand_filters=192)
x = fire_block(x,squeeze_filters=64,expand_filters=256)
x = MaxPool2D(pool_size=3,strides=2,padding='same')(x)
x = fire_block(x,squeeze_filters=64,expand_filters=256)

# 5. Last
x = Conv2D(filters=1000,kernel_size=1)(x)
x = GlobalAvgPool2D()(x)
output = Activation('softmax')(x)

model = Model(inputs=input,outputs=output)
model.summary()
'''
__________________________________________________________________________________________________
Layer (type)                    Output Shape         Param #     Connected to                     
==================================================================================================
input_1 (InputLayer)            (None, 224, 224, 3)  0                                            
__________________________________________________________________________________________________
conv2d_1 (Conv2D)               (None, 112, 112, 96) 14208       input_1[0][0]                    
__________________________________________________________________________________________________
max_pooling2d_1 (MaxPooling2D)  (None, 56, 56, 96)   0           conv2d_1[0][0]                   
__________________________________________________________________________________________________
conv2d_2 (Conv2D)               (None, 56, 56, 16)   1552        max_pooling2d_1[0][0]            
__________________________________________________________________________________________________
conv2d_3 (Conv2D)               (None, 56, 56, 64)   1088        conv2d_2[0][0]                   
__________________________________________________________________________________________________
conv2d_4 (Conv2D)               (None, 56, 56, 64)   9280        conv2d_2[0][0]                   
__________________________________________________________________________________________________
concatenate_1 (Concatenate)     (None, 56, 56, 128)  0           conv2d_3[0][0]                   
                                                                 conv2d_4[0][0]                   
__________________________________________________________________________________________________
activation_1 (Activation)       (None, 56, 56, 128)  0           concatenate_1[0][0]              
__________________________________________________________________________________________________
conv2d_5 (Conv2D)               (None, 56, 56, 16)   2064        activation_1[0][0]               
__________________________________________________________________________________________________
conv2d_6 (Conv2D)               (None, 56, 56, 64)   1088        conv2d_5[0][0]                   
__________________________________________________________________________________________________
conv2d_7 (Conv2D)               (None, 56, 56, 64)   9280        conv2d_5[0][0]                   
__________________________________________________________________________________________________
concatenate_2 (Concatenate)     (None, 56, 56, 128)  0           conv2d_6[0][0]                   
                                                                 conv2d_7[0][0]                   
__________________________________________________________________________________________________
activation_2 (Activation)       (None, 56, 56, 128)  0           concatenate_2[0][0]              
__________________________________________________________________________________________________
conv2d_8 (Conv2D)               (None, 56, 56, 32)   4128        activation_2[0][0]               
__________________________________________________________________________________________________
conv2d_9 (Conv2D)               (None, 56, 56, 128)  4224        conv2d_8[0][0]                   
__________________________________________________________________________________________________
conv2d_10 (Conv2D)              (None, 56, 56, 128)  36992       conv2d_8[0][0]                   
__________________________________________________________________________________________________
concatenate_3 (Concatenate)     (None, 56, 56, 256)  0           conv2d_9[0][0]                   
                                                                 conv2d_10[0][0]                  
__________________________________________________________________________________________________
activation_3 (Activation)       (None, 56, 56, 256)  0           concatenate_3[0][0]              
__________________________________________________________________________________________________
max_pooling2d_2 (MaxPooling2D)  (None, 28, 28, 256)  0           activation_3[0][0]               
__________________________________________________________________________________________________
conv2d_11 (Conv2D)              (None, 28, 28, 32)   8224        max_pooling2d_2[0][0]            
__________________________________________________________________________________________________
conv2d_12 (Conv2D)              (None, 28, 28, 128)  4224        conv2d_11[0][0]                  
__________________________________________________________________________________________________
conv2d_13 (Conv2D)              (None, 28, 28, 128)  36992       conv2d_11[0][0]                  
__________________________________________________________________________________________________
concatenate_4 (Concatenate)     (None, 28, 28, 256)  0           conv2d_12[0][0]                  
                                                                 conv2d_13[0][0]                  
__________________________________________________________________________________________________
activation_4 (Activation)       (None, 28, 28, 256)  0           concatenate_4[0][0]              
__________________________________________________________________________________________________
conv2d_14 (Conv2D)              (None, 28, 28, 48)   12336       activation_4[0][0]               
__________________________________________________________________________________________________
conv2d_15 (Conv2D)              (None, 28, 28, 192)  9408        conv2d_14[0][0]                  
__________________________________________________________________________________________________
conv2d_16 (Conv2D)              (None, 28, 28, 192)  83136       conv2d_14[0][0]                  
__________________________________________________________________________________________________
concatenate_5 (Concatenate)     (None, 28, 28, 384)  0           conv2d_15[0][0]                  
                                                                 conv2d_16[0][0]                  
__________________________________________________________________________________________________
activation_5 (Activation)       (None, 28, 28, 384)  0           concatenate_5[0][0]              
__________________________________________________________________________________________________
conv2d_17 (Conv2D)              (None, 28, 28, 48)   18480       activation_5[0][0]               
__________________________________________________________________________________________________
conv2d_18 (Conv2D)              (None, 28, 28, 192)  9408        conv2d_17[0][0]                  
__________________________________________________________________________________________________
conv2d_19 (Conv2D)              (None, 28, 28, 192)  83136       conv2d_17[0][0]                  
__________________________________________________________________________________________________
concatenate_6 (Concatenate)     (None, 28, 28, 384)  0           conv2d_18[0][0]                  
                                                                 conv2d_19[0][0]                  
__________________________________________________________________________________________________
activation_6 (Activation)       (None, 28, 28, 384)  0           concatenate_6[0][0]              
__________________________________________________________________________________________________
conv2d_20 (Conv2D)              (None, 28, 28, 64)   24640       activation_6[0][0]               
__________________________________________________________________________________________________
conv2d_21 (Conv2D)              (None, 28, 28, 256)  16640       conv2d_20[0][0]                  
__________________________________________________________________________________________________
conv2d_22 (Conv2D)              (None, 28, 28, 256)  147712      conv2d_20[0][0]                  
__________________________________________________________________________________________________
concatenate_7 (Concatenate)     (None, 28, 28, 512)  0           conv2d_21[0][0]                  
                                                                 conv2d_22[0][0]                  
__________________________________________________________________________________________________
activation_7 (Activation)       (None, 28, 28, 512)  0           concatenate_7[0][0]              
__________________________________________________________________________________________________
max_pooling2d_3 (MaxPooling2D)  (None, 14, 14, 512)  0           activation_7[0][0]               
__________________________________________________________________________________________________
conv2d_23 (Conv2D)              (None, 14, 14, 64)   32832       max_pooling2d_3[0][0]            
__________________________________________________________________________________________________
conv2d_24 (Conv2D)              (None, 14, 14, 256)  16640       conv2d_23[0][0]                  
__________________________________________________________________________________________________
conv2d_25 (Conv2D)              (None, 14, 14, 256)  147712      conv2d_23[0][0]                  
__________________________________________________________________________________________________
concatenate_8 (Concatenate)     (None, 14, 14, 512)  0           conv2d_24[0][0]                  
                                                                 conv2d_25[0][0]                  
__________________________________________________________________________________________________
activation_8 (Activation)       (None, 14, 14, 512)  0           concatenate_8[0][0]              
__________________________________________________________________________________________________
conv2d_26 (Conv2D)              (None, 14, 14, 1000) 513000      activation_8[0][0]               
__________________________________________________________________________________________________
global_average_pooling2d_1 (Glo (None, 1000)         0           conv2d_26[0][0]                  
__________________________________________________________________________________________________
activation_9 (Activation)       (None, 1000)         0           global_average_pooling2d_1[0][0] 
==================================================================================================
Total params: 1,248,424
Trainable params: 1,248,424
Non-trainable params: 0
__________________________________________________________________________________________________

Process finished with exit code 0

'''
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值