【轻量级网络】Xception -- Deep Learning with Depthwise Separable Convolutions

depthwise separable conv = depthwise conv + pointwise conv

一、Motive

Inception是性能最好的骨干网之一,用很少的参数可以学习到很丰富的特征。

Inceptionv3的基本模块结构如下:
在这里插入图片描述
filter在三维空间(2空间维度和1通道维度)进行学习,需要同时学习空间相关性和通道相关性(cross-channel correlations and spatial correlations.)。

Inception将空间相关性和通道相关性解耦,先使用1x1的卷积核学习通道上的相关性,再使用3x3卷积核学习通道和空间相关性。

将Inceptionv3简化,结构如下:
在这里插入图片描述

二、depthwise separable conv
1、结构

depthwise separable conv可看做是Inception模块的特例。
在这里插入图片描述

depthwise separable conv与图4的“extreme” version of an Inception module 略有不同

depthwise separable conv = depthwise conv + pointwise conv;

depthwise separable conv先是depthwise conv ,再是1x1的 pointwise conv;

pointwise conv:1x1的卷积,学习通道间的相关性,同时将特征图由一个通道空间映射到另一个通道空间。

depthwise conv:one filter per output channel,filter数与通道数相等,每个filter只与一个channel卷积 。学习空间上的相关性

2、实现

注意:depthwise conv后没有激活函数

在这里插入图片描述

For deep feature spaces,the non-linearity is helpful, but for shallow ones,it becomes harmful,possibly due to a loss of information.

pytorch实现:

class SeparableConvBnRelu(nn.Module):
    def __init__(self, in_channels, out_channels,
                 kernel_size=1, stride=1, padding=0, dilation=1,
                 has_relu=True, norm_layer=nn.BatchNorm2d):
        super(SeparableConvBnRelu, self).__init__()

        self.depthwise = nn.Conv2d(in_channels, in_channels, kernel_size, stride,
                               padding, dilation, groups=in_channels,
                               bias=False)
        self.bn = norm_layer(in_channels)
        self.point_wise_cbr = ConvBnRelu(in_channels, out_channels, 1, 1, 0,
                                         has_bn=True, norm_layer=norm_layer,
                                         has_relu=has_relu, has_bias=False)

    def forward(self, x):
        x = self.depthwise(x)
        x = self.bn(x)
        x = self.point_wise_cbr(x)
        return x

class ConvBnRelu(nn.Module):
    def __init__(self, in_planes, out_planes, ksize, stride, pad, dilation=1,
                 groups=1, has_bn=True, norm_layer=nn.BatchNorm2d, bn_eps=1e-5,
                 has_relu=True, inplace=True, has_bias=False):
        super(ConvBnRelu, self).__init__()
        self.conv = nn.Conv2d(in_planes, out_planes, kernel_size=ksize,
                              stride=stride, padding=pad,
                              dilation=dilation, groups=groups, bias=has_bias)
        self.has_bn = has_bn
        if self.has_bn:
            self.bn = norm_layer(out_planes, eps=bn_eps)
        self.has_relu = has_relu
        if self.has_relu:
            self.relu = nn.ReLU(inplace=inplace)

    def forward(self, x):
        x = self.conv(x)
        if self.has_bn:
            x = self.bn(x)
        if self.has_relu:
            x = self.relu(x)

        return x

三、xception
1、Architecture

在这里插入图片描述

简化版:

以下两个模型参数量极少,但准确率较低。
在这里插入图片描述

2、evaluation

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Xception是一种深度学习模型,它使用深度可分离卷积来提高模型的效率和准确性。深度可分离卷积是一种卷积操作,它将标准卷积分成两个步骤:深度卷积和逐点卷积。深度卷积在每个输入通道上执行卷积,而逐点卷积在每个通道之间执行卷积。这种方法可以减少计算量和参数数量,同时提高模型的准确性。Xception模型在图像分类、目标检测和语义分割等任务中表现出色。 ### 回答2: Xception是一个基于深度可分离卷积的深度学习架构。深度学习在计算机视觉和自然语言处理等领域取得了巨大成功,但也面临着计算复杂性和模型尺寸庞大的问题。Xception通过引入深度可分离卷积来解决这些问题。 深度可分离卷积由分离卷积和逐点卷积两个步骤组成。首先,分离卷积将输入张量分别应用于空间和通道维度上的低秩张量。通过这种方式,模型可以分别学习特征的空间位置和通道之间的依赖关系。其次,逐点卷积将通道维度上的低秩张量应用于输出特征图。逐点卷积允许每个通道单独学习特征。 通过使用深度可分离卷积,Xception减少了参数的数量,并提高了模型的计算效率。与传统卷积相比,深度可分离卷积在减少计算量的同时,还可以提高模型的表示能力。这意味着Xception可以更好地捕捉和表示输入数据中的特征。 在实践中,Xception在图像分类、目标检测和语义分割等任务上都取得了非常好的表现。由于其较小的模型尺寸和高效的计算性能,Xception成为了很多研究者和工程师首选的深度学习架构之一。 总而言之,Xception通过引入深度可分离卷积来解决深度学习中的计算复杂性和模型尺寸庞大的问题。它减少了模型参数的数量、提高了模型的计算效率,同时又保持了较高的表示能力。作为一种强大的深度学习架构,Xception在多个领域具有广泛的应用和研究价值。 ### 回答3: Xception是一种深度学习模型,使用深度可分离卷积的方法来提高模型的准确性和效率。深度可分离卷积是一种卷积操作,由分离卷积和逐元素卷积两个步骤组成。 在传统卷积中,输入图像通过一个卷积核进行卷积操作,得到特征图。而在深度可分离卷积中,卷积操作被分解成两个步骤。首先,输入图像通过一个分离卷积核进行深度卷积,从而获取特征深度信息。然后,逐元素卷积操作被应用于分离卷积的输出,以获取空间信息。这种分离的方式减少了计算量和参数量,提高了模型的效率。 Xception模型使用了这种深度可分离卷积的结构。相比于传统的卷积方式,Xception模型能够更好地捕捉到输入图像中的细节信息。同时,由于深度卷积和逐元素卷积的分离,Xception模型的参数量大大减少,使得模型更加轻量化,便于在移动设备等资源受限的场景中应用。 通过对ImageNet大规模图像数据库进行训练,Xception模型取得了很好的性能。它在图像分类、目标检测和语义分割等任务上都取得了优秀的结果。同时,Xception模型也为其他相关任务,如迁移学习和特征提取等,提供了一个有力的基础。 总的来说,Xception是一种利用深度可分离卷积的深度学习模型,它在提高准确性和效率方面取得了显著的进展。它的设计和性能使得它成为了计算机视觉领域一个重要的技术突破。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值