轻量级网络:SqueezeNet、Xception

本文介绍了轻量级网络SqueezeNet和Xception的主要思想与结构。SqueezeNet通过fire模块(squeeze层+expand层)减少了通道数,实现高效运算;Xception则基于Inception的改进,采用Depthwise Separable Convolution,优化计算效率。两者都展示了在保持性能的同时减小模型复杂度的可能性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

继续来总结一下轻量级网络SqueezeNet,Xception。

SqueezeNet

论文:http://arxiv.org/abs/1602.07360
TensorFlow实现:https://github.com/Linchunhui/Classification-Set-with-Tensorflow/blob/master/net/SqueezeNet.py

首先从名字SqueezeNet 就知道,本文的新意是 squeeze,squeeze 在 SqueezeNet 中表示一个 squeeze 层,该层采用 1*1 卷积核对上一层 feature map 进行卷积,主要目的是减少 feature map 的维数(即通道数)。

  • 创新点
    采用不同于传统的卷积方式,提出 fire module;fire module 包含两部分:squeeze 层+expand 层。
    创新点与 inception 系列的思想非常接近!首先 squeeze 层,就是 1x1 卷积,其卷积核数要少于上一层 feature map 数,这个操作从 inception 系列开始就有了,并美其名曰压缩,个人觉得「压缩」更为妥当。
    Expand 层分别用 1x1 和 3x3 卷积,然后 concat,这个操作在 inception 系列里面也有。在这里插入图片描述
    SqueezeNet 的核心在于 Fire module,Fire module 由两层构成,分别是 squeeze 层+expand 层,如上图 所示,squeeze 层是一个 11 卷积核的卷积层,expand 层是 11 和 33 卷积核的卷积层,expand 层中,把 11 和 3*3 得到的 feature map 进行 concat。
    用下图可以更清晰的了解在这里插入图片描述
    Fire module 输入的 feature map 为 HxWxM 的,输出的 feature map 为 HxMx(e1+e3),可以看到 feature map 的分辨率是不变的,变的仅是维数,也就是通道数,这一点和 VGG 的思想一致。

首先,HxWxM 的 feature map 经过 Squeeze 层,得到 S1 个 feature map,这里的 S1 均是小于 M 的,以达到压缩的目的,详细思想可参考 Google 的 Inception 系列。
其次,HxWxS1 的特征图输入到 Expand 层,分别经过 1*1 卷积层和 3x3 卷积层进行卷积,再将结果进行 concat,得到 Fire module 的输出,为 HxMx(e1+e3) 的 feature map。
fire 模块有三个可调参数:S1,e1,e3,分别代表卷积核的个数,同时也表示对应输出 feature map 的维数,在文中提出的 SqueezeNet 结构中,e1=e3=4s1。

  • 网络结构

在这里插入图片描述
主要还好选取了VGG的特点,层层堆叠,当然Firework中也可见inception的思想。

Xception

论文:https://arxiv.org/abs/1610.02357
Tensorflow代码:https://github.com/Linchunhui/Classification-Set-with-Tensorflow/blob/master/net/Xception.py

Xception本身并不算轻量级网络,是根据inception演化而来的。
变化的过程如下

  • 在 Inception 中,特征可以通过 1×1 1×11×1 卷积,3×3 3×33×3 卷积,5×5 5×55×5 卷积,pooling 等进行提取,Inception 结构将特征类型的选择留给网络自己训练,也就是将一个输入同时输给几种提取特征方式,然后做 concat 。Inception-v3的结构图如下:
    在这里插入图片描述

  • 对 Inception-v3 进行简化,去除 Inception-v3 中的 avg pool 后,输入的下一步操作就都是 1×1卷积:
    在这里插入图片描述

  • 提取 1×1卷积的公共部分
    在这里插入图片描述

  • Xception(极致的 Inception):先进行普通卷积操作,再对 1×1 1×11×1 卷积后的每个channel分别进行 3×3 3×33×3 卷积操作,最后将结果 concat在这里插入图片描述
    和我们熟知的Depthwise Conv十分相似。

  • 区别

    • Xception

    第一步:普通 1×1 卷积。
    第二步:对 1×1卷积结果的每个 channel,分别进行 3×3 卷积操作,并将结果 concat。

    • Depthwise Conv

    第一步:Depthwise 卷积,对输入的每个channel,分别进行 3×3卷积操作,并将结果 concat。
    第二步:Pointwise 卷积,对 Depthwise 卷积中的 concat 结果,进行 1×1 卷积操作。

两种操作的循序不一致:Inception 先进行 1×1卷积,再进行 3×3 卷积;DepthwiseConvolution 先进行 3×3卷积,再进行 1×1卷积。(感觉并没有多少区别。)

  • 网络结构
    整体网络结构如下:
    在这里插入图片描述
    Xception 的结构基于 ResNet,但是将其中的卷积层换成了Separable Convolution(极致的 Inception模块)。如图所示。整个网络被分为了三个部分:Entry,Middle和Exit。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值