Xception 学习小记

参考很多,仅为个人学习记录使用

论文:Xception: Deep Learning with Depthwise Separable Convolutions

发表时间:2016

Xception 是 Google 在把 Inception 和残差结构结合之后,对 Inception V3 结构进行的又一次改进,主要内容是在网络中加入了深度可分离卷积(depthwise separable convolution)。

一、深度可分离卷积(depthwise separable convolution)

首先对深度可分离卷积进行说明。

Xception 学习小记_第1张图片

假设输入图片为 25 * 25 * 16,卷积层的卷积核大小为 3*3,输入深度为 16,输出深度为 32。

如果是普通的卷积,每次卷积操作会将输入图片的一个 3*3*16 的立方块的值与卷积核进行计算,输出一个 1*1*1 的值,则一个卷积层在卷积完整个图片之后会得到一个 25 * 25 * 1 的值。因为输出深度为 32,因此需要 32 个元素值不同的卷积核,最终会输出尺寸为 25 * 25 * 32。每一个卷积核的参数是相同的,因此这一卷积层共有 3 * 3 * 16 * 32 = 4068 个参数(不考虑偏置)。

如果是深度可分离卷积,就会把卷积分为两步。第一步,将输入的 16 层独立来看,每一层有一个单独的 3*3 卷积核对其进行卷积,最终得到 16 个尺寸为 25 * 25 * 1 的结果;第二步,用 32 个 1*1 卷积核将这 16 个层的结果聚合,最终输出尺寸也是 25 * 25 * 32。这种方式下卷积层共有 3 * 3 * 16 + 1 * 1 * 16 * 32 = 656 个参数。同时,两步卷积也增加了网络的非线性。

可以看出,在同样的输入和输出的情况下,用深度可分离卷积可以大幅减少网络中使用的参数。而且,实现了区域和通道的分离计算。

二、网络结构

Xception 学习小记_第2张图片

在 Xception 中也加了残差结构,同时加大了网络的宽度。

这个网络的意义在于,在网络复杂度与 Inception-V3 相同的情况下,达到了更高的性能。因为深度可分离卷积的优势就在于他能降低参数量,而 Xception 的目的是提高性能而不是压缩模型,所以可以把网络写的更宽更深,从而达到更好的性能。

你可能感兴趣的:(Xception 学习小记)