深度学习总结(lecture 8)Inception (v1-v4)

lecture 8:Inception (v1-v4)

目录

1、Inception基础

1.1 Inception结构

这里写图片描述
这里写图片描述

1.2 Inception V1(GoogLeNet)

Naive Inception
这里写图片描述
这里写图片描述

Inception Module
这里写图片描述
这里写图片描述

GoogLeNet
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

1.3 Inception V2(Batch Norm)

Inception V2 学习了VGG用两个3´3的卷积代替5´5的大卷积,在降低参数的同时建立了更多的非线性变换,使得 CNN 对特征的学习能力更强:
这里写图片描述
这里写图片描述

1.4 Inception V3(Factorization)

这里写图片描述
这里写图片描述
这里写图片描述

1.5 Inception V4(ResNet)

Inception V4 相比 V3 主要是结合了微软的 ResNet,将错误率进一步减少到 3.08%。

这个是V1对应的3个Inception结构,V2添加相应的BN就可以。

  • 35降维可以理解为1+9+25
  • 17降维理解为每次降7个点,17=>11=>5
  • 8降维可以理解为8=>6=>4=>2

这里写图片描述
这里写图片描述

1.5 Inception v1~v4 总结

这里写图片描述

def Conv2d_BN(x, filters, kernel_size, padding='same', strides=(1,1), name=None):
    if name is not None:
        bn_name   = name + '_bn'
        conv_name = name + '_conv'
    else:
        bn_name   = None
        conv_name = None

    x = Conv2D(filters=filters, kernel_size=kernel_size, padding=padding, strides=strides, activation='relu', name=conv_name)(x)
    x = BatchNormalization(axis=3, name=bn_name)(x)

    return x


def Inception(x, filters):
    branch_1x1 = Conv2d_BN(x, filters=filters, kernel_size=(1,1), padding='same', strides=(1,1), name=None)

    branch_3x3 = Conv2d_BN(x,          filters=filters, kernel_size=(1,1), padding='same', strides=(1,1), name=None)
    branch_3x3 = Conv2d_BN(branch_3x3, filters=filters, kernel_size=(3,3), padding='same', strides=(1,1), name=None)

    branch_5x5 = Conv2d_BN(x,          filters=filters, kernel_size=(1,1), padding='same', strides=(1,1), name=None)
    branch_5x5 = Conv2d_BN(branch_5x5, filters=filters, kernel_size=(5,5), padding='same', strides=(1,1), name=None)

    branch_pool = MaxPooling2D(pool_size=(3,3), strides=(1,1), padding='same')(x)
    branch_pool = Conv2d_BN(branch_pool, filters=filters, kernel_size=(1,1), padding='same', strides=(1,1), name=None)

    x = concatenate([branch_1x1, branch_3x3, branch_5x5, branch_pool], axis=3)

    return x
def Inception_v2(input_shape=(64,64,3), classes=6):
    x_input = Input(input_shape)

    "stage 1: "
    x = Conv2d_BN(x_input, filters=4, kernel_size=(5,5), strides=(1,1), padding='same')
    x = MaxPooling2D(pool_size=(3,3), strides=(2,2), padding='same')(x)
    x = Conv2d_BN(x, filters=8, kernel_size=(1,1), strides=(1,1), padding='same')
    x = Conv2d_BN(x, filters=8, kernel_size=(3,3), strides=(1,1), padding='same')
    x = MaxPooling2D(pool_size=(3,3), strides=(2,2), padding='same')(x)

    "stage 2: Inception_v2_block (*2)"
    x = Inception(x, 16)  #4*16=64
    x = Inception(x, 16)
    x = MaxPooling2D(pool_size=(3,3), strides=(2,2), padding='same')(x)

    "stage 3: Inception_v2_block (*5)"
    x = Inception(x, 32)
    x = Inception(x, 32)
    x = Inception(x, 32)  
    x = Inception(x, 64)
    x = Inception(x, 64)
    x = MaxPooling2D(pool_size=(3,3), strides=(2,2), padding='same')(x)  

    "stage 4: Inception_v2_block (*2)"
    x = Inception(x, 128) 
    x = Inception(x, 128)
    x = AveragePooling2D(pool_size=(4,4), strides=(1,1), padding='same')(x)

    x = Flatten()(x)
    "stage 5: fc"
    x = Dropout(0.5)(x)  
    x = Dense(6,activation='softmax')(x)  

    model = Model(inputs=x_input, outputs=x, name='Inception_v2')

    return model

2、Inception进阶

Inception v4 、Inception ResNet v1、Inception ResNet v2
这里写图片描述
Inception V4 网络模型 Vs Inception ResNet 模型:
这里写图片描述
这里写图片描述

  • 果然如winsty所讲,现在论文的公式越来越少了,网络框图开始越来越多了

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值